6 SUBROUTINE urban_fluxes(TOP, T, B, DMT, HIMPLICIT_WIND, PT_CANYON, PPEW_A_COEF, PPEW_B_COEF, &
7 PEXNS, PRHOA, PVMOD, PH_TRAFFIC, PLE_TRAFFIC, PAC_WL, PCD, PDF_RF, &
8 PDN_RF, PDF_RD, PDN_RD, PRNSN_RF, PHSN_RF, PLESN_RF, PGSN_RF, &
9 PRNSN_RD, PHSN_RD, PLESN_RD, PGSN_RD, PMELT_RF, PDQS_RF, PMELT_RD, &
10 PDQS_RD, PDQS_WL_A, PDQS_WL_B, PFLX_BLD_RF, PFLX_BLD_WL_A, &
11 PFLX_BLD_WL_B, PFLX_BLD_FL, PFLX_BLD_MA, PE_SHADING, PLEW_RF, &
12 PRN_GR, PH_GR, PLE_GR, PGFLUX_GR, &
13 PLEW_RD, PLE_WL_A, PLE_WL_B, PMELT_BLT, PUSTAR_TWN )
77 TYPE(
teb_t),
INTENT(INOUT) :: T
78 TYPE(
bem_t),
INTENT(INOUT) :: B
81 CHARACTER(LEN=*),
INTENT(IN) :: HIMPLICIT_WIND
84 REAL,
DIMENSION(:),
INTENT(IN) :: PT_CANYON
86 REAL,
DIMENSION(:),
INTENT(IN) :: PPEW_A_COEF
87 REAL,
DIMENSION(:),
INTENT(IN) :: PPEW_B_COEF
88 REAL,
DIMENSION(:),
INTENT(IN) :: PEXNS
90 REAL,
DIMENSION(:),
INTENT(IN) :: PRHOA
92 REAL,
DIMENSION(:),
INTENT(IN) :: PVMOD
93 REAL,
DIMENSION(:),
INTENT(IN) :: PH_TRAFFIC
95 REAL,
DIMENSION(:),
INTENT(IN) :: PLE_TRAFFIC
97 REAL,
DIMENSION(:),
INTENT(IN) :: PAC_WL
100 REAL,
DIMENSION(:),
INTENT(IN) :: PCD
101 REAL,
DIMENSION(:),
INTENT(IN) :: PDF_RF
102 REAL,
DIMENSION(:),
INTENT(IN) :: PDN_RF
103 REAL,
DIMENSION(:),
INTENT(IN) :: PDF_RD
104 REAL,
DIMENSION(:),
INTENT(IN) :: PDN_RD
106 REAL,
DIMENSION(:),
INTENT(IN) :: PRNSN_RF
107 REAL,
DIMENSION(:),
INTENT(IN) :: PHSN_RF
108 REAL,
DIMENSION(:),
INTENT(IN) :: PLESN_RF
109 REAL,
DIMENSION(:),
INTENT(IN) :: PGSN_RF
110 REAL,
DIMENSION(:),
INTENT(IN) :: PRNSN_RD
111 REAL,
DIMENSION(:),
INTENT(IN) :: PHSN_RD
112 REAL,
DIMENSION(:),
INTENT(IN) :: PLESN_RD
113 REAL,
DIMENSION(:),
INTENT(IN) :: PGSN_RD
115 REAL,
DIMENSION(:),
INTENT(IN) :: PMELT_RF
116 REAL,
DIMENSION(:),
INTENT(IN) :: PDQS_RF
117 REAL,
DIMENSION(:),
INTENT(IN) :: PMELT_RD
118 REAL,
DIMENSION(:),
INTENT(IN) :: PDQS_RD
119 REAL,
DIMENSION(:),
INTENT(IN) :: PDQS_WL_A
120 REAL,
DIMENSION(:),
INTENT(IN) :: PDQS_WL_B
121 REAL,
DIMENSION(:),
INTENT(IN) :: PFLX_BLD_RF
122 REAL,
DIMENSION(:),
INTENT(IN) :: PFLX_BLD_WL_A
123 REAL,
DIMENSION(:),
INTENT(IN) :: PFLX_BLD_WL_B
124 REAL,
DIMENSION(:),
INTENT(IN) :: PFLX_BLD_FL
125 REAL,
DIMENSION(:),
INTENT(IN) :: PFLX_BLD_MA
126 REAL,
DIMENSION(:),
INTENT(IN) :: PE_SHADING
130 REAL,
DIMENSION(:),
INTENT(IN) :: PLEW_RF
131 REAL,
DIMENSION(:),
INTENT(IN) :: PLEW_RD
132 REAL,
DIMENSION(:),
INTENT(IN) :: PRN_GR
133 REAL,
DIMENSION(:),
INTENT(IN) :: PH_GR
134 REAL,
DIMENSION(:),
INTENT(IN) :: PLE_GR
135 REAL,
DIMENSION(:),
INTENT(IN) :: PGFLUX_GR
137 REAL,
DIMENSION(:),
INTENT(OUT) :: PLE_WL_A
138 REAL,
DIMENSION(:),
INTENT(OUT) :: PLE_WL_B
140 REAL,
DIMENSION(:),
INTENT(OUT) :: PMELT_BLT
142 REAL,
DIMENSION(:),
INTENT(OUT) :: PUSTAR_TWN
146 REAL,
DIMENSION(SIZE(PRHOA)) :: ZH_RF_SNFREE
147 REAL,
DIMENSION(SIZE(PRHOA)) :: ZRN_RF_SNFREE
148 REAL,
DIMENSION(SIZE(PRHOA)) :: ZUSTAR2
149 REAL,
DIMENSION(SIZE(PRHOA)) :: ZVMOD
150 REAL,
DIMENSIOn(SIZE(PRHOA)) :: ZINTER
152 REAL(KIND=JPRB) :: ZHOOK_HANDLE
163 zrn_rf_snfree(:) = dmt%XABS_SW_ROOF(:) + dmt%XABS_LW_ROOF(:)
167 zh_rf_snfree(:) = dmt%XH_ROOF(:)
176 dmt%XRN_ROAD(:) = dmt%XABS_SW_ROAD(:) + dmt%XABS_LW_ROAD(:)
185 dmt%XRN_WALL_A(:) = dmt%XABS_SW_WALL_A(:) + dmt%XABS_LW_WALL_A(:)
186 dmt%XRN_WALL_B(:) = dmt%XABS_SW_WALL_B(:) + dmt%XABS_LW_WALL_B(:)
188 IF (top%CBEM==
"BEM")
THEN 189 zinter(:) = dmt%XABS_SW_WIN (:) + dmt%XABS_LW_WIN (:)
190 dmt%XRN_WALL_A(:) = dmt%XRN_WALL_A(:) * (1.-b%XGR(:)) + zinter(:) * b%XGR(:)
191 dmt%XRN_WALL_B(:) = dmt%XRN_WALL_B(:) * (1.-b%XGR(:)) + zinter(:) * b%XGR(:)
196 dmt%XGFLUX_WALL_A(:) = dmt%XRN_WALL_A(:) - dmt%XH_WALL_A(:)
197 dmt%XGFLUX_WALL_B(:) = dmt%XRN_WALL_B(:) - dmt%XH_WALL_B(:)
202 zinter(:) = pac_wl(:)*
xcpd*prhoa(:)/pexns(:) * (b%XT_WIN1(:)-pt_canyon(:)) + pe_shading(:)
204 dmt%XH_WALL_A(:) = (1. - b%XGR(:)) * dmt%XH_WALL_A(:) + b%XGR(:) * zinter(:)
205 dmt%XH_WALL_B(:) = (1. - b%XGR(:)) * dmt%XH_WALL_B(:) + b%XGR(:) * zinter(:)
207 IF (top%CBEM==
"BEM")
THEN 208 zinter(:) = b%XF_WASTE_CAN(:) * dmt%XH_WASTE(:) / t%XWALL_O_HOR(:)
209 dmt%XH_WALL_A(:) = dmt%XH_WALL_A(:) + zinter(:)
210 dmt%XH_WALL_B(:) = dmt%XH_WALL_B(:) + zinter(:)
213 IF (top%CBEM==
"BEM")
THEN 215 zinter(:) = b%XF_WASTE_CAN(:) * dmt%XLE_WASTE(:) / t%XWALL_O_HOR(:)
219 ple_wl_a(:) = zinter(:)
220 ple_wl_b(:) = zinter(:)
232 dmt%XGFLUX_ROAD (:) = pdf_rd(:) * (dmt%XRN_ROAD(:) - dmt%XH_ROAD (:) - plew_rd(:) )&
233 + pdn_rd(:) * pgsn_rd(:)
237 dmt%XRN_ROAD(:) = dmt%XRN_ROAD(:) * pdf_rd(:) + prnsn_rd(:) * pdn_rd(:)
245 dmt%XH_ROAD (:) = dmt%XH_ROAD (:) * pdf_rd(:) + phsn_rd(:) * pdn_rd(:)
248 dmt%XLE_ROAD (:) = plew_rd(:) * pdf_rd(:) + plesn_rd(:) * pdn_rd(:)
255 dmt%XGFLUX_STRLROOF(:) = pdf_rf(:) * (zrn_rf_snfree(:) - zh_rf_snfree(:) - plew_rf(:)) + pdn_rf(:) * pgsn_rf(:)
256 dmt%XGFLUX_ROOF (:) = (1.-t%XGREENROOF(:)) * dmt%XGFLUX_STRLROOF(:) + t%XGREENROOF(:) * pgflux_gr(:)
261 dmt%XRN_STRLROOF (:) = zrn_rf_snfree(:) * pdf_rf(:) + prnsn_rf(:) * pdn_rf(:)
262 dmt%XRN_ROOF (:) = (1.-t%XGREENROOF(:)) * dmt%XRN_STRLROOF(:) + t%XGREENROOF(:) * prn_gr(:)
270 dmt%XH_STRLROOF (:) = dmt%XH_ROOF(:) * pdf_rf(:) + phsn_rf(:) * pdn_rf(:)
271 dmt%XH_ROOF (:) = (1.-t%XGREENROOF(:)) * dmt%XH_STRLROOF(:) + t%XGREENROOF(:) * ph_gr(:)
276 dmt%XLE_STRLROOF (:) = plew_rf(:) * pdf_rf(:) + plesn_rf(:) * pdn_rf(:)
277 dmt%XLE_ROOF (:) = (1.-t%XGREENROOF(:)) * dmt%XLE_STRLROOF(:) + t%XGREENROOF(:) * ple_gr(:)
279 IF (top%CBEM==
"BEM")
THEN 280 dmt%XH_ROOF (:) = dmt%XH_ROOF (:) + (1 - b%XF_WASTE_CAN(:)) * dmt%XH_WASTE (:)/t%XBLD(:)
281 dmt%XLE_ROOF(:) = dmt%XLE_ROOF(:) + (1 - b%XF_WASTE_CAN(:)) * dmt%XLE_WASTE(:)/t%XBLD(:)
291 IF (.NOT. top%LCANOPY)
THEN 296 IF(himplicit_wind==
'OLD')
THEN 298 zustar2(:) = (pcd(:)*pvmod(:)*ppew_b_coef(:))/ (1.0-prhoa(:)*pcd(:)*pvmod(:)*ppew_a_coef(:))
301 zustar2(:) = (pcd(:)*pvmod(:)*(2.*ppew_b_coef(:)-pvmod(:)))/ &
302 (1.0-2.0*prhoa(:)*pcd(:)*pvmod(:)*ppew_a_coef(:))
304 zvmod(:) = prhoa(:)*ppew_a_coef(:)*zustar2(:) + ppew_b_coef(:)
305 zvmod(:) = max(zvmod(:),0.)
307 WHERE(ppew_a_coef(:)/= 0.)
308 zustar2(:) = max( ( zvmod(:) - ppew_b_coef(:) ) / (prhoa(:)*ppew_a_coef(:)), 0.)
313 pustar_twn(:) = sqrt(zustar2(:))
325 dmt%XRN_BLT (:) = ( t%XBLD(:) * dmt%XRN_ROOF(:) &
326 + t%XROAD(:) * dmt%XRN_ROAD(:) &
327 + 0.5*t%XWALL_O_HOR(:) * dmt%XRN_WALL_A(:) &
328 + 0.5*t%XWALL_O_HOR(:) * dmt%XRN_WALL_B(:)) &
329 / (t%XROAD(:) + t%XBLD(:))
331 dmt%XH_BLT (:) = ( t%XBLD(:) * dmt%XH_ROOF(:) &
332 + t%XROAD(:) * dmt%XH_ROAD(:) &
333 + 0.5*t%XWALL_O_HOR(:) * dmt%XH_WALL_A(:) &
334 + 0.5*t%XWALL_O_HOR(:) * dmt%XH_WALL_B(:)) &
335 / (t%XROAD(:) + t%XBLD(:))
337 dmt%XLE_BLT (:) = ( t%XBLD(:) * dmt%XLE_ROOF (:) &
338 + t%XROAD(:) * dmt%XLE_ROAD (:) &
339 + 0.5*t%XWALL_O_HOR(:) * ple_wl_a(:) &
340 + 0.5*t%XWALL_O_HOR(:) * ple_wl_b(:)) &
341 / (t%XROAD(:) + t%XBLD(:))
343 dmt%XGFLUX_BLT (:) = ( t%XBLD(:) * dmt%XGFLUX_ROOF (:) &
344 + t%XROAD(:) * dmt%XGFLUX_ROAD (:) &
345 + 0.5*t%XWALL_O_HOR(:) * dmt%XGFLUX_WALL_A (:) &
346 + 0.5*t%XWALL_O_HOR(:) * dmt%XGFLUX_WALL_B (:)) &
347 / (t%XROAD(:) + t%XBLD(:))
349 pmelt_blt(:) = ( t%XBLD(:) * pmelt_rf(:) * pdn_rf(:) &
350 + t%XROAD(:) * pmelt_rd(:) * pdn_rd(:)) &
351 / (t%XROAD(:) + t%XBLD(:))
353 dmt%XDQS_TOWN (:) = ( t%XBLD(:) * pdqs_rf(:) &
354 + t%XROAD(:) * pdqs_rd(:) &
355 + 0.5*t%XWALL_O_HOR(:) * pdqs_wl_a(:) &
356 + 0.5*t%XWALL_O_HOR(:) * pdqs_wl_b(:) ) &
357 / (t%XROAD(:) + t%XBLD(:))
359 IF (top%CBEM ==
"DEF")
THEN 360 dmt%XQF_BLD(:) = ( zh_rf_snfree(:) + plew_rf(:) + &
361 pdqs_rf(:) - zrn_rf_snfree(:) ) * pdf_rf(:) &
362 + ( pdqs_rf(:) - pgsn_rf(:) ) * pdn_rf(:) &
363 + 0.5*t%XWALL_O_HOR(:)/t%XBLD(:) * ( dmt%XH_WALL_A(:) + ple_wl_a(:) + pdqs_wl_a(:) - dmt%XRN_WALL_A(:) ) &
364 + 0.5*t%XWALL_O_HOR(:)/t%XBLD(:) * ( dmt%XH_WALL_B(:) + ple_wl_b(:) + pdqs_wl_b(:) - dmt%XRN_WALL_B(:) )
366 ELSEIF (top%CBEM ==
"BEM")
THEN 367 dmt%XQF_BLD(:) = dmt%XQIN(:)*b%XN_FLOOR(:) + dmt%XHVAC_COOL(:) + dmt%XHVAC_HEAT(:)
368 dmt%XFLX_BLD(:)= pflx_bld_rf(:) + 0.5*t%XWALL_O_HOR(:)/t%XBLD(:)*pflx_bld_wl_a(:) &
369 + 0.5*t%XWALL_O_HOR(:)/t%XBLD(:)*pflx_bld_wl_b(:) &
370 + pflx_bld_fl(:) + pflx_bld_ma(:)
373 dmt%XQF_TOWN(:)= t%XBLD(:)*dmt%XQF_BLD(:) + ph_traffic(:) + t%XH_INDUSTRY(:) + ple_traffic(:) + t%XLE_INDUSTRY(:)
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)