当前位置: 首页>>代码示例>>Python>>正文


Python JarvisCoefficients类代码示例

本文整理汇总了Python中JarvisCoefficients的典型用法代码示例。如果您正苦于以下问题:Python JarvisCoefficients类的具体用法?Python JarvisCoefficients怎么用?Python JarvisCoefficients使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。


在下文中一共展示了JarvisCoefficients类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: agriZone_Ep

def agriZone_Ep(self,k):
    """
    - Potential evaporation is decreased by energy used for interception evaporation    
    - Formula for evaporation based on LP
    - Outgoing fluxes are determined based on (value in previous timestep + inflow) 
    and if this leads to negative storage, the outgoing fluxes are corrected to rato --> Eu is 
    no longer taken into account for this correction
    - Qa u is determined from overflow from Sa
    - Code for ini-file: 2
    """
    JarvisCoefficients.calcEp(self,k)
    self.PotEvaporation = self.EpHour    
    
    self.Qa = max(self.Pe - (self.samax[k] - self.Sa_t[k]),0)    
    self.Sa[k] = self.Sa_t[k] + (self.Pe - self.Qa)
    self.SaN = self.Sa[k] / self.samax[k]
    self.SuN = self.Su[k] / self.sumax[k]
    
    self.Ea1 = max((self.PotEvaporation - self.Ei),0) * min(self.Sa[k] / (self.samax[k] * self.LP[k]),1)        
    
    self.Fa1 = self.Fmin[k] + (self.Fmax[k] - self.Fmin[k]) * e ** (-self.decF[k] * self.SuN)
    self.Sa[k] = self.Sa_t[k] + (self.Pe - self.Qa) - self.Fa1 - self.Ea1

    self.Sa_diff = ifthenelse(self.Sa[k] < 0, self.Sa[k], 0)
    self.Fa = self.Fa1 + (self.Fa1/ifthenelse(self.Fa1 + self.Ea1 > 0 , self.Fa1 + self.Ea1 , 1)) * self.Sa_diff
    self.Ea = self.Ea1 + (self.Ea1/ifthenelse(self.Fa1 + self.Ea1 > 0 , self.Fa1 + self.Ea1 , 1)) * self.Sa_diff
    self.Sa[k] = self.Sa_t[k] + (self.Pe - self.Qa) - self.Ea - self.Fa   
    self.Sa[k] = ifthenelse(self.Sa[k] < 0, 0 , self.Sa[k])    
    self.Sa_diff2 = ifthen(self.Sa[k] < 0, self.Sa[k]) 

    self.wbSa_[k] = self.Pe - self.Ea - self.Qa - self.Fa - self.Sa[k] + self.Sa_t[k]
    
    self.Ea_[k] = self.Ea
    self.Qa_[k] = self.Qa
    self.Fa_[k] = self.Fa
开发者ID:andreybugaets,项目名称:wflow,代码行数:35,代码来源:reservoir_Sa.py

示例2: interception_overflow_Ep

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)
    
    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 = min(self.EpHour, self.Si[k])
    self.Si[k] = self.Si[k] - self.Ei    
    
    self.Ei_[k]=self.Ei
    self.Pe_[k]=self.Pe
    self.Ep_[k]=self.EpHour
   
    self.wbSi_[k] = self.Precipitation - self.Ei - self.Pe - self.Si[k] + self.Si_t[k]    
    
    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))
开发者ID:pengbinpeluo,项目名称:wflow,代码行数:26,代码来源:reservoir_Si.py

示例3: snow_rain_hourlyEp

def snow_rain_hourlyEp(self,k):
    """
    - snow melt based on degree day factor and minimum surface temperature
    - meltfactor increases with temperature
    """
   
    JarvisCoefficients.calcEpSnowHour(self,k)
    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 = max(min(self.PotEvaporation, self.Sw[k]),0)
    self.Qw1 = max(min(self.Fm2 * (self.Temperature - 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
开发者ID:Imme1992,项目名称:wflow,代码行数:28,代码来源:reservoir_Sw.py

示例4: agriZone_Jarvis

def agriZone_Jarvis(self,k):
    """
    - Potential evaporation is decreased by energy used for interception evaporation    
    - Formula for evaporation based on Jarvis stress functions
    - Outgoing fluxes are determined based on (value in previous timestep + inflow) 
    and if this leads to negative storage, the outgoing fluxes are corrected to rato --> Eu is 
    no longer taken into account for this correction
    - Qa u is determined from overflow from Sa
    - Code for ini-file: 1
    """
    self.Qa = max(self.Pe - (self.samax[k] - self.Sa_t[k]),0)    
    self.Sa[k] = self.Sa_t[k] + (self.Pe - self.Qa)
    self.SaN = self.Sa[k] / self.samax[k]
    self.SuN = self.Su[k] / self.sumax[k]
    
    JarvisCoefficients.calcEu(self,k,1)           #calculation of Ea based on Jarvis stress functions
    self.Ea1 = self.Eu
    
#    if self.teller == 45:
#        pdb.set_trace()
    self.Fa1 = self.Fmin[k] + (self.Fmax[k] - self.Fmin[k]) * e ** (-self.decF[k] * self.SuN)
    self.Sa[k] = self.Sa_t[k] + (self.Pe - self.Qa) - self.Fa1 - self.Ea1

    self.Sa_diff = ifthenelse(self.Sa[k] < 0, self.Sa[k], 0)
    self.Fa = self.Fa1 + (self.Fa1/ifthenelse(self.Fa1 + self.Ea1 > 0 , self.Fa1 + self.Ea1 , 1)) * self.Sa_diff
    self.Ea = self.Ea1 + (self.Ea1/ifthenelse(self.Fa1 + self.Ea1 > 0 , self.Fa1 + self.Ea1 , 1)) * self.Sa_diff
    self.Sa[k] = self.Sa_t[k] + (self.Pe - self.Qa) - self.Ea - self.Fa   
    self.Sa[k] = ifthenelse(self.Sa[k] < 0, 0 , self.Sa[k])    
    self.Sa_diff2 = ifthen(self.Sa[k] < 0, self.Sa[k]) 

    self.wbSa_[k] = self.Pe - self.Ea - self.Qa - self.Fa - self.Sa[k] + self.Sa_t[k]
    
    self.Ea_[k] = self.Ea
    self.Qa_[k] = self.Qa
    self.Fa_[k] = self.Fa
开发者ID:andreybugaets,项目名称:wflow,代码行数:35,代码来源:reservoir_Sa.py

示例5: interception_overflow_Ep

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)
    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    
    
    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))
