7 ppew_a_coef, ppew_b_coef, &
9 ph_traffic, ple_traffic, ph_industry, ple_industry, &
10 pbld, proad, pwall_o_hor, pfrac_gr, &
11 pabs_sw_roof, pabs_lw_roof, &
12 pabs_sw_wall_a, pabs_lw_wall_a, &
13 pabs_sw_wall_b, pabs_lw_wall_b, &
14 pabs_sw_road, pabs_lw_road, &
16 pdf_roof, pdn_roof, pdf_road, pdn_road, &
17 prnsnow_roof, phsnow_roof, plesnow_roof, pgsnow_roof, &
18 prnsnow_road, phsnow_road, plesnow_road, pgsnow_road, &
19 pmelt_roof, pdqs_roof, &
20 pmelt_road, pdqs_road, &
21 pdqs_wall_a, pdqs_wall_b, &
22 pflx_bld_roof, pflx_bld_wall_a, pflx_bld_wall_b, &
24 pflx_bld_mass, pe_shading, hbem, pgr, pt_win1, ph_waste, &
25 ple_waste, pf_waste_can, pabs_sw_win, pabs_lw_win, pqin, &
26 pn_floor, plew_roof, plew_road, &
27 prn_greenroof, ph_greenroof, ple_greenroof, &
29 ph_roof, ph_road, ph_wall_a, ph_wall_b, &
31 pgflux_roof, prn_road, ple_road, pgflux_road, &
32 prn_wall_a, ple_wall_a, pgflux_wall_a, &
33 prn_wall_b, ple_wall_b, pgflux_wall_b, &
34 prn_strlroof, ph_strlroof, ple_strlroof, &
36 prn_blt, ph_blt, ple_blt, &
37 pgflux_blt, pmelt_blt, pqf_bld, pflx_bld, pdqs_blt, &
38 pqf_town, pustar_town, phvac_cool, phvac_heat )
89 USE yomhook
,ONLY : lhook, dr_hook
90 USE parkind1
,ONLY : jprb
97 CHARACTER(LEN=*),
INTENT(IN) :: himplicit_wind
100 LOGICAL,
INTENT(IN) :: ocanopy
101 REAL,
DIMENSION(:),
INTENT(IN) :: pt_canyon
103 REAL,
DIMENSION(:),
INTENT(IN) :: ppew_a_coef
104 REAL,
DIMENSION(:),
INTENT(IN) :: ppew_b_coef
105 REAL,
DIMENSION(:),
INTENT(IN) :: pexns
107 REAL,
DIMENSION(:),
INTENT(IN) :: prhoa
109 REAL,
DIMENSION(:),
INTENT(IN) :: pvmod
110 REAL,
DIMENSION(:),
INTENT(IN) :: ph_traffic
112 REAL,
DIMENSION(:),
INTENT(IN) :: ple_traffic
114 REAL,
DIMENSION(:),
INTENT(IN) :: ph_industry
116 REAL,
DIMENSION(:),
INTENT(IN) :: ple_industry
118 REAL,
DIMENSION(:),
INTENT(IN) :: pbld
119 REAL,
DIMENSION(:),
INTENT(IN) :: proad
120 REAL,
DIMENSION(:),
INTENT(IN) :: pwall_o_hor
121 REAL,
DIMENSION(:),
INTENT(IN) :: pfrac_gr
123 REAL,
DIMENSION(:),
INTENT(IN) :: pabs_sw_roof
124 REAL,
DIMENSION(:),
INTENT(IN) :: pabs_lw_roof
125 REAL,
DIMENSION(:),
INTENT(IN) :: pabs_sw_wall_a
126 REAL,
DIMENSION(:),
INTENT(IN) :: pabs_lw_wall_a
127 REAL,
DIMENSION(:),
INTENT(IN) :: pabs_sw_wall_b
128 REAL,
DIMENSION(:),
INTENT(IN) :: pabs_lw_wall_b
129 REAL,
DIMENSION(:),
INTENT(IN) :: pabs_sw_road
130 REAL,
DIMENSION(:),
INTENT(IN) :: pabs_lw_road
132 REAL,
DIMENSION(:),
INTENT(IN) :: pac_wall
135 REAL,
DIMENSION(:),
INTENT(IN) :: pcd
136 REAL,
DIMENSION(:),
INTENT(IN) :: pdf_roof
137 REAL,
DIMENSION(:),
INTENT(IN) :: pdn_roof
138 REAL,
DIMENSION(:),
INTENT(IN) :: pdf_road
139 REAL,
DIMENSION(:),
INTENT(IN) :: pdn_road
141 REAL,
DIMENSION(:),
INTENT(IN) :: prnsnow_roof
142 REAL,
DIMENSION(:),
INTENT(IN) :: phsnow_roof
143 REAL,
DIMENSION(:),
INTENT(IN) :: plesnow_roof
144 REAL,
DIMENSION(:),
INTENT(IN) :: pgsnow_roof
145 REAL,
DIMENSION(:),
INTENT(IN) :: prnsnow_road
146 REAL,
DIMENSION(:),
INTENT(IN) :: phsnow_road
147 REAL,
DIMENSION(:),
INTENT(IN) :: plesnow_road
148 REAL,
DIMENSION(:),
INTENT(IN) :: pgsnow_road
150 REAL,
DIMENSION(:),
INTENT(IN) :: pmelt_roof
151 REAL,
DIMENSION(:),
INTENT(IN) :: pdqs_roof
152 REAL,
DIMENSION(:),
INTENT(IN) :: pmelt_road
153 REAL,
DIMENSION(:),
INTENT(IN) :: pdqs_road
154 REAL,
DIMENSION(:),
INTENT(IN) :: pdqs_wall_a
155 REAL,
DIMENSION(:),
INTENT(IN) :: pdqs_wall_b
156 REAL,
DIMENSION(:),
INTENT(IN) :: pflx_bld_roof
157 REAL,
DIMENSION(:),
INTENT(IN) :: pflx_bld_wall_a
158 REAL,
DIMENSION(:),
INTENT(IN) :: pflx_bld_wall_b
159 REAL,
DIMENSION(:),
INTENT(IN) :: pflx_bld_floor
160 REAL,
DIMENSION(:),
INTENT(IN) :: pflx_bld_mass
161 REAL,
DIMENSION(:),
INTENT(IN) :: pe_shading
164 CHARACTER(LEN=3),
INTENT(IN) :: hbem
166 REAL,
DIMENSION(:),
INTENT(IN) :: pgr
167 REAL,
DIMENSION(:),
INTENT(IN) :: pt_win1
168 REAL,
DIMENSION(:),
INTENT(IN) :: ph_waste
169 REAL,
DIMENSION(:),
INTENT(IN) :: ple_waste
170 REAL,
DIMENSION(:),
INTENT(IN) :: pf_waste_can
171 REAL,
DIMENSION(:),
INTENT(IN) :: pabs_sw_win
172 REAL,
DIMENSION(:),
INTENT(IN) :: pabs_lw_win
173 REAL,
DIMENSION(:),
INTENT(IN) :: pqin
174 REAL,
DIMENSION(:),
INTENT(IN) :: pn_floor
176 REAL,
DIMENSION(:),
INTENT(IN) :: plew_roof
177 REAL,
DIMENSION(:),
INTENT(IN) :: plew_road
179 REAL,
DIMENSION(:),
INTENT(IN) :: prn_greenroof
180 REAL,
DIMENSION(:),
INTENT(IN) :: ph_greenroof
181 REAL,
DIMENSION(:),
INTENT(IN) :: ple_greenroof
182 REAL,
DIMENSION(:),
INTENT(IN) :: pgflux_greenroof
184 REAL,
DIMENSION(:),
INTENT(INOUT) :: ph_roof
185 REAL,
DIMENSION(:),
INTENT(INOUT) :: ph_road
187 REAL,
DIMENSION(:),
INTENT(INOUT) :: ph_wall_a
189 REAL,
DIMENSION(:),
INTENT(INOUT) :: ph_wall_b
192 REAL,
DIMENSION(:),
INTENT(OUT) :: prn_roof
193 REAL,
DIMENSION(:),
INTENT(OUT) :: ple_roof
194 REAL,
DIMENSION(:),
INTENT(OUT) :: pgflux_roof
195 REAL,
DIMENSION(:),
INTENT(OUT) :: prn_road
196 REAL,
DIMENSION(:),
INTENT(OUT) :: ple_road
198 REAL,
DIMENSION(:),
INTENT(OUT) :: pgflux_road
199 REAL,
DIMENSION(:),
INTENT(OUT) :: prn_wall_a
200 REAL,
DIMENSION(:),
INTENT(OUT) :: ple_wall_a
201 REAL,
DIMENSION(:),
INTENT(OUT) :: pgflux_wall_a
202 REAL,
DIMENSION(:),
INTENT(OUT) :: prn_wall_b
203 REAL,
DIMENSION(:),
INTENT(OUT) :: ple_wall_b
204 REAL,
DIMENSION(:),
INTENT(OUT) :: pgflux_wall_b
206 REAL,
DIMENSION(:),
INTENT(OUT) :: prn_strlroof
207 REAL,
DIMENSION(:),
INTENT(OUT) :: ph_strlroof
208 REAL,
DIMENSION(:),
INTENT(OUT) :: ple_strlroof
209 REAL,
DIMENSION(:),
INTENT(OUT) :: pgflux_strlroof
211 REAL,
DIMENSION(:),
INTENT(OUT) :: prn_blt
212 REAL,
DIMENSION(:),
INTENT(OUT) :: ph_blt
213 REAL,
DIMENSION(:),
INTENT(OUT) :: ple_blt
214 REAL,
DIMENSION(:),
INTENT(OUT) :: pgflux_blt
215 REAL,
DIMENSION(:),
INTENT(OUT) :: pmelt_blt
217 REAL,
DIMENSION(:),
INTENT(OUT) :: pqf_bld
218 REAL,
DIMENSION(:),
INTENT(OUT) :: pflx_bld
219 REAL,
DIMENSION(:),
INTENT(OUT) :: pdqs_blt
220 REAL,
DIMENSION(:),
INTENT(OUT) :: pqf_town
221 REAL,
DIMENSION(:),
INTENT(OUT) :: pustar_town
223 REAL,
DIMENSION(:),
INTENT(IN) :: phvac_cool
225 REAL,
DIMENSION(:),
INTENT(IN) :: phvac_heat
230 REAL,
DIMENSION(SIZE(PRHOA)) :: zh_roof_snowfree
231 REAL,
DIMENSION(SIZE(PRHOA)) :: zrn_roof_snowfree
232 REAL,
DIMENSION(SIZE(PRHOA)) :: zustar2
233 REAL,
DIMENSION(SIZE(PRHOA)) :: zvmod
235 REAL(KIND=JPRB) :: zhook_handle
238 IF (lhook) CALL dr_hook(
'URBAN_FLUXES',0,zhook_handle)
246 zrn_roof_snowfree(:) = pabs_sw_roof(:) + pabs_lw_roof(:)
250 zh_roof_snowfree(:) = ph_roof(:)
259 prn_road(:) = pabs_sw_road(:) + pabs_lw_road(:)
268 prn_wall_a(:) = (pabs_sw_wall_a(:) + pabs_lw_wall_a(:)) * (1.-pgr(:)) &
269 + (pabs_sw_win(:) + pabs_lw_win(:)) * pgr(:)
270 prn_wall_b(:) = (pabs_sw_wall_b(:) + pabs_lw_wall_b(:)) * (1.-pgr(:)) &
271 + (pabs_sw_win(:) + pabs_lw_win(:)) * pgr(:)
275 pgflux_wall_a(:) = prn_wall_a(:) - ph_wall_a(:)
276 pgflux_wall_b(:) = prn_wall_b(:) - ph_wall_b(:)
281 ph_wall_a(:) = (1. - pgr(:)) * ph_wall_a(:) + pgr(:) * &
282 ( pac_wall(:)*xcpd*prhoa(:)/pexns(:) * (pt_win1(:)-pt_canyon(:)) + pe_shading(:) ) &
283 + pf_waste_can(:) * ph_waste(:) / pwall_o_hor(:)
284 ph_wall_b(:) = (1. - pgr(:)) * ph_wall_b(:) + pgr(:) * &
285 ( pac_wall(:)*xcpd*prhoa(:)/pexns(:) * (pt_win1(:)-pt_canyon(:)) + pe_shading(:) ) &
286 + pf_waste_can(:) * ph_waste(:) / pwall_o_hor(:)
288 ple_wall_a(:) = pf_waste_can(:) * ple_waste(:) / pwall_o_hor(:)
289 ple_wall_b(:) = pf_waste_can(:) * ple_waste(:) / pwall_o_hor(:)
301 pgflux_road(:) = pdf_road(:) * (prn_road(:) - ph_road(:) - plew_road(:) ) &
302 + pdn_road(:) * pgsnow_road(:)
306 prn_road(:) = prn_road(:) * pdf_road(:) + prnsnow_road(:) * pdn_road(:)
314 ph_road(:) = ph_road(:) * pdf_road(:) + phsnow_road(:) * pdn_road(:)
317 ple_road(:) = plew_road(:) * pdf_road(:) + plesnow_road(:) * pdn_road(:)
324 pgflux_strlroof(:) = pdf_roof(:) * (zrn_roof_snowfree(:) - zh_roof_snowfree(:) - plew_roof(:)) &
325 + pdn_roof(:) * pgsnow_roof(:)
326 pgflux_roof(:) = (1.-pfrac_gr(:)) * pgflux_strlroof(:) + pfrac_gr(:) * pgflux_greenroof(:)
331 prn_strlroof(:) = zrn_roof_snowfree(:) * pdf_roof(:) + prnsnow_roof(:) * pdn_roof(:)
332 prn_roof(:) = (1.-pfrac_gr(:)) * prn_strlroof(:) + pfrac_gr(:) * prn_greenroof(:)
340 ph_strlroof(:) = ph_roof(:) * pdf_roof(:) + phsnow_roof(:) * pdn_roof(:)
341 ph_roof(:) = (1.-pfrac_gr(:)) * ph_strlroof(:) + pfrac_gr(:) * ph_greenroof(:) &
342 + (1 - pf_waste_can(:)) * ph_waste(:) / pbld(:)
346 ple_strlroof(:) = plew_roof(:) * pdf_roof(:) + plesnow_roof(:) * pdn_roof(:)
347 ple_roof(:) = (1.-pfrac_gr(:)) * ple_strlroof(:) + pfrac_gr(:) * ple_greenroof(:) &
348 + (1 - pf_waste_can(:)) * ple_waste(:)/pbld(:)
355 pustar_town(:) = xundef
357 IF (.NOT. ocanopy)
THEN
362 IF(himplicit_wind==
'OLD')
THEN
364 zustar2(:) = (pcd(:)*pvmod(:)*ppew_b_coef(:))/ &
365 (1.0-prhoa(:)*pcd(:)*pvmod(:)*ppew_a_coef(:))
368 zustar2(:) = (pcd(:)*pvmod(:)*(2.*ppew_b_coef(:)-pvmod(:)))/ &
369 (1.0-2.0*prhoa(:)*pcd(:)*pvmod(:)*ppew_a_coef(:))
371 zvmod(:) = prhoa(:)*ppew_a_coef(:)*zustar2(:) + ppew_b_coef(:)
372 zvmod(:) = max(zvmod(:),0.)
374 WHERE(ppew_a_coef(:)/= 0.)
375 zustar2(:) = max( ( zvmod(:) - ppew_b_coef(:) ) / (prhoa(:)*ppew_a_coef(:)), 0.)
380 pustar_town(:) = sqrt(zustar2(:))
392 prn_blt(:) = ( pbld(:) * prn_roof(:) &
393 + proad(:) * prn_road(:) &
394 + 0.5*pwall_o_hor(:) * prn_wall_a(:) &
395 + 0.5*pwall_o_hor(:) * prn_wall_b(:)) &
396 / (proad(:) + pbld(:))
398 ph_blt(:) = ( pbld(:) * ph_roof(:) &
399 + proad(:) * ph_road(:) &
400 + 0.5*pwall_o_hor(:) * ph_wall_a(:) &
401 + 0.5*pwall_o_hor(:) * ph_wall_b(:)) &
402 / (proad(:) + pbld(:))
404 ple_blt(:) = ( pbld(:) * ple_roof(:) &
405 + proad(:) * ple_road(:) &
406 + 0.5*pwall_o_hor(:) * ple_wall_a(:) &
407 + 0.5*pwall_o_hor(:) * ple_wall_b(:)) &
408 / (proad(:) + pbld(:))
410 pgflux_blt(:) = ( pbld(:) * pgflux_roof(:) &
411 + proad(:) * pgflux_road(:) &
412 + 0.5*pwall_o_hor(:) * pgflux_wall_a(:) &
413 + 0.5*pwall_o_hor(:) * pgflux_wall_b(:)) &
414 / (proad(:) + pbld(:))
416 pmelt_blt(:) = ( pbld(:) * pmelt_roof(:) * pdn_roof(:) &
417 + proad(:) * pmelt_road(:) * pdn_road(:)) &
418 / (proad(:) + pbld(:))
420 pdqs_blt(:) = ( pbld(:) * pdqs_roof(:) &
421 + proad(:) * pdqs_road(:) &
422 + 0.5*pwall_o_hor(:) * pdqs_wall_a(:) &
423 + 0.5*pwall_o_hor(:) * pdqs_wall_b(:) ) &
424 / (proad(:) + pbld(:))
426 IF (hbem ==
"DEF")
THEN
427 pqf_bld(:) = ( zh_roof_snowfree(:) + plew_roof(:) + &
428 pdqs_roof(:) - zrn_roof_snowfree(:) ) * pdf_roof(:) &
429 + ( pdqs_roof(:) - pgsnow_roof(:) ) * pdn_roof(:) &
430 + 0.5*pwall_o_hor(:)/pbld(:) * ( ph_wall_a(:) + ple_wall_a(:) + pdqs_wall_a(:) - prn_wall_a(:) ) &
431 + 0.5*pwall_o_hor(:)/pbld(:) * ( ph_wall_b(:) + ple_wall_b(:) + pdqs_wall_b(:) - prn_wall_b(:) )
433 ELSEIF (hbem ==
"BEM")
THEN
434 pqf_bld(:) = pqin(:)*pn_floor(:) + phvac_cool(:) + phvac_heat(:)
435 pflx_bld(:)= pflx_bld_roof(:) + 0.5*pwall_o_hor(:)/pbld(:)*pflx_bld_wall_a(:) &
436 + 0.5*pwall_o_hor(:)/pbld(:)*pflx_bld_wall_b(:) &
437 + pflx_bld_floor(:) + pflx_bld_mass(:)
440 pqf_town(:)= pbld(:)*pqf_bld(:) + ph_traffic(:) + ph_industry(:) + ple_traffic(:) + ple_industry(:)
446 IF (lhook) CALL dr_hook(
'URBAN_FLUXES',1,zhook_handle)
subroutine urban_fluxes(HIMPLICIT_WIND, OCANOPY, PT_CANYON, PPEW_A_COEF, PPEW_B_COEF, PEXNS, PRHOA, PVMOD, PH_TRAFFIC, PLE_TRAFFIC, PH_INDUSTRY, PLE_INDUSTRY, PBLD, PROAD, PWALL_O_HOR, PFRAC_GR, PABS_SW_ROOF, PABS_LW_ROOF, PABS_SW_WALL_A, PABS_LW_WALL_A, PABS_SW_WALL_B, PABS_LW_WALL_B, PABS_SW_ROAD, PABS_LW_ROAD, PAC_WALL, PCD, PDF_ROOF, PDN_ROOF, PDF_ROAD, PDN_ROAD, PRNSNOW_ROOF, PHSNOW_ROOF, PLESNOW_ROOF, PGSNOW_ROOF, PRNSNOW_ROAD, PHSNOW_ROAD, PLESNOW_ROAD, PGSNOW_ROAD, PMELT_ROOF, PDQS_ROOF, PMELT_ROAD, PDQS_ROAD, PDQS_WALL_A, PDQS_WALL_B, PFLX_BLD_ROOF, PFLX_BLD_WALL_A, PFLX_BLD_WALL_B, PFLX_BLD_FLOOR, PFLX_BLD_MASS, PE_SHADING, HBEM, PGR, PT_WIN1, PH_WASTE, PLE_WASTE, PF_WASTE_CAN, PABS_SW_WIN, PABS_LW_WIN, PQIN, PN_FLOOR, PLEW_ROOF, PLEW_ROAD, PRN_GREENROOF, PH_GREENROOF, PLE_GREENROOF, PGFLUX_GREENROOF, PH_ROOF, PH_ROAD, PH_WALL_A, PH_WALL_B, PRN_ROOF, PLE_ROOF, PGFLUX_ROOF, PRN_ROAD, PLE_ROAD, PGFLUX_ROAD, PRN_WALL_A, PLE_WALL_A, PGFLUX_WALL_A, PRN_WALL_B, PLE_WALL_B, PGFLUX_WALL_B, PRN_STRLROOF, PH_STRLROOF, PLE_STRLROOF, PGFLUX_STRLROOF, PRN_BLT, PH_BLT, PLE_BLT, PGFLUX_BLT, PMELT_BLT, PQF_BLD, PFLX_BLD, PDQS_BLT, PQF_TOWN, PUSTAR_TOWN, PHVAC_COOL, PHVAC_HEAT)