6 SUBROUTINE teb (TOP, T, BOP, B, TIR, DMT, HIMPLICIT_WIND, PTSUN, &
7 PT_CANYON, PQ_CANYON, PU_CANYON, PT_LOWCAN, PQ_LOWCAN, PU_LOWCAN, &
8 PZ_LOWCAN, PPEW_A_COEF, PPEW_B_COEF, PPEW_A_COEF_LOWCAN, &
9 PPEW_B_COEF_LOWCAN, PPS, PPA, PEXNS, PEXNA, PTA, PQA, PRHOA, &
10 PLW_RAD, PRR, PSR, PZREF, PUREF, PVMOD, PH_TRAFFIC, PLE_TRAFFIC, &
11 PTSTEP, PDF_RF, PDN_RF, PDF_RD, PDN_RD, PQSAT_RF, PQSAT_RD, &
12 PDELT_RF, PDELT_RD, PTS_GARDEN, PLEW_RF, PUW_GR, PLEW_RD, PLE_WL_A,&
13 PLE_WL_B, PRNSN_RF, PHSN_RF, PLESN_RF, PGSN_RF, PMELT_RF, PRN_GR, &
14 PH_GR, PLE_GR, PGFLUX_GR, PDRAIN_GR, PRUNOFF_GR, PRNSN_RD, &
15 PHSN_RD, PLESN_RD, PGSN_RD, PMELT_RD, PUW_RD, PUW_RF, PDUWDU_RD, &
16 PDUWDU_RF, PUSTAR_TWN, PCD, PCDN, PCH_TWN, PRI_TWN, PRESA_TWN, &
17 PAC_RF, PAC_RD, PAC_WL, PAC_TOP, PAC_GARDEN, PAC_RF_WAT, &
18 PAC_RD_WAT, PLW_WA_TO_WB, PLW_WA_TO_R, PLW_WB_TO_R, PLW_WA_TO_NR, &
19 PLW_WB_TO_NR, PLW_R_TO_WA, PLW_R_TO_WB, PLW_G_TO_WA, PLW_G_TO_WB, &
20 PLW_S_TO_WA, PLW_S_TO_WB, PLW_S_TO_R, PLW_S_TO_NR, PLW_NR_TO_WA, &
21 PLW_NR_TO_WB, PLW_NR_TO_WIN, PLW_WA_TO_WIN, PLW_WB_TO_WIN, &
22 PLW_G_TO_WIN, PLW_R_TO_WIN, PLW_S_TO_WIN, PLW_WIN_TO_WA, &
23 PLW_WIN_TO_WB, PLW_WIN_TO_R, PLW_WIN_TO_NR, KDAY, PEMIT_LW_FAC, &
24 PEMIT_LW_RD, PT_RAD_IND, PHU_BLD, PTIME, PE_SHADING )
191 USE modd_snow_par
, ONLY : xemissn, xansmax_roof, &
192 xansmax_road,xwcrn_roof,xwcrn_road
197 USE modi_snow_cover_1layer
199 USE modi_urban_snow_evol
200 USE modi_roof_layer_e_budget
201 USE modi_road_layer_e_budget
202 USE modi_facade_e_budget
203 USE modi_urban_fluxes
205 USE modi_bld_e_budget
206 USE modi_wind_threshold
218 TYPE(
teb_t),
INTENT(INOUT) :: T
220 TYPE(
bem_t),
INTENT(INOUT) :: B
224 CHARACTER(LEN=*),
INTENT(IN) :: HIMPLICIT_WIND
227 REAL,
DIMENSION(:),
INTENT(IN) :: PTSUN
228 REAL,
DIMENSION(:),
INTENT(INOUT) :: PT_CANYON
229 REAL,
DIMENSION(:),
INTENT(INOUT) :: PQ_CANYON
230 REAL,
DIMENSION(:),
INTENT(IN) :: PU_CANYON
231 REAL,
DIMENSION(:),
INTENT(IN) :: PU_LOWCAN
232 REAL,
DIMENSION(:),
INTENT(IN) :: PT_LOWCAN
233 REAL,
DIMENSION(:),
INTENT(IN) :: PQ_LOWCAN
234 REAL,
DIMENSION(:),
INTENT(IN) :: PZ_LOWCAN
235 REAL,
DIMENSION(:),
INTENT(IN) :: PPEW_A_COEF
236 REAL,
DIMENSION(:),
INTENT(IN) :: PPEW_B_COEF
237 REAL,
DIMENSION(:),
INTENT(IN) :: PPEW_A_COEF_LOWCAN
238 REAL,
DIMENSION(:),
INTENT(IN) :: PPEW_B_COEF_LOWCAN
239 REAL,
DIMENSION(:),
INTENT(IN) :: PPS
240 REAL,
DIMENSION(:),
INTENT(IN) :: PPA
241 REAL,
DIMENSION(:),
INTENT(IN) :: PEXNS
242 REAL,
DIMENSION(:),
INTENT(IN) :: PTA
243 REAL,
DIMENSION(:),
INTENT(IN) :: PQA
245 REAL,
DIMENSION(:),
INTENT(IN) :: PVMOD
246 REAL,
DIMENSION(:),
INTENT(IN) :: PH_TRAFFIC
248 REAL,
DIMENSION(:),
INTENT(IN) :: PLE_TRAFFIC
250 REAL,
DIMENSION(:),
INTENT(IN) :: PEXNA
252 REAL,
DIMENSION(:),
INTENT(IN) :: PRHOA
254 REAL,
DIMENSION(:),
INTENT(IN) :: PLW_RAD
255 REAL,
DIMENSION(:),
INTENT(IN) :: PRR
256 REAL,
DIMENSION(:),
INTENT(IN) :: PSR
257 REAL,
DIMENSION(:),
INTENT(IN) :: PZREF
259 REAL,
DIMENSION(:),
INTENT(IN) :: PUREF
261 REAL,
INTENT(IN) :: PTSTEP
263 REAL,
DIMENSION(:),
INTENT(INOUT) :: PDF_RF
264 REAL,
DIMENSION(:),
INTENT(INOUT) :: PDN_RF
265 REAL,
DIMENSION(:),
INTENT(INOUT) :: PDF_RD
266 REAL,
DIMENSION(:),
INTENT(INOUT) :: PDN_RD
267 REAL,
DIMENSION(:),
INTENT(OUT) :: PQSAT_RF
268 REAL,
DIMENSION(:),
INTENT(OUT) :: PQSAT_RD
269 REAL,
DIMENSION(:),
INTENT(OUT) :: PDELT_RF
270 REAL,
DIMENSION(:),
INTENT(OUT) :: PDELT_RD
272 REAL,
DIMENSION(:),
INTENT(IN) :: PTS_GARDEN
274 REAL,
DIMENSION(:),
INTENT(OUT) :: PLEW_RF
275 REAL,
DIMENSION(:),
INTENT(OUT) :: PLEW_RD
276 REAL,
DIMENSION(:),
INTENT(OUT) :: PLE_WL_A
277 REAL,
DIMENSION(:),
INTENT(OUT) :: PLE_WL_B
279 REAL,
DIMENSION(:),
INTENT(IN) :: PUW_GR
281 REAL,
DIMENSION(:),
INTENT(OUT) :: PRNSN_RF
282 REAL,
DIMENSION(:),
INTENT(OUT) :: PHSN_RF
283 REAL,
DIMENSION(:),
INTENT(OUT) :: PLESN_RF
284 REAL,
DIMENSION(:),
INTENT(OUT) :: PGSN_RF
285 REAL,
DIMENSION(:),
INTENT(OUT) :: PMELT_RF
286 REAL,
DIMENSION(:),
INTENT(OUT) :: PRNSN_RD
287 REAL,
DIMENSION(:),
INTENT(OUT) :: PHSN_RD
288 REAL,
DIMENSION(:),
INTENT(OUT) :: PLESN_RD
289 REAL,
DIMENSION(:),
INTENT(OUT) :: PGSN_RD
290 REAL,
DIMENSION(:),
INTENT(OUT) :: PMELT_RD
292 REAL,
DIMENSION(:),
INTENT(OUT) :: PUW_RD
293 REAL,
DIMENSION(:),
INTENT(OUT) :: PUW_RF
294 REAL,
DIMENSION(:),
INTENT(OUT) :: PDUWDU_RD
295 REAL,
DIMENSION(:),
INTENT(OUT) :: PDUWDU_RF
296 REAL,
DIMENSION(:),
INTENT(OUT) :: PUSTAR_TWN
298 REAL,
DIMENSION(:),
INTENT(IN) :: PRN_GR
299 REAL,
DIMENSION(:),
INTENT(IN) :: PH_GR
300 REAL,
DIMENSION(:),
INTENT(IN) :: PLE_GR
301 REAL,
DIMENSION(:),
INTENT(IN) :: PGFLUX_GR
302 REAL,
DIMENSION(:),
INTENT(IN) :: PRUNOFF_GR
303 REAL,
DIMENSION(:),
INTENT(IN) :: PDRAIN_GR
305 REAL,
DIMENSION(:),
INTENT(OUT) :: PCD
306 REAL,
DIMENSION(:),
INTENT(OUT) :: PCDN
307 REAL,
DIMENSION(:),
INTENT(OUT) :: PCH_TWN
309 REAL,
DIMENSION(:),
INTENT(OUT) :: PRI_TWN
310 REAL,
DIMENSION(:),
INTENT(OUT) :: PRESA_TWN
311 REAL,
DIMENSION(:),
INTENT(OUT) :: PAC_RF
312 REAL,
DIMENSION(:),
INTENT(INOUT) :: PAC_RD
313 REAL,
DIMENSION(:),
INTENT(OUT) :: PAC_WL
314 REAL,
DIMENSION(:),
INTENT(OUT) :: PAC_TOP
315 REAL,
DIMENSION(:),
INTENT(IN) :: PAC_GARDEN
316 REAL,
DIMENSION(:),
INTENT(OUT) :: PAC_RF_WAT
317 REAL,
DIMENSION(:),
INTENT(OUT) :: PAC_RD_WAT
319 REAL,
DIMENSION(:),
INTENT(IN) :: PLW_WA_TO_WB
320 REAL,
DIMENSION(:),
INTENT(IN) :: PLW_WA_TO_R
321 REAL,
DIMENSION(:),
INTENT(IN) :: PLW_WB_TO_R
322 REAL,
DIMENSION(:),
INTENT(IN) :: PLW_WA_TO_NR
323 REAL,
DIMENSION(:),
INTENT(IN) :: PLW_WB_TO_NR
324 REAL,
DIMENSION(:),
INTENT(IN) :: PLW_R_TO_WA
325 REAL,
DIMENSION(:),
INTENT(IN) :: PLW_R_TO_WB
326 REAL,
DIMENSION(:),
INTENT(IN) :: PLW_G_TO_WA
327 REAL,
DIMENSION(:),
INTENT(IN) :: PLW_G_TO_WB
328 REAL,
DIMENSION(:),
INTENT(IN) :: PLW_NR_TO_WA
329 REAL,
DIMENSION(:),
INTENT(IN) :: PLW_NR_TO_WB
330 REAL,
DIMENSION(:),
INTENT(IN) :: PLW_S_TO_WA
331 REAL,
DIMENSION(:),
INTENT(IN) :: PLW_S_TO_WB
332 REAL,
DIMENSION(:),
INTENT(IN) :: PLW_S_TO_R
333 REAL,
DIMENSION(:),
INTENT(IN) :: PLW_S_TO_NR
337 INTEGER,
INTENT(IN) :: KDAY
338 REAL,
DIMENSION(:),
INTENT(IN) :: PLW_WA_TO_WIN
340 REAL,
DIMENSION(:),
INTENT(IN) :: PLW_WB_TO_WIN
342 REAL,
DIMENSION(:),
INTENT(IN) :: PLW_G_TO_WIN
344 REAL,
DIMENSION(:),
INTENT(IN) :: PLW_R_TO_WIN
346 REAL,
DIMENSION(:),
INTENT(IN) :: PLW_S_TO_WIN
348 REAL,
DIMENSION(:),
INTENT(IN) :: PLW_WIN_TO_WA
350 REAL,
DIMENSION(:),
INTENT(IN) :: PLW_WIN_TO_WB
352 REAL,
DIMENSION(:),
INTENT(IN) :: PLW_WIN_TO_R
354 REAL,
DIMENSION(:),
INTENT(IN) :: PLW_NR_TO_WIN
356 REAL,
DIMENSION(:),
INTENT(IN) :: PLW_WIN_TO_NR
359 REAL,
DIMENSION(:),
INTENT(OUT) :: PEMIT_LW_RD
360 REAL,
DIMENSION(:),
INTENT(OUT) :: PEMIT_LW_FAC
361 REAL,
DIMENSION(:),
INTENT(OUT) :: PT_RAD_IND
362 REAL,
DIMENSION(:),
INTENT(OUT) :: PHU_BLD
363 REAL,
INTENT(IN) :: PTIME
364 REAL,
DIMENSION(:),
INTENT(IN) :: PE_SHADING
369 REAL,
DIMENSION(SIZE(PTA)) :: ZVMOD
370 REAL,
DIMENSION(SIZE(PTA)) :: ZWS_RF_MAX
371 REAL,
DIMENSION(SIZE(PTA)) :: ZWS_RD_MAX
373 REAL,
DIMENSION(SIZE(PTA)) :: ZAC_BLD
374 REAL,
DIMENSION(SIZE(PTA)) :: ZTA
375 REAL,
DIMENSION(SIZE(PTA)) :: ZQA
377 REAL,
DIMENSION(SIZE(PTA)) :: ZDQS_RD
378 REAL,
DIMENSION(SIZE(PTA)) :: ZDQS_RF
379 REAL,
DIMENSION(SIZE(PTA)) :: ZDQS_WL_A
380 REAL,
DIMENSION(SIZE(PTA)) :: ZDQS_WL_B
381 REAL,
DIMENSION(SIZE(PTA)) :: ZFLX_BLD_RF
382 REAL,
DIMENSION(SIZE(PTA)) :: ZFLX_BLD_WL_A
383 REAL,
DIMENSION(SIZE(PTA)) :: ZFLX_BLD_WL_B
384 REAL,
DIMENSION(SIZE(PTA)) :: ZFLX_BLD_FL
385 REAL,
DIMENSION(SIZE(PTA)) :: ZFLX_BLD_MA
387 REAL,
DIMENSION(SIZE(PTA)) :: ZDQS_SN_RF
388 REAL,
DIMENSION(SIZE(PTA)) :: ZDQS_SN_RD
389 REAL,
DIMENSION(SIZE(PTA)) :: ZMELT_BLT
393 REAL,
DIMENSION(SIZE(PTA)) :: ZTSSN_RD
397 REAL,
DIMENSION(SIZE(PTA)) :: ZIMB_RF
400 REAL,
DIMENSION(SIZE(PTA)) :: ZIMB_RD
402 REAL,
DIMENSION(SIZE(PTA)) :: ZIMB_WL
404 REAL,
DIMENSION(SIZE(PTA)) :: ZTS_RD
406 REAL,
DIMENSION(SIZE(PTA)) :: ZTS_WL_A
408 REAL,
DIMENSION(SIZE(PTA)) :: ZTS_WL_B
410 REAL,
DIMENSION(SIZE(PTA)) :: ZTS_WL
412 REAL,
DIMENSION(SIZE(PTA)) :: ZTS_RF
414 REAL,
DIMENSION(SIZE(PTA),SIZE(T%XT_WALL_A,2)) :: ZT_WL
417 REAL,
DIMENSION(SIZE(PTA)) :: ZRADHT_IN
419 REAL,
DIMENSION(SIZE(PTA)) :: ZTS_FL
420 REAL,
DIMENSION(SIZE(PTA)) :: ZRAD_RF_WL
421 REAL,
DIMENSION(SIZE(PTA)) :: ZRAD_RF_WIN
422 REAL,
DIMENSION(SIZE(PTA)) :: ZRAD_RF_FL
423 REAL,
DIMENSION(SIZE(PTA)) :: ZRAD_RF_MA
424 REAL,
DIMENSION(SIZE(PTA)) :: ZCONV_RF_BLD
425 REAL,
DIMENSION(SIZE(PTA)) :: ZRAD_WL_FL
426 REAL,
DIMENSION(SIZE(PTA)) :: ZRAD_WL_MA
427 REAL,
DIMENSION(SIZE(PTA)) :: ZRAD_WIN_FL
428 REAL,
DIMENSION(SIZE(PTA)) :: ZRAD_WIN_MA
429 REAL,
DIMENSION(SIZE(PTA)) :: ZCONV_WL_BLD
430 REAL,
DIMENSION(SIZE(PTA)) :: ZCONV_WIN_BLD
431 REAL,
DIMENSION(SIZE(PTA)) :: ZAC_WIN
433 REAL,
DIMENSION(SIZE(PTA)) :: ZLOAD_IN_RF
434 REAL,
DIMENSION(SIZE(PTA)) :: ZLOAD_IN_FL
435 REAL,
DIMENSION(SIZE(PTA)) :: ZLOAD_IN_WL
436 REAL,
DIMENSION(SIZE(PTA)) :: ZLOAD_IN_WIN
437 REAL,
DIMENSION(SIZE(PTA)) :: ZLOAD_IN_MA
439 REAL(KIND=JPRB) :: ZHOOK_HANDLE
456 ztssn_rd(:) = t%TSNOW_ROAD%TS(:)
463 IF (top%CBEM==
'DEF') zac_bld=1. / 0.123 / (
xcpd * prhoa(:))
469 iwl =
SIZE(t%XT_WALL_A,2)
470 irf =
SIZE(t%XT_ROOF,2)
472 zts_wl_a(:)=t%XT_WALL_A (:,1)
473 zts_wl_b(:)=t%XT_WALL_B (:,1)
474 zts_wl(:)=0.5 * (zts_wl_a(:)+zts_wl_b(:))
475 zts_rd(:)=t%XT_ROAD (:,1)
476 zts_rf(:)=t%XT_ROOF (:,1)
482 IF (top%CBEM==
'BEM')
THEN 484 zload_in_rf = b%XF_FLOOR_WIN * dmt%XTR_SW_WIN + dmt%XQIN * b%XN_FLOOR * (1-b%XQIN_FLAT) * b%XQIN_FRAD &
485 / (2 + t%XWALL_O_BLD + b%XGLAZ_O_BLD + b%XMASS_O_BLD )
486 zload_in_fl = b%XF_FLOOR_WIN * dmt%XTR_SW_WIN + dmt%XQIN * b%XN_FLOOR * (1-b%XQIN_FLAT) * b%XQIN_FRAD &
487 / (2 + t%XWALL_O_BLD + b%XGLAZ_O_BLD + b%XMASS_O_BLD )
488 zload_in_ma = b%XF_MASS_WIN * dmt%XTR_SW_WIN + dmt%XQIN * b%XN_FLOOR * (1-b%XQIN_FLAT) * b%XQIN_FRAD &
489 / (2 + t%XWALL_O_BLD + b%XGLAZ_O_BLD + b%XMASS_O_BLD )
490 zload_in_wl = b%XF_WALL_WIN * dmt%XTR_SW_WIN + dmt%XQIN * b%XN_FLOOR * (1-b%XQIN_FLAT) * b%XQIN_FRAD &
491 / (2 + t%XWALL_O_BLD + b%XGLAZ_O_BLD + b%XMASS_O_BLD )
492 zload_in_win = b%XF_WIN_WIN * dmt%XTR_SW_WIN + dmt%XQIN * b%XN_FLOOR * (1-b%XQIN_FLAT) * b%XQIN_FRAD &
493 / (2 + t%XWALL_O_BLD + b%XGLAZ_O_BLD + b%XMASS_O_BLD )
509 zws_rf_max(:) = zws_rf_max(:) * pdf_rf(:)
510 zws_rd_max(:) = zws_rd_max(:) * pdf_rd(:)
517 CALL urban_drag(top, t, b, himplicit_wind, ptstep, pt_canyon, pq_canyon, &
518 pu_canyon, pt_lowcan, pq_lowcan, pu_lowcan, pz_lowcan, &
519 zts_rf, zts_rd, zts_wl, pts_garden, pdn_rf, pdn_rd, &
520 pexns, pexna, pta, pqa, pps, prhoa, pzref, puref, &
521 pvmod, zws_rf_max, zws_rd_max, ppew_a_coef, &
522 ppew_b_coef, ppew_a_coef_lowcan, ppew_b_coef_lowcan, &
523 pqsat_rf, pqsat_rd, pdelt_rf, pdelt_rd, pcd, pcdn, &
524 pac_rf, pac_rf_wat, pac_wl, pac_rd, pac_rd_wat, &
525 pac_top, pac_garden, pri_twn, puw_rd, puw_rf, &
526 pduwdu_rd, pduwdu_rf, pustar_twn, zac_win )
532 pch_twn(:) = (t%XBLD(:) * pac_rf(:) + (1.-t%XBLD(:)) * pac_top(:)) / zvmod(:)
536 puw_rf(:) = (1-t%XGREENROOF(:)) * puw_rf(:) + t%XGREENROOF(:) * puw_gr(:)
537 WHERE (pvmod(:)/=0.) pduwdu_rf(:) = 2. * puw_rf(:) / pvmod(:)
544 zta(:) = pta(:) * pexns(:) / pexna(:)
545 zqa(:) = pqa(:) *
qsat(pta(:),pps(:)) /
qsat(zta(:),ppa(:))
552 CALL urban_snow_evol(t, b, pt_lowcan, pq_lowcan, pu_lowcan, zts_rf, zts_rd, zts_wl_a, &
553 zts_wl_b, pps, zta, zqa, prhoa, plw_rad, psr, pzref, puref, pvmod, &
554 ptstep, pz_lowcan, pdn_rf, dmt%XABS_SW_SNOW_ROOF, &
555 dmt%XABS_LW_SNOW_ROOF, pdn_rd, dmt%XABS_SW_SNOW_ROAD, &
556 dmt%XABS_LW_SNOW_ROAD, prnsn_rf, phsn_rf, plesn_rf, pgsn_rf, &
557 pmelt_rf, prnsn_rd, phsn_rd, plesn_rd, pgsn_rd, pmelt_rd, &
558 plw_wa_to_nr, plw_wb_to_nr, plw_s_to_nr, plw_win_to_nr, zdqs_sn_rf, &
566 pdf_rd(:) = 1. - pdn_rd(:)
574 zt_wl(:,:)=0.5 * (t%XT_WALL_A(:,:)+t%XT_WALL_B(:,:))
576 SELECT CASE(top%CBEM)
578 zts_fl(:) = 19. +
xtt 579 pt_rad_ind(:) = ( t%XWALL_O_HOR(:) / t%XBLD(:) * zt_wl(:,iwl) + &
580 t%XT_ROOF(:,irf) + zts_fl(:) ) / (t%XWALL_O_HOR(:) / t%XBLD(:) + 1. + 1.)
583 zts_fl(:) = b%XT_FLOOR(:,1)
584 pt_rad_ind(:) = (b%XT_MASS(:,1)*b%XMASS_O_BLD(:) + zt_wl(:,iwl)*t%XWALL_O_BLD(:) &
585 + zts_fl(:) + t%XT_ROOF(:,irf) + b%XT_WIN2(:) * b%XGLAZ_O_BLD(:)) &
586 /(b%XMASS_O_BLD(:) + t%XWALL_O_BLD(:) + 1. + 1. + b%XGLAZ_O_BLD(:))
588 zradht_in(:) = 0.9 * 0.9 * 4 *
xstefan * pt_rad_ind(:)**3
599 pac_rf, pac_rf_wat, plw_rad, pps, pdelt_rf, zta, zqa, &
600 pexna, pexns, dmt%XABS_SW_ROOF, pgsn_rf, zflx_bld_rf, &
601 zdqs_rf, dmt%XABS_LW_ROOF, dmt%XH_ROOF, plew_rf, zimb_rf, &
602 dmt%XG_GREENROOF_ROOF, zradht_in, zts_fl, zt_wl(:,iwl),&
603 zrad_rf_wl, zrad_rf_win, zrad_rf_fl, zrad_rf_ma, zconv_rf_bld, &
614 CALL teb_irrig(tir%LPAR_RD_IRRIG, ptstep, top%TTIME%TDATE%MONTH, ptsun, &
615 tir%XRD_START_MONTH, tir%XRD_END_MONTH, tir%XRD_START_HOUR, &
616 tir%XRD_END_HOUR, tir%XRD_24H_IRRIG, dmt%XIRRIG_ROAD )
621 plw_rad, pps, pqsat_rd, pdelt_rd, pexns, &
622 dmt%XABS_SW_ROAD, pgsn_rd, pq_lowcan, pt_lowcan,&
623 zts_wl_a, zts_wl_b, ztssn_rd, pts_garden, &
624 plw_wa_to_r, plw_wb_to_r, plw_s_to_r, &
625 plw_win_to_r, pemit_lw_rd, zdqs_rd, dmt%XABS_LW_ROAD, &
626 dmt%XH_ROAD, plew_rd, zimb_rd, prr+dmt%XIRRIG_ROAD )
633 CALL facade_e_budget(top, t, b, dmt, ptstep, pdn_rd, prhoa, pac_wl, zac_bld, &
634 plw_rad, pps, pexns, pt_canyon, zts_rd, ztssn_rd, pts_garden, &
635 zts_fl, plw_wa_to_wb, plw_r_to_wa, plw_r_to_wb, &
636 plw_g_to_wa, plw_g_to_wb, plw_s_to_wa, plw_s_to_wb, &
637 plw_nr_to_wa, plw_nr_to_wb, plw_win_to_wa, &
638 plw_win_to_wb, plw_s_to_win, plw_wa_to_win, &
639 plw_wb_to_win, plw_r_to_win, plw_g_to_win, &
640 plw_nr_to_win, zflx_bld_wl_a, zdqs_wl_a, &
641 zflx_bld_wl_b, zdqs_wl_b, pemit_lw_fac, zimb_wl, &
642 zradht_in, zrad_rf_wl, zrad_rf_win, zrad_wl_fl, &
643 zrad_wl_ma, zrad_win_fl, zrad_win_ma, zconv_wl_bld, &
644 zconv_win_bld, zac_win, zload_in_wl, zload_in_win )
652 zt_wl(:,:)=0.5 * (t%XT_WALL_A(:,:)+t%XT_WALL_B(:,:))
654 SELECT CASE(top%CBEM)
657 CALL bld_e_budget(.true., ptstep, t%XBLD, t%XWALL_O_HOR, &
658 prhoa, t%XT_ROOF, zt_wl, b%XTI_BLD, zts_fl(:) )
661 b%XQI_BLD = 0.5 *
qsat(b%XTI_BLD, pps)
669 CALL bem(bop, t, b, dmt, ptstep, ptsun, kday, pps, prhoa, pt_canyon, &
670 pq_canyon, pu_canyon, phu_bld, pt_rad_ind, zflx_bld_fl,&
671 zflx_bld_ma, zradht_in, zrad_rf_ma, zrad_rf_fl, &
672 zrad_wl_ma, zrad_wl_fl, zrad_win_ma, zrad_win_fl, &
673 zconv_rf_bld, zconv_wl_bld, zconv_win_bld, zload_in_fl,&
676 dmt%XH_WASTE = dmt%XH_WASTE * t%XBLD
677 dmt%XLE_WASTE = dmt%XLE_WASTE * t%XBLD
685 CALL urban_fluxes (top, t, b, dmt, himplicit_wind, pt_canyon, ppew_a_coef, ppew_b_coef, &
686 pexns, prhoa, pvmod, ph_traffic, ple_traffic,pac_wl, pcd, pdf_rf, &
687 pdn_rf, pdf_rd, pdn_rd, prnsn_rf, phsn_rf, plesn_rf, pgsn_rf, &
688 prnsn_rd, phsn_rd, plesn_rd, pgsn_rd, pmelt_rf, zdqs_rf, pmelt_rd, &
689 zdqs_rd, zdqs_wl_a, zdqs_wl_b, zflx_bld_rf, zflx_bld_wl_a, &
690 zflx_bld_wl_b, zflx_bld_fl, zflx_bld_ma, pe_shading, plew_rf, &
691 prn_gr, ph_gr, ple_gr, pgflux_gr, &
692 plew_rd, ple_wl_a, ple_wl_b, zmelt_blt, pustar_twn )
697 WHERE (pmelt_rf(:) .GT. 0.)
698 t%XWS_ROOF(:) = min(zws_rf_max,t%XWS_ROOF(:) + pmelt_rf(:)*ptstep)
701 WHERE (pmelt_rd(:) .GT. 0.)
702 t%XWS_ROAD(:) = min(zws_rd_max,t%XWS_ROAD(:) + pmelt_rd(:)*ptstep)
710 CALL urban_hydro(zws_rf_max, zws_rd_max, t%XWS_ROOF, t%XWS_ROAD, prr, &
711 dmt%XIRRIG_ROAD, ptstep, t%XBLD, dmt%XLE_ROOF, dmt%XLE_ROAD, &
712 dmt%XRUNOFF_STRLROOF, dmt%XRUNOFF_ROAD )
714 IF (top%LGREENROOF)
THEN 715 dmt%XRUNOFF_ROOF(:) = (1.-t%XGREENROOF(:)) * dmt%XRUNOFF_STRLROOF(:) &
716 + t%XGREENROOF(:) * (prunoff_gr(:) + pdrain_gr(:))
718 dmt%XRUNOFF_ROOF(:) = dmt%XRUNOFF_STRLROOF(:)
726 presa_twn(:) = 1. / ( t%XBLD(:) * pac_rf(:) + ( 1. - t%XBLD(:)) * pac_top(:))
subroutine roof_layer_e_budget(TOP, T, B, PQSAT_ROOF, PAC_BLD, PTSTEP, PDN_ROOF, PRHOA, PAC_ROOF, PAC_ROOF_WAT, PLW_RAD, PPS, PDELT_ROOF, PTA, PQA, PEXNA, PEXNS, PABS_SW_ROOF, PGSNOW_ROOF, PFLX_BLD_ROOF, PDQS_ROOF, PABS_LW_ROOF, PHFREE_ROOF, PLEFREE_ROOF, PIMB_ROOF, PG_GREENROOF_ROOF, PRADHT_IN, PTS_FLOOR, PTI_WALL, PRAD_ROOF_WALL, PRAD_ROOF_WIN, PRAD_ROOF_FLOOR, PRAD_ROOF_MASS, PCONV_ROOF_BLD, PRR, PLOAD_IN_ROOF)
real function, dimension(size(pwind)) wind_threshold(PWIND, PUREF)
subroutine urban_hydro(PWS_ROOF_MAX, PWS_ROAD_MAX, PWS_ROOF, PWS_ROAD, PRR, PIRRIG_ROAD, PTSTEP, PBLD, PLE_ROOF, PLE_ROAD, PRUNOFF_STRLROOF, PRUNOFF_ROAD)
subroutine bem(BOP, T, B, DMT, PTSTEP, PSUNTIME, KDAY, PPS, PRHOA, PT_CAN, PQ_CAN, PU_CAN, PHU_BLD, PT_RAD_IND, PFLX_BLD_FL, PFLX_BLD_MA, PRADHT_IN, PRAD_RF_MA, PRAD_RF_FL, PRAD_WL_MA, PRAD_WL_FL, PRAD_WIN_MA, PRAD_WIN_FL, PCONV_RF_BLD, PCONV_WL_BLD, PCONV_WIN_BLD, PLOAD_IN_FL, PLOAD_IN_MA)
subroutine urban_drag(TOP, T, B, HIMPLICIT_WIND, PTSTEP, PT_CANYON, PQ_CANYON, PU_CANYON, PT_LOWCAN, PQ_LOWCAN, PU_LOWCAN, PZ_LOWCAN, PTS_ROOF, PTS_ROAD, PTS_WALL, PTS_GARDEN, PDELT_SNOW_ROOF, PDELT_SNOW_ROAD, PEXNS, PEXNA, PTA, PQA, PPS, PRHOA, PZREF, PUREF, PVMOD, PWS_ROOF_MAX, PWS_ROAD_MAX, PPEW_A_COEF, PPEW_B_COEF, PPEW_A_COEF_LOWCAN, PPEW_B_COEF_LOWCAN, PQSAT_ROOF, PQSAT_ROAD, PDELT_ROOF, PDELT_ROAD, PCD, PCDN, PAC_ROOF, PAC_ROOF_WAT, PAC_WALL, PAC_ROAD, PAC_ROAD_WAT, PAC_TOP, PAC_GARDEN, PRI, PUW_ROAD, PUW_ROOF, PDUWDU_ROAD, PDUWDU_ROOF, PUSTAR_TOWN, PAC_WIN)
subroutine facade_e_budget(TOP, T, B, DMT, PTSTEP, PDN_RD, PRHOA, PAC_WL, PAC_BLD, PLW_RAD, PPS, PEXNS, PT_CANYON, PTS_RD, PTSN_RD, PTS_GD, PTS_FL, PLW_WA_TO_WB, PLW_R_TO_WA, PLW_R_TO_WB, PLW_G_TO_WA, PLW_G_TO_WB, PLW_S_TO_WA, PLW_S_TO_WB, PLW_NR_TO_WA, PLW_NR_TO_WB, PLW_WIN_TO_WA, PLW_WIN_TO_WB, PLW_S_TO_WIN, PLW_WA_TO_WIN, PLW_WB_TO_WIN, PLW_R_TO_WIN, PLW_G_TO_WIN, PLW_NR_TO_WIN, PFLX_BLD_WL_A, PDQS_WL_A, PFLX_BLD_WL_B, PDQS_WL_B, PEMIT_LW_FAC, PIMB_WL, PRADHT_IN, PRAD_RF_WL, PRAD_RF_WIN, PRAD_WL_FL, PRAD_WL_MA, PRAD_WIN_FL, PRAD_WIN_MA, PCONV_WL_BLD, PCONV_WIN_BLD, PAC_WIN, PLOAD_IN_WL, PLOAD_IN_WIN)
subroutine urban_fluxes(TOP, T, B, DMT, HIMPLICIT_WIND, PT_CANYON, PPEW_A_COEF, PPEW_B_COEF, PEXNS, PRHOA, PVMOD, PH_TRAFFIC, PLE_TRAFFIC, PAC_WL, PCD, PDF_RF, PDN_RF, PDF_RD, PDN_RD, PRNSN_RF, PHSN_RF, PLESN_RF, PGSN_RF, PRNSN_RD, PHSN_RD, PLESN_RD, PGSN_RD, PMELT_RF, PDQS_RF, PMELT_RD, PDQS_RD, PDQS_WL_A, PDQS_WL_B, PFLX_BLD_RF, PFLX_BLD_WL_A, PFLX_BLD_WL_B, PFLX_BLD_FL, PFLX_BLD_MA, PE_SHADING, PLEW_RF, PRN_GR, PH_GR, PLE_GR, PGFLUX_GR, PLEW_RD, PLE_WL_A, PLE_WL_B, PMELT_BLT, PUSTAR_TWN)
subroutine teb(TOP, T, BOP, B, TIR, DMT, HIMPLICIT_WIND, PTSUN, PT_CANYON, PQ_CANYON, PU_CANYON, PT_LOWCAN, PQ_LOWCAN, PU_LOWCAN, PZ_LOWCAN, PPEW_A_COEF, PPEW_B_COEF, PPEW_A_COEF_LOWCAN, PPEW_B_COEF_LOWCAN, PPS, PPA, PEXNS, PEXNA, PTA, PQA, PRHOA, PLW_RAD, PRR, PSR, PZREF, PUREF, PVMOD, PH_TRAFFIC, PLE_TRAFFIC, PTSTEP, PDF_RF, PDN_RF, PDF_RD, PDN_RD, PQSAT_RF, PQSAT_RD, PDELT_RF, PDELT_RD, PTS_GARDEN, PLEW_RF, PUW_GR, PLEW_RD, PLE_WL_A, PLE_WL_B, PRNSN_RF, PHSN_RF, PLESN_RF, PGSN_RF, PMELT_RF, PRN_GR, PH_GR, PLE_GR, PGFLUX_GR, PDRAIN_GR, PRUNOFF_GR, PRNSN_RD, PHSN_RD, PLESN_RD, PGSN_RD, PMELT_RD, PUW_RD, PUW_RF, PDUWDU_RD, PDUWDU_RF, PUSTAR_TWN, PCD, PCDN, PCH_TWN, PRI_TWN, PRESA_TWN, PAC_RF, PAC_RD, PAC_WL, PAC_TOP, PAC_GARDEN, PAC_RF_WAT, PAC_RD_WAT, PLW_WA_TO_WB, PLW_WA_TO_R, PLW_WB_TO_R, PLW_WA_TO_NR, PLW_WB_TO_NR, PLW_R_TO_WA, PLW_R_TO_WB, PLW_G_TO_WA, PLW_G_TO_WB, PLW_S_TO_WA, PLW_S_TO_WB, PLW_S_TO_R, PLW_S_TO_NR, PLW_NR_TO_WA, PLW_NR_TO_WB, PLW_NR_TO_WIN, PLW_WA_TO_WIN, PLW_WB_TO_WIN, PLW_G_TO_WIN, PLW_R_TO_WIN, PLW_S_TO_WIN, PLW_WIN_TO_WA, PLW_WIN_TO_WB, PLW_WIN_TO_R, PLW_WIN_TO_NR, KDAY, PEMIT_LW_FAC, PEMIT_LW_RD, PT_RAD_IND, PHU_BLD, PTIME, PE_SHADING)
subroutine bld_e_budget(OTI_EVOL, PTSTEP, PBLD, PWALL_O_HOR, PRHOA, PT_ROOF, PT_WALL, PTI_BLD, PTS_FLOOR)
subroutine urban_snow_evol(T, B, PT_LWCN, PQ_LWCN, PU_LWCN, PTS_RF, PTS_RD, PTS_WL_A, PTS_WL_B, PPS, PTA, PQA, PRHOA, PLW_RAD, PSR, PZREF, PUREF, PVMOD, PTSTEP, PZ_LWCN, PDN_RF, PABS_SW_SN_RF, PABS_LW_SN_RF, PDN_RD, PABS_SW_SN_RD, PABS_LW_SN_RD, PRNSN_RF, PHSN_RF, PLESN_RF, PGSN_RF, PMELT_RF, PRNSN_RD, PHSN_RD, PLESN_RD, PGSN_RD, PMELT_RD, PLW_WA_TO_NR, PLW_WB_TO_NR, PLW_S_TO_NR, PLW_WIN_TO_NR, PDQS_SN_RF, PDQS_SN_RD)
subroutine teb_irrig(OIRRIG, PTSTEP, KMONTH, PSOLAR_TIME, PSTART_MONTH, PEND_MONTH, PSTART_HOUR, PEND_HOUR, P24H_IRRIG, PIRRIG)
subroutine road_layer_e_budget(T, B, PTSTEP, PDN_ROAD, PRHOA, PAC_ROAD, PAC_ROAD_WAT, PLW_RAD, PPS, PQSAT_ROAD, PDELT_ROAD, PEXNS, PABS_SW_ROAD, PGSNOW_ROAD, PQ_LOWCAN, PT_LOWCAN, PTS_WALL_A, PTS_WALL_B, PTSNOW_ROAD, PTS_GARDEN, PLW_WA_TO_R, PLW_WB_TO_R, PLW_S_TO_R, PLW_WIN_TO_R, PEMIT_LW_ROAD, PDQS_ROAD, PABS_LW_ROAD, PHFREE_ROAD, PLEFREE_ROAD, PIMB_ROAD, PRR)