开发者ID:edwinkost,项目名称:wflow,代码行数:30,代码来源:reservoir_Si.py

示例6: snow

def snow(self,k):
    """
    - snow melt based on degree day factor and 
    """
    JarvisCoefficients.calcEpSnow(self,k)
    self.PotEvaporation = cover(ifthenelse(self.EpHour > 0, self.EpHour, 0),0)
    
    self.Sw[k] = self.Sw_t[k] + self.PrecipitationSnow
    
    self.Ew1 = max(min(self.PotEvaporation,self.Sw[k]),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]) 

    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
开发者ID:Imme1992,项目名称:wflow,代码行数:25,代码来源:reservoir_Sw.py

示例7: unsatZone_LP_beta_Ep_cropG

def unsatZone_LP_beta_Ep_cropG(self,k):
    """
    - Potential evaporation is calculated with formula in 'JarvisCoefficients', but without
    using the Jarvis stress functions
    - Potential evaporation is decreased by energy used for interception evaporation    
    - Formula for evaporation linear until LP, from than with potential rate
    - Outgoing fluxes are determined based on (value in previous timestep + inflow) 
    and if this leads to negative storage, the outgoing fluxes are corrected to rato
    - Qu is determined with a beta function (same as in HBV?)
    - root zone storage for crop land is decreased in autumn and winter
    - Code for ini-file: 20
    """
    
    JarvisCoefficients.calcEp(self,k)
    self.PotEvaporation = self.EpHour
#    
#    pdb.set_trace()
    self.cropG_scal = pcr2numpy(self.cropG,NaN)
    if any(self.cropG_scal == 1):
        self.sumax2 = self.sumax[k]
    elif any(self.cropG_scal > 0):
#        pdb.set_trace()        
        self.sumax2 = self.sumax[k] * (1 - numpy.max(self.cropG_scal[self.cropG_scal >= 0]) * (1-self.redsu[k]))
    else:
        self.sumax2 = self.sumax[k] * self.redsu[k]
        
    self.Su[k] = ifthenelse(self.Su_t[k] + self.Pe > self.sumax2, self.sumax2, self.Su_t[k] + self.Pe) 
    self.Quadd = ifthenelse(self.Su_t[k] + self.Pe > self.sumax2, self.Su_t[k] + self.Pe - self.sumax2, 0)
    self.SuN = self.Su[k] / self.sumax2
    self.SiN = self.Si[k] / self.imax[k]    
    
    self.Eu1 = max((self.PotEvaporation - self.Ei),0) * min(self.Su[k] / (self.sumax2 * self.LP[k]),1)
        
    self.Qu1 = (self.Pe - self.Quadd) * (1 - (1 - self.SuN) ** self.beta[k])
    self.Perc1 = self.perc[k] * self.SuN
    self.Su[k] = self.Su_t[k] + (self.Pe - self.Quadd) - self.Qu1 - self.Eu1 - self.Perc1

    self.Su_diff = ifthenelse(self.Su[k] < 0, self.Su[k], 0)
    self.Eu = self.Eu1 + (self.Eu1 / ifthenelse(self.Qu1 + self.Eu1 +self.Perc1 > 0 , self.Qu1 + self.Eu1 + self.Perc1 , 1)) * self.Su_diff
    self.Qu = self.Qu1 + (self.Qu1/ifthenelse(self.Qu1 + self.Eu1 + self.Perc1 > 0 , self.Qu1 + self.Eu1 + self.Perc1 , 1)) * self.Su_diff
    self.Perc = ifthenelse (self.Perc1 > 0, self.Perc1 + (self.Perc1/ifthenelse(self.Qu1 + self.Eu1 + self.Perc1 > 0 , self.Qu1 + self.Eu1 + self.Perc1 , 1)) * self.Su_diff, self.Perc1)
    self.Su[k] = self.Su_t[k] + (self.Pe - self.Quadd) - self.Eu - self.Qu - self.Perc   
    self.Su[k] = ifthenelse(self.Su[k] < 0, 0 , self.Su[k])    
    self.Su_diff2 = ifthen(self.Su[k] < 0, self.Su[k]) 

    self.Cap = min(self.cap[k] * (1 - self.Su[k] / self.sumax2), self.Ss)    
    self.Su[k] = self.Su[k] + self.Cap    
    
    self.wbSu_[k] = self.Pe - self.Eu - self.Qu - self.Quadd - self.Perc + self. Cap - self.Su[k] + self.Su_t[k]
    
    self.Eu_[k] = self.Eu
    self.Qu_[k] = self.Qu + self.Quadd
    self.Cap_[k] = self.Cap
    self.Perc_[k] = self.Perc
