|
SURFEX v7.3
General documentation of Surfex
|
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
1.8.0