compute air temperature modifier. The growth and dormant stages of vegetation are related to the annual cycle of air temperature. Maximum growth will happen at optimal temperatures Topt and will stop when temperatures drop below or exceed certain temperature thresholds, Tmin and Tmax, respectively.
Reference:
Landsberg, J. J., and R. H. Waring, 1997: A generalised model of forest productivity using simplified concepts of radiation-use efficiency, carbon balance and partitioning. For. Ecol. Manage., 95, 209–228.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=float), | intent(in) | :: | Ta | |||
real(kind=float), | intent(in) | :: | Tmin | |||
real(kind=float), | intent(in) | :: | Tmax | |||
real(kind=float), | intent(in) | :: | Topt |
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
real(kind=float), | public | :: | Tair |
FUNCTION TEMPmod & ! (Ta, Tmin, Tmax, Topt) & ! RESULT (f) IMPLICIT NONE !Arguments with intent(in): REAL (KIND = float), INTENT(IN) :: Ta ! current air temperature [°C] REAL (KIND = float), INTENT(IN) :: Tmin ! minimum temperature for vegetation growing [°C] REAL (KIND = float), INTENT(IN) :: Tmax ! maximum temperature for vegetation growing [°C] REAL (KIND = float), INTENT(IN) :: Topt ! optimum temperature for vegetation growing [°C] !local declarations: REAL (KIND = float) :: f REAL (KIND = float) :: Tair !---------------------------------------end of declarations-------------------- IF ( Topt < Tmin) THEN CALL Catch ('error', 'PlantsModifiers', 'Topt < Tmin cannot compute temperature modifier') END IF IF ( Topt > Tmax) THEN CALL Catch ('error', 'PlantsModifiers', 'Topt > Tmax cannot compute temperature modifier') END IF !set tair IF (Ta > Tmax ) THEN Tair = Tmax CALL Catch ('warning', 'PlantsModifiers', 'Tair > Tmax Tair set to Tmax') ELSE IF (Ta < Tmin) THEN Tair = Tmin CALL Catch ('warning', 'PlantsModifiers', 'Tair < Tmin Tair set to Tmin') ELSE Tair = Ta END IF !compute modifier f = ( Tair - Tmin ) / ( Topt - Tmin ) * & ( ( Tmax - Tair ) / ( Tmax - Topt ) ) ** ( (Tmax -Topt) / (Topt - Tmin) ) !final boundary check IF ( f > 1.) THEN f = 1. END IF IF ( f < 0.) THEN f = 0. END IF RETURN END FUNCTION TEMPmod