开发者ID:andreybugaets,项目名称:wflow,代码行数:54,代码来源:reservoir_Su.py

示例8: unsatZone_LP_beta_Ep_percDvar

def unsatZone_LP_beta_Ep_percDvar(self,k):
    """
    - Potential evaporation is calculated with formula in 'JarvisCoefficients', but without
    using the Jarvis stress functions
    - Potential evaporation is decreased by energy used for interception evaporation    
    - Formula for evaporation linear until LP, from than with potential rate
    - Outgoing fluxes are determined based on (value in previous timestep + inflow) 
    and if this leads to negative storage, the outgoing fluxes are corrected to rato
    - Qu is determined with a beta function (same as in HBV?)
    - Code for ini-file: 13
    """
    
    JarvisCoefficients.calcEp(self,k)
    self.PotEvaporation = cover(ifthenelse(self.EpHour >= 0, self.EpHour, 0),0)  
    
    self.Su[k] = ifthenelse(self.Su_t[k] + self.Pe > self.sumax[k], self.sumax[k], self.Su_t[k] + self.Pe) 
    self.Quadd = ifthenelse(self.Su_t[k] + self.Pe > self.sumax[k], self.Su_t[k] + self.Pe - self.sumax[k], 0)
    self.SuN = self.Su[k] / self.sumax[k]
    self.SiN = self.Si[k] / self.imax[k]    

    self.drought = ifthenelse(self.SuN < self.LP[k], self.TopoId, ifthenelse(pcrand(self.SuN < 0.8, self.drought), self.TopoId, boolean(scalar(self.TopoId) * 0)))
    self.stijg = max(min(scalar(ifthenelse(self.drought == 1, self.stijg + self.Su_t[k] - self.Su_t2[k], 0)), self.sumax[k] * 100), 0)
    
    self.Eu1 = max((self.PotEvaporation - self.Ei),0) * min(self.Su[k] / (self.sumax[k] * self.LP[k]),1)
    
    self.Qu1 = (self.Pe - self.Quadd) * (1 - (1 - self.SuN) ** self.beta[k])
#    self.percDeep = max(10 * (1 - self.Ss / 30) * self.perc[k], 0)
    self.percDeep = 0.8 * self.stijg * self.perc[k]
    self.Perc1 = self.perc[k] * self.SuN + self.percDeep
    self.Su[k] = self.Su_t[k] + (self.Pe - self.Quadd) - self.Qu1 - self.Eu1 - self.Perc1

    self.Su_diff = ifthenelse(self.Su[k] < 0, self.Su[k], 0)
    self.Eu = self.Eu1 + (self.Eu1 / ifthenelse(self.Qu1 + self.Eu1 +self.Perc1 > 0 , self.Qu1 + self.Eu1 + self.Perc1 , 1)) * self.Su_diff
    self.Qu = self.Qu1 + (self.Qu1/ifthenelse(self.Qu1 + self.Eu1 + self.Perc1 > 0 , self.Qu1 + self.Eu1 + self.Perc1 , 1)) * self.Su_diff
    self.Perc = ifthenelse (self.Perc1 > 0, self.Perc1 + (self.Perc1/ifthenelse(self.Qu1 + self.Eu1 + self.Perc1 > 0 , self.Qu1 + self.Eu1 + self.Perc1 , 1)) * self.Su_diff, self.Perc1)
    self.Su[k] = self.Su_t[k] + (self.Pe - self.Quadd) - self.Eu - self.Qu - self.Perc   
    self.Su[k] = ifthenelse(self.Su[k] < 0, 0 , self.Su[k])    
    self.Su_diff2 = ifthen(self.Su[k] < 0, self.Su[k]) 

    self.Cap = min(self.cap[k] * (1 - self.Su[k] / self.sumax[k]), self.Ss)    
    self.Su[k] = self.Su[k] + self.Cap    
    
    self.wbSu_[k] = self.Pe - self.Eu - self.Qu - self.Quadd - self.Perc + self. Cap - self.Su[k] + self.Su_t[k]
    
    self.Eu_[k] = self.Eu
    self.Qu_[k] = self.Qu + self.Quadd
    self.Cap_[k] = self.Cap
    self.Perc_[k] = self.Perc
    self.Epot_[k] = self.PotEvaporation
    self.percDeep_[k] = self.percDeep
开发者ID:edwinkost,项目名称:wflow,代码行数:50,代码来源:reservoir_Su.py

示例9: unsatZone_forAgri_Ep_cropG

