Пример #1
0
 def potential_length(self):
     # for MAIZSIM
     #return self.maximum_length * self.rank_effect(weight=0.5)
     # for beta fn calibrated from JH's thesis for SP and KM varieties, 8/10/15, SK
     #FIXME: leaves_potential is already max(leaves_generic, leaves_total)?
     n = max(self.p.pheno.leaves_potential, self.p.pheno.leaves_generic)
     l_t = 1.64 * n
     l_pk = 0.88 * n
     R_max = self.maximum_length
     return R_max * beta_thermal_func(T=self.rank, T_opt=l_pk, T_max=l_t)
Пример #2
0
 def elongation_age(self):  #TODO add td in the args
     #TODO implement Parent and Tardieu (2011, 2012) approach for leaf elongation in response to T and VPD, and normalized at 20C, SK, Nov 2012
     # elongAge indicates where it is now along the elongation stage or duration.
     # duration is determined by totallengh/maxElongRate which gives the shortest duration to reach full elongation in the unit of days.
     #FIXME no need to check here, as it will be compared against duration later anyways
     #return min(self._elongation_tracker.rate, self.growth_duration)
     if self.appeared and not self.mature:
         R_max = 1.0
         return R_max * beta_thermal_func(
             T=self.p.pheno.temperature,
             T_opt=self.p.pheno.optimal_temperature,
             T_max=self.p.pheno.ceiling_temperature)
Пример #3
0
 def rate(self, R_max, T, T_opt, T_ceil):
     return R_max * beta_thermal_func(T, T_opt, T_ceil)
Пример #4
0
 def rate(self, R_max, T, T_opt, T_ceil):
     #FIXME prevent extra accumulation after it's `over`
     if self.ing:
         return R_max * beta_thermal_func(T, T_opt, T_ceil)
Пример #5
0
 def initial_leaves_during_storage(self, R_max, T, T_opt, T_ceil, SD):
     return R_max * beta_thermal_func(T=T, T_opt=T_opt, T_max=T_ceil) * SD