Index: wflow-py/wflow/reservoir_Si.py =================================================================== diff -u -rad5e049f1419c25bc30c20d2d0e1bcc56dcb4381 -r36b469410a4a5af24c3902cbebb595e9da83c7bb --- wflow-py/wflow/reservoir_Si.py (.../reservoir_Si.py) (revision ad5e049f1419c25bc30c20d2d0e1bcc56dcb4381) +++ wflow-py/wflow/reservoir_Si.py (.../reservoir_Si.py) (revision 36b469410a4a5af24c3902cbebb595e9da83c7bb) @@ -11,9 +11,9 @@ from copy import copy as copylist try: - from wflow.wf_DynamicFramework import * + from wflow.wf_DynamicFramework import * except ImportError: - from wf_DynamicFramework import * + from wf_DynamicFramework import * import JarvisCoefficients @@ -23,13 +23,14 @@ (with the same numbering) in h:\My Documents\memo's\python scripts\wflow\ """ if i == 1: - name = 'interception_overflow' + name = "interception_overflow" if i == 2: - name = 'interception_overflow2' + name = "interception_overflow2" if i == 3: - name = 'interception_overflow_Ep' + name = "interception_overflow_Ep" return name + def interception_no_reservoir(self, k): """ Effective rainfall = rainfall @@ -39,63 +40,84 @@ self.Pe_[k] = max(self.Precipitation, 0) self.Ei_[k] = 0. self.Si_[k] = 0. - self.wbSi_[k] = self.Precipitation - self.Ei_[k] - self.Pe_[k] - self.Si[k] + self.Si_t[k] + self.wbSi_[k] = ( + self.Precipitation - self.Ei_[k] - self.Pe_[k] - self.Si[k] + self.Si_t[k] + ) + def interception_overflow2(self, k): """ - Effective rainfall is all that does not fit into the interception reservoir - Outgoing fluxes are determined separately - Code for ini-file: 2 """ - - self.Pe = max(self.Precipitation - (self.imax[k] - self.Si_t[k]),0) + + self.Pe = max(self.Precipitation - (self.imax[k] - self.Si_t[k]), 0) self.Si[k] = self.Si_t[k] + (self.Precipitation - self.Pe) - self.Ei = ifthenelse(self.Sw[k] == 0, min(self.PotEvaporation, self.Si[k]), 0) #ifstatement added on 3-11-2015 for snow module - self.Si[k] = self.Si[k] - self.Ei - - self.wbSi_[k] = self.Precipitation - self.Ei - self.Pe - self.Si[k] + self.Si_t[k] - - self.Pe = self.Pe + self.Qw_[k] #added on 3-11-2015 for snow module - self.Ei = self.Ei + (self.Ew_[k] / self.lamda * self.lamdaS) #lambda added on 31-3-2016 - - self.Ei_[k]=self.Ei - self.Pe_[k]=self.Pe - self.PotEvaporation_ = self.PotEvaporation - + self.Ei = ifthenelse( + self.Sw[k] == 0, min(self.PotEvaporation, self.Si[k]), 0 + ) # ifstatement added on 3-11-2015 for snow module + self.Si[k] = self.Si[k] - self.Ei + + self.wbSi_[k] = self.Precipitation - self.Ei - self.Pe - self.Si[k] + self.Si_t[k] + + self.Pe = self.Pe + self.Qw_[k] # added on 3-11-2015 for snow module + self.Ei = self.Ei + ( + self.Ew_[k] / self.lamda * self.lamdaS + ) # lambda added on 31-3-2016 + + self.Ei_[k] = self.Ei + self.Pe_[k] = self.Pe + self.PotEvaporation_ = self.PotEvaporation + if self.URFR_L: - self.Ei = areatotal(self.Ei * self.percentArea, nominal(self.TopoId)) - self.Pe = areatotal(self.Pe * self.percentArea, nominal(self.TopoId)) - self.PotEvaporation = areatotal(self.PotEvaporation * self.percentArea, nominal(self.TopoId)) - self.Si[k] = areatotal(self.Si[k] * self.percentArea, nominal(self.TopoId)) + self.Ei = areatotal(self.Ei * self.percentArea, nominal(self.TopoId)) + self.Pe = areatotal(self.Pe * self.percentArea, nominal(self.TopoId)) + self.PotEvaporation = areatotal( + self.PotEvaporation * self.percentArea, nominal(self.TopoId) + ) + self.Si[k] = areatotal(self.Si[k] * self.percentArea, nominal(self.TopoId)) -def interception_overflow_Ep(self,k): +def interception_overflow_Ep(self, k): """ - Effective rainfall is all that does not fit into the interception reservoir - Outgoing fluxes are determined separately - this version cannot be run with Su averaged (for the current code) - Code for ini-file: 3 """ - JarvisCoefficients.calcEp(self,k) #this line indicates that hourly profiles are made out of daily pot evap data based on start day (DS.tss) and day end (DE) - self.PotEvaporation = cover(ifthenelse(self.EpHour >= 0, self.EpHour, 0),0) - - self.Pe = max(self.Precipitation - (self.imax[k] - self.Si_t[k]),0) + JarvisCoefficients.calcEp( + self, k + ) # this line indicates that hourly profiles are made out of daily pot evap data based on start day (DS.tss) and day end (DE) + self.PotEvaporation = cover(ifthenelse(self.EpHour >= 0, self.EpHour, 0), 0) + + self.Pe = max(self.Precipitation - (self.imax[k] - self.Si_t[k]), 0) self.Si[k] = self.Si_t[k] + (self.Precipitation - self.Pe) - self.Ei = ifthenelse(self.Sw[k] == 0, min((self.PotEvaporation - (self.Ew_[k] / self.lamda * self.lamdaS)), self.Si[k]), 0) #ifstatement added on 3-11-2015 for snow module, '-self.Ew_[k]' added on 17-2-2016 - self.Si[k] = self.Si[k] - self.Ei - - self.wbSi_[k] = self.Precipitation - self.Ei - self.Pe - self.Si[k] + self.Si_t[k] - - self.Pe = self.Pe + self.Qw_[k] #added on 3-11-2015 for snow module - self.Ei = self.Ei + (self.Ew_[k] / self.lamda * self.lamdaS) #lambda added on 17-2-2016 - - self.Ei_[k]=self.Ei - self.Pe_[k]=self.Pe - self.Ep_[k]=self.EpHour - + self.Ei = ifthenelse( + self.Sw[k] == 0, + min( + (self.PotEvaporation - (self.Ew_[k] / self.lamda * self.lamdaS)), self.Si[k] + ), + 0, + ) # ifstatement added on 3-11-2015 for snow module, '-self.Ew_[k]' added on 17-2-2016 + self.Si[k] = self.Si[k] - self.Ei + + self.wbSi_[k] = self.Precipitation - self.Ei - self.Pe - self.Si[k] + self.Si_t[k] + + self.Pe = self.Pe + self.Qw_[k] # added on 3-11-2015 for snow module + self.Ei = self.Ei + ( + self.Ew_[k] / self.lamda * self.lamdaS + ) # lambda added on 17-2-2016 + + self.Ei_[k] = self.Ei + self.Pe_[k] = self.Pe + self.Ep_[k] = self.EpHour + if self.URFR_L: - self.Ei = areatotal(self.Ei * self.percentArea, nominal(self.TopoId)) - self.Pe = areatotal(self.Pe * self.percentArea, nominal(self.TopoId)) - self.PotEvaporation = areatotal(self.PotEvaporation * self.percentArea, nominal(self.TopoId)) - self.Si[k] = areatotal(self.Si[k] * self.percentArea, nominal(self.TopoId)) \ No newline at end of file + self.Ei = areatotal(self.Ei * self.percentArea, nominal(self.TopoId)) + self.Pe = areatotal(self.Pe * self.percentArea, nominal(self.TopoId)) + self.PotEvaporation = areatotal( + self.PotEvaporation * self.percentArea, nominal(self.TopoId) + ) + self.Si[k] = areatotal(self.Si[k] * self.percentArea, nominal(self.TopoId))