def unsatZone_forAgri_Ep_cropG(self,k):
    """
    - Potential evaporation is decreased by energy used for interception evaporation    
    - Formula for evaporation based on beta/LP
    - Outgoing fluxes are determined based on (value in previous timestep + inflow) 
    and if this leads to negative storage, the outgoing fluxes are corrected to rato --> Eu is 
    no longer taken into account for this correction
    - Qu is determined with a beta function (same as in HBV?)
    - inflow is infiltration from agriculture reservoir
    - Code for ini-file: 19
    """
    
    JarvisCoefficients.calcEp(self,k)
    self.PotEvaporation = cover(ifthenelse(self.EpHour >= 0, self.EpHour, 0),0)  
    
    self.cropG_scal = pcr2numpy(self.cropG,NaN)
    if any(self.cropG_scal == 1):
        self.sumax2 = self.sumax[k]
    else:
        self.sumax2 = self.sumax[k] * self.redsu[k]
        
    self.Su[k] = ifthenelse(self.Su_t[k] + self.Fa > self.sumax2, self.sumax2, self.Su_t[k] + self.Fa) 
    self.Quadd = ifthenelse(self.Su_t[k] + self.Fa > self.sumax2, self.Su_t[k] + self.Fa - self.sumax2, 0)
    self.SuN = self.Su[k] / self.sumax2
    self.SiN = self.Si[k] / self.imax[k]    
    
    self.Eu1 = max((self.PotEvaporation - self.Ei),0) * min(self.Su[k] / (self.sumax2 * self.LP[k]),1)        
    
    self.Qu1 = (self.Fa - self.Quadd) * (1 - (1 - self.SuN) ** self.beta[k])
    self.Perc1 = self.perc[k] * self.SuN
    self.Su[k] = self.Su_t[k] + (self.Fa - self.Quadd) - self.Qu1 - self.Eu - self.Perc1

    self.Su_diff = ifthenelse(self.Su[k] < 0, self.Su[k], 0)
    self.Eu = self.Eu1 + (self.Eu1 / ifthenelse(self.Qu1 + self.Eu1 + self.Perc1 > 0 , self.Qu1 + self.Eu1 + self.Perc1 , 1)) * self.Su_diff
    self.Qu = self.Qu1 + (self.Qu1 / ifthenelse(self.Qu1 + self.Eu1 + self.Perc1 > 0 , self.Qu1 + self.Eu1 + self.Perc1 , 1)) * self.Su_diff
    self.Perc = ifthenelse (self.Perc1 > 0, self.Perc1 + (self.Perc1 / ifthenelse(self.Qu1 + self.Eu1 + self.Perc1 > 0 , self.Qu1 + self.Eu1 + self.Perc1 , 1)) * self.Su_diff, self.Perc1)
    self.Su[k] = self.Su_t[k] + (self.Fa - self.Quadd) - self.Eu - self.Qu - self.Perc   
    self.Su[k] = ifthenelse(self.Su[k] < 0, 0 , self.Su[k])    
    self.Su_diff2 = ifthen(self.Su[k] < 0, self.Su[k]) 

    self.Cap = min(self.cap[k] * (1 - self.Su[k] / self.sumax2), self.Ss)    
    self.Su[k] = self.Su[k] + self.Cap    
    
    self.wbSu_[k] = self.Fa - self.Eu - self.Qu - self.Quadd - self.Perc + self. Cap - self.Su[k] + self.Su_t[k]
    
    self.Eu_[k] = self.Eu
    self.Qu_[k] = self.Qu + self.Quadd
    self.Cap_[k] = self.Cap
    self.Perc_[k] = self.Perc
开发者ID:edwinkost,项目名称:wflow,代码行数:49,代码来源:reservoir_Su.py

示例10: unsatZone_withAgri_Ep

