Index: wflow-py/wflow/reservoir_Sw.py =================================================================== diff -u -r978510e581d205d904b07bc305a5d0550779c581 -rb0a0649fbc4d5ed289c09f5beffbd40a711e95ca --- wflow-py/wflow/reservoir_Sw.py (.../reservoir_Sw.py) (revision 978510e581d205d904b07bc305a5d0550779c581) +++ wflow-py/wflow/reservoir_Sw.py (.../reservoir_Sw.py) (revision b0a0649fbc4d5ed289c09f5beffbd40a711e95ca) @@ -25,7 +25,15 @@ import scipy import JarvisCoefficients +def selectSwR(i): + if i == 1: + name = 'snow' + if i == 2: + name = 'snowHour' + + return name + def snow_no_reservoir(self, k): """ This function is used when no snow zone reservoir is used and only @@ -45,8 +53,11 @@ def snow(self,k): """ - snow melt based on degree day factor and + - + - Code for ini-file: 1 """ JarvisCoefficients.calcEpSnow(self,k) + self.PotEvaporation = self.EpHour self.PotEvaporation = cover(ifthenelse(self.EpHour > 0, self.EpHour, 0),0) self.Sw[k] = self.Sw_t[k] + self.PrecipitationSnow @@ -72,9 +83,12 @@ """ - snow melt based on degree day factor and minimum surface temperature - meltfactor increases with temperature + - + - Code for ini-file: 6 """ JarvisCoefficients.calcEpSnow(self,k) + #self.PotEvaporation = self.EpHour self.PotEvaporation = cover(ifthenelse(self.EpHour > 0, self.EpHour, 0),0) self.Sw[k] = self.Sw_t[k] + self.PrecipitationSnow @@ -101,6 +115,8 @@ """ - snow melt based on degree day factor and minimum surface temperature - meltfactor increases with temperature + - + - Code for ini-file: 6 """ JarvisCoefficients.calcEpSnowHour(self,k) @@ -130,9 +146,12 @@ """ - snow melt based on degree day factor and minimum surface temperature - meltfactor increases with temperature + - + - Code for ini-file: 3 """ JarvisCoefficients.calcEpSnow(self,k) + #self.PotEvaporation = self.EpHour self.PotEvaporation = cover(ifthenelse(self.EpHour > 0, self.EpHour, 0),0) self.Sw[k] = self.Sw_t[k] + self.PrecipitationSnow @@ -159,8 +178,11 @@ """ - snow melt based on degree day factor and minimum surface temperature - meltfactor increases with temperature + - + - Code for ini-file: 4 """ JarvisCoefficients.calcEpSnow(self,k) + #self.PotEvaporation = self.EpHour self.PotEvaporation = cover(ifthenelse(self.EpHour > 0, self.EpHour, 0),0) self.Sw[k] = self.Sw_t[k] + self.PrecipitationSnow @@ -184,3 +206,67 @@ self.Ew_[k] = self.Ew self.Qw_[k] = self.Qw +def snow_rain_Tsurf_noEw(self,k): + """ + - snow melt based on degree day factor and minimum surface temperature + - meltfactor increases with temperature + - + - Code for ini-file: 5 + """ + JarvisCoefficients.calcEpSnow(self,k) + #self.PotEvaporation = self.EpHour + self.PotEvaporation = cover(ifthenelse(self.EpHour > 0, self.EpHour, 0),0) + + self.Sw[k] = self.Sw_t[k] + self.PrecipitationSnow + + self.Fm2 = max(self.Fm[k] * self.Precipitation, self.Fm[k]) + self.Ew1 = 0 + self.Qw1 = max(min(self.Fm2 * (self.TempSurf - self.Tm[k]), self.Sw[k]), 0) + + self.Sw[k] = self.Sw_t[k] + self.PrecipitationSnow - self.Ew1 - self.Qw1 + + self.Sw_diff = ifthenelse(self.Sw[k] < 0, self.Sw[k], 0) + self.Ew = self.Ew1 + (self.Ew1/ifthenelse(self.Ew1 + self.Qw1 > 0 , self.Ew1 + self.Qw1 , 1)) * self.Sw_diff + self.Qw = self.Qw1 + (self.Qw1/ifthenelse(self.Ew1 + self.Qw1 > 0 , self.Ew1 + self.Qw1 , 1)) * self.Sw_diff + self.Sw[k] = self.Sw_t[k] + self.PrecipitationSnow - self.Ew - self.Qw + self.Sw[k] = ifthenelse(self.Sw[k] < 0, 0 , self.Sw[k]) + self.Sw_diff2 = ifthen(self.Sw[k] < 0, self.Sw[k]) + + self.wbSw_[k] = self.PrecipitationSnow - self.Ew - self.Qw - self.Sw[k] + self.Sw_t[k] + + self.Ew_[k] = self.Ew + self.Qw_[k] = self.Qw + +def snowHour(self,k): + """ + - snow melt based on degree day factor and + - for hourly input data + - Code for ini-file: 2 + """ +# JarvisCoefficients.calcEpSnowHour(self,k) +# self.PotEvaporation = self.EpHour +# self.PotEvaporation = ifthenelse(self.EpHour > 0, self.EpHour, 0) + + self.Sw[k] = self.Sw_t[k] + self.PrecipitationSnow + + self.Ew1 = max(min(self.PotEvaporation,self.Sw[k]),0) +# self.Ew1 = 0 + self.Qw1 = max(self.Fm[k] * (self.Temperature - self.Tm[k]), 0) + + self.Sw[k] = self.Sw_t[k] + self.PrecipitationSnow - self.Ew1 - self.Qw1 + + self.Sw_diff = ifthenelse(self.Sw[k] < 0, self.Sw[k], 0) + self.Ew = self.Ew1 + (self.Ew1/ifthenelse(self.Ew1 + self.Qw1 > 0 , self.Ew1 + self.Qw1 , 1)) * self.Sw_diff + self.Qw = self.Qw1 + (self.Qw1/ifthenelse(self.Ew1 + self.Qw1 > 0 , self.Ew1 + self.Qw1 , 1)) * self.Sw_diff + self.Sw[k] = self.Sw_t[k] + self.PrecipitationSnow - self.Ew - self.Qw + self.Sw[k] = ifthenelse(self.Sw[k] < 0, 0 , self.Sw[k]) + self.Sw_diff2 = ifthen(self.Sw[k] < 0, self.Sw[k]) + +# if any(pcr2numpy(self.Sw[k],nan) > 0): +# pdb.set_trace() + self.wbSw_[k] = self.PrecipitationSnow - self.Ew - self.Qw - self.Sw[k] + self.Sw_t[k] + + self.Ew_[k] = self.Ew + self.Qw_[k] = self.Qw +# if any(pcr2numpy(self.Qw,nan) > 0): +# pdb.set_trace()