SURFEX v7.3
General documentation of Surfex
|
00001 ! ############################################################# 00002 SUBROUTINE INIT_TEB_n (HPROGRAM,HINIT, & 00003 KI,KSV,KSW, & 00004 HSV,PCO2,PRHOA, & 00005 PZENITH,PAZIM,PSW_BANDS,PDIR_ALB,PSCA_ALB, & 00006 PEMIS,PTSRAD, & 00007 KYEAR, KMONTH,KDAY, PTIME, & 00008 HATMFILE,HATMFILETYPE, & 00009 HTEST ) 00010 ! ############################################################# 00011 ! 00012 !!**** *INIT_TEB_n* - routine to initialize TEB 00013 !! 00014 !! PURPOSE 00015 !! ------- 00016 !! 00017 !!** METHOD 00018 !! ------ 00019 !! 00020 !! EXTERNAL 00021 !! -------- 00022 !! 00023 !! 00024 !! IMPLICIT ARGUMENTS 00025 !! ------------------ 00026 !! 00027 !! REFERENCE 00028 !! --------- 00029 !! 00030 !! 00031 !! AUTHOR 00032 !! ------ 00033 !! V. Masson *Meteo France* 00034 !! 00035 !! MODIFICATIONS 00036 !! ------------- 00037 !! Original 01/2003 00038 !! G. Pigeon 09/2012: add ROUGH_WALL/ROUGH_ROOF/CH_BEM for conv. coef. 00039 !------------------------------------------------------------------------------- 00040 ! 00041 !* 0. DECLARATIONS 00042 ! ------------ 00043 ! 00044 USE MODD_IO_SURF_ASC,ONLY: CMASK 00045 USE MODD_SNOW_PAR, ONLY : XEMISSN 00046 ! 00047 USE MODD_READ_NAMELIST, ONLY : LNAM_READ 00048 00049 USE MODD_TEB_n, ONLY: LGARDEN, LGREENROOF, & 00050 XTSTEP, XOUT_TSTEP, TTIME, XCOVER, & 00051 XH_TRAFFIC, XLE_TRAFFIC, XH_INDUSTRY, XLE_INDUSTRY, & 00052 XZ0_TOWN, XBLD, XGARDEN, XROAD_DIR, XGREENROOF, & 00053 XROAD, XBLD_HEIGHT, XWALL_O_HOR, XCAN_HW_RATIO, & 00054 XROAD_O_GRND, XGARDEN_O_GRND, XWALL_O_GRND, XWALL_O_BLD, & 00055 XALB_ROOF, XEMIS_ROOF, XHC_ROOF,XTC_ROOF, XD_ROOF, & 00056 XALB_ROAD, XEMIS_ROAD, XHC_ROAD,XTC_ROAD, XD_ROAD, & 00057 XALB_WALL, XEMIS_WALL, XHC_WALL,XTC_WALL, XD_WALL, & 00058 XSVF_ROAD, XSVF_GARDEN, XSVF_WALL, & 00059 TSNOW_ROOF, TSNOW_ROAD, & 00060 NROOF_LAYER, NROAD_LAYER, NWALL_LAYER, & 00061 XT_ROOF, XT_ROAD, XT_WALL_A, XT_WALL_B, CZ0H, & 00062 CROAD_DIR, CWALL_OPT, & 00063 XT_CANYON, XQ_CANYON, & 00064 XAC_ROOF, XAC_ROAD, XAC_WALL, XAC_TOP, & 00065 XAC_ROOF_WAT, XAC_ROAD_WAT, & 00066 XQSAT_ROOF, XQSAT_ROAD, XDELT_ROOF, XDELT_ROAD, & 00067 NTEB_PATCH, XTEB_PATCH, CBEM, CCH_BEM, & 00068 XROUGH_ROOF, XROUGH_WALL 00069 00070 USE MODD_BEM_n, ONLY: NFLOOR_LAYER, XHC_FLOOR, XTC_FLOOR, XD_FLOOR, & 00071 XTCOOL_TARGET, XTHEAT_TARGET, XF_WASTE_CAN, XEFF_HEAT, & 00072 XQIN, XQIN_FRAD, XSHGC, XSHGC_SH, XU_WIN, XGR, & 00073 XFLOOR_HEIGHT, XINF, XQIN_FLAT, XHR_TARGET, XV_VENT, & 00074 XCAP_SYS_HEAT, XAUX_MAX, XCAP_SYS_RAT, XT_ADP, & 00075 XM_SYS_RAT, XCOP_RAT, XT_SIZE_MAX, XT_SIZE_MIN, & 00076 CCOOL_COIL, CHEAT_COIL, XF_WATER_COND, LSHAD_DAY, & 00077 LNATVENT_NIGHT, LSHADE, XSHADE, CNATVENT, XNATVENT, & 00078 LAUTOSIZE, XT_WIN1, XALB_WIN, XABS_WIN, XUGG_WIN, & 00079 XN_FLOOR, XGLAZ_O_BLD, XMASS_O_BLD, XFLOOR_HW_RATIO, & 00080 XF_FLOOR_MASS, XF_FLOOR_WALL, XF_FLOOR_WIN, & 00081 XF_FLOOR_ROOF, XF_WALL_FLOOR, XF_WALL_MASS, & 00082 XF_WALL_WIN, XF_WIN_FLOOR, XF_WIN_MASS, XF_WIN_WALL, & 00083 XF_MASS_FLOOR, XF_MASS_WALL, XF_MASS_WIN, XTRAN_WIN 00084 00085 USE MODD_TEB_VEG_n, ONLY: CC1DRY, CSOILFRZ, CDIFSFCOND, CSNOWRES, & 00086 CCPSURF, XCGMAX, CKSAT, CTOPREG, & 00087 CRAIN, CHORT, & 00088 LCANOPY_DRAG, LVEGUPD 00089 00090 USE MODD_CH_TEB_n, ONLY: XDEP, CCH_DRY_DEP, CSV, CCH_NAMES, & 00091 NBEQ, NSV_CHSBEG, NSV_CHSEND, & 00092 NAEREQ, NSV_AERBEG, NSV_AEREND, CAER_NAMES, & 00093 NSV_DSTBEG, NSV_DSTEND, NDSTEQ, CDSTNAMES, & 00094 NSV_SLTBEG, NSV_SLTEND, NSLTEQ, CSLTNAMES 00095 00096 00097 USE MODD_CHS_AEROSOL, ONLY: LVARSIGI, LVARSIGJ 00098 USE MODD_DST_SURF, ONLY: LVARSIG_DST, NDSTMDE, NDST_MDEBEG, LRGFIX_DST 00099 USE MODD_SLT_SURF, ONLY: LVARSIG_SLT, NSLTMDE, NSLT_MDEBEG, LRGFIX_SLT 00100 USE MODD_DIAG_TEB_n, ONLY: N2M, LSURF_BUDGET, LRAD_BUDGET, XDIAG_TSTEP, & 00101 LPGD, LPGD_FIX, L2M_MIN_ZS, LCOEF, LSURF_VARS 00102 USE MODD_DIAG_MISC_TEB_n, ONLY: LSURF_MISC_BUDGET, & 00103 LSURF_DIAG_ALBEDO, LSURF_EVAP_BUDGET 00104 USE MODD_DIAG_UTCI_TEB_n, ONLY: LUTCI 00105 USE MODD_SURF_PAR, ONLY: XUNDEF, NUNDEF 00106 ! 00107 USE MODD_TEB_GARDEN_n, ONLY : XLAI_GARDEN => XLAI 00108 USE MODD_TEB_GREENROOF_n, ONLY : XLAI_GREENROOF => XLAI, NLAYER_GR 00109 ! 00110 USE MODI_INIT_IO_SURF_n 00111 USE MODI_DEFAULT_CH_DEP 00112 USE MODI_DEFAULT_TEB 00113 USE MODI_DEFAULT_DIAG_TEB 00114 USE MODI_READ_DEFAULT_TEB_n 00115 USE MODI_READ_TEB_CONF_n 00116 USE MODI_PREP_CTRL_TEB 00117 USE MODI_READ_TEB_n 00118 USE MODI_READ_PGD_TEB_n 00119 USE MODI_CONVERT_TEB 00120 USE MODI_CONVERT_PATCH_TEB 00121 USE MODI_INIT_SNOW_LW 00122 USE MODI_AVERAGED_TSRAD_TEB 00123 USE MODI_AVERAGED_ALBEDO_TEB 00124 USE MODI_DIAG_TEB_INIT_n 00125 USE MODI_DIAG_MISC_TEB_INIT_n 00126 USE MODI_END_IO_SURF_n 00127 USE MODI_GET_LUOUT 00128 USE MODI_READ_SURF 00129 USE MODI_READ_PREP_TEB_SNOW 00130 USE MODI_READ_TEB_DATE 00131 USE MODI_READ_NAM_PREP_TEB_n 00132 USE MODI_INIT_CHEMICAL_n 00133 USE MODI_GARDEN_PROPERTIES 00134 USE MODI_WINDOW_DATA 00135 USE MODI_HVAC_AUTOSIZE 00136 USE MODI_GOTO_TEB 00137 ! 00138 USE MODI_INIT_TEB_GARDEN_n 00139 USE MODI_INIT_TEB_GARDEN_PGD_n 00140 USE MODI_INIT_TEB_VEG_OPTIONS_n 00141 USE MODI_TEB_MORPHO 00142 USE MODI_INIT_BEM_n 00143 USE MODI_INIT_TEB_GREENROOF_n 00144 USE MODI_INIT_TEB_GREENROOF_PGD_n 00145 USE MODI_GREENROOF_PROPERTIES 00146 ! 00147 USE MODI_READ_COVER_GARDEN 00148 USE MODI_WRITE_COVER_TEX_TEB 00149 USE MODI_ABOR1_SFX 00150 USE MODI_READ_TEB_CANOPY_n 00151 USE MODI_SET_SURFEX_FILEIN 00152 ! 00153 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00154 USE PARKIND1 ,ONLY : JPRB 00155 ! 00156 IMPLICIT NONE 00157 ! 00158 !* 0.1 Declarations of arguments 00159 ! ------------------------- 00160 ! 00161 CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling surf. schemes 00162 CHARACTER(LEN=3), INTENT(IN) :: HINIT ! choice of fields to initialize 00163 INTEGER, INTENT(IN) :: KI ! number of points 00164 INTEGER, INTENT(IN) :: KSV ! number of scalars 00165 INTEGER, INTENT(IN) :: KSW ! number of short-wave spectral bands 00166 CHARACTER(LEN=6), DIMENSION(KSV), INTENT(IN) :: HSV ! name of all scalar variables 00167 REAL, DIMENSION(KI), INTENT(IN) :: PCO2 ! CO2 concentration (kg/m3) 00168 REAL, DIMENSION(KI), INTENT(IN) :: PRHOA ! air density 00169 REAL, DIMENSION(KI), INTENT(IN) :: PZENITH ! solar zenithal angle 00170 REAL, DIMENSION(KI), INTENT(IN) :: PAZIM ! solar azimuthal angle (rad from N, clock) 00171 REAL, DIMENSION(KSW), INTENT(IN) :: PSW_BANDS ! middle wavelength of each band 00172 REAL, DIMENSION(KI,KSW),INTENT(OUT) :: PDIR_ALB ! direct albedo for each band 00173 REAL, DIMENSION(KI,KSW),INTENT(OUT) :: PSCA_ALB ! diffuse albedo for each band 00174 REAL, DIMENSION(KI), INTENT(OUT) :: PEMIS ! emissivity 00175 REAL, DIMENSION(KI), INTENT(OUT) :: PTSRAD ! radiative temperature 00176 INTEGER, INTENT(IN) :: KYEAR ! current year (UTC) 00177 INTEGER, INTENT(IN) :: KMONTH ! current month (UTC) 00178 INTEGER, INTENT(IN) :: KDAY ! current day (UTC) 00179 REAL, INTENT(IN) :: PTIME ! current time since 00180 ! midnight (UTC, s) 00181 ! 00182 CHARACTER(LEN=28), INTENT(IN) :: HATMFILE ! atmospheric file name 00183 CHARACTER(LEN=6), INTENT(IN) :: HATMFILETYPE! atmospheric file type 00184 CHARACTER(LEN=2), INTENT(IN) :: HTEST ! must be equal to 'OK' 00185 ! 00186 !* 0.2 Declarations of local variables 00187 ! ------------------------------- 00188 ! 00189 INTEGER :: ILU ! sizes of TEB arrays 00190 INTEGER :: ILUOUT ! unit of output listing file 00191 INTEGER :: IRESP ! return code 00192 ! 00193 INTEGER :: ISWB ! number of shortwave spectral bands 00194 INTEGER :: JSWB ! loop on shortwave spectral bands 00195 ! 00196 REAL :: ZDEF_ROAD_DIR ! default raod direction 00197 REAL, DIMENSION(:), ALLOCATABLE :: ZDIR_ALB ! direct town albedo 00198 REAL, DIMENSION(:), ALLOCATABLE :: ZSCA_ALB ! diffuse town albedo 00199 ! 00200 ! local variables for urban green areas 00201 REAL, DIMENSION(KI,KSW) :: ZDIR_SW ! direct SW for each band 00202 REAL, DIMENSION(KI,KSW) :: ZSCA_SW ! diffuse SW for each band 00203 REAL, DIMENSION(KI) :: ZEMIS_GARDEN ! emissivity 00204 REAL, DIMENSION(KI) :: ZALB_GARDEN ! albedo 00205 REAL, DIMENSION(KI) :: ZTS_GARDEN ! radiative temperature 00206 ! 00207 ! local variables for urban greenroofs 00208 REAL, DIMENSION(KI) :: ZEMIS_GREENROOF ! emissivity 00209 REAL, DIMENSION(KI) :: ZALB_GREENROOF ! albedo 00210 REAL, DIMENSION(KI) :: ZTS_GREENROOF ! radiative temperature 00211 ! 00212 INTEGER :: JPATCH 00213 INTEGER :: IVERSION, IBUGFIX 00214 00215 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00216 !------------------------------------------------------------------------------- 00217 ! 00218 ! Initialisation for IO 00219 ! 00220 IF (LHOOK) CALL DR_HOOK('INIT_TEB_N',0,ZHOOK_HANDLE) 00221 CALL GET_LUOUT(HPROGRAM,ILUOUT) 00222 ! 00223 IF (HTEST/='OK') THEN 00224 CALL ABOR1_SFX('INIT_TEBN: FATAL ERROR DURING ARGUMENT TRANSFER') 00225 END IF 00226 ! 00227 ! Other little things 00228 ! 00229 PDIR_ALB = XUNDEF 00230 PSCA_ALB = XUNDEF 00231 PEMIS = XUNDEF 00232 PTSRAD = XUNDEF 00233 ! 00234 LSURF_DIAG_ALBEDO = .FALSE. 00235 LSURF_EVAP_BUDGET = .FALSE. 00236 ! 00237 IF (LNAM_READ) THEN 00238 ! 00239 !* 0. Defaults 00240 ! -------- 00241 ! 00242 ! 0.1. Hard defaults 00243 ! 00244 CALL DEFAULT_TEB(CZ0H,XTSTEP,XOUT_TSTEP, CCH_BEM) 00245 CALL DEFAULT_CH_DEP(CCH_DRY_DEP) 00246 CALL DEFAULT_DIAG_TEB(N2M,LSURF_BUDGET,L2M_MIN_ZS,LRAD_BUDGET,LCOEF,LSURF_VARS, & 00247 LSURF_MISC_BUDGET,LUTCI,LPGD,LPGD_FIX,XDIAG_TSTEP) 00248 ! 00249 ENDIF 00250 ! 00251 ! 0.2. Defaults from file header 00252 ! 00253 CALL READ_DEFAULT_TEB_n(HPROGRAM) 00254 ! 00255 !* 1. Reading of configuration: 00256 ! ------------------------- 00257 ! 00258 CALL READ_TEB_CONF_n(HPROGRAM) 00259 ! 00260 !* initialization of snow scheme 00261 ! 00262 IF (HINIT=='PRE') THEN 00263 DO JPATCH=1,NTEB_PATCH 00264 CALL GOTO_TEB(JPATCH) 00265 CALL READ_PREP_TEB_SNOW(HPROGRAM,TSNOW_ROOF%SCHEME,TSNOW_ROOF%NLAYER, & 00266 TSNOW_ROAD%SCHEME,TSNOW_ROAD%NLAYER) 00267 END DO 00268 ENDIF 00269 ! 00270 !* 2. Cover fields and grid: 00271 ! --------------------- 00272 !* date 00273 ! 00274 SELECT CASE (HINIT) 00275 CASE ('PGD') 00276 TTIME%TDATE%YEAR = NUNDEF 00277 TTIME%TDATE%MONTH= NUNDEF 00278 TTIME%TDATE%DAY = NUNDEF 00279 TTIME%TIME = XUNDEF 00280 00281 CASE ('PRE') 00282 CALL PREP_CTRL_TEB(N2M,LSURF_BUDGET,L2M_MIN_ZS,LRAD_BUDGET,LCOEF,LSURF_VARS,& 00283 LSURF_EVAP_BUDGET,LSURF_MISC_BUDGET,LUTCI,ILUOUT ) 00284 IF (LNAM_READ) CALL READ_NAM_PREP_TEB_n(HPROGRAM) 00285 CALL READ_TEB_DATE(HPROGRAM,HINIT,ILUOUT,HATMFILE,HATMFILETYPE,KYEAR,KMONTH,KDAY,PTIME,TTIME) 00286 00287 CASE DEFAULT 00288 CALL INIT_IO_SURF_n(HPROGRAM,'TOWN ','TEB ','READ ') 00289 CALL READ_SURF(HPROGRAM,'DTCUR',TTIME,IRESP) 00290 CALL END_IO_SURF_n(HPROGRAM) 00291 END SELECT 00292 ! 00293 !----------------------------------------------------------------------------------------------------- 00294 ! READ PGD FILE 00295 !----------------------------------------------------------------------------------------------------- 00296 ! 00297 ! Initialisation for IO 00298 ! 00299 CALL SET_SURFEX_FILEIN(HPROGRAM,'PGD ') ! change input file name to pgd name 00300 CALL INIT_IO_SURF_n(HPROGRAM,'TOWN ','TEB ','READ ') 00301 ! 00302 CALL READ_SURF(HPROGRAM,'VERSION',IVERSION,IRESP) 00303 CALL READ_SURF(HPROGRAM,'BUG',IBUGFIX,IRESP) 00304 ! 00305 ! Reading of the fields 00306 ! 00307 CALL READ_COVER_GARDEN(HPROGRAM,LGARDEN) 00308 ! 00309 CALL READ_PGD_TEB_n(HPROGRAM) 00310 ! 00311 CALL END_IO_SURF_n(HPROGRAM) 00312 ! 00313 !* Fraction of each patch in the grid mesh 00314 ! 00315 ILU = SIZE(XCOVER,1) 00316 ! 00317 ALLOCATE(XTEB_PATCH(ILU,NTEB_PATCH)) 00318 CALL CONVERT_TEB(XCOVER,XTEB_PATCH) 00319 ! 00320 CALL SET_SURFEX_FILEIN(HPROGRAM,'PREP') ! restore input file name 00321 CALL INIT_IO_SURF_n(HPROGRAM,'TOWN ','TEB ','READ ') 00322 ! 00323 CALL READ_SURF(HPROGRAM,'VERSION',IVERSION,IRESP) 00324 CALL READ_SURF(HPROGRAM,'BUG',IBUGFIX,IRESP) 00325 ! 00326 !* reads what is the option defined for road orientations & walls 00327 ! 00328 IF (HINIT=='ALL') THEN 00329 CROAD_DIR='UNIF' 00330 CWALL_OPT='UNIF' 00331 IF (IVERSION>7 .OR. (IVERSION==7 .AND. IBUGFIX>=3)) THEN 00332 CALL READ_SURF(HPROGRAM,'ROAD_DIR',CROAD_DIR,IRESP) 00333 CALL READ_SURF(HPROGRAM,'WALL_OPT',CWALL_OPT,IRESP) 00334 END IF 00335 END IF 00336 CALL END_IO_SURF_n(HPROGRAM) 00337 !----------------------------------------------------------------------------------- 00338 ! 00339 !* LOOP ON TEB PATCHES 00340 ! ------------------- 00341 ! 00342 DO JPATCH=1,NTEB_PATCH 00343 00344 CALL GOTO_TEB(JPATCH) 00345 !----------------------------------------------------------------------------------- 00346 ! 00347 !* 3. Physiographic data fields from land cover: 00348 ! ----------------------------------------- 00349 ! 00350 ALLOCATE(XZ0_TOWN (ILU)) 00351 ALLOCATE(XALB_ROOF (ILU)) 00352 ALLOCATE(XEMIS_ROOF (ILU)) 00353 ALLOCATE(XALB_ROAD (ILU)) 00354 ALLOCATE(XEMIS_ROAD (ILU)) 00355 ALLOCATE(XALB_WALL (ILU)) 00356 ALLOCATE(XEMIS_WALL (ILU)) 00357 ALLOCATE(XBLD (ILU)) 00358 ALLOCATE(XROAD_DIR (ILU)) 00359 ALLOCATE(XROAD (ILU)) 00360 ALLOCATE(XBLD_HEIGHT (ILU)) 00361 ALLOCATE(XWALL_O_HOR (ILU)) 00362 ALLOCATE(XCAN_HW_RATIO(ILU)) 00363 ALLOCATE(XROAD_O_GRND(ILU)) 00364 ALLOCATE(XGARDEN_O_GRND(ILU)) 00365 ALLOCATE(XWALL_O_GRND(ILU)) 00366 ALLOCATE(XWALL_O_BLD(ILU)) 00367 ALLOCATE(XH_TRAFFIC (ILU)) 00368 ALLOCATE(XLE_TRAFFIC (ILU)) 00369 ALLOCATE(XH_INDUSTRY (ILU)) 00370 ALLOCATE(XLE_INDUSTRY (ILU)) 00371 ALLOCATE(XHC_ROOF (ILU,NROOF_LAYER)) 00372 ALLOCATE(XTC_ROOF (ILU,NROOF_LAYER)) 00373 ALLOCATE(XD_ROOF (ILU,NROOF_LAYER)) 00374 ALLOCATE(XHC_ROAD (ILU,NROAD_LAYER)) 00375 ALLOCATE(XTC_ROAD (ILU,NROAD_LAYER)) 00376 ALLOCATE(XD_ROAD (ILU,NROAD_LAYER)) 00377 ALLOCATE(XHC_WALL (ILU,NWALL_LAYER)) 00378 ALLOCATE(XTC_WALL (ILU,NWALL_LAYER)) 00379 ALLOCATE(XD_WALL (ILU,NWALL_LAYER)) 00380 ALLOCATE(XROUGH_ROOF (ILU)) 00381 ALLOCATE(XROUGH_WALL (ILU)) 00382 ALLOCATE(XGREENROOF (ILU)) 00383 ALLOCATE(XGARDEN (ILU)) 00384 ! 00385 XROAD_DIR(:) = 0. 00386 XROAD (:) = 0. 00387 ! 00388 ZDEF_ROAD_DIR = 0. 00389 IF (CROAD_DIR/='UNIF') THEN 00390 !* road direction if not specified by the user depends on patch number 00391 ! First patch has a Notrh-South road. Other patches have roads spaced by 00392 ! regular angles 00393 ZDEF_ROAD_DIR = 180. * FLOAT(JPATCH-1) / FLOAT(NTEB_PATCH) 00394 END IF 00395 ! 00396 CALL CONVERT_PATCH_TEB(XCOVER, ZDEF_ROAD_DIR, & 00397 PZ0_TOWN=XZ0_TOWN, & 00398 PALB_ROOF=XALB_ROOF, & 00399 PEMIS_ROOF=XEMIS_ROOF,PHC_ROOF=XHC_ROOF,PTC_ROOF=XTC_ROOF, & 00400 PD_ROOF=XD_ROOF, & 00401 PALB_ROAD=XALB_ROAD, & 00402 PEMIS_ROAD=XEMIS_ROAD,PHC_ROAD=XHC_ROAD,PTC_ROAD=XTC_ROAD, & 00403 PD_ROAD=XD_ROAD, & 00404 PALB_WALL=XALB_WALL, & 00405 PEMIS_WALL=XEMIS_WALL,PHC_WALL=XHC_WALL,PTC_WALL=XTC_WALL, & 00406 PD_WALL=XD_WALL, & 00407 PBLD_HEIGHT=XBLD_HEIGHT, & 00408 PWALL_O_HOR=XWALL_O_HOR,PBLD=XBLD, PROAD_DIR=XROAD_DIR, & 00409 PGARDEN=XGARDEN, & 00410 PH_TRAFFIC=XH_TRAFFIC, PLE_TRAFFIC=XLE_TRAFFIC, & 00411 PH_INDUSTRY=XH_INDUSTRY, PLE_INDUSTRY=XLE_INDUSTRY, & 00412 PROUGH_ROOF = XROUGH_ROOF, PROUGH_WALL = XROUGH_WALL, & 00413 PGREENROOF = XGREENROOF ) 00414 ! 00415 IF (.NOT. LGREENROOF .AND. MAXVAL(XGREENROOF)>0. ) THEN !<== A paralleliser pour un stop propre 00416 WRITE(ILUOUT,*) 'You choose NOT to have greenroofs, BUT your greenroof fraction is not zero' 00417 WRITE(ILUOUT,*) 'Please activate the greenroof option (and rerun the SURFEX suite from the PGD step)' 00418 WRITE(ILUOUT,*) 'Or be sure NOT to have any greenroofs in your area' 00419 CALL ABOR1_SFX('INIT_TEBN: GREENROOF OPTION NOT ACTIVATED WHILE GREENROOFS ARE PRESENT') 00420 ENDIF 00421 !------------------------------------------------------------------------------- 00422 ! 00423 !* 5. Sky-view-factors: 00424 ! ---------------- 00425 ! 00426 ALLOCATE(XSVF_ROAD (ILU)) 00427 ALLOCATE(XSVF_GARDEN(ILU)) 00428 ALLOCATE(XSVF_WALL (ILU)) 00429 ! 00430 ALLOCATE(XGR (ILU)) 00431 ALLOCATE(XALB_WIN (ILU)) 00432 ALLOCATE(XF_WASTE_CAN (ILU)) 00433 ! 00434 ! 00435 CALL TEB_MORPHO(HPROGRAM, XBLD, XWALL_O_HOR, XGARDEN, XBLD_HEIGHT, XROAD, XROAD_O_GRND, & 00436 XGARDEN_O_GRND, XWALL_O_GRND, XCAN_HW_RATIO, XSVF_ROAD, XSVF_GARDEN, & 00437 XSVF_WALL, XZ0_TOWN, XWALL_O_BLD, XH_TRAFFIC, XLE_TRAFFIC ) 00438 ! 00439 !------------------------------------------------------------------------------- 00440 ! 00441 !* 6. Building Energy Model 00442 ! --------------------- 00443 ! 00444 CALL INIT_BEM_n(ILUOUT) 00445 ! 00446 !------------------------------------------------------------------------------- 00447 ! 00448 !* 7. Case of urban green areas 00449 ! ------------------------- 00450 ! 00451 IF (LGARDEN) THEN 00452 ! 00453 CALL SET_SURFEX_FILEIN(HPROGRAM,'PGD ') ! change input file name to pgd name 00454 CALL INIT_IO_SURF_n(HPROGRAM,'TOWN ','TEB ','READ ') 00455 IF (JPATCH==1) CALL INIT_TEB_VEG_OPTIONS_n(HPROGRAM) 00456 CALL INIT_TEB_GARDEN_PGD_n(HPROGRAM,HINIT,(JPATCH==1),KI,KSV,HSV,IVERSION,IBUGFIX,PCO2,PRHOA) 00457 ! Case of urban green roofs 00458 IF (LGREENROOF) CALL INIT_TEB_GREENROOF_PGD_n(HPROGRAM,HINIT,(JPATCH==1), & 00459 KI,KSV,HSV,IVERSION,PCO2,PRHOA) 00460 CALL END_IO_SURF_n(HPROGRAM) 00461 ! 00462 ENDIF 00463 !------------------------------------------------------------------------------- 00464 END DO ! end of loop on TEB patches 00465 !------------------------------------------------------------------------------- 00466 ! 00467 !* if only physiographic fields are to be initialized, stop here. 00468 ! 00469 CALL WRITE_COVER_TEX_TEB 00470 ! 00471 IF (HINIT/='ALL') THEN 00472 IF (LHOOK) CALL DR_HOOK('INIT_TEB_N',1,ZHOOK_HANDLE) 00473 RETURN 00474 END IF 00475 ! 00476 !------------------------------------------------------------------------------- 00477 ! 00478 ! Initialisation for IO 00479 ! 00480 CALL SET_SURFEX_FILEIN(HPROGRAM,'PREP') ! restore input file name 00481 CALL INIT_IO_SURF_n(HPROGRAM,'TOWN ','TEB ','READ ') 00482 ! 00483 !* 9. Prognostic fields: 00484 ! ----------------- 00485 ! 00486 ! ------------------------- 00487 ! 00488 00489 ! 00490 !* LOOP ON TEB PATCHES 00491 ! ------------------- 00492 ! 00493 DO JPATCH=1,NTEB_PATCH 00494 CALL GOTO_TEB(JPATCH) 00495 ! 00496 !* TEB fields 00497 CALL READ_TEB_n(HPROGRAM,JPATCH) 00498 ! 00499 ALLOCATE(XAC_ROOF (ILU)) 00500 ALLOCATE(XAC_ROAD (ILU)) 00501 ALLOCATE(XAC_WALL (ILU)) 00502 ALLOCATE(XAC_TOP (ILU)) 00503 ALLOCATE(XAC_ROOF_WAT(ILU)) 00504 ALLOCATE(XAC_ROAD_WAT(ILU)) 00505 ALLOCATE(XQSAT_ROOF (ILU)) 00506 ALLOCATE(XQSAT_ROAD (ILU)) 00507 ALLOCATE(XDELT_ROOF (ILU)) 00508 ALLOCATE(XDELT_ROAD (ILU)) 00509 ! 00510 !* Case of urban green areas 00511 IF (LGARDEN) THEN 00512 ! CALL SET_SURFEX_FILEIN(HPROGRAM,'PREP') ! change input file name to pgd name 00513 ! CALL INIT_IO_SURF_n(HPROGRAM,'TOWN ','TEB ','READ ') 00514 CALL INIT_TEB_GARDEN_n(HPROGRAM,HINIT,KI,KSW,PSW_BANDS) 00515 ! Case of urban green roofs 00516 IF (LGREENROOF) CALL INIT_TEB_GREENROOF_n(HPROGRAM,HINIT,KI,KSV,PSW_BANDS) 00517 ! CALL END_IO_SURF_n(HPROGRAM) 00518 ENDIF 00519 !------------------------------------------------------------------------------- 00520 ! 00521 !* 10. Infra-red Radiative fields: 00522 ! -------------------------- 00523 ! 00524 !* snow long-wave properties (not initialized in read_gr_snow) 00525 ! 00526 CALL INIT_SNOW_LW(XEMISSN,TSNOW_ROOF) 00527 CALL INIT_SNOW_LW(XEMISSN,TSNOW_ROAD) 00528 ! 00529 IF (LGARDEN) THEN 00530 ZDIR_SW=0. ! night as first guess for albedo computation 00531 ZSCA_SW=0. ! 00532 CALL GARDEN_PROPERTIES(ZDIR_SW, ZSCA_SW, PSW_BANDS, KSW, & 00533 ZTS_GARDEN, ZEMIS_GARDEN, ZALB_GARDEN ) 00534 ELSE 00535 ZALB_GARDEN = XUNDEF 00536 ZEMIS_GARDEN= XUNDEF 00537 ZTS_GARDEN = XUNDEF 00538 END IF 00539 ! 00540 IF (LGREENROOF) THEN 00541 ZDIR_SW=0. ! night as first guess for albedo computation 00542 ZSCA_SW=0. ! 00543 CALL GREENROOF_PROPERTIES(ZDIR_SW, ZSCA_SW, PSW_BANDS, KSW, & 00544 ZTS_GREENROOF, ZEMIS_GREENROOF, ZALB_GREENROOF ) 00545 ELSE 00546 ZALB_GREENROOF = XUNDEF 00547 ZEMIS_GREENROOF = XUNDEF 00548 ZTS_GREENROOF = XUNDEF 00549 END IF 00550 ! 00551 !* averaged albedo, emissivity and radiative temperature 00552 ! 00553 CALL AVERAGED_TSRAD_TEB(XEMIS_ROOF,XT_ROOF(:,1), & 00554 XEMIS_ROAD,XT_ROAD(:,1), & 00555 XEMIS_WALL, & 00556 XT_WALL_A(:,1), & 00557 XT_WALL_B(:,1), & 00558 ZEMIS_GARDEN, ZTS_GARDEN, & 00559 ZEMIS_GREENROOF, ZTS_GREENROOF,& 00560 TSNOW_ROOF,TSNOW_ROAD, & 00561 XROAD, XGREENROOF, XGARDEN, & 00562 XBLD,XWALL_O_HOR, & 00563 XSVF_ROAD,XSVF_WALL, & 00564 XSVF_GARDEN, & 00565 PEMIS,PTSRAD, XT_WIN1, & 00566 XGR ) 00567 ! 00568 ! 00569 !* 9. Visible and near-infra-red Radiative fields: 00570 ! ------------------------------------------- 00571 ! 00572 ALLOCATE(ZDIR_ALB(ILU)) 00573 ALLOCATE(ZSCA_ALB(ILU)) 00574 ! 00575 CALL AVERAGED_ALBEDO_TEB(CBEM,CROAD_DIR,CWALL_OPT,PZENITH,PAZIM, & 00576 XBLD, XGARDEN, XROAD_DIR, XROAD, XGREENROOF,& 00577 XWALL_O_HOR, XCAN_HW_RATIO, & 00578 XALB_ROOF, & 00579 XALB_ROAD, XSVF_ROAD, & 00580 XALB_WALL, XSVF_WALL, & 00581 ZALB_GARDEN, XSVF_GARDEN, & 00582 ZALB_GREENROOF, & 00583 TSNOW_ROOF, TSNOW_ROAD, & 00584 XGR, XSHGC, XSHGC_SH, XABS_WIN, XALB_WIN, & 00585 LSHAD_DAY, & 00586 ZDIR_ALB, ZSCA_ALB, XTRAN_WIN ) 00587 00588 ISWB=SIZE(PSW_BANDS) 00589 DO JSWB=1,ISWB 00590 PDIR_ALB(:,JSWB) = ZDIR_ALB(:) 00591 PSCA_ALB(:,JSWB) = ZSCA_ALB(:) 00592 END DO 00593 ! 00594 DEALLOCATE(ZDIR_ALB) 00595 DEALLOCATE(ZSCA_ALB) 00596 !------------------------------------------------------------------------------- 00597 ! 00598 !* 10. Chemistry /dust 00599 ! --------------- 00600 ! 00601 CALL INIT_CHEMICAL_n(ILUOUT, KSV, HSV, NBEQ, CSV, NAEREQ, & 00602 NSV_CHSBEG, NSV_CHSEND, NSV_AERBEG, NSV_AEREND, & 00603 CCH_NAMES, CAER_NAMES, NDSTEQ, NSV_DSTBEG, & 00604 NSV_DSTEND, NSLTEQ, NSV_SLTBEG, NSV_SLTEND, & 00605 HDSTNAMES=CDSTNAMES, HSLTNAMES=CSLTNAMES ) 00606 ! 00607 !* Initialization of dry deposition scheme (chemistry) 00608 ! 00609 IF (NBEQ>0 .AND. CCH_DRY_DEP=='WES89') THEN 00610 ALLOCATE(XDEP(ILU,NBEQ)) 00611 ELSE 00612 ALLOCATE(XDEP(0,0)) 00613 END IF 00614 ! 00615 !------------------------------------------------------------------------------- 00616 END DO ! end of loop on patches 00617 !------------------------------------------------------------------------------- 00618 ! 00619 !* 7. Canopy air fields: 00620 ! ------------------ 00621 ! 00622 CALL READ_TEB_CANOPY_n(HPROGRAM) 00623 ! 00624 !------------------------------------------------------------------------------- 00625 ! 00626 !* 11. Diagnostics: 00627 ! ----------- 00628 ! 00629 CALL DIAG_TEB_INIT_n(HPROGRAM,ILU,ISWB) 00630 DO JPATCH=1,NTEB_PATCH 00631 CALL GOTO_TEB(JPATCH) 00632 CALL DIAG_MISC_TEB_INIT_n(HPROGRAM,ILU,ISWB) 00633 END DO ! end of loop on patches 00634 ! 00635 !------------------------------------------------------------------------------- 00636 ! 00637 ! End of IO 00638 ! 00639 CALL END_IO_SURF_n(HPROGRAM) 00640 IF (LHOOK) CALL DR_HOOK('INIT_TEB_N',1,ZHOOK_HANDLE) 00641 ! 00642 ! 00643 END SUBROUTINE INIT_TEB_n