def unsatZone_withAgri_Ep(self,k):
    """
    - Potential evaporation is calculated with formula in 'JarvisCoefficients', but without
    using the Jarvis stress functions    
    - Potential evaporation is decreased by energy used for interception evaporation    
    - Formula for evaporation linear until LP, from than with potential rate
    - Outgoing fluxes are determined based on (value in previous timestep + inflow) 
    and if this leads to negative storage, the outgoing fluxes are corrected to rato
    - Qu is determined with a beta function (same as in HBV?)
    - Code for ini-file: 14
    """

    JarvisCoefficients.calcEp(self,k)
    self.PotEvaporation = cover(ifthenelse(self.EpHour >= 0, self.EpHour, 0),0)  

    self.Sa[k] = ifthenelse(self.Sa_t[k] + self.Pe > self.samax[k], self.samax[k], self.Sa_t[k] + self.Pe) 
    self.Qaadd = ifthenelse(self.Sa_t[k] + self.Pe > self.samax[k], self.Sa_t[k] + self.Pe - self.samax[k], 0)    
    self.SaN = self.Sa[k] / self.samax[k]
        
    self.Ea1 = max((self.PotEvaporation - self.Ei),0) * min(self.Sa[k] / (self.samax[k] * self.LP[k]),1)
    self.Qa1 = (self.Pe - self.Qaadd) * (1 - (1 - self.SaN) ** self.beta[k])
    self.Fa1 = self.famax[k] * (self.sumax[k] - self.Su[k]) / self.sumax[k]    
    
    self.Sa[k] = self.Sa_t[k] + (self.Pe - self.Qaadd) - self.Qa1 - self.Ea1 - self.Fa1

    self.Sa_diff = ifthenelse(self.Sa[k] < 0, self.Sa[k], 0)
    self.Ea = self.Ea1 + (self.Ea1 / ifthenelse(self.Qa1 + self.Ea1 +self.Fa1 > 0 , self.Qa1 + self.Ea1 + self.Fa1 , 1)) * self.Sa_diff
    self.Qa = self.Qa1 + (self.Qa1/ifthenelse(self.Qa1 + self.Ea1 + self.Fa1 > 0 , self.Qa1 + self.Ea1 + self.Fa1 , 1)) * self.Sa_diff
    self.Fa = ifthenelse (self.Fa1 > 0, self.Fa1 + (self.Fa1/ifthenelse(self.Qa1 + self.Ea1 + self.Fa1 > 0 , self.Qa1 + self.Ea1 + self.Fa1 , 1)) * self.Sa_diff, self.Fa1)
    self.Sa[k] = self.Sa_t[k] + (self.Pe - self.Qaadd) - self.Ea - self.Qa - self.Fa   
    self.Sa[k] = ifthenelse(self.Sa[k] < 0, 0 , self.Sa[k])    
    self.Sa_diff2 = ifthen(self.Sa[k] < 0, self.Sa[k]) 

    self.Capa = min(self.cap[k] * (1 - self.Sa[k] / self.samax[k]), self.Su[k])
    self.Sa[k] = self.Sa[k] + self.Capa    
        
    self.Su[k] = self.Su_t[k] + self.Fa - self.Capa   
    self.Perc = self.perc[k] * (self.Su[k] / self.sumax[k])
    self.Su[k] = self.Su[k] - self.Perc
    
    self.wbSa_[k] = self.Pe - self.Ea - self.Qa - self.Qaadd - self.Fa + self. Capa - self.Sa[k] + self.Sa_t[k]    
    self.wbSu_[k] = self.Fa - self.Perc - self. Capa - self.Su[k] + self.Su_t[k]
    
    self.Eu_[k] = self.Ea
    self.Qu_[k] = self.Qa + self.Qaadd
    self.Fa_[k] = self.Fa
    self.Cap_[k] = self.Cap
    self.Perc_[k] = self.Perc
开发者ID:edwinkost,项目名称:wflow,代码行数:48,代码来源:reservoir_Su.py

示例11: unsatZone_forAgri_Ep_percDvar

def unsatZone_forAgri_Ep_percDvar(self,k):
    """
    - Potential evaporation is decreased by energy used for interception evaporation    
    - Formula for evaporation based on beta/LP
    - Outgoing fluxes are determined based on (value in previous timestep + inflow) 
    and if this leads to negative storage, the outgoing fluxes are corrected to rato --> Eu is 
    no longer taken into account for this correction
    - Qu is determined with a beta function (same as in HBV?)
    - inflow is infiltration from agriculture reservoir
    - Code for ini-file: 17
    """
    
    JarvisCoefficients.calcEp(self,k)
    self.PotEvaporation = cover(ifthenelse(self.EpHour >= 0, self.EpHour, 0),0)  

    self.Su[k] = ifthenelse(self.Su_t[k] + self.Fa > self.sumax[k], self.sumax[k], self.Su_t[k] + self.Fa) 
    self.Quadd = ifthenelse(self.Su_t[k] + self.Fa > self.sumax[k], self.Su_t[k] + self.Fa - self.sumax[k], 0)
    self.SuN = self.Su[k] / self.sumax[k]
    self.SiN = self.Si[k] / self.imax[k]    
    
    self.drought = ifthenelse(self.SuN < self.LP[k], self.TopoId, ifthenelse(pcrand(self.SuN < 0.8, self.drought), self.TopoId, boolean(scalar(self.TopoId) * 0)))
    self.stijg = max(min(scalar(ifthenelse(self.drought == 1, self.stijg + self.Su_t[k] - self.Su_t2[k], 0)), self.sumax[k] * 100), 0)    
#    self.stijg = max(self.Su_t[k] - self.Su_t2[k], 0)    
    
    self.Eu1 = ifthenelse(self.Ft_[k] == 1, max((self.PotEvaporation - self.Ei - self.Ea),0) * min(self.Su[k] / (self.sumax[k] * self.LP[k]),1), 0)         # no transpiration in case of frozen soil. Added on 22 feb 2016        
    
    self.percDeep = 0.8 * self.stijg * self.perc[k]
    self.Qu1 = (self.Fa - self.Quadd) * (1 - (1 - self.SuN) ** self.beta[k])
    self.Perc1 = self.perc[k] * self.SuN + self.percDeep
    self.Su[k] = self.Su_t[k] + (self.Fa - self.Quadd) - self.Qu1 - self.Eu - self.Perc1

    self.Su_diff = ifthenelse(self.Su[k] < 0, self.Su[k], 0)
    self.Eu = self.Eu1 + (self.Eu1 / ifthenelse(self.Qu1 + self.Eu1 + self.Perc1 > 0 , self.Qu1 + self.Eu1 + self.Perc1 , 1)) * self.Su_diff
    self.Qu = self.Qu1 + (self.Qu1 / ifthenelse(self.Qu1 + self.Eu1 + self.Perc1 > 0 , self.Qu1 + self.Eu1 + self.Perc1 , 1)) * self.Su_diff
    self.Perc = ifthenelse (self.Perc1 > 0, self.Perc1 + (self.Perc1 / ifthenelse(self.Qu1 + self.Eu1 + self.Perc1 > 0 , self.Qu1 + self.Eu1 + self.Perc1 , 1)) * self.Su_diff, self.Perc1)
    self.Su[k] = self.Su_t[k] + (self.Fa - self.Quadd) - self.Eu - self.Qu - self.Perc   
    self.Su[k] = ifthenelse(self.Su[k] < 0, 0 , self.Su[k])    
    self.Su_diff2 = ifthen(self.Su[k] < 0, self.Su[k]) 

    self.Cap = min(self.cap[k] * (1 - self.Su[k] / self.sumax[k]), self.Ss)    
    self.Su[k] = self.Su[k] + self.Cap    
    
    self.wbSu_[k] = self.Fa - self.Eu - self.Qu - self.Quadd - self.Perc + self. Cap - self.Su[k] + self.Su_t[k]
    
    self.Eu_[k] = self.Eu
    self.Qu_[k] = self.Qu + self.Quadd
    self.Cap_[k] = self.Cap
    self.Perc_[k] = self.Perc
