|
SURFEX v7.3
General documentation of Surfex
|
00001 ! ############################################################# 00002 SUBROUTINE ALLOC_DIAG_SURF_ATM_n(HPROGRAM,KSW) 00003 ! ############################################################# 00004 ! 00005 !! AUTHOR 00006 !! ------ 00007 !! V. Masson *Meteo France* 00008 !! 00009 !! MODIFICATIONS 00010 !! ------------- 00011 !! Original 01/2004 00012 !! Modified 01/2006 : sea flux parameterization. 00013 !! 08/2009 : TIME_BUDGETC for all Tile 00014 ! B. decharme 09/2012 : XQS_TILE not initialize 00015 !------------------------------------------------------------------------------- 00016 ! 00017 !* 0. DECLARATIONS 00018 ! ------------ 00019 ! 00020 USE MODD_SURF_ATM_n, ONLY : NSIZE_FULL, TTIME 00021 USE MODD_DATA_COVER_PAR, ONLY : NTILESFC 00022 USE MODD_SURF_PAR, ONLY : XUNDEF 00023 USE MODD_DIAG_SURF_ATM_n,ONLY : XRN_TILE, XH_TILE, XLE_TILE, XGFLUX_TILE, & 00024 XLEI_TILE, XRI_TILE, XCD_TILE, XCH_TILE, XCE_TILE,& 00025 XT2M_TILE, XTS_TILE, XQ2M_TILE, XHU2M_TILE, & 00026 XZON10M_TILE, XMER10M_TILE, XQS_TILE, & 00027 XZ0_TILE, XZ0H_TILE, XT2M_MIN_TILE, XT2M_MAX_TILE,& 00028 XSWD_TILE, XSWU_TILE, XSWBD_TILE, XSWBU_TILE, & 00029 XLWD_TILE,XLWU_TILE, XFMU_TILE, XFMV_TILE, & 00030 XAVG_RN, XAVG_H, XAVG_LE, XAVG_LEI,XAVG_GFLUX, & 00031 XAVG_LEIC, XAVG_RI, XAVG_CD, XAVG_CH, XAVG_CE, & 00032 XAVG_T2M, XAVG_TS, XAVG_Q2M, XAVG_HU2M, & 00033 XAVG_ZON10M, XAVG_MER10M, XAVG_SFCO2, & 00034 XAVG_T2M_MIN_ZS,XAVG_Q2M_MIN_ZS,XAVG_HU2M_MIN_ZS, & 00035 XPS,XRHOA, XDIAG_TRAD, XDIAG_EMIS, XAVG_QS, & 00036 XAVG_Z0, XAVG_Z0H, XDIAG_UREF, XDIAG_ZREF, & 00037 XAVG_SWD, XAVG_SWU, XAVG_LWD, XAVG_LWU, & 00038 XAVG_SWBD, XAVG_SWBU, XAVG_FMU, XAVG_FMV, & 00039 XSSO_FMU, XSSO_FMV, & 00040 TIME_BUDGETC, LSURF_BUDGETC, LRESET_BUDGETC, & 00041 LREAD_BUDGETC, XAVG_RNC, XAVG_HC, XAVG_LEC, & 00042 XAVG_GFLUXC, XAVG_SWDC, XAVG_SWUC, XAVG_LWDC, & 00043 XAVG_LWUC, XAVG_FMUC, XAVG_FMVC, XRNC_TILE, & 00044 XHC_TILE, XLEC_TILE, XGFLUXC_TILE, XSWDC_TILE, & 00045 XSWUC_TILE, XLWDC_TILE, XLWUC_TILE, XFMUC_TILE, & 00046 XFMVC_TILE, XAVG_T2M_MIN, XAVG_T2M_MAX, & 00047 XLEIC_TILE, XHU2M_MIN_TILE, XAVG_HU2M_MIN, & 00048 XHU2M_MAX_TILE, XAVG_HU2M_MAX, XWIND10M_TILE, & 00049 XAVG_WIND10M, XWIND10M_MAX_TILE, XAVG_WIND10M_MAX 00050 00051 ! 00052 USE MODI_READ_SURF 00053 ! 00054 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00055 USE PARKIND1 ,ONLY : JPRB 00056 ! 00057 IMPLICIT NONE 00058 ! 00059 !* 0.1 Declarations of arguments 00060 ! ------------------------- 00061 CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling surf. schemes 00062 INTEGER, INTENT(IN) :: KSW ! number of short-wave spectral bands 00063 ! 00064 !* 0.2 Declarations of local variables 00065 ! ------------------------------- 00066 ! 00067 INTEGER :: IRESP ! IRESP : return-code if a problem appears 00068 CHARACTER(LEN=12) :: YREC ! Name of the article to be read 00069 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00070 ! 00071 !------------------------------------------------------------------------------- 00072 ! 00073 ! 00074 ! Initialization: Outputs to atmosphere over each tile: 00075 ! 00076 IF (LHOOK) CALL DR_HOOK('ALLOC_DIAG_SURF_ATM_N',0,ZHOOK_HANDLE) 00077 ALLOCATE(XRI_TILE (NSIZE_FULL,NTILESFC)) 00078 ALLOCATE(XCD_TILE (NSIZE_FULL,NTILESFC)) 00079 ALLOCATE(XCH_TILE (NSIZE_FULL,NTILESFC)) 00080 ALLOCATE(XCE_TILE (NSIZE_FULL,NTILESFC)) 00081 ALLOCATE(XRN_TILE (NSIZE_FULL,NTILESFC)) 00082 ALLOCATE(XH_TILE (NSIZE_FULL,NTILESFC)) 00083 ALLOCATE(XLE_TILE (NSIZE_FULL,NTILESFC)) 00084 ALLOCATE(XLEI_TILE (NSIZE_FULL,NTILESFC)) 00085 ALLOCATE(XGFLUX_TILE (NSIZE_FULL,NTILESFC)) 00086 ALLOCATE(XT2M_TILE (NSIZE_FULL,NTILESFC)) 00087 ALLOCATE(XTS_TILE (NSIZE_FULL,NTILESFC)) 00088 ALLOCATE(XT2M_MIN_TILE(NSIZE_FULL,NTILESFC)) 00089 ALLOCATE(XT2M_MAX_TILE(NSIZE_FULL,NTILESFC)) 00090 ALLOCATE(XQ2M_TILE (NSIZE_FULL,NTILESFC)) 00091 ALLOCATE(XHU2M_TILE (NSIZE_FULL,NTILESFC)) 00092 ALLOCATE(XHU2M_MIN_TILE(NSIZE_FULL,NTILESFC)) 00093 ALLOCATE(XHU2M_MAX_TILE(NSIZE_FULL,NTILESFC)) 00094 ALLOCATE(XZON10M_TILE (NSIZE_FULL,NTILESFC)) 00095 ALLOCATE(XMER10M_TILE (NSIZE_FULL,NTILESFC)) 00096 ALLOCATE(XQS_TILE (NSIZE_FULL,NTILESFC)) 00097 ALLOCATE(XZ0_TILE (NSIZE_FULL,NTILESFC)) 00098 ALLOCATE(XZ0H_TILE (NSIZE_FULL,NTILESFC)) 00099 ALLOCATE(XSWD_TILE (NSIZE_FULL,NTILESFC)) 00100 ALLOCATE(XSWU_TILE (NSIZE_FULL,NTILESFC)) 00101 ALLOCATE(XLWD_TILE (NSIZE_FULL,NTILESFC)) 00102 ALLOCATE(XLWU_TILE (NSIZE_FULL,NTILESFC)) 00103 ALLOCATE(XSWBD_TILE (NSIZE_FULL,NTILESFC,KSW)) 00104 ALLOCATE(XSWBU_TILE (NSIZE_FULL,NTILESFC,KSW)) 00105 ALLOCATE(XFMU_TILE (NSIZE_FULL,NTILESFC)) 00106 ALLOCATE(XFMV_TILE (NSIZE_FULL,NTILESFC)) 00107 ALLOCATE(XWIND10M_TILE(NSIZE_FULL,NTILESFC)) 00108 ALLOCATE(XWIND10M_MAX_TILE(NSIZE_FULL,NTILESFC)) 00109 ! 00110 XRI_TILE = XUNDEF 00111 XCD_TILE = XUNDEF 00112 XCH_TILE = XUNDEF 00113 XCE_TILE = XUNDEF 00114 XRN_TILE = XUNDEF 00115 XH_TILE = XUNDEF 00116 XLE_TILE = XUNDEF 00117 XLEI_TILE = XUNDEF 00118 XGFLUX_TILE = XUNDEF 00119 XT2M_TILE = XUNDEF 00120 XTS_TILE = XUNDEF 00121 XT2M_MIN_TILE = XUNDEF 00122 XT2M_MAX_TILE = XUNDEF 00123 XQ2M_TILE = XUNDEF 00124 XHU2M_TILE = XUNDEF 00125 XHU2M_MIN_TILE= XUNDEF 00126 XHU2M_MAX_TILE= XUNDEF 00127 XZON10M_TILE = XUNDEF 00128 XMER10M_TILE = XUNDEF 00129 XQS_TILE = XUNDEF 00130 XZ0_TILE = XUNDEF 00131 XZ0H_TILE = XUNDEF 00132 XSWD_TILE = XUNDEF 00133 XSWU_TILE = XUNDEF 00134 XLWD_TILE = XUNDEF 00135 XLWU_TILE = XUNDEF 00136 XSWBD_TILE = XUNDEF 00137 XSWBU_TILE = XUNDEF 00138 XFMU_TILE = XUNDEF 00139 XFMV_TILE = XUNDEF 00140 XWIND10M_TILE = XUNDEF 00141 XWIND10M_MAX_TILE = XUNDEF 00142 ! 00143 ! Initialization: aggregated fields 00144 ! 00145 ALLOCATE(XAVG_RI (NSIZE_FULL)) 00146 ALLOCATE(XAVG_CD (NSIZE_FULL)) 00147 ALLOCATE(XAVG_CH (NSIZE_FULL)) 00148 ALLOCATE(XAVG_CE (NSIZE_FULL)) 00149 ALLOCATE(XAVG_RN (NSIZE_FULL)) 00150 ALLOCATE(XAVG_H (NSIZE_FULL)) 00151 ALLOCATE(XAVG_LE (NSIZE_FULL)) 00152 ALLOCATE(XAVG_LEI (NSIZE_FULL)) 00153 ALLOCATE(XAVG_GFLUX (NSIZE_FULL)) 00154 ALLOCATE(XAVG_T2M (NSIZE_FULL)) 00155 ALLOCATE(XAVG_TS (NSIZE_FULL)) 00156 ALLOCATE(XAVG_T2M_MIN(NSIZE_FULL)) 00157 ALLOCATE(XAVG_T2M_MAX(NSIZE_FULL)) 00158 ALLOCATE(XAVG_Q2M (NSIZE_FULL)) 00159 ALLOCATE(XAVG_HU2M (NSIZE_FULL)) 00160 ALLOCATE(XAVG_HU2M_MIN(NSIZE_FULL)) 00161 ALLOCATE(XAVG_HU2M_MAX(NSIZE_FULL)) 00162 ALLOCATE(XAVG_ZON10M (NSIZE_FULL)) 00163 ALLOCATE(XAVG_MER10M (NSIZE_FULL)) 00164 ALLOCATE(XAVG_SFCO2 (NSIZE_FULL)) 00165 ALLOCATE(XAVG_T2M_MIN_ZS (NSIZE_FULL)) 00166 ALLOCATE(XAVG_Q2M_MIN_ZS (NSIZE_FULL)) 00167 ALLOCATE(XAVG_HU2M_MIN_ZS (NSIZE_FULL)) 00168 ALLOCATE(XPS (NSIZE_FULL)) 00169 ALLOCATE(XRHOA (NSIZE_FULL)) 00170 ALLOCATE(XAVG_QS (NSIZE_FULL)) 00171 ALLOCATE(XAVG_Z0 (NSIZE_FULL)) 00172 ALLOCATE(XAVG_Z0H (NSIZE_FULL)) 00173 ALLOCATE(XAVG_SWD (NSIZE_FULL)) 00174 ALLOCATE(XAVG_SWU (NSIZE_FULL)) 00175 ALLOCATE(XAVG_LWD (NSIZE_FULL)) 00176 ALLOCATE(XAVG_LWU (NSIZE_FULL)) 00177 ALLOCATE(XAVG_SWBD (NSIZE_FULL,KSW)) 00178 ALLOCATE(XAVG_SWBU (NSIZE_FULL,KSW)) 00179 ALLOCATE(XAVG_FMU (NSIZE_FULL)) 00180 ALLOCATE(XAVG_FMV (NSIZE_FULL)) 00181 ALLOCATE(XSSO_FMU (NSIZE_FULL)) 00182 ALLOCATE(XSSO_FMV (NSIZE_FULL)) 00183 ALLOCATE(XAVG_WIND10M(NSIZE_FULL)) 00184 ALLOCATE(XAVG_WIND10M_MAX(NSIZE_FULL)) 00185 ! 00186 ALLOCATE(XDIAG_UREF (NSIZE_FULL)) 00187 ALLOCATE(XDIAG_ZREF (NSIZE_FULL)) 00188 ALLOCATE(XDIAG_TRAD (NSIZE_FULL)) 00189 ALLOCATE(XDIAG_EMIS (NSIZE_FULL)) 00190 ! 00191 XAVG_RI = XUNDEF 00192 XAVG_CD = XUNDEF 00193 XAVG_CH = XUNDEF 00194 XAVG_CE = XUNDEF 00195 XAVG_RN = XUNDEF 00196 XAVG_H = XUNDEF 00197 XAVG_LE = XUNDEF 00198 XAVG_LEI = XUNDEF 00199 XAVG_GFLUX = XUNDEF 00200 XAVG_T2M = XUNDEF 00201 XAVG_TS = XUNDEF 00202 XAVG_T2M_MIN = XUNDEF 00203 XAVG_T2M_MAX = XUNDEF 00204 XAVG_Q2M = XUNDEF 00205 XAVG_HU2M = XUNDEF 00206 XAVG_HU2M_MIN= XUNDEF 00207 XAVG_HU2M_MAX= XUNDEF 00208 XAVG_ZON10M = XUNDEF 00209 XAVG_MER10M = XUNDEF 00210 XAVG_SFCO2 = XUNDEF 00211 XAVG_T2M_MIN_ZS = XUNDEF 00212 XAVG_Q2M_MIN_ZS = XUNDEF 00213 XAVG_HU2M_MIN_ZS = XUNDEF 00214 XPS = XUNDEF 00215 XRHOA = XUNDEF 00216 XAVG_QS = XUNDEF 00217 XAVG_Z0 = XUNDEF 00218 XAVG_Z0H = XUNDEF 00219 XAVG_SWD = XUNDEF 00220 XAVG_SWU = XUNDEF 00221 XAVG_LWD = XUNDEF 00222 XAVG_LWU = XUNDEF 00223 XAVG_SWBD = XUNDEF 00224 XAVG_SWBU = XUNDEF 00225 XAVG_FMU = XUNDEF 00226 XAVG_FMV = XUNDEF 00227 XSSO_FMU = XUNDEF 00228 XSSO_FMV = XUNDEF 00229 XAVG_WIND10M = XUNDEF 00230 XAVG_WIND10M_MAX = XUNDEF 00231 ! 00232 XDIAG_UREF = XUNDEF 00233 XDIAG_ZREF = XUNDEF 00234 XDIAG_TRAD = XUNDEF 00235 XDIAG_EMIS = XUNDEF 00236 ! 00237 IF (LSURF_BUDGETC) THEN 00238 ! 00239 ALLOCATE(XRNC_TILE (NSIZE_FULL,NTILESFC)) 00240 ALLOCATE(XHC_TILE (NSIZE_FULL,NTILESFC)) 00241 ALLOCATE(XLEC_TILE (NSIZE_FULL,NTILESFC)) 00242 ALLOCATE(XLEIC_TILE (NSIZE_FULL,NTILESFC)) 00243 ALLOCATE(XGFLUXC_TILE (NSIZE_FULL,NTILESFC)) 00244 ALLOCATE(XSWDC_TILE (NSIZE_FULL,NTILESFC)) 00245 ALLOCATE(XSWUC_TILE (NSIZE_FULL,NTILESFC)) 00246 ALLOCATE(XLWDC_TILE (NSIZE_FULL,NTILESFC)) 00247 ALLOCATE(XLWUC_TILE (NSIZE_FULL,NTILESFC)) 00248 ALLOCATE(XFMUC_TILE (NSIZE_FULL,NTILESFC)) 00249 ALLOCATE(XFMVC_TILE (NSIZE_FULL,NTILESFC)) 00250 ! 00251 XRNC_TILE = XUNDEF 00252 XHC_TILE = XUNDEF 00253 XLEC_TILE = XUNDEF 00254 XLEIC_TILE = XUNDEF 00255 XGFLUXC_TILE = XUNDEF 00256 XSWDC_TILE = XUNDEF 00257 XSWUC_TILE = XUNDEF 00258 XLWDC_TILE = XUNDEF 00259 XLWUC_TILE = XUNDEF 00260 XFMUC_TILE = XUNDEF 00261 XFMVC_TILE = XUNDEF 00262 ! 00263 ALLOCATE(XAVG_RNC (NSIZE_FULL)) 00264 ALLOCATE(XAVG_HC (NSIZE_FULL)) 00265 ALLOCATE(XAVG_LEC (NSIZE_FULL)) 00266 ALLOCATE(XAVG_LEIC (NSIZE_FULL)) 00267 ALLOCATE(XAVG_GFLUXC (NSIZE_FULL)) 00268 ALLOCATE(XAVG_SWDC (NSIZE_FULL)) 00269 ALLOCATE(XAVG_SWUC (NSIZE_FULL)) 00270 ALLOCATE(XAVG_LWDC (NSIZE_FULL)) 00271 ALLOCATE(XAVG_LWUC (NSIZE_FULL)) 00272 ALLOCATE(XAVG_FMUC (NSIZE_FULL)) 00273 ALLOCATE(XAVG_FMVC (NSIZE_FULL)) 00274 ! 00275 YREC='BUDC' 00276 CALL READ_SURF(HPROGRAM,YREC,LREAD_BUDGETC,IRESP) 00277 ! 00278 IF (.NOT. LREAD_BUDGETC) THEN 00279 TIME_BUDGETC = TTIME 00280 XAVG_RNC = 0.0 00281 XAVG_HC = 0.0 00282 XAVG_LEC = 0.0 00283 XAVG_LEIC = 0.0 00284 XAVG_GFLUXC = 0.0 00285 XAVG_SWDC = 0.0 00286 XAVG_SWUC = 0.0 00287 XAVG_LWDC = 0.0 00288 XAVG_LWUC = 0.0 00289 XAVG_FMUC = 0.0 00290 XAVG_FMVC = 0.0 00291 ELSEIF (LREAD_BUDGETC.AND.LRESET_BUDGETC) THEN 00292 TIME_BUDGETC = TTIME 00293 XAVG_RNC = 0.0 00294 XAVG_HC = 0.0 00295 XAVG_LEC = 0.0 00296 XAVG_LEIC = 0.0 00297 XAVG_GFLUXC = 0.0 00298 XAVG_SWDC = 0.0 00299 XAVG_SWUC = 0.0 00300 XAVG_LWDC = 0.0 00301 XAVG_LWUC = 0.0 00302 XAVG_FMUC = 0.0 00303 XAVG_FMVC = 0.0 00304 ELSE 00305 YREC='TIME_BUDC' 00306 CALL READ_SURF(HPROGRAM,YREC,TIME_BUDGETC,IRESP) 00307 YREC='RNC' 00308 CALL READ_SURF(HPROGRAM,YREC,XAVG_RNC,IRESP) 00309 YREC='HC' 00310 CALL READ_SURF(HPROGRAM,YREC,XAVG_HC ,IRESP) 00311 YREC='LEC' 00312 CALL READ_SURF(HPROGRAM,YREC,XAVG_LEC,IRESP) 00313 YREC='LEIC' 00314 CALL READ_SURF(HPROGRAM,YREC,XAVG_LEIC,IRESP) 00315 YREC='GFLUXC' 00316 CALL READ_SURF(HPROGRAM,YREC,XAVG_GFLUXC ,IRESP) 00317 YREC='SWDC' 00318 CALL READ_SURF(HPROGRAM,YREC,XAVG_SWDC,IRESP) 00319 YREC='SWUC' 00320 CALL READ_SURF(HPROGRAM,YREC,XAVG_SWUC,IRESP) 00321 YREC='LWDC' 00322 CALL READ_SURF(HPROGRAM,YREC,XAVG_LWDC,IRESP) 00323 YREC='LWUC' 00324 CALL READ_SURF(HPROGRAM,YREC,XAVG_LWUC,IRESP) 00325 YREC='FMUC' 00326 CALL READ_SURF(HPROGRAM,YREC,XAVG_FMUC,IRESP) 00327 YREC='FMVC' 00328 CALL READ_SURF(HPROGRAM,YREC,XAVG_FMVC,IRESP) 00329 ENDIF 00330 ! 00331 ELSE 00332 ! 00333 ALLOCATE(XRNC_TILE (0,0)) 00334 ALLOCATE(XHC_TILE (0,0)) 00335 ALLOCATE(XLEC_TILE (0,0)) 00336 ALLOCATE(XLEIC_TILE (0,0)) 00337 ALLOCATE(XGFLUXC_TILE (0,0)) 00338 ALLOCATE(XSWDC_TILE (0,0)) 00339 ALLOCATE(XSWUC_TILE (0,0)) 00340 ALLOCATE(XLWDC_TILE (0,0)) 00341 ALLOCATE(XLWUC_TILE (0,0)) 00342 ALLOCATE(XFMUC_TILE (0,0)) 00343 ALLOCATE(XFMVC_TILE (0,0)) 00344 ! 00345 ALLOCATE(XAVG_RNC (0)) 00346 ALLOCATE(XAVG_HC (0)) 00347 ALLOCATE(XAVG_LEC (0)) 00348 ALLOCATE(XAVG_LEIC (0)) 00349 ALLOCATE(XAVG_GFLUXC (0)) 00350 ALLOCATE(XAVG_SWDC (0)) 00351 ALLOCATE(XAVG_SWUC (0)) 00352 ALLOCATE(XAVG_LWDC (0)) 00353 ALLOCATE(XAVG_LWUC (0)) 00354 ALLOCATE(XAVG_FMUC (0)) 00355 ALLOCATE(XAVG_FMVC (0)) 00356 ! 00357 ENDIF 00358 IF (LHOOK) CALL DR_HOOK('ALLOC_DIAG_SURF_ATM_N',1,ZHOOK_HANDLE) 00359 ! 00360 !------------------------------------------------------------------------------- 00361 ! 00362 END SUBROUTINE ALLOC_DIAG_SURF_ATM_n
1.8.0