Index: examples/wflow_rhine_sbm/wflow_sbm.ini =================================================================== diff -u -ra625823533647abcecdab68adc8b1991b1d63a51 -r9fb69bd394b86a7a17e668f72567e692f141e911 --- examples/wflow_rhine_sbm/wflow_sbm.ini (.../wflow_sbm.ini) (revision a625823533647abcecdab68adc8b1991b1d63a51) +++ examples/wflow_rhine_sbm/wflow_sbm.ini (.../wflow_sbm.ini) (revision 9fb69bd394b86a7a17e668f72567e692f141e911) @@ -119,8 +119,12 @@ self.PotenEvap=PET self.Precipitation=P self.MassBalKinWave=wat -self.SurfaceRunoff_mean_10=m30 +self.SurfaceRunoff_mean_15=m30 +# self.VAriable=nr_of_points_to_average +[rollingmean] +self.SurfaceRunoff=15 + [summary] self.MaxLeakage=MaxLeakage.map #self.CCup=CCup.map Index: wflow-py/wflow/wf_DynamicFramework.py =================================================================== diff -u -ra625823533647abcecdab68adc8b1991b1d63a51 -r9fb69bd394b86a7a17e668f72567e692f141e911 --- wflow-py/wflow/wf_DynamicFramework.py (.../wf_DynamicFramework.py) (revision a625823533647abcecdab68adc8b1991b1d63a51) +++ wflow-py/wflow/wf_DynamicFramework.py (.../wf_DynamicFramework.py) (revision 9fb69bd394b86a7a17e668f72567e692f141e911) @@ -240,16 +240,14 @@ :param name: :return: """ - - if self.count[name] == 0: self.result[name] = data else: if self.mode[name] =='mean': - self.result[name] -= self.result[name]/self.points[name] - self.result[name] += data/self.points[name] + self.result[name] = self.result[name] * (self.points[name] -1)/self.points[name] + data/self.points[name] self.count[name] = self.count[name] + 1 + return self.result[name] class wf_sumavg(): @@ -1056,7 +1054,16 @@ # Add the on-lien statistics self.onlinestat = wf_online_stats() - self.onlinestat.addstat('SurfaceRunoff',points=10) + rollingvars = configsection(self._userModel().config, "rollingmean") + for thisvar in rollingvars: + try: + thisvarnoself = thisvar.split('self.')[1] + except: + logging.error("Entry in ini invalid: " + thisvar) + raise ValueError + pts = int(self._userModel().config.get("rollingmean", thisvar)) + self.onlinestat.addstat(thisvarnoself,points=pts) + # Fill the summary (stat) list from the ini file self.statslst = [] _type = wf_sumavg(None) @@ -2042,16 +2049,18 @@ self._decrementIndentLevel() # Save state variables in memory 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) for key in self.onlinestat.statvarname: - stvar = self.onlinestat.getstat(getattr(self._userModel(),key),key) + #stvar = self.onlinestat.getstat(getattr(self._userModel(),key),key) + stvar = self.onlinestat.getstat(cover(self.DT.currentTimeStep * 1.0), key) setattr(self._userModel(),self.onlinestat.statvarname[key],stvar) + self.wf_savedynMaps() + self.wf_saveTimeSeries() #self.currentdatetime = self.currentdatetime + dt.timedelta(seconds=self._userModel().timestepsecs)