开发者ID:edwinkost,项目名称:wflow,代码行数:48,代码来源:reservoir_Su.py

示例12: unsatZone_LP_beta_Ep_Ei

def unsatZone_LP_beta_Ep_Ei(self,k):
    """
    - Potential evaporation is calculated with formula in 'JarvisCoefficients', but without
    using the Jarvis stress functions
    - Potential evaporation is decreased by energy used for interception evaporation    
    - Formula for evaporation linear until LP, from than with potential rate
    - Outgoing fluxes are determined based on (value in previous timestep + inflow) 
    and if this leads to negative storage, the outgoing fluxes are corrected to rato
    - Qu is determined with a beta function (same as in HBV?)
    - Code for ini-file: 13
    """
    
    #pdb.set_trace()
    JarvisCoefficients.calcEp(self,k)
    self.PotEvaporation = cover(ifthenelse(self.EpHour >= 0, self.EpHour, 0),0)  
    
    self.Su[k] = ifthenelse(self.Su_t[k] + self.Pe > self.sumax[k], self.sumax[k], self.Su_t[k] + self.Pe) 
    self.Quadd = ifthenelse(self.Su_t[k] + self.Pe > self.sumax[k], self.Su_t[k] + self.Pe - self.sumax[k], 0)
    self.SuN = self.Su[k] / self.sumax[k]
    self.SiN = self.Si[k] / self.imax[k]    
    
    self.Eu1 = ifthenelse(self.SiN == 1, 0, max((self.PotEvaporation),0) * min(self.Su[k] / (self.sumax[k] * self.LP[k]),1))
#    self.Eu1 = max((self.PotEvaporation),0) * min(self.Su[k] / (self.sumax[k] * self.LP[k]),1)
    
    self.Qu1 = (self.Pe - self.Quadd) * (1 - (1 - self.SuN) ** self.beta[k])
    self.Perc1 = self.perc[k] * self.SuN
    self.Su[k] = self.Su_t[k] + (self.Pe - self.Quadd) - self.Qu1 - self.Eu1 - self.Perc1

    self.Su_diff = ifthenelse(self.Su[k] < 0, self.Su[k], 0)
    self.Eu = self.Eu1 + (self.Eu1 / ifthenelse(self.Qu1 + self.Eu1 +self.Perc1 > 0 , self.Qu1 + self.Eu1 + self.Perc1 , 1)) * self.Su_diff
    self.Qu = self.Qu1 + (self.Qu1/ifthenelse(self.Qu1 + self.Eu1 + self.Perc1 > 0 , self.Qu1 + self.Eu1 + self.Perc1 , 1)) * self.Su_diff
    self.Perc = ifthenelse (self.Perc1 > 0, self.Perc1 + (self.Perc1/ifthenelse(self.Qu1 + self.Eu1 + self.Perc1 > 0 , self.Qu1 + self.Eu1 + self.Perc1 , 1)) * self.Su_diff, self.Perc1)
    self.Su[k] = self.Su_t[k] + (self.Pe - self.Quadd) - self.Eu - self.Qu - self.Perc   
    self.Su[k] = ifthenelse(self.Su[k] < 0, 0 , self.Su[k])    
    self.Su_diff2 = ifthen(self.Su[k] < 0, self.Su[k]) 

    self.Cap = min(self.cap[k] * (1 - self.Su[k] / self.sumax[k]), self.Ss)    
    self.Su[k] = self.Su[k] + self.Cap    
    
    self.wbSu_[k] = self.Pe - self.Eu - self.Qu - self.Quadd - self.Perc + self. Cap - self.Su[k] + self.Su_t[k]
    
    self.Eu_[k] = self.Eu
    self.Qu_[k] = self.Qu + self.Quadd
    self.Cap_[k] = self.Cap
    self.Perc_[k] = self.Perc
#    self.Su_diff_[k] = self.Su_diff
#    self.Quadd_[k] = self.Quadd
    self.Epot_[k] = self.PotEvaporation
开发者ID:edwinkost,项目名称:wflow,代码行数:48,代码来源:reservoir_Su.py

示例13: agriZone_Ep_Sa_beta_frostSamax_surfTemp

