SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/modd_teb_vegn.F90
Go to the documentation of this file.
00001 !     ################
00002       MODULE MODD_TEB_VEG_n
00003 !     ################
00004 !
00005 !!****  *MODD_TEB_VEG_n - declaration of options and parameters for urban vegetation
00006 !!                        (for parameters common to all types of urban vegetation)
00007 !!
00008 !!    PURPOSE
00009 !!    -------
00010 !     Declaration of options and surface parameters
00011 !
00012 !!
00013 !!**  IMPLICIT ARGUMENTS
00014 !!    ------------------
00015 !!      None 
00016 !!
00017 !!    REFERENCE
00018 !!    ---------
00019 !!
00020 !!    AUTHOR
00021 !!    ------
00022 !!      C. de Munck & A. Lemonsu   *Meteo France*
00023 !!
00024 !!    MODIFICATIONS
00025 !!    -------------
00026 !!      Original       07/2012
00027 !
00028 !*       0.   DECLARATIONS
00029 !             ------------
00030 !
00031 !
00032 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00033 USE PARKIND1  ,ONLY : JPRB
00034 !
00035 IMPLICIT NONE
00036 
00037 
00038 TYPE TEB_VEG_OPTIONS_t
00039 ! ISBA options common of all types of urban vegetation
00040 !
00041 !
00042   LOGICAL                          :: LCANOPY_DRAG ! T: drag activated in SBL scheme within the canopy
00043                                                    ! F: no drag activated in SBL atmospheric layers
00044 !
00045   LOGICAL                          :: LVEGUPD      ! T = update vegetation parameters every decade
00046                                                    ! F = keep vegetation parameters constant in time
00047 !
00048   LOGICAL                          :: LTR_ML
00049 !-------------------------------------------------------------------------------
00050 !
00051   CHARACTER(LEN=3)                 :: CISBA       ! type of ISBA version:
00052                                                   ! '2-L' (default)
00053                                                   ! '3-L'
00054                                                   ! 'DIF'
00055 !
00056   CHARACTER(LEN=4)                 :: CROUGH      ! type of roughness length
00057                                                   ! 'Z01D'
00058                                                   ! 'Z04D'
00059 !
00060   CHARACTER(LEN=4)                 :: CPEDOTF     ! NOTE: Only used when HISBA = DIF
00061                                                   ! 'CH78' = Clapp and Hornberger 1978 for BC (Default)
00062                                                   ! 'CO84' = Cosby et al. 1988 for BC
00063                                                   ! 'CP88' = Carsel and Parrish 1988 for VG
00064                                                   ! 'WO99' = Wosten et al. 1999 for VG
00065 !
00066   CHARACTER(LEN=3)                 :: CPHOTO      ! type of photosynthesis
00067                                                   ! 'NON'
00068                                                   ! 'AGS'
00069                                                   ! 'LAI'
00070                                                   ! 'LST'
00071                                                   ! 'AST'
00072                                                   ! 'NIT'
00073                                                   ! 'NCB'
00074 !
00075   CHARACTER(LEN=4)                 :: CALBEDO     ! albedo type
00076                                                   ! 'DRY ' 
00077                                                   ! 'EVOL' 
00078                                                   ! 'WET ' 
00079                                                   ! 'USER' 
00080 !
00081   CHARACTER(LEN=4)                 :: CSCOND      ! Thermal conductivity
00082                                                   ! 'DEF ' = DEFault: NP89 implicit method
00083                                                   ! 'PL98' = Peters-Lidard et al. 1998 used
00084                                                   ! for explicit computation of CG
00085 !
00086   CHARACTER(LEN=4)                 :: CC1DRY      ! C1 formulation for dry soils
00087                                                   ! 'DEF ' = DEFault: Giard-Bazile formulation
00088                                                   ! 'GB93' = Giordani 1993, Braud 1993 
00089                                                   !discontinuous at WILT
00090 !
00091   CHARACTER(LEN=3)                 :: CSOILFRZ    ! soil freezing-physics option
00092                                                   ! 'DEF' = Default (Boone et al. 2000; 
00093                                                   !        Giard and Bazile 2000)
00094                                                   ! 'LWT' = Phase changes as above,
00095                                                   !         but relation between unfrozen 
00096                                                   !         water and temperature considered
00097 !                            NOTE that when using the YISBA='DIF' multi-layer soil option,
00098 !                            the 'LWT' method is used. It is only an option
00099 !                            when using the force-restore soil method ('2-L' or '3-L')
00100 !
00101   CHARACTER(LEN=4)                 :: CDIFSFCOND  ! Mulch effects
00102                                                   ! 'MLCH' = include the insulating effect of
00103                                                   ! leaf litter/mulch on the surf. thermal cond.
00104                                                   ! 'DEF ' = no mulch effect
00105 !                           NOTE: Only used when YISBA = DIF
00106 !
00107   CHARACTER(LEN=3)                 :: CSNOWRES    ! Turbulent exchanges over snow
00108                                                   ! 'DEF' = Default: Louis (ISBA)
00109                                                   ! 'RIL' = Maximum Richardson number limit
00110                                                   !         for stable conditions ISBA-SNOW3L
00111                                                   !         turbulent exchange option
00112 !                                           
00113   CHARACTER(LEN=3)                 :: CRESPSL     ! Soil respiration
00114                                                   ! 'DEF' = Default: Norman (1992)
00115                                                   ! 'PRM' = New Parameterization
00116                                                   ! 'CNT' = CENTURY model (Gibelin 2007)
00117 !                                           
00118   CHARACTER(LEN=3)                 :: CCPSURF     ! specific heat at surface
00119                                                   ! 'DRY' = default value (dry Cp)
00120                                                   ! 'HUM' = Cp as a fct of specific humidity
00121 ! - SGH scheme
00122 !                                                     
00123   CHARACTER(LEN=4)                 :: CRUNOFF     ! surface runoff formulation
00124                                                   ! 'WSAT'
00125                                                   ! 'DT92'
00126                                                   ! 'SGH ' Topmodel
00127 !                                                     
00128   CHARACTER(LEN=3)                 :: CTOPREG     ! Wolock and McCabe (2000) linear regression for Topmodel
00129                                                   ! 'DEF' = Reg
00130                                                   ! 'NON' = no Reg  
00131 !                                           
00132   CHARACTER(LEN=3)                 :: CKSAT       ! ksat
00133                                                   ! 'DEF' = default value 
00134                                                   ! 'SGH' = profil exponentiel
00135 !
00136   CHARACTER(LEN=3)               :: CSOC          ! soil organic carbon effect
00137 !                                                 ! 'DEF' = default value 
00138 !                                                 ! 'SGH' = SOC profil
00139 !
00140   CHARACTER(LEN=3)                 :: CRAIN       ! Rainfall spatial distribution
00141                                                   ! 'DEF' = No rainfall spatial distribution
00142                                                   ! 'SGH' = Rainfall exponential spatial distribution
00143 !
00144   CHARACTER(LEN=3)                 :: CHORT       ! Horton runoff
00145                                                   ! 'DEF' = no Horton runoff
00146                                                   ! 'SGH' = Horton runoff
00147 !
00148 ! -----------------------------------------------------------------------------------------------------------
00149 !
00150   INTEGER                          :: NNBIOMASS   ! number of biomass pools
00151   REAL                             :: XCGMAX      ! maximum soil heat capacity (=2.E-5)
00152   REAL                             :: XCDRAG      ! drag coefficient in canopy
00153 !
00154 END TYPE TEB_VEG_OPTIONS_t
00155 
00156 TYPE(TEB_VEG_OPTIONS_t), ALLOCATABLE, TARGET, SAVE :: TEB_VEG_OPTIONS_MODEL(:)
00157 
00158 LOGICAL, POINTER                 :: LCANOPY_DRAG=>NULL()
00159 !$OMP THREADPRIVATE(LCANOPY_DRAG)
00160 LOGICAL, POINTER                 :: LVEGUPD=>NULL()
00161 !$OMP THREADPRIVATE(LVEGUPD)
00162 LOGICAL,          POINTER        :: LTR_ML=>NULL()
00163 !$OMP THREADPRIVATE(LTR_ML)
00164  CHARACTER(LEN=3), POINTER        :: CISBA=>NULL()
00165 !$OMP THREADPRIVATE(CISBA)
00166  CHARACTER(LEN=4), POINTER        :: CROUGH=>NULL()
00167 !$OMP THREADPRIVATE(CROUGH)
00168  CHARACTER(LEN=4), POINTER        :: CPEDOTF=>NULL()
00169 !$OMP THREADPRIVATE(CPEDOTF)
00170  CHARACTER(LEN=3), POINTER        :: CPHOTO=>NULL()
00171 !$OMP THREADPRIVATE(CPHOTO)
00172  CHARACTER(LEN=4), POINTER        :: CALBEDO=>NULL()
00173 !$OMP THREADPRIVATE(CALBEDO)
00174  CHARACTER(LEN=4), POINTER        :: CSCOND=>NULL()
00175 !$OMP THREADPRIVATE(CSCOND)
00176  CHARACTER(LEN=4), POINTER        :: CC1DRY=>NULL()
00177 !$OMP THREADPRIVATE(CC1DRY)
00178  CHARACTER(LEN=3), POINTER        :: CSOILFRZ=>NULL()
00179 !$OMP THREADPRIVATE(CSOILFRZ)
00180  CHARACTER(LEN=4), POINTER        :: CDIFSFCOND=>NULL()
00181 !$OMP THREADPRIVATE(CDIFSFCOND)
00182  CHARACTER(LEN=3), POINTER        :: CSNOWRES=>NULL()
00183 !$OMP THREADPRIVATE(CSNOWRES)
00184  CHARACTER(LEN=3), POINTER        :: CRESPSL=>NULL()
00185 !$OMP THREADPRIVATE(CRESPSL)
00186  CHARACTER(LEN=3), POINTER        :: CCPSURF=>NULL()
00187 !$OMP THREADPRIVATE(CCPSURF)
00188  CHARACTER(LEN=4), POINTER        :: CRUNOFF=>NULL()
00189 !$OMP THREADPRIVATE(CRUNOFF)
00190  CHARACTER(LEN=3), POINTER        :: CTOPREG=>NULL()
00191 !$OMP THREADPRIVATE(CTOPREG)
00192  CHARACTER(LEN=3), POINTER        :: CKSAT=>NULL()
00193 !$OMP THREADPRIVATE(CKSAT)
00194  CHARACTER(LEN=3), POINTER      :: CSOC=>NULL()
00195 !$OMP THREADPRIVATE(CSOC)
00196  CHARACTER(LEN=3), POINTER        :: CRAIN=>NULL()
00197 !$OMP THREADPRIVATE(CRAIN)
00198  CHARACTER(LEN=3), POINTER        :: CHORT=>NULL()
00199 !$OMP THREADPRIVATE(CHORT)
00200 INTEGER, POINTER                 :: NNBIOMASS=>NULL()
00201 !$OMP THREADPRIVATE(NNBIOMASS)
00202 REAL, POINTER                    :: XCGMAX=>NULL()
00203 !$OMP THREADPRIVATE(XCGMAX)
00204 REAL, POINTER                    :: XCDRAG=>NULL()
00205 !$OMP THREADPRIVATE(XCDRAG)
00206 !--------------------------------------------------------------------------
00207 
00208 
00209 !----------------------------------------------------------------------------
00210 CONTAINS
00211 !----------------------------------------------------------------------------
00212 
00213 SUBROUTINE TEB_VEG_OPTIONS_GOTO_MODEL(KFROM, KTO, LKFROM)
00214 LOGICAL, INTENT(IN) :: LKFROM
00215 INTEGER, INTENT(IN) :: KFROM, KTO
00216 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00217 !
00218 ! Save current state for allocated arrays
00219 IF (LKFROM) THEN
00220 ! Aucune variable a plusieurs dimensions
00221 ENDIF
00222 !
00223 ! Current model is set to model KTO
00224 IF (LHOOK) CALL DR_HOOK('MODD_TEB_VEG_N:TEB_VEG_OPTIONS_GOTO_MODEL',0,ZHOOK_HANDLE)
00225 LCANOPY_DRAG=>TEB_VEG_OPTIONS_MODEL(KTO)%LCANOPY_DRAG
00226 LVEGUPD=>TEB_VEG_OPTIONS_MODEL(KTO)%LVEGUPD
00227 LTR_ML=>TEB_VEG_OPTIONS_MODEL(KTO)%LTR_ML
00228 CISBA=>TEB_VEG_OPTIONS_MODEL(KTO)%CISBA
00229 CROUGH=>TEB_VEG_OPTIONS_MODEL(KTO)%CROUGH
00230 CPEDOTF=>TEB_VEG_OPTIONS_MODEL(KTO)%CPEDOTF
00231 CPHOTO=>TEB_VEG_OPTIONS_MODEL(KTO)%CPHOTO
00232 CALBEDO=>TEB_VEG_OPTIONS_MODEL(KTO)%CALBEDO
00233 CSCOND=>TEB_VEG_OPTIONS_MODEL(KTO)%CSCOND
00234 CC1DRY=>TEB_VEG_OPTIONS_MODEL(KTO)%CC1DRY
00235 CSOILFRZ=>TEB_VEG_OPTIONS_MODEL(KTO)%CSOILFRZ
00236 CDIFSFCOND=>TEB_VEG_OPTIONS_MODEL(KTO)%CDIFSFCOND
00237 CSNOWRES=>TEB_VEG_OPTIONS_MODEL(KTO)%CSNOWRES
00238 CRESPSL=>TEB_VEG_OPTIONS_MODEL(KTO)%CRESPSL
00239 CCPSURF=>TEB_VEG_OPTIONS_MODEL(KTO)%CCPSURF
00240 CRUNOFF=>TEB_VEG_OPTIONS_MODEL(KTO)%CRUNOFF
00241 CTOPREG=>TEB_VEG_OPTIONS_MODEL(KTO)%CTOPREG
00242 CKSAT=>TEB_VEG_OPTIONS_MODEL(KTO)%CKSAT
00243 CSOC=>TEB_VEG_OPTIONS_MODEL(KTO)%CSOC
00244 CRAIN=>TEB_VEG_OPTIONS_MODEL(KTO)%CRAIN
00245 CHORT=>TEB_VEG_OPTIONS_MODEL(KTO)%CHORT
00246 NNBIOMASS=>TEB_VEG_OPTIONS_MODEL(KTO)%NNBIOMASS
00247 XCGMAX=>TEB_VEG_OPTIONS_MODEL(KTO)%XCGMAX
00248 XCDRAG=>TEB_VEG_OPTIONS_MODEL(KTO)%XCDRAG
00249 IF (LHOOK) CALL DR_HOOK('MODD_TEB_VEG_N:TEB_VEG_OPTIONS_GOTO_MODEL',1,ZHOOK_HANDLE)
00250 
00251 END SUBROUTINE TEB_VEG_OPTIONS_GOTO_MODEL
00252 
00253 SUBROUTINE TEB_VEG_OPTIONS_ALLOC(KMODEL)
00254 INTEGER, INTENT(IN) :: KMODEL
00255 INTEGER :: J,JP
00256 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00257 IF (LHOOK) CALL DR_HOOK("MODD_TEB_VEG_N:TEB_VEG_OPTIONS_ALLOC",0,ZHOOK_HANDLE)
00258 ALLOCATE(TEB_VEG_OPTIONS_MODEL(KMODEL))
00259 TEB_VEG_OPTIONS_MODEL(:)%LCANOPY_DRAG=.FALSE.
00260 TEB_VEG_OPTIONS_MODEL(:)%LVEGUPD=.FALSE. 
00261 TEB_VEG_OPTIONS_MODEL(:)%LTR_ML=.FALSE.
00262 TEB_VEG_OPTIONS_MODEL(:)%CISBA=' '
00263 TEB_VEG_OPTIONS_MODEL(:)%CROUGH=' '
00264 TEB_VEG_OPTIONS_MODEL(:)%CSCOND=' '
00265 TEB_VEG_OPTIONS_MODEL(:)%CPEDOTF=' '
00266 TEB_VEG_OPTIONS_MODEL(:)%CPHOTO=' '
00267 TEB_VEG_OPTIONS_MODEL(:)%CALBEDO=' '
00268 TEB_VEG_OPTIONS_MODEL(:)%CC1DRY=' '
00269 TEB_VEG_OPTIONS_MODEL(:)%CSOILFRZ=' '
00270 TEB_VEG_OPTIONS_MODEL(:)%CDIFSFCOND=' '
00271 TEB_VEG_OPTIONS_MODEL(:)%CSNOWRES=' '
00272 TEB_VEG_OPTIONS_MODEL(:)%CRESPSL=' '
00273 TEB_VEG_OPTIONS_MODEL(:)%CCPSURF=' '
00274 TEB_VEG_OPTIONS_MODEL(:)%CRUNOFF=' '
00275 TEB_VEG_OPTIONS_MODEL(:)%CTOPREG=' '
00276 TEB_VEG_OPTIONS_MODEL(:)%CKSAT=' '
00277 TEB_VEG_OPTIONS_MODEL(:)%CSOC=' '
00278 TEB_VEG_OPTIONS_MODEL(:)%CRAIN=' '
00279 TEB_VEG_OPTIONS_MODEL(:)%CHORT=' '
00280 TEB_VEG_OPTIONS_MODEL(:)%NNBIOMASS=0
00281 TEB_VEG_OPTIONS_MODEL(:)%XCGMAX=0.
00282 TEB_VEG_OPTIONS_MODEL(:)%XCDRAG=0.
00283 IF (LHOOK) CALL DR_HOOK("MODD_TEB_VEG_N:TEB_VEG_OPTIONS_ALLOC",1,ZHOOK_HANDLE)
00284 END SUBROUTINE TEB_VEG_OPTIONS_ALLOC
00285 
00286 SUBROUTINE TEB_VEG_OPTIONS_DEALLO
00287 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00288 IF (LHOOK) CALL DR_HOOK("MODD_TEB_VEG_N:TEB_VEG_OPTIONS_DEALLO",0,ZHOOK_HANDLE)
00289 IF (ALLOCATED(TEB_VEG_OPTIONS_MODEL)) DEALLOCATE(TEB_VEG_OPTIONS_MODEL)
00290 IF (LHOOK) CALL DR_HOOK("MODD_TEB_VEG_N:TEB_VEG_OPTIONS_DEALLO",1,ZHOOK_HANDLE)
00291 END SUBROUTINE TEB_VEG_OPTIONS_DEALLO
00292 
00293 !----------------------------------------------------------------------------
00294 
00295 END MODULE MODD_TEB_VEG_n