Index: wflow-py/UnitTests/TestBMI.py =================================================================== diff -u -r58576d311dbc5aa98bbf200393bb77ddde2c51ae -r1f872a3d10a5301f8f4f97fc1a43ebc3861ed316 --- wflow-py/UnitTests/TestBMI.py (.../TestBMI.py) (revision 58576d311dbc5aa98bbf200393bb77ddde2c51ae) +++ wflow-py/UnitTests/TestBMI.py (.../TestBMI.py) (revision 1f872a3d10a5301f8f4f97fc1a43ebc3861ed316) @@ -15,6 +15,7 @@ class MyTest(unittest.TestCase): + """ def testbmifuncs(self): bmiobj = bmi.wflowbmi_csdms() @@ -161,7 +162,7 @@ et = bmiobj.get_end_time() bmiobj.update(-1) bmiobj.finalize() - + """ def testbmirunnetcdf(self): bmiobj = bmi.wflowbmi_csdms() bmiobj.initialize_config('wflow_sbm/wflow_sbm_nc.ini',loglevel=logging.DEBUG) @@ -171,21 +172,25 @@ bmiobj.set_start_time(1399597200) - bmiobj.set_end_time(1400288400) + bmiobj.set_end_time(1399597200 + (4 * 3600)) st = bmiobj.get_start_time() ett = bmiobj.get_end_time() + ts = bmiobj.get_time_step() - bmiobj.initialize_model() + curtime = st + cnt = 0 + lastcurtime = bmiobj.get_current_time() + while curtime < ett: + cnt = cnt + 1 + bmiobj.update_until(curtime + ts) + print (curtime + ts)/ts + curtime = bmiobj.get_current_time() + print bmiobj.get_current_time() - lastcurtime + lastcurtime = bmiobj.get_current_time() - bmiobj.update_until(ett) - ct = bmiobj.get_current_time() - togoto = ct - (3600) - bmiobj.update_until(togoto) - nt = bmiobj.get_current_time() - bmiobj.update_until(ett) bmiobj.finalize() Index: wflow-py/wflow/wf_DynamicFramework.py =================================================================== diff -u -r7fa2d7826eac3d0aa65a1a1292f782fa30ff96c1 -r1f872a3d10a5301f8f4f97fc1a43ebc3861ed316 --- wflow-py/wflow/wf_DynamicFramework.py (.../wf_DynamicFramework.py) (revision 7fa2d7826eac3d0aa65a1a1292f782fa30ff96c1) +++ wflow-py/wflow/wf_DynamicFramework.py (.../wf_DynamicFramework.py) (revision 1f872a3d10a5301f8f4f97fc1a43ebc3861ed316) @@ -62,7 +62,8 @@ else: self.runStateTime = self.runStartTime - self.outPutStartTime = self.runStartTime + datetime.timedelta(seconds=self.timeStepSecs) + self.currentDateTime = self.runStateTime + self.outPutStartTime = self.runStateTime + datetime.timedelta(seconds=self.timeStepSecs) self.runTimeSteps = (calendar.timegm(self.runEndTime.utctimetuple()) - calendar.timegm(self.runStateTime.utctimetuple()))/self.timeStepSecs self.currentMonth = self.currentDateTime.month self.currentYday = self.currentDateTime.timetuple().tm_yday @@ -90,7 +91,7 @@ self.runStateTime = self.runStartTime - datetime.timedelta(seconds=self.timeStepSecs) else: self.runStateTime = self.runStartTime - self.outPutStartTime = self.runStartTime + datetime.timedelta(seconds=self.timeStepSecs) + self.outPutStartTime = self.runStateTime + datetime.timedelta(seconds=self.timeStepSecs) if datetimestart: self.runStartTime = datetimestart @@ -100,7 +101,9 @@ self.runStateTime = self.runStartTime - datetime.timedelta(seconds=self.timeStepSecs) else: self.runStateTime = self.runStartTime - self.outPutStartTime = self.runStartTime + datetime.timedelta(seconds=self.timeStepSecs) + self.currentDateTime = self.runStateTime + + self.outPutStartTime = self.runStateTime + datetime.timedelta(seconds=self.timeStepSecs) self.runTimeSteps = (calendar.timegm(self.runEndTime.utctimetuple()) - calendar.timegm(self.runStateTime.utctimetuple()))/self.timeStepSecs self.currentMonth = self.currentDateTime.month self.currentYday = self.currentDateTime.timetuple().tm_yday @@ -114,7 +117,9 @@ self.runStateTime = self.runStartTime - datetime.timedelta(seconds=self.timeStepSecs) else: self.runStateTime = self.runStartTime - self.outPutStartTime = self.runStartTime + datetime.timedelta(seconds=self.timeStepSecs) + self.currentDateTime = self.runStateTime + + self.outPutStartTime = self.runStateTime + datetime.timedelta(seconds=self.timeStepSecs) self.runEndTime = self.runStateTime + datetime.timedelta(seconds=self.timeStepSecs * runTimeSteps) self.currentMonth = self.currentDateTime.month self.currentYday = self.currentDateTime.timetuple().tm_yday @@ -126,7 +131,7 @@ if currentTimeStep: self.currentTimeStep = currentTimeStep - self.currentDateTime = self.runStartTime + datetime.timedelta(seconds=self.timeStepSecs * (self.currentTimeStep)) + self.currentDateTime = self.runStateTime + datetime.timedelta(seconds=self.timeStepSecs * (self.currentTimeStep -1)) self.currentMonth = self.currentDateTime.month self.currentYday = self.currentDateTime.timetuple().tm_yday self.currentHour = self.currentDateTime.hour @@ -136,7 +141,7 @@ self.currentMonth = self.currentDateTime.month self.currentYday = self.currentDateTime.timetuple().tm_yday self.currentHour = self.currentDateTime.hour - self.currentTimeStep = (calendar.timegm(self.currentDateTime.utctimetuple()) - calendar.timegm(self.runStateTime.utctimetuple()))/self.timeStepSecs + self.currentTimeStep = (calendar.timegm(self.currentDateTime.utctimetuple()) - calendar.timegm(self.runStateTime.utctimetuple()))/self.timeStepSecs +1 Index: wflow-py/wflow/wflow_bmi.py =================================================================== diff -u -r58576d311dbc5aa98bbf200393bb77ddde2c51ae -r1f872a3d10a5301f8f4f97fc1a43ebc3861ed316 --- wflow-py/wflow/wflow_bmi.py (.../wflow_bmi.py) (revision 58576d311dbc5aa98bbf200393bb77ddde2c51ae) +++ wflow-py/wflow/wflow_bmi.py (.../wflow_bmi.py) (revision 1f872a3d10a5301f8f4f97fc1a43ebc3861ed316) @@ -487,7 +487,7 @@ #self.dynModel._userModel().config.set("run",'starttime',self.dynModel.DT.runStartTime.strftime("%Y-%m-%d %H:%M:%S")) - self.bmilogger.debug("set_start_time: " + str(start_time + self.dynModel.DT.timeStepSecs) + " " + str(self.dynModel.DT.runStartTime.strftime("%Y-%m-%d %H:%M:%S"))) + self.bmilogger.debug("set_start_time: " + str(start_time) + " " + str(self.dynModel.DT.runStartTime.strftime("%Y-%m-%d %H:%M:%S"))) def set_end_time(self, end_time): """ @@ -501,7 +501,7 @@ self.dynModel._update_time_from_DT() - self.bmilogger.debug("set_end_time: " + str(end_time + self.dynModel.DT.timeStepSecs) + " " + str(self.dynModel.DT.runEndTime.strftime("%Y-%m-%d %H:%M:%S"))) + self.bmilogger.debug("set_end_time: " + str(end_time) + " " + str(self.dynModel.DT.runEndTime.strftime("%Y-%m-%d %H:%M:%S"))) @@ -771,8 +771,8 @@ :return: current time of simulation n the units and epoch returned by the function get_time_units """ - st = self.dynModel.wf_supplyCurrentTime() - self.dynModel.DT.timeStepSecs - self.bmilogger.debug("get_current_time: " + str(st)) + st = self.dynModel.wf_supplyCurrentTime() + self.bmilogger.debug("get_current_time: " + str(st) + " " + str(self.dynModel.DT.currentDateTime.strftime("%Y-%m-%d %H:%M:%S"))) return st def get_end_time(self):