SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/veg.F90
Go to the documentation of this file.
00001 !     #########
00002 SUBROUTINE VEG( PSW_RAD, PTA, PQA, PPS, PRGL, PLAI, PRSMIN,              &
00003                   PGAMMA, PF2, PRS                                         )  
00004 !     ####################################################################
00005 !
00006 !!****  *VEG*  
00007 !!
00008 !!    PURPOSE
00009 !!    -------
00010 !
00011 !     Calculates the surface stomatal resistance Rs
00012 !         
00013 !     
00014 !!**  METHOD
00015 !!    ------
00016 !
00017 !     First calculates the F coefficients (i.e., f, F1, F2, F3, and F4).
00018 !     
00019 !     Then, we have
00020 !
00021 !     Rs = Rsmin / ( F1 F2 F3 F4 LAI )
00022 !
00023 !!    EXTERNAL
00024 !!    --------
00025 !!
00026 !!    none
00027 !!
00028 !!    IMPLICIT ARGUMENTS
00029 !!    ------------------ 
00030 !!
00031 !!    none
00032 !!
00033 !!      
00034 !!    REFERENCE
00035 !!    ---------
00036 !!
00037 !!    Noilhan and Planton (1989)
00038 !!    Belair (1995)
00039 !!      
00040 !!    AUTHOR
00041 !!    ------
00042 !!
00043 !!      S. Belair           * Meteo-France *
00044 !!
00045 !!    MODIFICATIONS
00046 !!    -------------
00047 !!      Original      13/03/95 
00048 !!     (P.Jabouille)  13/11/96    mininum value for ZF1
00049 !!     (V. Masson)    28/08/98    add PF2 for Calvet (1998) CO2 computations
00050 !!     (V. Masson)    01/03/03    puts PF2 in a separate routine
00051 !!     (A. Boone)     21/1&/11    Rs_max in MODD_ISBA_PAR
00052 !-------------------------------------------------------------------------------
00053 !
00054 !*       0.     DECLARATIONS
00055 !               ------------
00056 !
00057 USE MODD_ISBA_PAR, ONLY : XRS_MAX
00058 USE MODE_THERMOS
00059 !
00060 !
00061 USE YOMHOOK       ,ONLY : LHOOK,   DR_HOOK
00062 USE PARKIND1      ,ONLY : JPRB
00063 !
00064 IMPLICIT NONE
00065 !
00066 !*      0.1    declarations of arguments
00067 !
00068 !
00069 REAL, DIMENSION(:), INTENT(IN)   :: PSW_RAD, PTA, PQA, PPS
00070 !                                     PSW_RAD = incoming solar radiation
00071 !                                     PTA   = near-surface air temperature
00072 !                                     PQA   = near-surface air specific humidity
00073 !                                     PPS   = surface pressure
00074 !
00075 REAL, DIMENSION(:), INTENT(IN)   :: PRGL, PLAI, PRSMIN, PGAMMA
00076 !                                     PRGL   = coefficient in the Rs formulation
00077 !                                     PLAI   = leaf area index
00078 !                                     PRSMIN = minimum surface resistance
00079 !                                     PGAMMA = coef. in the Rs calculation
00080 !
00081 REAL, DIMENSION(:), INTENT(IN)   :: PF2      ! water stress coefficient
00082 REAL, DIMENSION(:), INTENT(OUT)  :: PRS      ! ground stomatal resistance
00083 !
00084 !
00085 !*      0.2    declarations of local variables
00086 !
00087 REAL, DIMENSION(SIZE(PSW_RAD)) :: ZF, ZF1, ZF3, ZF4
00088 !                                           temporary factors necessary to 
00089 !                                           calculate the surface stomatao resistance
00090 !
00091 REAL, DIMENSION(SIZE(PSW_RAD)) :: ZQSAT
00092 !                                 ZQSAT = specific humidity at saturation
00093 !
00094 !
00095 !*      0.3    declarations of local parameters:
00096 !
00097 REAL, PARAMETER                :: ZDENOM_MIN  = 1.E-6 ! minimum denominator: 
00098 !                                                     ! numerical factor to prevent division by 0
00099 REAL, PARAMETER                :: ZFACTR_MIN  = 1.E-3 ! minimum value for some parameters
00100 !                                                     ! to prevent from being too small 
00101 REAL, PARAMETER                :: ZRS_MIN     = 1.E-4 ! minimum canopy resistance (s m-1)
00102 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00103 !-------------------------------------------------------------------------------
00104 !
00105 !*       1.     THE 'ZF1' FACTOR
00106 !               ---------------
00107 !                                      This factor measures the influence
00108 !                                      of the photosynthetically active radiation
00109 !
00110 IF (LHOOK) CALL DR_HOOK('VEG',0,ZHOOK_HANDLE)
00111 ZF(:)  = 0.55*2.*PSW_RAD(:) / (PRGL(:)+ ZDENOM_MIN ) / ( PLAI(:)+  ZDENOM_MIN )
00112 ZF1(:) = ( ZF(:) + PRSMIN(:)/XRS_MAX) /( 1. + ZF(:) )
00113 ZF1(:) = MAX( ZF1(:), ZDENOM_MIN  )
00114 !
00115 !-------------------------------------------------------------------------------
00116 !
00117 !*       3.     THE 'ZF3' FACTOR
00118 !               ----------------
00119 !                                      This factor represents the effect of
00120 !                                      vapor pressure deficit of the atmosphere.
00121 !                                      For very humid air, the stomatal resistance
00122 !                                      is a small, whereas it increases as the
00123 !                                      air is drier. 
00124 !
00125 !
00126 ZQSAT(:) = QSAT(PTA(:),PPS(:))
00127 !
00128 ZF3(:)   = MAX( 1. - PGAMMA(:)*( ZQSAT(:) - PQA(:) )*1000. , ZFACTR_MIN )
00129 !
00130 !-------------------------------------------------------------------------------
00131 !
00132 !*       4.     THE 'ZF4' FACTOR
00133 !               ----------------
00134 !                                       This factor introduces an air temperature
00135 !                                       dependance on the surface stomatal resistance
00136 !
00137 ZF4(:) = MAX( 1.0 - 0.0016*(298.15-PTA(:))**2, ZFACTR_MIN )
00138 !
00139 !-------------------------------------------------------------------------------
00140 !
00141 !*       5.     THE SURFACE STOMATAL RESISTANCE
00142 !               -------------------------------
00143 !
00144 ! use Jarvis-resistance (in standard ISBA version):
00145 ! otherwise use Jacobs/ISBA-Ags method (see routine COTWORES)
00146 !
00147 PRS(:) = PRSMIN(:) / ( PLAI(:)+ ZDENOM_MIN )          &
00148             / ZF1(:) / PF2(:) /ZF3(:) / ZF4(:)  
00149 !
00150 PRS(:) = MIN( PRS(:), XRS_MAX)
00151 PRS(:) = MAX( PRS(:), ZRS_MIN)
00152 IF (LHOOK) CALL DR_HOOK('VEG',1,ZHOOK_HANDLE)
00153 !
00154 !-------------------------------------------------------------------------------
00155 !
00156 END SUBROUTINE VEG