Index: wflow-py/setup.py =================================================================== diff -u -r9c33accc4863cd353267f08290367eded8705ea0 -r6b3a30452491a891b2eaa8bf54b78eb6b0e19f80 --- wflow-py/setup.py (.../setup.py) (revision 9c33accc4863cd353267f08290367eded8705ea0) +++ wflow-py/setup.py (.../setup.py) (revision 6b3a30452491a891b2eaa8bf54b78eb6b0e19f80) @@ -11,12 +11,12 @@ README = open(os.path.join(here, '../README.rst')).read() TODO = open(os.path.join(here, 'TODO.txt')).read() -requires = [ - 'netCDF4', - 'numpy', - 'matplotlib', - 'pcraster', 'osgeo'] +try: + import pcraster +except: + print("Could not import pcraster, make sure it is installed including the python extensions") + print("see www.pcraster.eu") #setup(**config) @@ -38,5 +38,9 @@ 'wflow/wflow_sbm.py','wflow/wflow_hbv.py','wflow/wflow_W3RA.py', 'wflow/wflow_upscale.py','wflow/wflow_routing.py'], description='the wflow hydrological models (part of OpenStreams)', + install_requires = [ 'netCDF4>=1.1.8', + 'numpy', + 'matplotlib', + 'gdal'], ) Index: wflow-py/wflow/wf_DynamicFramework.py =================================================================== diff -u -rc3eed6a0f362cbe559022b2d24a46abf43e91dc9 -r6b3a30452491a891b2eaa8bf54b78eb6b0e19f80 --- wflow-py/wflow/wf_DynamicFramework.py (.../wf_DynamicFramework.py) (revision c3eed6a0f362cbe559022b2d24a46abf43e91dc9) +++ wflow-py/wflow/wf_DynamicFramework.py (.../wf_DynamicFramework.py) (revision 6b3a30452491a891b2eaa8bf54b78eb6b0e19f80) @@ -211,6 +211,8 @@ self.ofile[-1].write("timestep\n") for idd in self.flatarea: self.ofile[-1].write(str(idd) +"\n") + if self.oformat=='netcdf': + print('Not implemented yet') self.steps = self.steps + 1 tmpvar = scalar(spatial(variable)) @@ -701,6 +703,10 @@ Also saves the summary maps """ + + self._incrementIndentLevel() + self._traceIn("suspend") + allvars = self._userModel().stateVariables() for var in allvars: @@ -725,6 +731,8 @@ # Save the summary maps self.wf_savesummarymaps() + self._traceOut("suspend") + self._decrementIndentLevel() @@ -755,17 +763,20 @@ for a in toprint: b = a.replace('self.','') try: - pcrmap = getattr(self._userModel(),b) - report( pcrmap , os.path.join(self._userModel().Dir, self._userModel().runId, "outsum", self._userModel().config.get("summary",a)) ) + pcrmap = getattr(self._userModel(),b) + #report( pcrmap , os.path.join(self._userModel().Dir, self._userModel().runId, "outsum", self._userModel().config.get("summary",a)) ) + self._reportNew( pcrmap , os.path.join(self._userModel().Dir, self._userModel().runId, "outsum",self._userModel().config.get("summary",a)), style=1) + except: - self._userModel().logger.warn("Could not find or save the configured summary map:" + a) + self._userModel().logger.warn("Could not find or save the configured summary map:" + a) # Check of the usermodel has a list of summary maps defined and save those if hasattr(self._userModel(),'default_summarymaps'): for a in self._userModel().default_summarymaps(): b = a.replace('self.','') pcrmap = getattr(self._userModel(),b) - report( pcrmap , os.path.join(self._userModel().Dir, self._userModel().runId, "outsum", b + ".map" )) + #report( pcrmap , os.path.join(self._userModel().Dir, self._userModel().runId, "outsum", b + ".map" )) + self._reportNew( pcrmap , os.path.join(self._userModel().Dir, self._userModel().runId, "outsum", b + ".map" ), style=1) # These are the ones in the _sum _average etc sections for a in range(0,len(self.statslst)): @@ -774,14 +785,16 @@ data = self.statslst[a].result fname = self.statslst[a].filename if hasattr(data,'isSpatial'): - report (data,fname) + #report (data,fname) + self._reportNew( data , fname, style=1) + def wf_savedynMaps(self): """ Save the maps defined in the ini file for the dynamic section @@ -807,6 +820,11 @@ a _? postfix) """ + + self._incrementIndentLevel() + self._traceIn("resume") + + allvars = self._userModel().stateVariables() for var in allvars: @@ -833,6 +851,9 @@ except: self.logger.warn("problem while reading state variable from disk: " + mpath + " Suggest to use the -I uption to restart") exit(1) + + self._traceOut("resume") + self._decrementIndentLevel() def wf_QuickSuspend(self): @@ -1640,9 +1661,9 @@ longname = name head, tail = os.path.split(name) - if re.search("\.", tail): - msg = "File extension given in '" + name + "' not allowed, provide filename without extension" - raise FrameworkError(msg) + #if re.search("\.", tail): + # msg = "File extension given in '" + name + "' not allowed, provide filename without extension" + # raise FrameworkError(msg) directoryPrefix = "" @@ -1665,6 +1686,9 @@ if self._userModel()._inDynamic() or self._inUpdateWeight(): newName = generateNameT(name, self._userModel().currentTimeStep()) + if newName == '': # For files from suspend + newName = name + path = os.path.join(directoryPrefix, newName) Index: wflow-py/wflow/wf_netcdfio.py =================================================================== diff -u -r9c33accc4863cd353267f08290367eded8705ea0 -r6b3a30452491a891b2eaa8bf54b78eb6b0e19f80 --- wflow-py/wflow/wf_netcdfio.py (.../wf_netcdfio.py) (revision 9c33accc4863cd353267f08290367eded8705ea0) +++ wflow-py/wflow/wf_netcdfio.py (.../wf_netcdfio.py) (revision 6b3a30452491a891b2eaa8bf54b78eb6b0e19f80) @@ -43,8 +43,9 @@ import datetime as dt logger.info('Setting up netcdf output: ' + trgFile) - startDayNr = netCDF4.date2num(timeList[0], units=units, calendar=calendar) - endDayNr = netCDF4.date2num(timeList[-1], units=units, calendar=calendar) + print timeList[0] + startDayNr = netCDF4.date2num(timeList[0].replace(tzinfo=None), units=units, calendar=calendar) + endDayNr = netCDF4.date2num(timeList[-1].replace(tzinfo=None), units=units, calendar=calendar) time = arange(startDayNr,endDayNr+1) nc_trg = netCDF4.Dataset(trgFile,'w',format=Format,zlib=zlib) Index: wflow-py/wflow/wflow_sbm.py =================================================================== diff -u -r1e685c5eea9d95920f2e0e4e3d1fcc75c0fc2a1f -r6b3a30452491a891b2eaa8bf54b78eb6b0e19f80 --- wflow-py/wflow/wflow_sbm.py (.../wflow_sbm.py) (revision 1e685c5eea9d95920f2e0e4e3d1fcc75c0fc2a1f) +++ wflow-py/wflow/wflow_sbm.py (.../wflow_sbm.py) (revision 6b3a30452491a891b2eaa8bf54b78eb6b0e19f80) @@ -306,16 +306,16 @@ self.logger.info("Saving initial conditions for FEWS...") self.wf_suspend(self.Dir + "/outstate/") - report(self.CumInwaterMM, self.SaveDir + "/outsum/CumInwaterMM.map") - report(self.CumReinfilt, self.SaveDir + "/outsum/CumReinfilt.map") - report(self.CumPrec, self.SaveDir + "/outsum/CumPrec.map") - report(self.CumEvap, self.SaveDir + "/outsum/CumEvap.map") - report(self.CumPotenTrans, self.SaveDir + "/outsum/CumPotenTrans.map") - report(self.CumInt, self.SaveDir + "/outsum/CumInt.map") - report(self.CumLeakage, self.SaveDir + "/outsum/CumLeakage.map") - report(self.CumPotenEvap, self.SaveDir + "/outsum/CumPotenEvap.map") - report(self.CumExfiltWater, self.SaveDir + "/outsum/CumExfiltWater.map") - report(self.watbal, self.SaveDir + "/outsum/watbal.map") + #report(self.CumInwaterMM, self.SaveDir + "/outsum/CumInwaterMM.map") + #report(self.CumReinfilt, self.SaveDir + "/outsum/CumReinfilt.map") + #report(self.CumPrec, self.SaveDir + "/outsum/CumPrec.map") + #report(self.CumEvap, self.SaveDir + "/outsum/CumEvap.map") + #report(self.CumPotenTrans, self.SaveDir + "/outsum/CumPotenTrans.map") + #report(self.CumInt, self.SaveDir + "/outsum/CumInt.map") + #report(self.CumLeakage, self.SaveDir + "/outsum/CumLeakage.map") + #report(self.CumPotenEvap, self.SaveDir + "/outsum/CumPotenEvap.map") + #report(self.CumExfiltWater, self.SaveDir + "/outsum/CumExfiltWater.map") + #report(self.watbal, self.SaveDir + "/outsum/watbal.map") def parameters(self): """