def agriZone_Ep_Sa_beta_frostSamax_surfTemp(self,k):
    """
    - Potential evaporation is decreased by energy used for interception evaporation    
    - Formula for evaporation based on LP
    - Outgoing fluxes are determined based on (value in previous timestep + inflow) 
    and if this leads to negative storage, the outgoing fluxes are corrected to rato --> Eu is 
    no longer taken into account for this correction
    - Qa u is determined from overflow from Sa --> incorporation of beta function
    - Fa is based on storage in Sa
    - Fa is decreased in case of frozen soil
    - Code for ini-file: 13
    """

    JarvisCoefficients.calcEp(self,k)
    self.PotEvaporation = self.EpHour    
     
    self.FrDur[k] = min(self.FrDur[k] + ifthenelse(self.TempSurf > 0, self.ratFT[k] * self.TempSurf, self.TempSurf) * self.dayDeg[k], 0)
    self.Ft = min(max(self.FrDur[k] / (self.FrDur1[k] - self.FrDur0[k]) - self.FrDur0[k] / (self.FrDur1[k] - self.FrDur0[k]), self.samin[k]), 1)
    
    self.samax2 = self.samax[k] * scalar(self.catchArea) * self.Ft
    self.Qaadd = max(self.Sa_t[k] + self.Pe - self.samax2,0)
    
    self.Sa[k] = self.Sa_t[k] + (self.Pe - self.Qaadd)
    self.SaN = min(self.Sa[k] / self.samax2, 1)
    self.SuN = self.Su[k] / self.sumax[k]
    
    self.Ea1 = max((self.PotEvaporation - self.Ei),0) * min(self.Sa[k] / (self.samax2 * self.LP[k]),1)        
    self.Qa1 = (self.Pe - self.Qaadd) * (1 - (1 - self.SaN) ** self.beta[k])
    
    self.Fa1 = ifthenelse(self.SaN > 0,self.Fmin[k] + (self.Fmax[k] - self.Fmin[k]) * e ** (-self.decF[k] * (1 - self.SaN)),0)
    
    self.Sa[k] = self.Sa_t[k] + (self.Pe - self.Qaadd) - self.Qa1 - self.Fa1 - self.Ea1

    self.Sa_diff = ifthenelse(self.Sa[k] < 0, self.Sa[k], 0)
    self.Qa = self.Qa1 + (self.Qa1/ifthenelse(self.Fa1 + self.Ea1 + self.Qa1 > 0, self.Fa1 + self.Ea1 + self.Qa1, 1)) * self.Sa_diff    
    self.Fa = self.Fa1 + (self.Fa1/ifthenelse(self.Fa1 + self.Ea1 + self.Qa1 > 0, self.Fa1 + self.Ea1 + self.Qa1, 1)) * self.Sa_diff
    self.Ea = self.Ea1 + (self.Ea1/ifthenelse(self.Fa1 + self.Ea1 + self.Qa1 > 0, self.Fa1 + self.Ea1 + self.Qa1, 1)) * self.Sa_diff
    self.Sa[k] = self.Sa_t[k] + (self.Pe - self.Qaadd) - self.Ea - self.Fa - self.Qa
    self.Sa[k] = ifthenelse(self.Sa[k] < 0, 0 , self.Sa[k])    
    self.Sa_diff2 = ifthen(self.Sa[k] < 0, self.Sa[k]) 

    self.wbSa_[k] = self.Pe - self.Ea - self.Qa - self.Qaadd - self.Fa - self.Sa[k] + self.Sa_t[k]
    
    self.Ea_[k] = self.Ea
    self.Qa_[k] = self.Qa + self.Qaadd
    self.Fa_[k] = self.Fa
    self.Ft_[k] = self.Ft
开发者ID:edwinkost,项目名称:wflow,代码行数:47,代码来源:reservoir_Sa.py

示例14: unsatZone_forAgri_Jarvis

