MODULE SUFARQUHAR_MOD CONTAINS SUBROUTINE SUFARQUHAR(YDAGS,YDAGF) !*** !** *SUFARQUHAR* - DOES THE INITIALISATION OF AGS PARAMETERS ! PURPOSE ! ------- ! Initialize model to calculate net assimilation of ! CO2 and stomatal conductance. ! ! METHOD ! ------ ! Yin et al. (2009) [from model of Farquhar(1980)] ! EXTERNAL ! -------- ! none ! REFERENCE ! --------- ! Yin et al. (2009) ! ------------------------------------------------------------------------- ! USE PARKIND1, ONLY : JPIM, JPRB, JPRM USE YOMHOOK, ONLY : LHOOK, DR_HOOK USE YOS_AGS ,ONLY : TAGS USE YOS_AGF ,ONLY : TAGF IMPLICIT NONE TYPE(TAGS), INTENT(IN) :: YDAGS TYPE(TAGF), INTENT(INOUT) :: YDAGF !REAL(KIND=JPRB), ALLOCATABLE, SAVE :: temp_growth(:) ! Growth temperature (°C) - Is equal to t2m_month !LOGICAL, SAVE :: FIRST_CALL=.TRUE. !INTEGER(KIND=JPIM), SAVE :: KSTEP_SAV=-1_JPIM INTEGER(KIND=JPIM), PARAMETER :: max_temp=370_JPIM ! Maximum temperature for saturated humidity (K) and also used as ! the size of local array to keep saturated humidity (unitless) REAL(KIND=JPRB), DIMENSION(max_temp),SAVE :: qsfrict ! Array to keep water vapor pressure at saturation for each temperature level ! (hPa) INTEGER(KIND=JPIM), PARAMETER :: nlai = 20_JPIM ! Number of LAI levels (unitless) INTEGER(KIND=JPIM), PARAMETER :: NPATH = 2_JPIM ! Number of photosunthetic pathways, C3 and C4 (unitless) REAL(KIND=JPRB), PARAMETER :: zero = 0._JPRB ! Numerical constant set to 0 (unitless) REAL(KIND=JPRB), PARAMETER :: one = 1._JPRB ! Numerical constant set to 1 (unitless) REAL(KIND=JPRB), PARAMETER :: two = 2._JPRB ! Numerical constant set to 2 (unitless) REAL(KIND=JPRB), PARAMETER :: three = 3._JPRB ! Numerical constant set to 3 (unitless) REAL(KIND=JPRB), PARAMETER :: four = 4._JPRB ! Numerical constant set to 4 (unitless) !REAL(KIND=JPRB), PARAMETER :: min_sechiba = 1.E-8_JPRB ! Epsilon to detect a near zero floating point (unitless) REAL(KIND=JPRB), PARAMETER :: RR = 8.314_JPRB ! Ideal gas constant (J.mol^{-1}.K^{-1}) REAL(KIND=JPRB), PARAMETER :: min_wind = 0.1_JPRB ! The minimum wind (m.s^{-1}) !REAL(KIND=JPRB), PARAMETER :: msmlr_air = 28.964E-03_JPRB ! Molecular weight of dry air (kg.mol^{-1}) REAL(KIND=JPRB), PARAMETER :: msmlr_h2o = 18.02E-03_JPRB ! Molecular weight of water vapor (kg.mol^{-1}) REAL(KIND=JPRB),PARAMETER :: downregulation_co2_baselevel = 380._JPRB ! CO2 base level (ppm) REAL(KIND=JPRB),PARAMETER :: downregulation_co2_minimum = 280._JPRB ! CO2 value above which downregulation is taken into account (ppm) ! Mathematical and numerical constants REAL(KIND=JPRB), PARAMETER :: pi = 3.141592653589793238_JPRB! pi souce : http://mathworld.wolfram.com/Pi.html (unitless) REAL(KIND=JPRB), PARAMETER :: one_point_five = 1.5_JPRB ! Numerical constant set to 1.5 (unitless) REAL(KIND=JPRB), PARAMETER :: nine = 9._JPRB ! Numerical constant set to 9 (unitless) REAL(KIND=JPRB), PARAMETER :: twenty_seven = 27._JPRB ! Numerical constant set to 27 (unitless) REAL(KIND=JPRB), PARAMETER :: fifty_four = 54._JPRB ! Numerical constant set to 54 (unitless) REAL(KIND=JPRB), PARAMETER :: undef_sechiba = 1.E+20_JPRB ! The undef value used in SECHIBA (unitless) REAL(KIND=JPRB), PARAMETER :: undef = -9999._JPRB ! Special value for stomate (unitless) REAL(KIND=JPRB), PARAMETER :: one_month=60._JPRB*60._JPRB*24._JPRB*30._JPRB ! One month (s) ! Physics REAL(KIND=JPRB), PARAMETER, DIMENSION(NPATH) :: a1= & ! Empirical factor involved in the calculation of fvpd (-) & (/0.85_JPRB,0.72_JPRB/) ! See Table 2 of Yin et al. (2009) REAL(KIND=JPRB), PARAMETER, DIMENSION(NPATH) :: b1= & ! Empirical factor involved in the calculation of fvpd (-) & (/0.14_JPRB,0.20_JPRB/) ! See Table 2 of Yin et al. (2009) REAL(KIND=JPRB), PARAMETER, DIMENSION(NPATH) :: arJV= & ! a coefficient of the linear regression (a+bT) defining the Jmax25/Vcmax25 ratio (mu mol e- (mu mol CO2)-1) & (/2.59_JPRB, 1.715_JPRB/) ! See Table 3 of Kattge & Knorr (2007) ! For C4 plants, we assume that there is no ! acclimation and that for a temperature of 25°C, aSV is the same for both C4 and C3 plants (no strong jusitification - need further parametrization) REAL(KIND=JPRB), PARAMETER, DIMENSION(NPATH) :: brJV= & ! b coefficient of the linear regression (a+bT) defining the Jmax25/Vcmax25 ratio ((mu mol e- (mu mol CO2)-1) (°C)-1) & (/-0.035_JPRB, zero/) ! See Table 3 of Kattge & Knorr (2007) ! We assume No acclimation term for C4 plants. REAL(KIND=JPRB), PARAMETER, DIMENSION(NPATH) :: aSJ= & ! a coefficient of the linear regression (a+bT) defining the Entropy term for Jmax (J K-1 mol-1) & (/659.7_JPRB, 630._JPRB/) ! See Table 3 of Kattge & Knorr (2007) ! and Table 2 of Yin et al. (2009) for C4 plants REAL(KIND=JPRB), PARAMETER, DIMENSION(NPATH) :: bSJ= & ! b coefficient of the linear regression (a+bT) defining the Entropy term for Jmax (J K-1 mol-1 °C-1) & (/-0.75_JPRB, 0._JPRB/) ! See Table 3 of Kattge & Knorr (2007) ! We assume no acclimation term for C4 plants. REAL(KIND=JPRB), PARAMETER, DIMENSION(NPATH) :: aSV= & ! a coefficient of the linear regression (a+bT) defining the Entropy term for Vcmax (J K-1 mol-1) & (/668.39_JPRB, 641.64_JPRB/) ! See Table 3 of Kattge & Knorr (2007) ! For C4 plants, we assume that there is no ! acclimation and that at for a temperature of 25°C, aSV is the same for both C4 and C3 plants (no strong jusitification - need further parametrization) REAL(KIND=JPRB), PARAMETER, DIMENSION(NPATH) :: bSV= & ! b coefficient of the linear regression (a+bT) defining the Entropy term for Vcmax (J K-1 mol-1 °C-1) & (/-1.07_JPRB, zero/) ! See Table 3 of Kattge & Knorr (2007) ! We assume No acclimation term for C4 plants. REAL(KIND=JPRB), PARAMETER, DIMENSION(NPATH) :: D_Vcmax= & ! Energy of deactivation for Vcmax (J mol-1) & (/200000._JPRB, 192000._JPRB/) ! Medlyn et al. (2002) also uses 200000. for C3 plants (same value than D_Jmax) ! 'Consequently', we use the value of D_Jmax for C4 plants REAL(KIND=JPRB), PARAMETER, DIMENSION(NPATH) :: D_Jmax= & ! Energy of deactivation for Jmax (J mol-1) & (/200000._JPRB, 192000._JPRB/) ! See Table 2 of Yin et al. (2009) ! Medlyn et al. (2002) also uses 200000. for C3 plants REAL(KIND=JPRB), PARAMETER :: E_gamma_star=37830._JPRB ! Energy of activation for gamma_star (J mol-1) ! See Medlyn et al. (2002) from Bernacchi al. (2001) ! for C3 plants - We use the same values for C4 plants. REAL(KIND=JPRB), PARAMETER, DIMENSION(NPATH) :: E_gm= & ! Energy of activation for gm (J mol-1) & (/49600._JPRB, undef/) ! See Table 2 of Yin et al. (2009) REAL(KIND=JPRB), PARAMETER, DIMENSION(NPATH) :: S_gm= & ! Entropy term for gm (J K-1 mol-1) & (/1400._JPRB, undef/) ! See Table 2 of Yin et al. (2009) REAL(KIND=JPRB), PARAMETER, DIMENSION(NPATH) :: D_gm= & ! Energy of deactivation for gm (J mol-1) & (/437400._JPRB, undef/) ! See Table 2 of Yin et al. (2009) REAL(KIND=JPRB), PARAMETER, DIMENSION(NPATH) :: E_Vcmax= & ! Energy of activation for Vcmax (J mol-1) & (/71513._JPRB, 67300._JPRB/) ! See Table 2 of Yin et al. (2009) for C4 plants ! and Kattge & Knorr (2007) for C3 plants (table 3) REAL(KIND=JPRB), PARAMETER, DIMENSION(NPATH) :: E_Jmax= & ! Energy of activation for Jmax (J mol-1) & (/49884._JPRB, 77900._JPRB/) ! See Table 2 of Yin et al. (2009) for C4 plants ! and Kattge & Knorr (2007) for C3 plants (table 3) REAL(KIND=JPRB), PARAMETER :: E_KmC=79430._JPRB ! Energy of activation for KmC (J mol-1) ! See Medlyn et al. (2002) ! from Bernacchi al. (2001) REAL(KIND=JPRB), PARAMETER :: E_KmO=36380._JPRB ! Energy of activation for KmO (J mol-1) ! See Medlyn et al. (2002) ! from Bernacchi al. (2001) REAL(KIND=JPRB), PARAMETER :: E_Rd=46390._JPRB ! Energy of activation for Rd (J mol-1) ! See Table 2 of Yin et al. (2009) REAL(KIND=JPRB), PARAMETER :: E_Sco=-24460._JPRB ! Energy of activation for Sco (J mol-1) ! See Table 2 of Yin et al. (2009) ! Value for C4 plants is not mentioned - We use C3 for all plants. REAL(KIND=JPRB), PARAMETER, DIMENSION(NPATH) :: g0= & ! Residual stomatal conductance when irradiance approaches zero (mol CO2 m−2 s−1 bar−1) & (/0.00625_JPRB, 0.01875_JPRB/) ! Value from ORCHIDEE - No other reference. ! modify to account for the conversion for conductance to H2O to CO2 REAL(KIND=JPRB), PARAMETER :: gamma_star25=42.75_JPRB ! Ci-based CO2 compensation point in the absence of Rd at 25°C (ubar) ! See Medlyn et al. (2002) for C3 plants - For C4 plants, we use the same value (probably uncorrect) REAL(KIND=JPRB), PARAMETER, DIMENSION(NPATH) :: gm25= & ! Mesophyll diffusion conductance at 25°C (mol m-2 s-1 bar-1) & (/0.4_JPRB, undef/) ! See legend of Figure 6 of Yin et al. (2009) ! and review by Flexas et al. (2008) - gm is not used for C4 plants REAL(KIND=JPRB), PARAMETER, DIMENSION(NPATH) :: KmC25= & ! Michaelis–Menten constant of Rubisco for CO2 at 25°C (ubar) & (/404.9_JPRB, 650._JPRB/) ! See Table 2 of Yin et al. (2009) for C4 ! and Medlyn et al (2002) for C3 REAL(KIND=JPRB), PARAMETER, DIMENSION(NPATH) :: KmO25= & ! Michaelis–Menten constant of Rubisco for O2 at 25°C (ubar) & (/278400._JPRB, 450000._JPRB/) ! See Table 2 of Yin et al. (2009) for C4 plants and Medlyn et al. (2002) for C3 REAL(KIND=JPRB), PARAMETER, DIMENSION(NPATH) :: Sco25= & ! Relative CO2 /O2 specificity factor for Rubisco at 25°C (bar bar-1) & (/2800._JPRB, 2590._JPRB/) ! See Table 2 of Yin et al. (2009) REAL(KIND=JPRB), PARAMETER :: stress_gm=1._JPRB ! Water stress on gm REAL(KIND=JPRB), PARAMETER :: stress_gs=1._JPRB ! Water stress on gs REAL(KIND=JPRB), PARAMETER :: stress_vcmax=1._JPRB ! Water stress on vcmax REAL(KIND=JPRB), PARAMETER :: tphoto_max=55._JPRB ! maximum photosynthesis temperature (deg C) REAL(KIND=JPRB), PARAMETER :: tphoto_min=-4._JPRB ! minimum photosynthesis temperature (deg C) REAL(KIND=JPRB), PARAMETER, DIMENSION(20) :: Vcmax25 = & ! Maximum rate of Rubisco activity-limited carboxylation at 25°C (\mu mol.m^{-2}.s^{-1}) & (/60._JPRB, 50._JPRB, 45._JPRB, 35._JPRB, 50._JPRB, & & 40._JPRB, 50._JPRB, -9999._JPRB, 50._JPRB, 60._JPRB, & & 50._JPRB, -9999._JPRB, 50._JPRB, -9999._JPRB, -9999._JPRB, & & 50._JPRB, 50._JPRB, 50._JPRB, 50._JPRB, -9999._JPRB/) REAL(KIND=JPRB), PARAMETER, DIMENSION(20) :: downregulation_co2_coeff = & ! Coefficient for CO2 downregulation if downregulation_co2 (used for CMIP6 6.1.11) (unitless) & (/0.03_JPRB, 0.24_JPRB, 0.20_JPRB, 0.20_JPRB, 0.26_JPRB, & & 0.26_JPRB, 0.03_JPRB, -9999._JPRB, 0.24_JPRB, 0.24_JPRB, & & 0.03_JPRB, -9999._JPRB, 0.24_JPRB, -9999._JPRB, -9999._JPRB, & & 0.03_JPRB, 0.24_JPRB, 0.26_JPRB, 0.26_JPRB, -9999._JPRB/) !ORCHIDEE 13 PFTs ! & (/ 0.0, 0.35, 0.35, 0.26, 0.26, 0.26, 0.20, & ! & 0.20, 0.20, 0.24, 0.03, 0.24, 0.03 /) REAL(KIND=JPRB), PARAMETER, DIMENSION(20) :: rstruct_const = & ! Structural resistance (s.m^{-1}) & (/2.0_JPRB, 2.5_JPRB, 25.0_JPRB, 25.0_JPRB, 25.0_JPRB, & & 25.0_JPRB, 2.0_JPRB, 0.0_JPRB, 2.5_JPRB, 2.0_JPRB, & & 2.0_JPRB, -9999._JPRB, 2.5_JPRB, -9999._JPRB, -9999._JPRB, & & 2.0_JPRB, 2.5_JPRB, 25.0_JPRB, 25.0_JPRB, -9999._JPRB/) REAL(KIND=JPRB), PARAMETER, DIMENSION(20) :: CO2TYPE = & & (/ 2._JPRB, 1._JPRB, 1._JPRB, 1._JPRB, 1._JPRB, & & 1._JPRB, 2._JPRB, -9999._JPRB, 1._JPRB, 1._JPRB, & & 2._JPRB, -9999._JPRB, 1._JPRB, -9999._JPRB, -9999._JPRB, & & 2._JPRB, 1._JPRB, 1._JPRB, 1._JPRB, -9999._JPRB/) REAL(KIND=JPRB), PARAMETER :: lai_level_depth = 0.15_JPRB REAL(KIND=JPRB), PARAMETER :: laimax = 12._JPRB ! Maximal LAI used for splitting LAI into N layers (m^2.m^{-2}) REAL(KIND=JPRB), PARAMETER :: ext_coeff = 0.5 ! extinction coefficient of the Monsi&Saeki relationship (1953) (unitless) !PFT-dependant REAL(KIND=JPRB), PARAMETER :: gb_ref = 1./25._JPRB ! Leaf bulk boundary layer resistance (s m-1) REAL(KIND=JPRB), PARAMETER :: tp_00= 273.15_JPRB ! 0 degree Celsius in degree Kelvin (K) REAL(KIND=JPRB), PARAMETER :: pb_std = 1013._JPRB ! standard pressure (hPa) REAL(KIND=JPRB), PARAMETER :: RG_to_PAR = 0.5_JPRB REAL(KIND=JPRB), PARAMETER :: W_to_mol = 4.6_JPRB ! W_to_mmol * RG_to_PAR = 2.3 REAL(KIND=JPRB), PARAMETER :: alpha_LL = 0.3_JPRB ! Conversion efficiency of absorbed light into J at strictly limiting light (mol e− (mol photon)−1) ! See comment from Yin et al. (2009) after eq. 4 ! alpha value from Medlyn et al. (2002) ! 0.093 mol CO2 fixed per mol absorbed photons ! times 4 mol e- per mol CO2 produced ! PFT-dependant REAL(KIND=JPRB), PARAMETER :: theta = 0.7_JPRB ! Convexity factor for response of J to irradiance (-) ! See Table 2 of Yin et al. (2009) ! PFT-dependant !for C4 species REAL(KIND=JPRB), PARAMETER :: fpsir = 0.4_JPRB ! Fraction of PSII e− transport rate partitioned to the C4 cycle (-) ! See Table 2 of Yin et al. (2009) - x parameter ! PFT-dependant REAL(KIND=JPRB), PARAMETER :: fQ = 1._JPRB ! Fraction of electrons at reduced plastoquinone ! that follow the Q-cycle (-) - Values for C3 plants are not used. ! See Table 2 of Yin et al. (2009) ! PFT-dependant REAL(KIND=JPRB), PARAMETER :: fpseudo = 0.1_JPRB ! Fraction of electrons at PSI that follow ! pseudocyclic transport (-) - Values for C3 plants are not used. ! See Table 2 of Yin et al. (2009) ! PFT-dependant REAL(KIND=JPRB), PARAMETER :: h_protons = 4._JPRB ! Number of protons required to produce one ATP (mol mol-1) ! See Table 2 of Yin et al. (2009) - h parameter ! PFT-dependant REAL(KIND=JPRB), PARAMETER :: gbs = 0.003_JPRB ! Bundle-sheath conductance (mol m−2 s−1 bar−1) ! See legend of Figure 6 of Yin et al. (2009) ! PFT-dependant REAL(KIND=JPRB), PARAMETER :: Oi = 210000._JPRB ! Intercellular oxygen partial pressure (ubar) REAL(KIND=JPRB), PARAMETER :: alpha = 0.1_JPRB ! Fraction of PSII activity in the bundle sheath (-) ! See legend of Figure 6 of Yin et al. (2009) ! PFT-dependant REAL(KIND=JPRB), PARAMETER :: kp = 0.7_JPRB ! Initial carboxylation efficiency of the PEP carboxylase (mol m−2 s−1 bar−1) ! See Table 2 of Yin et al. (2009) ! PFT-dependant REAL(KIND=JPRB), PARAMETER :: Tetens_1 = 0.622_JPRB ! Ratio between molecular weight of water vapor and molecular weight ! of dry air (unitless) REAL(KIND=JPRB), PARAMETER :: Tetens_2 = 0.378_JPRB REAL(KIND=JPRB), PARAMETER :: ref_temp = 298._JPRB REAL(KIND=JPRB), PARAMETER :: mol_to_m_1 = 0.0244 REAL(KIND=JPRB), PARAMETER :: ratio_H2O_to_CO2 = 1.6 ! Ratio of water vapor diffusivity to the CO2 diffusivity (unitless) REAL(KIND=JPRB), PARAMETER :: N_vert_att = .7_JPRB ! N vertical attenuation factor within the canopy REAL(KIND=JPRB), PARAMETER :: rveg_pft = one ! Potentiometer to set vegetation resistance (unitless) REAL(KIND=JPRB), PARAMETER :: tau_temp_air_month = 60._JPRB*60._JPRB*24._JPRB*20. ! Relaxation constant for computing monthly temperature average (s) !For qsfrict INTEGER(KIND=JPIM) :: ji ! Indice(unitless) REAL(KIND=JPRB) :: zrapp,zcorr,ztemperature,zqsat ! Temporary variables !For aero REAL(KIND=JPRB), PARAMETER :: cte_grav = 9.80665_JPRB ! Acceleration of the gravity (m.s^{-2}) REAL(KIND=JPRB), PARAMETER :: cb = 5._JPRB ! Constant of the Louis scheme (unitless); ! reference to Louis (1979) REAL(KIND=JPRB), PARAMETER :: cc = 5._JPRB ! Constant of the Louis scheme (unitless); ! reference to Louis (1979) REAL(KIND=JPRB), PARAMETER :: cd = 5._JPRB ! Constant of the Louis scheme (unitless); ! reference to Louis (1979) REAL(KIND=JPRB), PARAMETER :: cp_air = 1004.675_JPRB ! Specific heat of dry air (J.kg^{-1}.K^{-1}) REAL(KIND=JPRB), PARAMETER :: cepdu2 = (0.1_JPRB)**two ! Squared wind shear (m^2.s^{-2}) REAL(KIND=JPRB), PARAMETER :: ct_karman = 0.41_JPRB ! Van Karmann Constant (unitless) REAL(KIND=JPRB), PARAMETER :: min_qc = 1.E-4_JPRB ! The minimum value for qc (qc=drag*wind) used in coupled(enerbil) and forced mode (enerbil and diffuco) REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('SUFARQUHAR_MOD:SUFARQUHAR',0,ZHOOK_HANDLE) !copy into YDAGF !YDAGF%temp_growth(:)=temp_growth(:) !YDAGF%FIRST_CALL=FIRST_CALL !YDAGF%KSTEP_SAV=KSTEP_SAV YDAGF%max_temp=max_temp YDAGF%nlai = nlai YDAGF%NPATH = NPATH YDAGF%zero = zero YDAGF%one = one YDAGF%two = two YDAGF%three = three YDAGF%four = four YDAGF%RR = RR YDAGF%min_wind = min_wind YDAGF%msmlr_h2o = msmlr_h2o YDAGF%downregulation_co2_baselevel = downregulation_co2_baselevel YDAGF%downregulation_co2_minimum = downregulation_co2_minimum YDAGF%pi=pi YDAGF%one_point_five=one_point_five YDAGF%nine=nine YDAGF%twenty_seven=twenty_seven YDAGF%fifty_four=fifty_four YDAGF%undef_sechiba=undef_sechiba YDAGF%undef=undef YDAGF%one_month=one_month YDAGF%a1(1:2)=a1(1:2) YDAGF%b1(1:2)=b1(1:2) YDAGF%arJV(1:2)=arJV(1:2) YDAGF%brJV(1:2)=brJV(1:2) YDAGF%aSJ(1:2)=aSJ(1:2) YDAGF%bSJ(1:2)=bSJ(1:2) YDAGF%aSV(1:2)=aSV(1:2) YDAGF%bSV(1:2)=bSV(1:2) YDAGF%D_Vcmax(1:2)=D_Vcmax(1:2) YDAGF%D_Jmax(1:2)=D_Jmax(1:2) YDAGF%E_gamma_star=E_gamma_star YDAGF%E_gm(1:2)=E_gm(1:2) YDAGF%S_gm(1:2)=S_gm(1:2) YDAGF%D_gm(1:2)=D_gm(1:2) YDAGF%E_Vcmax(1:2)=E_Vcmax(1:2) YDAGF%E_Jmax(1:2)=E_Jmax(1:2) YDAGF%E_KmC=E_KmC YDAGF%E_KmO=E_KmO YDAGF%E_Rd=E_Rd YDAGF%E_Sco=E_Sco YDAGF%g0(1:2)=g0(1:2) YDAGF%gamma_star25=gamma_star25 YDAGF%gm25(1:2)=gm25(1:2) YDAGF%KmC25(1:2)=KmC25(1:2) YDAGF%KmO25(1:2)=KmO25(1:2) YDAGF%Sco25(1:2)=Sco25(1:2) YDAGF%stress_gm=stress_gm YDAGF%stress_gs=stress_gs YDAGF%stress_vcmax=stress_vcmax YDAGF%tphoto_max=tphoto_max YDAGF%tphoto_min=tphoto_min YDAGF%Vcmax25(1:20)=Vcmax25(1:20) YDAGF%downregulation_co2_coeff(1:20)=downregulation_co2_coeff(1:20) YDAGF%rstruct_const(1:20)=rstruct_const(1:20) YDAGF%CO2TYPE(1:20)=CO2TYPE(1:20) YDAGF%lai_level_depth=lai_level_depth YDAGF%laimax=laimax YDAGF%ext_coeff=ext_coeff YDAGF%gb_ref=gb_ref YDAGF%tp_00=tp_00 YDAGF%pb_std=pb_std YDAGF%RG_to_PAR=RG_to_PAR YDAGF%W_to_mol=W_to_mol YDAGF%alpha_LL=alpha_LL YDAGF%theta=theta YDAGF%fpsir=fpsir YDAGF%fQ=fQ YDAGF%fpseudo=fpseudo YDAGF%h_protons=h_protons YDAGF%gbs=gbs YDAGF%Oi=Oi YDAGF%alpha=alpha YDAGF%kp=kp YDAGF%Tetens_1=Tetens_1 YDAGF%Tetens_2=Tetens_2 YDAGF%ref_temp=ref_temp YDAGF%mol_to_m_1=mol_to_m_1 YDAGF%ratio_H2O_to_CO2=ratio_H2O_to_CO2 YDAGF%N_vert_att=N_vert_att YDAGF%rveg_pft=rveg_pft YDAGF%tau_temp_air_month=tau_temp_air_month YDAGF%cte_grav = cte_grav YDAGF%cb = cb YDAGF%cc = cc YDAGF%cd = cd YDAGF%cp_air = cp_air YDAGF%cepdu2 = cepdu2 YDAGF%ct_karman = ct_karman YDAGF%min_qc = min_qc !Computation qsfrict !! ================================================================================================================================ !! The qsfrict array stores !! precalculated values for qsat by using Goff-Gratch equations. !! !! Calculates the specific humidity qsat as a function of temperature in !! Kelvin by using the modified Goff-Gratch equations(1946): !! qsfrict is initialized by the following formulas: !! These values are used by the subroutines qsatcalc. !! !! REFERENCE(S) : !! - Algorithme d'un ensemble de paramétrisation physique (1998), !! Note de Laurent Li décrivant les paramétrisations physiques incluses dans le modèle (pdf), !! http://lmdz.lmd.jussieu.fr/developpeurs/notes-techniques !! - Goff, J. A., and S. Gratch (1946) Low-pressure properties of water from −160 to 212 °F, in Transactions of the !! American Society of Heating and Ventilating Engineers, pp 95–122, presented at the 52nd annual meeting of the !! American Society of Heating and Ventilating Engineers, New York, 1946. !_ ================================================================================================================================ !! 1. Initialisation zrapp = msmlr_h2o/YDAGS%RMAIR zcorr = 0.00320991_JPRB !! 2. Computes saturated humidity one time and store in qsfrict local array DO ji=100,max_temp ! Loop over size(qsfrict) : each position of qsfrict matches a temperature ztemperature = FLOAT(ji) !- IF (ztemperature < 273._JPRB) THEN zqsat = zrapp*10.0_JPRB**(2.07023_JPRB-zcorr*ztemperature & & -2484.896_JPRB/ztemperature+3.56654_JPRB*LOG10(ztemperature)) ! Equilibrium water vapor - solid ELSE zqsat = zrapp*10.0_JPRB**(23.8319_JPRB-2948.964_JPRB/ztemperature & & -5.028_JPRB*LOG10(ztemperature) & & -29810.16_JPRB*EXP(-0.0699382_JPRB*ztemperature) & & +25.21935_JPRB*EXP(-2999.924_JPRB/ztemperature)) ! Equilibrium water vapor - liquid ENDIF !(ztemperature < 273._JPRB) !- qsfrict (ji) = zqsat ENDDO ! Loop over size(qsfrict) !! 3. Set to zero the non-computed values qsfrict(1:99) = zero !- YDAGF%qsfrict(:)=qsfrict(:) IF (LHOOK) CALL DR_HOOK('SUFARQUHAR_MOD:SUFARQUHAR_MOD',1,ZHOOK_HANDLE) END SUBROUTINE SUFARQUHAR END MODULE SUFARQUHAR_MOD