SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE DIAG_TEB_GARDEN_INIT_n(HPROGRAM,KLU,KSW) 00003 ! ##################### 00004 ! 00005 !!**** *DIAG_TEB_GARDEN_INIT_n* - routine to initialize TEB-ISBA diagnostic variables 00006 !! 00007 !! PURPOSE 00008 !! ------- 00009 !! 00010 !!** METHOD 00011 !! ------ 00012 !! 00013 !! EXTERNAL 00014 !! -------- 00015 !! 00016 !! 00017 !! IMPLICIT ARGUMENTS 00018 !! ------------------ 00019 !! 00020 !! REFERENCE 00021 !! --------- 00022 !! 00023 !! 00024 !! AUTHOR 00025 !! ------ 00026 !! V. Masson *Meteo France* 00027 !! 00028 !! MODIFICATIONS 00029 !! ------------- 00030 !! Original 02/2003 00031 !! modified 11/2003 by P. LeMoigne: surface cumulated energy budget 00032 !! modified 10/2004 by P. LeMoigne: surface miscellaneous fields 00033 !! B. Decharme 2008 New diag for water budget and allow to reset 00034 ! cumulatives variables at the beginning of a run 00035 !------------------------------------------------------------------------------- 00036 ! 00037 !* 0. DECLARATIONS 00038 ! ------------ 00039 ! 00040 USE MODD_SURF_PAR, ONLY : XUNDEF 00041 USE MODD_TEB_VEG_n, ONLY : CHORT, CPHOTO 00042 USE MODD_TEB_GARDEN_n, ONLY : NGROUND_LAYER, TSNOW, XABC 00043 USE MODD_TYPE_DATE_SURF 00044 USE MODD_DIAG_SURF_ATM_n, ONLY : LREAD_BUDGETC 00045 USE MODD_DIAG_TEB_n, ONLY : N2M, LSURF_BUDGET, LCOEF, LSURF_VARS 00046 USE MODD_DIAG_MISC_TEB_n, ONLY : LSURF_MISC_BUDGET 00047 USE MODD_DIAG_TEB_GARDEN_n, ONLY : XRN, XH, XGFLUX, XLEI, XRI, XCD, XCDN, XCH, XCE, & 00048 XTS, XTSRAD, XFAPAR, XFAPIR, XFAPAR_BS, XFAPIR_BS, & 00049 XDFAPARC, XDFAPIRC, XZ0_WITH_SNOW, XZ0H_WITH_SNOW, & 00050 XZ0EFF, XQS, XSWD, XSWU, XSWBD, XSWBU, XLWD, XLWU, & 00051 XFMU, XFMV, XLEG, XLEGI, XLEV, XLES, XLER, XLETR, & 00052 XEVAP, XDRAIN, XRUNOFF, XHORT, XDRIP, XMELT, XRRVEG, & 00053 XHV, XSWI, XTSWI, XTWSNOW, XTDSNOW, XSEUIL, XGPP, & 00054 XRESP_AUTO, XRESP_ECO, XALBT, XEMIST, XCG, XC1, XC2, & 00055 XWGEQ, XCT, XRS, XHU, XHUG, XRESTORE, XUSTAR, XDLAI_EFFC, & 00056 XIACAN, XSNOWTEMP, XSNOWLIQ, XSNOWDZ, XSNOWHMASS, & 00057 XMELTADV, XIACAN, XIRRIG_FLUX 00058 ! 00059 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00060 USE PARKIND1 ,ONLY : JPRB 00061 ! 00062 IMPLICIT NONE 00063 ! 00064 !* 0.1 Declarations of arguments 00065 ! ------------------------- 00066 ! 00067 INTEGER, INTENT(IN) :: KLU ! size of arrays 00068 INTEGER, INTENT(IN) :: KSW ! spectral bands 00069 CHARACTER(LEN=6), INTENT(IN):: HPROGRAM ! program calling 00070 ! 00071 !* 0.2 Declarations of local variables 00072 ! ------------------------------- 00073 ! 00074 INTEGER :: IRESP ! IRESP : return-code if a problem appears 00075 CHARACTER(LEN=12) :: YREC ! Name of the article to be read 00076 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00077 ! 00078 !------------------------------------------------------------------------------- 00079 ! 00080 IF (LHOOK) CALL DR_HOOK('DIAG_TEB_GARDEN_INIT_N',0,ZHOOK_HANDLE) 00081 ! 00082 ALLOCATE(XRI (KLU)) 00083 ! 00084 XRI = XUNDEF 00085 ! 00086 ALLOCATE(XCD (KLU)) 00087 ALLOCATE(XCH (KLU)) 00088 ALLOCATE(XRN (KLU)) 00089 ALLOCATE(XH (KLU)) 00090 ALLOCATE(XGFLUX (KLU)) 00091 ALLOCATE(XQS (KLU)) 00092 ! 00093 XCD = XUNDEF 00094 XCH = XUNDEF 00095 XRN = XUNDEF 00096 XH = XUNDEF 00097 XGFLUX = XUNDEF 00098 XQS = XUNDEF 00099 ! 00100 ALLOCATE(XLEI (KLU)) 00101 ALLOCATE(XLEG (KLU)) 00102 ALLOCATE(XLEGI (KLU)) 00103 ALLOCATE(XLEV (KLU)) 00104 ALLOCATE(XLES (KLU)) 00105 ALLOCATE(XLER (KLU)) 00106 ALLOCATE(XLETR (KLU)) 00107 ALLOCATE(XEVAP (KLU)) 00108 ALLOCATE(XDRAIN (KLU)) 00109 ALLOCATE(XRUNOFF (KLU)) 00110 ALLOCATE(XHORT (KLU)) 00111 ALLOCATE(XDRIP (KLU)) 00112 ALLOCATE(XRRVEG (KLU)) 00113 ALLOCATE(XMELT (KLU)) 00114 ALLOCATE(XIRRIG_FLUX(KLU)) 00115 ! 00116 XLEI = XUNDEF 00117 XLEG = XUNDEF 00118 XLEGI = XUNDEF 00119 XLEV = XUNDEF 00120 XLES = XUNDEF 00121 XLER = XUNDEF 00122 XLETR = XUNDEF 00123 XEVAP = XUNDEF 00124 XDRAIN = XUNDEF 00125 XRUNOFF = XUNDEF 00126 XHORT = XUNDEF 00127 XDRIP = XUNDEF 00128 XRRVEG = XUNDEF 00129 XMELT = XUNDEF 00130 XIRRIG_FLUX = XUNDEF 00131 ! 00132 ALLOCATE(XCG (KLU)) 00133 ALLOCATE(XC1 (KLU)) 00134 ALLOCATE(XC2 (KLU)) 00135 ALLOCATE(XWGEQ (KLU)) 00136 ALLOCATE(XCT (KLU)) 00137 ALLOCATE(XRS (KLU)) 00138 ALLOCATE(XCDN (KLU)) 00139 ALLOCATE(XHU (KLU)) 00140 ALLOCATE(XHUG (KLU)) 00141 ALLOCATE(XRESTORE(KLU)) 00142 ALLOCATE(XUSTAR (KLU)) 00143 IF (CPHOTO/='NON') THEN 00144 ALLOCATE(XIACAN (KLU,SIZE(XABC) )) 00145 ELSE 00146 ALLOCATE(XIACAN (0,0)) 00147 END IF 00148 ! 00149 XCG = XUNDEF 00150 XC1 = XUNDEF 00151 XC2 = XUNDEF 00152 XWGEQ = XUNDEF 00153 XCT = XUNDEF 00154 XRS = XUNDEF 00155 XCDN = XUNDEF 00156 XHU = XUNDEF 00157 XHUG = XUNDEF 00158 XRESTORE = XUNDEF 00159 XUSTAR = XUNDEF 00160 IF (CPHOTO/='NON') THEN 00161 XIACAN = XUNDEF 00162 END IF 00163 ! 00164 ALLOCATE(XSNOWTEMP(KLU,TSNOW%NLAYER )) 00165 ALLOCATE(XSNOWLIQ (KLU,TSNOW%NLAYER )) 00166 ALLOCATE(XSNOWDZ (KLU,TSNOW%NLAYER )) 00167 ALLOCATE(XSNOWHMASS(KLU)) 00168 ALLOCATE(XMELTADV (KLU)) 00169 ! 00170 XSNOWTEMP = XUNDEF 00171 XSNOWLIQ = XUNDEF 00172 XSNOWDZ = XUNDEF 00173 XSNOWHMASS = XUNDEF 00174 XMELTADV = XUNDEF 00175 ! 00176 ALLOCATE(XHV (KLU)) 00177 ALLOCATE(XALBT (KLU)) 00178 ALLOCATE(XEMIST (KLU)) 00179 ! 00180 XHV = XUNDEF 00181 XALBT = XUNDEF 00182 XEMIST = XUNDEF 00183 ! 00184 ALLOCATE(XFAPAR (KLU)) 00185 ALLOCATE(XFAPIR (KLU)) 00186 ALLOCATE(XFAPAR_BS (KLU)) 00187 ALLOCATE(XFAPIR_BS (KLU)) 00188 ALLOCATE(XDFAPARC (KLU)) 00189 ALLOCATE(XDFAPIRC (KLU)) 00190 ALLOCATE(XDLAI_EFFC(KLU)) 00191 ! 00192 XFAPAR = XUNDEF 00193 XFAPIR = XUNDEF 00194 XFAPAR_BS = XUNDEF 00195 XFAPIR_BS = XUNDEF 00196 XDFAPARC = XUNDEF 00197 XDFAPIRC = XUNDEF 00198 XDLAI_EFFC = XUNDEF 00199 ! 00200 !* surface energy budget 00201 ! 00202 !IF (LSURF_BUDGET) THEN 00203 ! 00204 ALLOCATE(XSWD (KLU)) 00205 ALLOCATE(XSWU (KLU)) 00206 ALLOCATE(XSWBD (KLU,KSW)) 00207 ALLOCATE(XSWBU (KLU,KSW)) 00208 ALLOCATE(XLWD (KLU)) 00209 ALLOCATE(XLWU (KLU)) 00210 ALLOCATE(XFMU (KLU)) 00211 ALLOCATE(XFMV (KLU)) 00212 ! 00213 XSWD = XUNDEF 00214 XSWU = XUNDEF 00215 XSWBD = XUNDEF 00216 XSWBU = XUNDEF 00217 XLWD = XUNDEF 00218 XLWU = XUNDEF 00219 XFMU = XUNDEF 00220 XFMV = XUNDEF 00221 ! 00222 !END IF 00223 ! 00224 !* surface temperature and parameters at 2m 00225 ! 00226 ALLOCATE(XTS (KLU)) 00227 XTS = XUNDEF 00228 ALLOCATE(XTSRAD (KLU)) 00229 XTSRAD = XUNDEF 00230 ! 00231 !* miscellaneous surface fields 00232 ! 00233 IF (LSURF_MISC_BUDGET) THEN 00234 ALLOCATE(XSWI (KLU,NGROUND_LAYER)) 00235 ALLOCATE(XTSWI (KLU,NGROUND_LAYER)) 00236 ALLOCATE(XTWSNOW (KLU)) 00237 ALLOCATE(XTDSNOW (KLU)) 00238 XSWI = XUNDEF 00239 XTSWI = XUNDEF 00240 XTWSNOW = XUNDEF 00241 XTDSNOW = XUNDEF 00242 ELSE 00243 ALLOCATE(XSWI (0,0)) 00244 ALLOCATE(XTSWI (0,0)) 00245 ALLOCATE(XTWSNOW (0)) 00246 ALLOCATE(XTDSNOW (0)) 00247 ENDIF 00248 ! 00249 ALLOCATE(XALBT (KLU)) 00250 ALLOCATE(XGPP (KLU)) 00251 ALLOCATE(XRESP_AUTO (KLU)) 00252 ALLOCATE(XRESP_ECO (KLU)) 00253 ! 00254 XALBT = XUNDEF 00255 XGPP = XUNDEF 00256 XRESP_AUTO = XUNDEF 00257 XRESP_ECO = XUNDEF 00258 ! 00259 !END IF 00260 ! 00261 !* transfer coefficients 00262 ! 00263 !IF (LCOEF) THEN 00264 ! 00265 ALLOCATE(XCE (KLU)) 00266 ALLOCATE(XZ0_WITH_SNOW (KLU)) 00267 ALLOCATE(XZ0H_WITH_SNOW (KLU)) 00268 ALLOCATE(XZ0EFF (KLU)) 00269 ! 00270 XCE = XUNDEF 00271 XZ0_WITH_SNOW = XUNDEF 00272 XZ0H_WITH_SNOW = XUNDEF 00273 XZ0EFF = XUNDEF 00274 !END IF 00275 ! 00276 ! 00277 !* surface humidity 00278 ! 00279 !IF (LSURF_VARS) THEN 00280 ALLOCATE(XQS (KLU)) 00281 ! 00282 XQS = XUNDEF 00283 !END IF 00284 ! 00285 !* Irrigation threshold 00286 ! 00287 !IF (LAGRIP) THEN 00288 ALLOCATE(XSEUIL(KLU)) 00289 ! 00290 XSEUIL = XUNDEF 00291 !END IF 00292 ! 00293 IF (LHOOK) CALL DR_HOOK('DIAG_TEB_GARDEN_INIT_N',1,ZHOOK_HANDLE) 00294 ! 00295 !------------------------------------------------------------------------------- 00296 ! 00297 END SUBROUTINE DIAG_TEB_GARDEN_INIT_n