def unsatZone_forAgri_Jarvis(self,k):
    """
    - Potential evaporation is decreased by energy used for interception evaporation    
    - Formula for evaporation based on Jarvis stress functions
    - Outgoing fluxes are determined based on (value in previous timestep + inflow) 
    and if this leads to negative storage, the outgoing fluxes are corrected to rato --> Eu is 
    no longer taken into account for this correction
    - Qu is determined with a beta function (same as in HBV?)
    - inflow is infiltration from agriculture reservoir
    - Code for ini-file: 16
    """
    self.Su[k] = ifthenelse(self.Su_t[k] + self.Fa > self.sumax[k], self.sumax[k], self.Su_t[k] + self.Fa) 
    self.Quadd = ifthenelse(self.Su_t[k] + self.Fa > self.sumax[k], self.Su_t[k] + self.Fa - self.sumax[k], 0)
    self.SuN = self.Su[k] / self.sumax[k]
    self.SiN = self.Si[k] / self.imax[k]    
    
    JarvisCoefficients.calcEu(self,k,2)           #calculation of Eu based on Jarvis stress functions
    self.Eu1 = self.Eu
            
    self.Qu1 = (self.Fa - self.Quadd) * (1 - (1 - self.SuN) ** self.beta[k])
    self.Perc1 = self.perc[k] * self.SuN
    self.Su[k] = self.Su_t[k] + (self.Fa - self.Quadd) - self.Qu1 - self.Eu - self.Perc1

    self.Su_diff = ifthenelse(self.Su[k] < 0, self.Su[k], 0)
    self.Eu = self.Eu1 + (self.Eu1 / ifthenelse(self.Qu1 + self.Eu1 + self.Perc1 > 0 , self.Qu1 + self.Eu1 + self.Perc1 , 1)) * self.Su_diff
    self.Qu = self.Qu1 + (self.Qu1 / ifthenelse(self.Qu1 + self.Eu1 + self.Perc1 > 0 , self.Qu1 + self.Eu1 + self.Perc1 , 1)) * self.Su_diff
    self.Perc = ifthenelse (self.Perc1 > 0, self.Perc1 + (self.Perc1 / ifthenelse(self.Qu1 + self.Eu1 + self.Perc1 > 0 , self.Qu1 + self.Eu1 + self.Perc1 , 1)) * self.Su_diff, self.Perc1)
    self.Su[k] = self.Su_t[k] + (self.Fa - self.Quadd) - self.Eu - self.Qu - self.Perc   
    self.Su[k] = ifthenelse(self.Su[k] < 0, 0 , self.Su[k])    
    self.Su_diff2 = ifthen(self.Su[k] < 0, self.Su[k]) 

    self.Cap = min(self.cap[k] * (1 - self.Su[k] / self.sumax[k]), self.Ss)    
    self.Su[k] = self.Su[k] + self.Cap    
    
    self.wbSu_[k] = self.Fa - self.Eu - self.Qu - self.Quadd - self.Perc + self. Cap - self.Su[k] + self.Su_t[k]
    
    self.Eu_[k] = self.Eu
    self.Qu_[k] = self.Qu + self.Quadd
    self.Cap_[k] = self.Cap
    self.Perc_[k] = self.Perc
开发者ID:edwinkost,项目名称:wflow,代码行数:40,代码来源:reservoir_Su.py

示例15: agriZone_Ep_Sa_cropG_beta

def agriZone_Ep_Sa_cropG_beta(self,k):
    """
    - Potential evaporation is decreased by energy used for interception evaporation    
    - Formula for evaporation based on LP
    - Outgoing fluxes are determined based on (value in previous timestep + inflow) 
    and if this leads to negative storage, the outgoing fluxes are corrected to rato --> Eu is 
    no longer taken into account for this correction
    - Qa u is determined from overflow from Sa --> incorporation of beta function
    - Fa is based on storage in Sa
    """

    JarvisCoefficients.calcEp(self,k)
    self.PotEvaporation = cover(ifthenelse(self.EpHour >= 0, self.EpHour, 0),0)   
    
    self.samax2 = self.samax[k] * self.cropG   
    self.Qaadd = max(self.Sa_t[k] + self.Pe - self.samax2,0)
    
    self.Sa[k] = self.Sa_t[k] + (self.Pe - self.Qaadd)
    self.SaN = self.Sa[k] / self.samax2
    self.SuN = self.Su[k] / self.sumax[k]
    
    self.Ea1 = max((self.PotEvaporation - self.Ei),0) * min(self.Sa[k] / (self.samax2 * self.LP[k]),1)        
    self.Qa1 = (self.Pe - self.Qaadd) * (1 - (1 - self.SaN) ** self.beta[k])
    self.Fa1 = ifthenelse(self.SaN > 0,self.Fmin[k] + (self.Fmax[k] - self.Fmin[k]) * e ** (-self.decF[k] * (1 - self.SaN)),0)
    self.Sa[k] = self.Sa_t[k] + (self.Pe - self.Qaadd) - self.Qa1 - self.Fa1 - self.Ea1

    self.Sa_diff = ifthenelse(self.Sa[k] < 0, self.Sa[k], 0)
    self.Qa = self.Qa1 + (self.Qa1/ifthenelse(self.Fa1 + self.Ea1 + self.Qa1 > 0 , self.Fa1 + self.Ea1 + self.Qa1, 1)) * self.Sa_diff    
    self.Fa = self.Fa1 + (self.Fa1/ifthenelse(self.Fa1 + self.Ea1 + self.Qa1 > 0 , self.Fa1 + self.Ea1 + self.Qa1 , 1)) * self.Sa_diff
    self.Ea = self.Ea1 + (self.Ea1/ifthenelse(self.Fa1 + self.Ea1 + self.Qa1 > 0 , self.Fa1 + self.Ea1 + self.Qa1 , 1)) * self.Sa_diff
    self.Sa[k] = self.Sa_t[k] + (self.Pe - self.Qaadd) - self.Ea - self.Fa - self.Qa
    self.Sa[k] = ifthenelse(self.Sa[k] < 0, 0 , self.Sa[k])    
    self.Sa_diff2 = ifthen(self.Sa[k] < 0, self.Sa[k]) 

    self.wbSa_[k] = self.Pe - self.Ea - self.Qa - self.Qaadd - self.Fa - self.Sa[k] + self.Sa_t[k]
    
    self.Ea_[k] = self.Ea
    self.Qa_[k] = self.Qa + self.Qaadd
    self.Fa_[k] = self.Fa
开发者ID:Imme1992,项目名称:wflow,代码行数:39,代码来源:reservoir_Sa.py


注:本文中的JarvisCoefficients类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。