Index: examples/wflow_rhine_sbm/wflow_sbm.ini =================================================================== diff -u -ref66b8e21f94f3f322fbf29dbacc22ec45914a9b -r3b29d4c807feb6a6664c21bbece6e0896e60b801 --- examples/wflow_rhine_sbm/wflow_sbm.ini (.../wflow_sbm.ini) (revision ef66b8e21f94f3f322fbf29dbacc22ec45914a9b) +++ examples/wflow_rhine_sbm/wflow_sbm.ini (.../wflow_sbm.ini) (revision 3b29d4c807feb6a6664c21bbece6e0896e60b801) @@ -60,6 +60,16 @@ [summary] self.MaxLeakage=MaxLeakage.map # Save and average these per LU type + +[summary_sum] +self.Precipitation=Sumprecip.map + +[summary_max] +self.Precipitation=maxprecip.map + +[summary_avg] +self.Precipitation=avgprecip.map + [outputcsv_0] samplemap=staticmaps/wflow_landuse.map self.Transfer=tra_lu.csv Index: wflow-py/wflow/wf_DynamicFramework.py =================================================================== diff -u -ra162c7cda5e7bd9cfa55441de307e12ee54b77b2 -r3b29d4c807feb6a6664c21bbece6e0896e60b801 --- wflow-py/wflow/wf_DynamicFramework.py (.../wf_DynamicFramework.py) (revision a162c7cda5e7bd9cfa55441de307e12ee54b77b2) +++ wflow-py/wflow/wf_DynamicFramework.py (.../wf_DynamicFramework.py) (revision 3b29d4c807feb6a6664c21bbece6e0896e60b801) @@ -108,8 +108,51 @@ return 1 +class wf_sumavg(): + def __init__(self,varname,mode='sum',filename=None): + """ + + """ + if filename == None: + filename=varname + + self.mode = mode + self.varname = varname + self.filename = filename + + self.data = None + self.count = 0 + + + def add_one(self,data): + """ + + """ + + if self.count == 0: + self.data = data + else: + if self.mode == 'sum' or self.mode == 'avg': + self.data = self.data + data + if self.mode == 'max': + self.data = max(self.data,data) + if self.mode == 'min': + self.data = min(self.data,data) + self.count = self.count + 1 + + def finalise(self): + + if self.mode == 'sum' or self.mode == 'min' or self.mode == 'max': + self.result = self.data + if self.mode == 'avg': + self.result = self.data/self.count + + + + + class wf_OutputTimeSeriesArea(): def __init__(self, area,oformat='csv'): @@ -347,6 +390,31 @@ self.APIDebug = int(configget(self._userModel().config,'framework','debug',str(self.APIDebug))) + self.statslst = [] + sum_maps = configsection(self._userModel().config,"summary_sum") + for thismap in sum_maps: + thismapname = self._userModel().config.get("summary_sum",thismap) + thismap = thismap.split('self.')[1] + self.statslst.append(wf_sumavg(thismap,mode='sum',filename=thismapname)) + + max_maps = configsection(self._userModel().config,"summary_max") + for thismap in max_maps: + thismapname = self._userModel().config.get("summary_max",thismap) + thismap = thismap.split('self.')[1] + self.statslst.append(wf_sumavg(thismap,mode='max',filename=thismapname)) + + min_maps = configsection(self._userModel().config,"summary_min") + for thismap in min_maps: + thismapname = self._userModel().config.get("summary_min",thismap) + thismap = thismap.split('self.')[1] + self.statslst.append(wf_sumavg(thismap,mode='min',filename=thismapname)) + + avg_maps = configsection(self._userModel().config,"summary_avg") + for thismap in avg_maps: + thismapname = self._userModel().config.get("summary_avg",thismap) + thismap = thismap.split('self.')[1] + self.statslst.append(wf_sumavg(thismap,mode='avg',filename=thismapname)) + # Add the summary/statistics variable to the class # self._addAttributeToClass("summap",self._userModel().clone) @@ -454,9 +522,18 @@ pcrmap = getattr(self._userModel(),b) report( pcrmap , self._userModel().Dir + "/" + self._userModel().runId + "/outsum/" + b + ".map" ) + for a in range(0,len(self.statslst)): + self.statslst[a].finalise() + data = self.statslst[a].result + fname = self.statslst[a].filename + report (data,fname) + + + + def wf_savedynMaps(self): """ Save the maps defined in the ini file for the dynamic section @@ -1162,7 +1239,11 @@ self.wf_QuickSuspend() self.wf_savedynMaps() self.wf_saveTimeSeries() + for a in range(0,len(self.statslst)): + data = getattr(self._userModel(),self.statslst[a].varname) + self.statslst[a].add_one(data) + self._timeStepFinished() self._decrementIndentLevel() step += 1 Index: wflow-py/wflow/wflow_sbm.py =================================================================== diff -u -rc9f2d19434615e9c38c8404563972593bc81fc79 -r3b29d4c807feb6a6664c21bbece6e0896e60b801 --- wflow-py/wflow/wflow_sbm.py (.../wflow_sbm.py) (revision c9f2d19434615e9c38c8404563972593bc81fc79) +++ wflow-py/wflow/wflow_sbm.py (.../wflow_sbm.py) (revision 3b29d4c807feb6a6664c21bbece6e0896e60b801) @@ -773,6 +773,7 @@ 'self.FirstZoneKsatVer', 'self.M', 'self.FirstZoneCapacity', + 'self.et_RefToPot', 'self.Slope', 'self.CC', 'self.N',