SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/cotwo.F90
Go to the documentation of this file.
00001 !     #########
00002     SUBROUTINE COTWO(PCSP, PF2, PIA, PDS, PGAMMT,               &
00003                      PFZERO, PEPSO, PANMAX, PGMEST, PGC, PDMAX, &
00004                      PAN, PGS, PRD                             )  
00005 !   #########################################################################
00006 !
00007 !!****  *COTWO*  
00008 !!
00009 !!    PURPOSE
00010 !!    -------
00011 !
00012 !     Calculates net assimilation of CO2 and leaf conductance.
00013 !              
00014 !!**  METHOD
00015 !!    ------
00016 !     Calvet et al. 1998 Forr. Agri. Met. [from model of Jacobs(1994)]
00017 !!
00018 !!    EXTERNAL
00019 !!    --------
00020 !!    none
00021 !!
00022 !!    IMPLICIT ARGUMENTS
00023 !!    ------------------
00024 !!      
00025 !!    USE MODD_CO2V_PAR
00026 !!
00027 !!    REFERENCE
00028 !!    ---------
00029 !!
00030 !!    Calvet et al. 1998 Forr. Agri. Met. 
00031 !!      
00032 !!    AUTHOR
00033 !!    ------
00034 !!
00035 !!      A. Boone           * Meteo-France *
00036 !!      (following Belair)
00037 !!
00038 !!    MODIFICATIONS
00039 !!    -------------
00040 !!      Original    27/10/97 
00041 !!      L. Jarlan   27/10/04 : Add of photosynthesis (PPST variable) as output
00042 !!                              of the routine in order to manage the calculation
00043 !!                              of Soil respiration in cotwores and cotworestress
00044 !!      P Le Moigne  09/2005 AGS modifs of L. Jarlan
00045 !!      A.L. Gibelin 07/2009 : Suppress GPP and PPST as outputs
00046 !!                             GPP is calculated in cotwores.f90 and cotworestress.f90
00047 !!      B. Decharme   2012   : optimization
00048 !!
00049 !-------------------------------------------------------------------------------
00050 !
00051 USE MODD_CSTS,     ONLY : XMV, XMD, XRHOLW
00052 USE MODD_CO2V_PAR, ONLY : XRDCF, XAIRTOH2O, XCO2TOH2O, XCONDSTMIN
00053 !
00054 !*       0.     DECLARATIONS
00055 !               ------------
00056 !
00057 !
00058 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00059 USE PARKIND1  ,ONLY : JPRB
00060 !
00061 IMPLICIT NONE
00062 !
00063 !*      0.1    declarations of arguments
00064 !
00065 !
00066 !                                      Atmospheric forcing:
00067 REAL, DIMENSION(:),   INTENT(IN):: PCSP, PF2, PIA, PDS,PGAMMT
00068 !                                      PCSP  = atmospheric concentration of CO2
00069 !                                      PF2   = normalized soil water stress
00070 !                                      PIA   = incident solar radiation
00071 !                                      PDS   = saturation deficit of atmosphere
00072 !                                              verses the leaf surface (with correction)
00073 !                                      PGAMMT = compensation point
00074 !
00075 !                                      Time constants:
00076 !
00077 REAL, DIMENSION(:), INTENT(IN)  :: PFZERO, PEPSO, PANMAX, PGMEST, PGC, PDMAX
00078 !                                      PFZERO    = ideal value of F, no photorespiration 
00079 !                                                  or saturation deficit
00080 !                                      PEPSO     = maximum initial quantum use efficiency 
00081 !                                                  (kgCO2 J-1 PAR)
00082 !                                      PGAMM     = CO2 conpensation concentration (kgCO2 kgAir-1)
00083 !                                      PANMAX    = maximum net assimilation
00084 !                                      PGMEST    = temperature response 
00085 !                                                  of mesophyll conductance
00086 !                                      PGC       = cuticular conductance (m s-1)
00087 !                                      PDMAX     = maximum saturation deficit of 
00088 !                                                  atmosphere tolerate by vegetation       
00089 !
00090 !                                      CO2 model outputs:
00091 REAL, DIMENSION(:),  INTENT(OUT) :: PAN, PGS, PRD
00092 !                                      PAN   = Net assimilation of CO2
00093 !                                      PGS   = Leaf conductance
00094 !                                      PRD   = Dark Respiration
00095 !
00096 !
00097 !*      0.2    declarations of local variables
00098 !
00099 !
00100 REAL, DIMENSION(SIZE(PAN)) :: ZFMIN, ZDRAP, ZF
00101 !                                       ZFMIN = minimum f factor
00102 !                                       ZDRAP = ratio Ds/Dmax
00103 !                                       ZF    = factor related to diffusion
00104 !
00105 REAL, DIMENSION(SIZE(PAN)) :: ZCSP, ZCI, ZCMIN, ZAMIN  
00106 !                                       ZCSP    = atmospheric concentration 
00107 !                                                       of CO2
00108 !                                       ZCI     = Leaf Internal concentration 
00109 !                                                       of CO2
00110 !                                       ZCMIN = minimim internal leaf
00111 !                                               CO2 concentration
00112 !                                       ZAMIN   = minimum net 
00113 !                                                       assimilation
00114 !
00115 REAL, DIMENSION(SIZE(PAN)) :: ZAM, ZEPS, ZLEF, ZAGR, ZAG
00116 !                                       ZAM     = net assimilation as a 
00117 !                                                 function of CO2 deficit
00118 !                                       ZEPS   = initial quantum 
00119 !                                                use efficiency
00120 !                                       ZLEF    = leaf transpiration 
00121 !                                        ZAGR = assimilation rate ratio
00122 !                                        ZAG  = modified gross assimilation 
00123 !                                               rate
00124 !
00125 REAL, DIMENSION(SIZE(PAN)) :: ZGSC, ZGS
00126 !                                       ZGSC    = stomatal conductance to CO2
00127 !                                       ZGS     = cuticular conductance (m s-1)
00128 !
00129 INTEGER :: JJ, ITER
00130 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00131 !-------------------------------------------------------------------------------
00132 !
00133 !*       X.     COMPUTE PRELIMINARY QUANITIES NEEDED FOR CO2 MODEL
00134 !               --------------------------------------------------
00135 !
00136 IF (LHOOK) CALL DR_HOOK('COTWO',0,ZHOOK_HANDLE)
00137 !
00138 DO JJ = 1, SIZE(PAN) 
00139   !
00140   !*       X.     BEGIN CO2 MODEL:
00141   !               ----------------
00142   !
00143   !                                                          Equation #s in 
00144   !                                                          Jacob's Thesis:
00145   !
00146   ! Eq. 3.21
00147   ZFMIN(JJ) = PGC(JJ)/(PGC(JJ)+PGMEST(JJ))                          ! fmin
00148   ! fmin <= f0, and so f <= f0
00149   ZFMIN(JJ) = MIN(ZFMIN(JJ),PFZERO(JJ))
00150   ! fmin > 0, and so PCI > PGAMMT
00151   ZFMIN(JJ) = MAX(ZFMIN(JJ),1.E-10)
00152   !
00153   ! f from specific humidity deficit ds (g kg-1)
00154   !
00155   IF (PDMAX(JJ).NE.0.) THEN
00156     ZDRAP(JJ)=MIN(1.0,PDS(JJ)/PDMAX(JJ))
00157   ELSE
00158     ZDRAP(JJ)=1.
00159   ENDIF
00160   ZF(JJ)  = PFZERO(JJ)*(1.0-ZDRAP(JJ)) + ZFMIN(JJ)*ZDRAP(JJ)
00161   !
00162   ZCSP(JJ)  = MAX(PCSP(JJ),PGAMMT(JJ)+1.e-6)
00163   !
00164   ! ci/cs ratio = f+(1.-f)*gammt/cs ; internal leaf CO2 concentration:
00165   !
00166   ZCI(JJ) = ZCSP(JJ)*(ZF(JJ)+(1.0-ZF(JJ))*PGAMMT(JJ)/ZCSP(JJ))
00167   !
00168   !
00169   ! Eq. 3.23
00170   ZCMIN(JJ) = (PGC(JJ)*ZCSP(JJ) + PGMEST(JJ)*PGAMMT(JJ))/(PGMEST(JJ)+PGC(JJ))  
00171   !
00172   ! residual photosynthesis rate (kgCO2 kgAir-1 m s-1)
00173   !
00174   ZAMIN(JJ) = PGMEST(JJ)*(ZCMIN(JJ)-PGAMMT(JJ))
00175   !
00176   !
00177   ! Eq. 3.12
00178   !
00179   ! light response curve (kgCO2 kgAir-1 m s-1)
00180   !
00181   ZAM(JJ) = PGMEST(JJ)*(ZCI(JJ)-PGAMMT(JJ))
00182   !
00183   ZAM(JJ) = -ZAM(JJ)/PANMAX(JJ)
00184   ZAM(JJ) = PANMAX(JJ)*(1.0d0 - EXP(ZAM(JJ)*1.0d0))
00185   ZAM(JJ) = MAX(ZAM(JJ),ZAMIN(JJ))
00186   !
00187   PRD(JJ) = ZAM(JJ)*XRDCF
00188   !
00189   ! Initial quantum use efficiency (kgCO2 J-1 PAR m3 kgAir-1):
00190   !
00191   ZEPS(JJ)   = PEPSO(JJ)*(ZCI(JJ) - PGAMMT(JJ))/(ZCI(JJ) + 2.0*PGAMMT(JJ))
00192   !
00193   IF (ZAM(JJ).NE.0.) THEN
00194     PAN(JJ) = (ZAM(JJ) + PRD(JJ))*( 1.0 - EXP(-ZEPS(JJ)*PIA(JJ) &
00195                /(ZAM(JJ) + PRD(JJ))) ) - PRD(JJ)  
00196   ELSE
00197     PAN(JJ) = 0.
00198   ENDIF
00199   PAN(JJ) = MAX(-PRD(JJ),PAN(JJ))
00200   !
00201   ! Eq. 3.28
00202   IF (ZAM(JJ).NE.0.) THEN
00203     ZAGR(JJ) = (PAN(JJ) + PRD(JJ))/(ZAM(JJ) + PRD(JJ))   
00204   ELSE
00205     ZAGR(JJ)=0.
00206   ENDIF
00207   !
00208   ZAG(JJ)  = PAN(JJ) - ZAMIN(JJ)*ZDRAP(JJ)*ZAGR(JJ) +     &
00209                    PRD(JJ)*(1.0-ZAGR(JJ))  
00210   !
00211   ZLEF(JJ)    = 0.0                                  ! initialize leaf transpiration
00212   !
00213 ENDDO
00214 !
00215 !   Iterate bewteen GSC and LEF:
00216 !
00217 ! Iterations are for stomatal conductance and stomatal evaporation only
00218 !
00219 DO ITER = 1, 3
00220   !
00221   DO JJ = 1, SIZE(PAN)
00222     !
00223     ! stomatal conductance for CO2 (m s-1):
00224     !
00225     ZGSC(JJ) = ZAG(JJ)/(ZCSP(JJ) - ZCI(JJ))
00226     ZGSC(JJ) = MAX( XCONDSTMIN, ZGSC(JJ))
00227     ZGSC(JJ) = ZGSC(JJ) + XAIRTOH2O*ZLEF(JJ)*( (ZCSP(JJ) +      &
00228                 ZCI(JJ))/(2.0*(ZCSP(JJ) - ZCI(JJ))) )
00229     !
00230     IF (ITER<3) THEN
00231     !
00232       ZGS(JJ) = 1.6*ZGSC(JJ)
00233     !
00234     ! compute transpiration (kgH2O kgAir-1 m s-1) from specific
00235     ! humidity deficit
00236     !
00237     ! Eq. 3.5
00238       ZLEF(JJ) = ZGS(JJ)*PDS(JJ)
00239     !
00240     ENDIF
00241     !
00242   ENDDO
00243   !
00244 ENDDO
00245 !   
00246 !   End of iterations
00247 !
00248 ! Final calculation of leaf conductance (stomatal AND cuticular)
00249 !
00250 ! Eq. 3.16
00251 PGS(:) = XCO2TOH2O*ZGSC(:) + PGC(:)
00252 !
00253 IF (LHOOK) CALL DR_HOOK('COTWO',1,ZHOOK_HANDLE)
00254 !       
00255 END SUBROUTINE COTWO