6 SUBROUTINE init_teb_n (DTCO, UG, U, GCP, CHT, DTT, SB, TG, TOP, TPN, &
7 TIR, NT, TD, BDD, BOP, DTB, NB, GDM, GRM, &
8 HPROGRAM, HINIT, KI, KSV, KSW, HSV, PCO2, &
9 PRHOA, PZENITH, PAZIM, PSW_BANDS, PDIR_ALB, &
10 PSCA_ALB, PEMIS, PTSRAD, PTSURF, KYEAR, KMONTH, &
11 KDAY, PTIME, HATMFILE, HATMFILETYPE, HTEST )
68 USE modd_snow_par
, ONLY : xemissn
79 USE modi_init_io_surf_n
80 USE modi_default_ch_dep
82 USE modi_default_diag_teb
83 USE modi_read_default_teb_n
84 USE modi_read_teb_conf_n
85 USE modi_prep_ctrl_teb
87 USE modi_read_pgd_teb_n
89 USE modi_convert_patch_teb
91 USE modi_averaged_tsrad_teb
92 USE modi_averaged_albedo_teb
93 USE modi_diag_teb_init_n
94 USE modi_diag_misc_teb_init_n
95 USE modi_end_io_surf_n
98 USE modi_read_prep_teb_snow
99 USE modi_read_teb_date
100 USE modi_read_nam_prep_teb_n
101 USE modi_init_chemical_n
102 USE modi_teb_veg_properties
103 USE modi_hvac_autosize
105 USE modi_init_teb_garden_n
106 USE modi_init_teb_garden_pgd_n
107 USE modi_init_teb_veg_options_n
110 USE modi_init_teb_greenroof_n
111 USE modi_init_teb_greenroof_pgd_n
112 USE modi_read_pgd_teb_irrig_n
114 USE modi_read_cover_garden
117 USE modi_set_surfex_filein
133 TYPE(
ch_teb_t),
INTENT(INOUT) :: CHT
136 TYPE(
grid_t),
INTENT(INOUT) :: TG
152 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
153 CHARACTER(LEN=3),
INTENT(IN) :: HINIT
154 INTEGER,
INTENT(IN) :: KI
155 INTEGER,
INTENT(IN) :: KSV
156 INTEGER,
INTENT(IN) :: KSW
157 CHARACTER(LEN=6),
DIMENSION(KSV),
INTENT(IN) :: HSV
158 REAL,
DIMENSION(KI),
INTENT(IN) :: PCO2
159 REAL,
DIMENSION(KI),
INTENT(IN) :: PRHOA
160 REAL,
DIMENSION(KI),
INTENT(IN) :: PZENITH
161 REAL,
DIMENSION(KI),
INTENT(IN) :: PAZIM
162 REAL,
DIMENSION(KSW),
INTENT(IN) :: PSW_BANDS
163 REAL,
DIMENSION(KI,KSW),
INTENT(OUT) :: PDIR_ALB
164 REAL,
DIMENSION(KI,KSW),
INTENT(OUT) :: PSCA_ALB
165 REAL,
DIMENSION(KI),
INTENT(OUT) :: PEMIS
166 REAL,
DIMENSION(KI),
INTENT(OUT) :: PTSRAD
167 REAL,
DIMENSION(KI),
INTENT(OUT) :: PTSURF
168 INTEGER,
INTENT(IN) :: KYEAR
169 INTEGER,
INTENT(IN) :: KMONTH
170 INTEGER,
INTENT(IN) :: KDAY
171 REAL,
INTENT(IN) :: PTIME
174 CHARACTER(LEN=28),
INTENT(IN) :: HATMFILE
175 CHARACTER(LEN=6),
INTENT(IN) :: HATMFILETYPE
176 CHARACTER(LEN=2),
INTENT(IN) :: HTEST
188 REAL :: ZDEF_ROAD_DIR
189 REAL,
DIMENSION(:),
ALLOCATABLE :: ZDIR_ALB
190 REAL,
DIMENSION(:),
ALLOCATABLE :: ZSCA_ALB
193 REAL,
DIMENSION(KI,KSW) :: ZDIR_SW
194 REAL,
DIMENSION(KI,KSW) :: ZSCA_SW
195 REAL,
DIMENSION(KI) :: ZEMIS_GARDEN
196 REAL,
DIMENSION(KI) :: ZALB_GARDEN
197 REAL,
DIMENSION(KI) :: ZTS_GARDEN
200 REAL,
DIMENSION(KI) :: ZEMIS_GREENROOF
201 REAL,
DIMENSION(KI) :: ZALB_GREENROOF
202 REAL,
DIMENSION(KI) :: ZTS_GREENROOF
205 INTEGER :: IVERSION, IBUGFIX
207 REAL(KIND=JPRB) :: ZHOOK_HANDLE
215 IF (htest/=
'OK')
THEN 216 CALL abor1_sfx(
'INIT_TEBN: FATAL ERROR DURING ARGUMENT TRANSFER')
227 td%MTO%LSURF_EVAP_BUDGET = .false.
236 CALL default_teb(top%CZ0H, top%XTSTEP, top%XOUT_TSTEP, top%CCH_BEM, &
237 nt%AL(1)%XDT_RES, nt%AL(1)%XDT_OFF)
239 CALL default_diag_teb(td%O%N2M, td%O%LSURF_BUDGET, td%O%L2M_MIN_ZS, td%O%LRAD_BUDGET
253 CALL read_teb_conf_n(cht, td%MTO, td%O, td%DUT, nt%AL(1), top, hprogram
257 IF (hinit==
'PRE')
THEN 258 CALL read_prep_teb_snow(hprogram, nt%AL(1)%TSNOW_ROOF%SCHEME, nt%AL(1)%TSNOW_ROOF%NLAYER
268 top%TTIME%TDATE%YEAR =
nundef 269 top%TTIME%TDATE%MONTH=
nundef 270 top%TTIME%TDATE%DAY =
nundef 274 CALL prep_ctrl_teb(td%O, td%MTO%LSURF_EVAP_BUDGET, td%MTO%LSURF_MISC_BUDGET
276 CALL read_teb_date(hprogram,hinit,iluout,hatmfile,hatmfiletype,kyear
280 CALL read_surf(hprogram,
'DTCUR',top%TTIME,iresp)
293 CALL read_surf(hprogram,
'VERSION',iversion,iresp)
294 CALL read_surf(hprogram,
'BUG',ibugfix,iresp)
300 CALL read_pgd_teb_n(dtco, u, ug, gcp, top, tg, bop, bdd, dtb, dtt, hprogram
306 ilu =
SIZE(top%XCOVER,1)
308 ALLOCATE(top%XTEB_PATCH(ilu,top%NTEB_PATCH))
309 CALL convert_teb(top%NTEB_PATCH, top%XCOVER,top%XTEB_PATCH)
314 IF (hinit==
'ALL')
THEN 319 CALL read_surf(hprogram,
'VERSION',iversion,iresp)
320 CALL read_surf(hprogram,
'BUG',ibugfix,iresp)
324 IF (iversion>7 .OR. (iversion==7 .AND. ibugfix>=3))
THEN 325 CALL read_surf(hprogram,
'ROAD_DIR',top%CROAD_DIR,iresp)
326 CALL read_surf(hprogram,
'WALL_OPT',top%CWALL_OPT,iresp)
342 DO jp=1,top%NTEB_PATCH
349 ALLOCATE(nt%AL(jp)%XZ0_TOWN (ilu))
350 ALLOCATE(nt%AL(jp)%XALB_ROOF (ilu))
351 ALLOCATE(nt%AL(jp)%XEMIS_ROOF (ilu))
352 ALLOCATE(nt%AL(jp)%XALB_ROAD (ilu))
353 ALLOCATE(nt%AL(jp)%XEMIS_ROAD (ilu))
354 ALLOCATE(nt%AL(jp)%XALB_WALL (ilu))
355 ALLOCATE(nt%AL(jp)%XEMIS_WALL (ilu))
356 ALLOCATE(nt%AL(jp)%XBLD (ilu))
357 ALLOCATE(nt%AL(jp)%XROAD_DIR (ilu))
358 ALLOCATE(nt%AL(jp)%XROAD (ilu))
359 ALLOCATE(nt%AL(jp)%XBLD_HEIGHT (ilu))
360 ALLOCATE(nt%AL(jp)%XWALL_O_HOR (ilu))
361 ALLOCATE(nt%AL(jp)%XCAN_HW_RATIO(ilu))
362 ALLOCATE(nt%AL(jp)%XROAD_O_GRND (ilu))
363 ALLOCATE(nt%AL(jp)%XGARDEN_O_GRND(ilu))
364 ALLOCATE(nt%AL(jp)%XWALL_O_GRND (ilu))
365 ALLOCATE(nt%AL(jp)%XWALL_O_BLD( ilu))
366 ALLOCATE(nt%AL(jp)%XH_TRAFFIC (ilu))
367 ALLOCATE(nt%AL(jp)%XLE_TRAFFIC (ilu))
368 ALLOCATE(nt%AL(jp)%XH_INDUSTRY (ilu))
369 ALLOCATE(nt%AL(jp)%XLE_INDUSTRY (ilu))
370 ALLOCATE(nt%AL(jp)%XHC_ROOF (ilu,top%NROOF_LAYER))
371 ALLOCATE(nt%AL(jp)%XTC_ROOF (ilu,top%NROOF_LAYER))
372 ALLOCATE(nt%AL(jp)%XD_ROOF (ilu,top%NROOF_LAYER))
373 ALLOCATE(nt%AL(jp)%XHC_ROAD (ilu,top%NROAD_LAYER))
374 ALLOCATE(nt%AL(jp)%XTC_ROAD (ilu,top%NROAD_LAYER))
375 ALLOCATE(nt%AL(jp)%XD_ROAD (ilu,top%NROAD_LAYER))
376 ALLOCATE(nt%AL(jp)%XHC_WALL (ilu,top%NWALL_LAYER))
377 ALLOCATE(nt%AL(jp)%XTC_WALL (ilu,top%NWALL_LAYER))
378 ALLOCATE(nt%AL(jp)%XD_WALL (ilu,top%NWALL_LAYER))
379 ALLOCATE(nt%AL(jp)%XROUGH_ROOF (ilu))
380 ALLOCATE(nt%AL(jp)%XROUGH_WALL (ilu))
381 ALLOCATE(nt%AL(jp)%XRESIDENTIAL (ilu))
382 ALLOCATE(nt%AL(jp)%XGREENROOF (ilu))
383 ALLOCATE(nt%AL(jp)%XGARDEN (ilu))
384 ALLOCATE(tpn%XEMIS_PANEL (ilu))
385 ALLOCATE(tpn%XALB_PANEL (ilu))
386 ALLOCATE(tpn%XEFF_PANEL (ilu))
387 ALLOCATE(tpn%XFRAC_PANEL (ilu))
389 nt%AL(jp)%XROAD_DIR(:) = 0.
390 nt%AL(jp)%XROAD (:) = 0.
393 IF (top%CROAD_DIR/=
'UNIF')
THEN 397 zdef_road_dir = 180. * float(jp-1) / float(top%NTEB_PATCH)
402 IF (.NOT. top%LGREENROOF .AND. maxval(nt%AL(jp)%XGREENROOF)>0. )
THEN 403 WRITE(iluout,*)
'You choose NOT to have greenroofs, BUT your greenroof fraction is not zero' 404 WRITE(iluout,*)
'Please activate the greenroof option (and rerun the SURFEX suite from the PGD step)' 405 WRITE(iluout,*)
'Or be sure NOT to have any greenroofs in your area' 406 CALL abor1_sfx(
'INIT_TEBN: GREENROOF OPTION NOT ACTIVATED WHILE GREENROOFS ARE PRESENT' 409 IF (.NOT. top%LSOLAR_PANEL .AND. maxval(tpn%XFRAC_PANEL)>0. )
THEN 410 WRITE(iluout,*)
'You choose NOT to have solar panels, BUT your solar panel fraction is not zero' 411 WRITE(iluout,*)
'Please activate the solar panel option (and rerun the SURFEX suite from the PGD step)' 412 WRITE(iluout,*)
'Or be sure NOT to have any solar panel in your area' 413 CALL abor1_sfx(
'INIT_TEBN: SOLAR_PANEL OPTION NOT ACTIVATED WHILE SOLAR PANELS ARE PRESENT' 421 ALLOCATE(nt%AL(jp)%XSVF_ROAD (ilu))
422 ALLOCATE(nt%AL(jp)%XSVF_GARDEN(ilu))
423 ALLOCATE(nt%AL(jp)%XSVF_WALL (ilu))
425 ALLOCATE(nb%AL(jp)%XGR (ilu))
426 ALLOCATE(nb%AL(jp)%XALB_WIN (ilu))
427 ALLOCATE(nb%AL(jp)%XF_WASTE_CAN (ilu))
437 CALL init_bem_n(dtco, top, bop, dtt, dtb, bdd, tg, nt%AL(jp), nb%AL(jp
444 IF (top%LGARDEN)
THEN 453 IF (top%LGREENROOF)
THEN 476 IF (hinit/=
'ALL' .AND. hinit/=
'SOD')
THEN 494 DO jp=1,top%NTEB_PATCH
497 CALL read_teb_n(nb%AL(jp), bop, dtco, u, nt%AL(jp), top, tpn, hprogram
499 ALLOCATE(nt%AL(jp)%XAC_ROOF (ilu))
500 ALLOCATE(nt%AL(jp)%XAC_ROAD (ilu))
501 ALLOCATE(nt%AL(jp)%XAC_WALL (ilu))
502 ALLOCATE(nt%AL(jp)%XAC_TOP (ilu))
503 ALLOCATE(nt%AL(jp)%XAC_ROOF_WAT(ilu))
504 ALLOCATE(nt%AL(jp)%XAC_ROAD_WAT(ilu))
505 ALLOCATE(nt%AL(jp)%XQSAT_ROOF (ilu))
506 ALLOCATE(nt%AL(jp)%XQSAT_ROAD (ilu))
507 ALLOCATE(nt%AL(jp)%XDELT_ROOF (ilu))
508 ALLOCATE(nt%AL(jp)%XDELT_ROAD (ilu))
511 IF (top%LGARDEN)
THEN 532 IF (top%LGARDEN)
THEN 536 zdir_sw, zsca_sw, psw_bands, ksw, &
537 zts_garden, zemis_garden, zalb_garden )
544 IF (top%LGREENROOF)
THEN 565 ALLOCATE(zdir_alb(ilu))
566 ALLOCATE(zsca_alb(ilu))
573 pdir_alb(:,jswb) = zdir_alb(:)
574 psca_alb(:,jswb) = zsca_alb(:)
585 cht%CCH_NAMES, cht%CAER_NAMES, &
586 hdstnames=cht%CDSTNAMES, hsltnames=cht%CSLTNAMES
590 IF (cht%SVT%NBEQ>0 .AND. cht%CCH_DRY_DEP==
'WES89')
THEN 591 ALLOCATE(cht%XDEP(ilu,cht%SVT%NBEQ))
593 ALLOCATE(cht%XDEP(0,0))
599 IF (hinit/=
'ALL')
THEN 609 CALL read_sbl_n(dtco, u, sb, top%LCANOPY, hprogram,
"TOWN ")
618 DO jp=1,top%NTEB_PATCH
subroutine init_chemical_n(KLUOUT, KSV, HSV, SV, HCH_NAMES, HAER_NAMES, HDSTNAMES, HSLTNAMES)
subroutine read_cover_garden(HPROGRAM, OGARDEN, HDIR)
subroutine convert_patch_teb(BDD, DTB, DTCO, DTT, TOP, PDEF_ROAD_DIR, T, B, TPN)
subroutine init_teb_n(DTCO, UG, U, GCP, CHT, DTT, SB, TG, TOP, TP
subroutine set_surfex_filein(HPROGRAM, HMASK)
subroutine init_teb_greenroof_pgd_n(DTCO, U, OCH_BIO_FLUX, G, PGREENROOF, TOP, IO, S, K, P, PEK, DTV, GB, HPROGRAM, HINIT, OPATCH1, KI, KVERSION, PCO2, PRHOA)
subroutine diag_teb_init_n(DGO, D, DUT, HPROGRAM, KLU, KSW)
subroutine init_snow_lw(PEMISSN, TPSNOW)
subroutine read_teb_date( HPROGRAM, HINIT, KLUOUT, HATMFILE, HATMFILET
subroutine default_teb(HZ0H, PTSTEP, POUT_TSTEP, HCH_BEM, PDT_RES, P
subroutine prep_ctrl_teb(DGO, OSURF_EVAP_BUDGET, OSURF_MISC_BUDGET
subroutine read_teb_n(B, BOP, DTCO, U, T, TOP, TPN, HPROGRAM, KPAT
subroutine diag_misc_teb_init_n(DMTC, DMT, DMTO, TOP, KLU, KSW)
subroutine read_sbl_n(DTCO, U, SB, OSBL, HPROGRAM, HSURF)
subroutine abor1_sfx(YTEXT)
subroutine teb_morpho(HPROGRAM, T)
subroutine init_teb_veg_options_n(CHT, OSURF_DIAG_ALBEDO, OGREENROOF, GDO, GRO, HPROGRAM)
subroutine init_bem_n(DTCO, TOP, BOP, DTT, DTB, BDD, G, T, B, KLUOUT)
subroutine teb_veg_properties(PMASK, IO, PEK, PDIR_SW, PSCA_SW, P
integer, parameter nundef
character(len=4) cwall_opt
subroutine init_teb_garden_n(DTCO, UG, U, DMTO, TOP, IO, DTV, K, P, PEK, DK, DEK, DECK, DMK, HPROGRAM, HINIT, KI, KSW, PSW_BANDS, KPATCH)
subroutine default_ch_dep(HCH_DRY_DEP)
subroutine end_io_surf_n(HPROGRAM)
subroutine get_luout(HPROGRAM, KLUOUT)
subroutine read_pgd_teb_irrig_n(G, TIR, HPROGRAM)
subroutine read_pgd_teb_n(DTCO, U, UG, GCP, TOP, TG, BOP, BDD, DTB, DTT, HPROGRAM)
subroutine read_default_teb_n(CHT, DMTO, DGO, DUT, IO, T, TOP, HP
subroutine default_diag_teb(K2M, OSURF_BUDGET, O2M_MIN_ZS, ORAD_BUDG
subroutine read_prep_teb_snow(HPROGRAM, HSNOW_ROOF, KSNOW_ROOF, HSNOW
subroutine init_teb_greenroof_n(DTCO, U, DMTO, TOP, IO, DTV, K, P, PEK, DK, DEK, DECK, DMK, HPROGRAM, HINIT, KI, KSW, PSW_BANDS, KPATCH)
subroutine convert_teb(KTEB_PATCH, PCOVER, PTEB_PATCH)
subroutine read_nam_prep_teb_n(HPROGRAM)
subroutine averaged_albedo_teb(TOP, T, TPN, B, PZENITH, PAZIM, PALB_GARDEN, PALB_GREENROOF, PDIR_A
subroutine init_teb_garden_pgd_n(DTCO, U, OCH_BIO_FLUX, G, PGARDEN, TOP, IO, S, K, P, PEK, DTV, GB, HPROGRAM, HINIT, OPATCH1, KI, KVERSION, KBUGFIX, PCO2, PRHOA)
subroutine read_teb_conf_n(CHT, DMTO, DGO, DUT, T, TOP, HPROGRAM)
subroutine init_io_surf_n(DTCO, U, HPROGRAM, HMASK, HSCHEME, HACTION
subroutine t(CDPREF, CDSUFF, KCODPA, LDNIVA, PMULTI)
character(len=4) croad_dir
subroutine averaged_tsrad_teb(T, B, PEMIS_GARDEN, PTS_GARDEN, PEMI