SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/wet_leaves_frac.F90
Go to the documentation of this file.
00001 !     #########
00002     SUBROUTINE WET_LEAVES_FRAC(PWRM, PVEG, PWRMAX_CF, PZ0, PLAI, PWRMAX, PDELTA)
00003 !   ############################################################################
00004 !
00005 !!****  *WET_LEAVES_FRAC*  
00006 !!
00007 !!    PURPOSE
00008 !!    -------
00009 !
00010 !     
00011 !!**  METHOD
00012 !!    ------
00013 !
00014 !
00015 !!    EXTERNAL
00016 !!    --------
00017 !!
00018 !!
00019 !!    IMPLICIT ARGUMENTS
00020 !!    ------------------
00021 !!
00022 !!
00023 !!      
00024 !!    REFERENCE
00025 !!    ---------
00026 !!
00027 !!      
00028 !!    AUTHOR
00029 !!    ------
00030 !!
00031 !!      S. Belair           * Meteo-France *
00032 !!
00033 !!    MODIFICATIONS
00034 !!    -------------
00035 !!      Original    13/03/95 
00036 !!      (A.Boone)    11/26/98 Option for PDELTA: forested vs default surface
00037 !!      B. Decharme    2008  Add optional maximum value for the fraction of the foliage covered by intercepted water
00038 !-------------------------------------------------------------------------------
00039 !
00040 !*       0.     DECLARATIONS
00041 !               ------------
00042 !
00043 USE MODD_SURF_ATM, ONLY : XDELTA_MAX
00044 !
00045 !
00046 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00047 USE PARKIND1  ,ONLY : JPRB
00048 !
00049 IMPLICIT NONE
00050 !
00051 !*      0.1    declarations of arguments
00052 !
00053 !
00054 REAL, DIMENSION(:), INTENT(IN)   :: PWRM
00055 !                                     PWRM    = liquid water retained on the foliage
00056 !                                               of the vegetation
00057 !
00058 REAL, DIMENSION(:), INTENT(IN)   :: PVEG, PWRMAX_CF, PLAI, PZ0
00059 !                                     PVEG = vegetation fraction
00060 !                                     PLAI = leaf area index
00061 !                                     PWRMAX_CF = coefficient for maximum water interception 
00062 !                                                 storage capacity on the vegetation (kg/m2)
00063 !                                     PZ0  = roughness length
00064 !
00065 !
00066 REAL, DIMENSION(:), INTENT(OUT)  :: PWRMAX
00067 !                                     PWRMAX = maximum equivalent water content
00068 !                                              in the vegetation canopy
00069 !
00070 REAL, DIMENSION(:), INTENT(OUT)  :: PDELTA
00071 !                                     PDELTA = fraction of the foliage covered
00072 !                                              by intercepted water
00073 !
00074 !
00075 !
00076 !*      0.2    declarations of local variables
00077 !
00078 !
00079 !
00080 REAL, DIMENSION(SIZE(PVEG)) :: ZCOEF,          
00081 !                                              ZCOEF = work array
00082                                  ZWR,            &
00083 !                                              Interception reservoir limited by WRMAX
00084                                  ZDELTA_LOW,     &
00085 !                                              ZDELTA_LOW = fraction of the foliage covered
00086 !                                              by intercepted water for low vegetation
00087                                  ZDELTA_HIGH  
00088 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00089 !                                              ZDELTA_HIGH = fraction of the foliage covered
00090 !                                              by intercepted water for high vegetation
00091 
00092 !-------------------------------------------------------------------------------
00093 !
00094 IF (LHOOK) CALL DR_HOOK('WET_LEAVES_FRAC',0,ZHOOK_HANDLE)
00095 PDELTA(:) = 0.
00096 !
00097 !*       2.     FRACTION OF THE FOLIAGE COVERED BY INTERCEPTED WATER (DELTA)
00098 !               ------------------------------------------------------------
00099 !
00100 !                                         first calculate the maximum value of
00101 !                                         equivalent water content in the 
00102 !                                         vegetation canopy
00103 !
00104 PWRMAX(:) = PWRMAX_CF(:) * PVEG(:) * PLAI(:) 
00105 !
00106 ZWR(:) = MIN(PWRM(:),PWRMAX(:))
00107 !
00108 WHERE (PVEG(:)>0. .AND. PWRMAX>0.)
00109 !*                                        calculate 'DELTA'
00110 !
00111 !*       2.1    Low vegetation, Deardorff (1978) formulmation:
00112 !               ---------------------------------------------
00113 !       
00114   ZDELTA_LOW(:) = ( ZWR(:)/PWRMAX(:) )**(2./3.)
00115 !
00116 !*       2.2    High vegetation, Manzi (1993) formulmation:
00117 !               ------------------------------------------
00118 !
00119 !                                           Manzi (1993) [see also Delire et al. JGR 1997]
00120 !                                           The dynamic vegetation roughness length
00121 !                                           is used to determine which formulation
00122 !                                           for 'DELTA' is used. This formulation
00123 !                                           was calibrated for ARME (tropical forrest)
00124 !                                           and so is used for forest canopies. It
00125 !                                           results in 'smeared' (time and amplitude)
00126 !                                           evaporation from interception relative to
00127 !                                           that using Deardorff (above).
00128 !
00129   ZCOEF(:)  = 1. + 2.*PLAI(:)
00130 !
00131   ZDELTA_HIGH(:) =   ZWR(:)/( (1.-ZCOEF(:))*ZWR(:) + ZCOEF(:)*PWRMAX(:) )
00132 !
00133 !
00134 !*       2.3    Ponderation between low and high vegetation (min and max thresholds: z0 of 0.5m and 1m)
00135 !               ------------------------------------------
00136 !
00137   ZCOEF(:) = MAX(MIN(2.*PZ0(:)-1. ,1.),0.)
00138 !
00139   PDELTA(:) = (1.-ZCOEF(:)) * ZDELTA_LOW(:) + ZCOEF(:) * ZDELTA_HIGH(:)
00140 !
00141 END WHERE
00142 !
00143 PDELTA(:) = MIN(XDELTA_MAX,PDELTA(:)) 
00144 IF (LHOOK) CALL DR_HOOK('WET_LEAVES_FRAC',1,ZHOOK_HANDLE)
00145 !
00146 !-------------------------------------------------------------------------------
00147 !
00148 END SUBROUTINE WET_LEAVES_FRAC