SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
urban_fluxes.F90
Go to the documentation of this file.
1 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SFX_LIC for details. version 1.
5 ! #########
6  SUBROUTINE urban_fluxes(HIMPLICIT_WIND, OCANOPY, PT_CANYON, &
7  ppew_a_coef, ppew_b_coef, &
8  pexns, prhoa, pvmod, &
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, &
15  pac_wall, pcd, &
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, &
23  pflx_bld_floor, &
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, &
28  pgflux_greenroof, &
29  ph_roof, ph_road, ph_wall_a, ph_wall_b, &
30  prn_roof, ple_roof, &
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, &
35  pgflux_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 )
39 ! ##########################################################################
40 !
41 !!**** *URBAN_FLUXES* computes fluxes on urbanized surfaces
42 !!
43 !! PURPOSE
44 !! -------
45 !
46 !
47 !!** METHOD
48 ! ------
49 !
50 !
51 !
52 !
53 !! EXTERNAL
54 !! --------
55 !!
56 !!
57 !! IMPLICIT ARGUMENTS
58 !! ------------------
59 !!
60 !! MODD_CST
61 !!
62 !!
63 !! REFERENCE
64 !! ---------
65 !!
66 !!
67 !! AUTHOR
68 !! ------
69 !!
70 !! V. Masson * Meteo-France *
71 !!
72 !! MODIFICATIONS
73 !! -------------
74 !! Original 23/01/98
75 !! 12/02 (A. Lemonsu) modifications of emissivity and Tstown
76 !! 07/07 (P. LeMoigne) expression of latent heat fluxes as
77 !! functions of w'theta' instead of w'T'
78 !! 17/10 (G. Pigeon) computation of anthropogenic heat due
79 !! to domestic heating
80 !! Modified 09/2012 : B. Decharme New wind implicitation
81 !-------------------------------------------------------------------------------
82 !
83 !* 0. DECLARATIONS
84 ! ------------
85 !
86 USE modd_surf_par, ONLY : xundef
87 USE modd_csts, ONLY : xcpd
88 !
89 USE yomhook ,ONLY : lhook, dr_hook
90 USE parkind1 ,ONLY : jprb
91 !
92 IMPLICIT NONE
93 !
94 !* 0.1 declarations of arguments
95 !
96 !
97  CHARACTER(LEN=*), INTENT(IN) :: himplicit_wind ! wind implicitation option
98 ! ! 'OLD' = direct
99 ! ! 'NEW' = Taylor serie, order 1
100 LOGICAL, INTENT(IN) :: ocanopy ! is canopy active ?
101 REAL, DIMENSION(:), INTENT(IN) :: pt_canyon ! canyon air temperature
102 
103 REAL, DIMENSION(:), INTENT(IN) :: ppew_a_coef ! implicit coefficients
104 REAL, DIMENSION(:), INTENT(IN) :: ppew_b_coef ! for wind coupling
105 REAL, DIMENSION(:), INTENT(IN) :: pexns ! surface exner function
106 
107 REAL, DIMENSION(:), INTENT(IN) :: prhoa ! air density
108  ! at the lowest level
109 REAL, DIMENSION(:), INTENT(IN) :: pvmod ! module of the horizontal wind
110 REAL, DIMENSION(:), INTENT(IN) :: ph_traffic ! anthropogenic sensible
111 ! ! heat fluxes due to traffic
112 REAL, DIMENSION(:), INTENT(IN) :: ple_traffic ! anthropogenic latent
113 ! ! heat fluxes due to traffic
114 REAL, DIMENSION(:), INTENT(IN) :: ph_industry ! anthropogenic sensible
115 ! ! heat fluxes due to factories
116 REAL, DIMENSION(:), INTENT(IN) :: ple_industry ! anthropogenic latent
117 ! ! heat fluxes due to factories
118 REAL, DIMENSION(:), INTENT(IN) :: pbld ! fraction of buildings
119 REAL, DIMENSION(:), INTENT(IN) :: proad ! fraction of roads
120 REAL, DIMENSION(:), INTENT(IN) :: pwall_o_hor ! wall Surf. / (bld+road+green) Surf.
121 REAL, DIMENSION(:), INTENT(IN) :: pfrac_gr ! Fraction of green roofs
122 !
123 REAL, DIMENSION(:), INTENT(IN) :: pabs_sw_roof ! absorbed SW rad. by roof
124 REAL, DIMENSION(:), INTENT(IN) :: pabs_lw_roof ! absorbed LW rad. by roof
125 REAL, DIMENSION(:), INTENT(IN) :: pabs_sw_wall_a! absorbed SW rad. by wall A
126 REAL, DIMENSION(:), INTENT(IN) :: pabs_lw_wall_a! absorbed LW rad. by wall A
127 REAL, DIMENSION(:), INTENT(IN) :: pabs_sw_wall_b! absorbed SW rad. by wall B
128 REAL, DIMENSION(:), INTENT(IN) :: pabs_lw_wall_b! absorbed LW rad. by wall B
129 REAL, DIMENSION(:), INTENT(IN) :: pabs_sw_road ! absorbed SW rad. by road
130 REAL, DIMENSION(:), INTENT(IN) :: pabs_lw_road ! absorbed LW rad. by road
131 !
132 REAL, DIMENSION(:), INTENT(IN) :: pac_wall ! surface conductance
133 ! ! for heat transfer
134 ! ! between wall and canyon
135 REAL, DIMENSION(:), INTENT(IN) :: pcd ! drag coefficient
136 REAL, DIMENSION(:), INTENT(IN) :: pdf_roof ! snow-free roof fraction
137 REAL, DIMENSION(:), INTENT(IN) :: pdn_roof ! snow-covered roof fraction
138 REAL, DIMENSION(:), INTENT(IN) :: pdf_road ! snow-free road fraction
139 REAL, DIMENSION(:), INTENT(IN) :: pdn_road ! snow-covered road fraction
140 !
141 REAL, DIMENSION(:), INTENT(IN) :: prnsnow_roof ! net radiation over snow
142 REAL, DIMENSION(:), INTENT(IN) :: phsnow_roof ! sensible heat flux over snow
143 REAL, DIMENSION(:), INTENT(IN) :: plesnow_roof ! latent heat flux over snow
144 REAL, DIMENSION(:), INTENT(IN) :: pgsnow_roof ! flux under the snow
145 REAL, DIMENSION(:), INTENT(IN) :: prnsnow_road ! net radiation over snow
146 REAL, DIMENSION(:), INTENT(IN) :: phsnow_road ! sensible heat flux over snow
147 REAL, DIMENSION(:), INTENT(IN) :: plesnow_road ! latent heat flux over snow
148 REAL, DIMENSION(:), INTENT(IN) :: pgsnow_road ! flux under the snow
149 !
150 REAL, DIMENSION(:), INTENT(IN) :: pmelt_roof ! snow melting on roof
151 REAL, DIMENSION(:), INTENT(IN) :: pdqs_roof ! storage inside roofs
152 REAL, DIMENSION(:), INTENT(IN) :: pmelt_road ! snow melting on road
153 REAL, DIMENSION(:), INTENT(IN) :: pdqs_road ! storage inside roads
154 REAL, DIMENSION(:), INTENT(IN) :: pdqs_wall_a ! storage inside walls
155 REAL, DIMENSION(:), INTENT(IN) :: pdqs_wall_b ! storage inside walls
156 REAL, DIMENSION(:), INTENT(IN) :: pflx_bld_roof! heat flx from bld to roof
157 REAL, DIMENSION(:), INTENT(IN) :: pflx_bld_wall_a! heat flx from bld to wall A
158 REAL, DIMENSION(:), INTENT(IN) :: pflx_bld_wall_b! heat flx from bld to wall B
159 REAL, DIMENSION(:), INTENT(IN) :: pflx_bld_floor! heat flx from bld to floor
160 REAL, DIMENSION(:), INTENT(IN) :: pflx_bld_mass! heat flx from bld to mass
161 REAL, DIMENSION(:), INTENT(IN) :: pe_shading ! energy not ref., nor absorbed, nor
162  !trans. by glazing [W
163  !m-2(win)]
164  CHARACTER(LEN=3), INTENT(IN) :: hbem ! Building Energy model 'DEF' or 'BEM'
165 !
166 REAL, DIMENSION(:), INTENT(IN) :: pgr ! glazing ratio
167 REAL, DIMENSION(:), INTENT(IN) :: pt_win1 ! Outdoor window temperature [K]
168 REAL, DIMENSION(:), INTENT(IN) :: ph_waste ! sensible waste heat released by HVAC systems [W m-2(urb)]
169 REAL, DIMENSION(:), INTENT(IN) :: ple_waste ! latent waste heat released by HVAC systems [W m-2(urb)]
170 REAL, DIMENSION(:), INTENT(IN) :: pf_waste_can ! fraction of waste heat released into the canyon
171 REAL, DIMENSION(:), INTENT(IN) :: pabs_sw_win ! absorbed SW radiation by windows [W m-2]
172 REAL, DIMENSION(:), INTENT(IN) :: pabs_lw_win ! absorbed LW radiation by windows [W m-2]
173 REAL, DIMENSION(:), INTENT(IN) :: pqin ! Internal heat gains [W m-2(floor)]
174 REAL, DIMENSION(:), INTENT(IN) :: pn_floor ! Number of Building floors [-]
175 !
176 REAL, DIMENSION(:), INTENT(IN) :: plew_roof ! latent heat flux over snow-free roof
177 REAL, DIMENSION(:), INTENT(IN) :: plew_road ! latent heat flux of snow-free road
178 !
179 REAL, DIMENSION(:), INTENT(IN) :: prn_greenroof ! net radiation of green roofs
180 REAL, DIMENSION(:), INTENT(IN) :: ph_greenroof ! sensible heat flux of green roofs
181 REAL, DIMENSION(:), INTENT(IN) :: ple_greenroof ! latent heat flux of green roofs
182 REAL, DIMENSION(:), INTENT(IN) :: pgflux_greenroof ! heat storage flux of green roofs
183 !
184 REAL, DIMENSION(:), INTENT(INOUT) :: ph_roof ! sensible heat flux over roof
185 REAL, DIMENSION(:), INTENT(INOUT) :: ph_road ! sensible heat flux from snow free road
186  ! to air (in) and from all road to air (out)
187 REAL, DIMENSION(:), INTENT(INOUT) :: ph_wall_a ! sensible heat flux wall to
188  ! air (in) and facade to air (out)
189 REAL, DIMENSION(:), INTENT(INOUT) :: ph_wall_b ! sensible heat flux wall to
190  ! air (in) and facade to air (out)
191 !
192 REAL, DIMENSION(:), INTENT(OUT) :: prn_roof ! net radiation over roof
193 REAL, DIMENSION(:), INTENT(OUT) :: ple_roof ! latent heat flux over roof
194 REAL, DIMENSION(:), INTENT(OUT) :: pgflux_roof ! flux through the roof
195 REAL, DIMENSION(:), INTENT(OUT) :: prn_road ! net radiation over road
196 REAL, DIMENSION(:), INTENT(OUT) :: ple_road ! latent heat flux over road
197 
198 REAL, DIMENSION(:), INTENT(OUT) :: pgflux_road ! flux through the road
199 REAL, DIMENSION(:), INTENT(OUT) :: prn_wall_a ! net radiation over wall
200 REAL, DIMENSION(:), INTENT(OUT) :: ple_wall_a ! latent heat flux over wall
201 REAL, DIMENSION(:), INTENT(OUT) :: pgflux_wall_a! flux through the wall
202 REAL, DIMENSION(:), INTENT(OUT) :: prn_wall_b ! net radiation over wall
203 REAL, DIMENSION(:), INTENT(OUT) :: ple_wall_b ! latent heat flux over wall
204 REAL, DIMENSION(:), INTENT(OUT) :: pgflux_wall_b! flux through the wall
205 !
206 REAL, DIMENSION(:), INTENT(OUT) :: prn_strlroof ! net radiation of structural roof
207 REAL, DIMENSION(:), INTENT(OUT) :: ph_strlroof ! sensible heat flux of structural roof
208 REAL, DIMENSION(:), INTENT(OUT) :: ple_strlroof ! latent heat flux of structural roof
209 REAL, DIMENSION(:), INTENT(OUT) :: pgflux_strlroof ! heat storage flux of structural roof
210 !
211 REAL, DIMENSION(:), INTENT(OUT) :: prn_blt ! net radiation over built covers
212 REAL, DIMENSION(:), INTENT(OUT) :: ph_blt ! sensible heat flux over built covers
213 REAL, DIMENSION(:), INTENT(OUT) :: ple_blt ! latent heat flux over built covers
214 REAL, DIMENSION(:), INTENT(OUT) :: pgflux_blt ! flux through the built covers
215 REAL, DIMENSION(:), INTENT(OUT) :: pmelt_blt ! snow melting for town
216 !
217 REAL, DIMENSION(:), INTENT(OUT) :: pqf_bld ! anthropogenic heat due to domestic heating [W m-2(bld)]
218 REAL, DIMENSION(:), INTENT(OUT) :: pflx_bld ! heat flx from bld to its structure [W m-2(bld)]
219 REAL, DIMENSION(:), INTENT(OUT) :: pdqs_blt ! storage inside urban materials
220 REAL, DIMENSION(:), INTENT(OUT) :: pqf_town ! total anthropogenic heat [W m-2(urb)]
221 REAL, DIMENSION(:), INTENT(OUT) :: pustar_town ! friction velocity over town
222 !
223 REAL, DIMENSION(:), INTENT(IN) :: phvac_cool ! Energy consumption of the cooling system
224  ! [W m-2(bld)]
225 REAL, DIMENSION(:), INTENT(IN) :: phvac_heat ! Energy consumption of the heating system
226  ! [W m-2(bld)]
227 !
228 !* 0.2 declarations of local variables
229 !
230 REAL, DIMENSION(SIZE(PRHOA)) :: zh_roof_snowfree
231 REAL, DIMENSION(SIZE(PRHOA)) :: zrn_roof_snowfree
232 REAL, DIMENSION(SIZE(PRHOA)) :: zustar2 ! square of friction velocity (m2/s2)
233 REAL, DIMENSION(SIZE(PRHOA)) :: zvmod ! Wind
234 !
235 REAL(KIND=JPRB) :: zhook_handle
236 !
237 !-------------------------------------------------------------------------------
238 IF (lhook) CALL dr_hook('URBAN_FLUXES',0,zhook_handle)
239 !
240 !* 1. Fluxes at snow-free roofs
241 ! -------------------------
242 !
243 ! net radiation
244 !
245 !
246 zrn_roof_snowfree(:) = pabs_sw_roof(:) + pabs_lw_roof(:)
247 !
248 ! sensible heat flux
249 !
250 zh_roof_snowfree(:) = ph_roof(:)
251 !
252 !-------------------------------------------------------------------------------
253 !
254 !* 2. Fluxes at snow-free roads
255 ! -------------------------
256 !
257 ! net radiation
258 !
259 prn_road(:) = pabs_sw_road(:) + pabs_lw_road(:)
260 !
261 !-------------------------------------------------------------------------------
262 !
263 !* 3. Fluxes at walls
264 ! ---------------
265 !
266 ! net radiation
267 !
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(:)
272 !
273 ! heat flux into the ground
274 !
275 pgflux_wall_a(:) = prn_wall_a(:) - ph_wall_a(:)
276 pgflux_wall_b(:) = prn_wall_b(:) - ph_wall_b(:)
277 !
278 ! sensible heat flux
279 !
280 !before -> PH_WALL in [W.m-2(wall)]
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(:)
287 !after PH_WALL in [W.m-2(facade=wall + win)]
288 ple_wall_a(:) = pf_waste_can(:) * ple_waste(:) / pwall_o_hor(:)
289 ple_wall_b(:) = pf_waste_can(:) * ple_waste(:) / pwall_o_hor(:)
290 !
291 !-------------------------------------------------------------------------------
292 !
293 !* 4. Snow-free and snow-covered surfaces averaging
294 ! ---------------------------------------------
295 !
296 !* 4.1 Roads
297 ! -----
298 !
299 ! heat flux into the ground
300 !
301 pgflux_road(:) = pdf_road(:) * (prn_road(:) - ph_road(:) - plew_road(:) ) &
302  + pdn_road(:) * pgsnow_road(:)
303 !
304 ! net radiation
305 !
306 prn_road(:) = prn_road(:) * pdf_road(:) + prnsnow_road(:) * pdn_road(:)
307 !
308 ! sensible heat flux
309 ! total latent heat of evaporation from
310 ! the road (snow free + snow)
311 !
312 ! sensible heat flux
313 !
314 ph_road(:) = ph_road(:) * pdf_road(:) + phsnow_road(:) * pdn_road(:)
315 ! total latent heat of evaporation from the road (snow free + snow)
316 !
317 ple_road(:) = plew_road(:) * pdf_road(:) + plesnow_road(:) * pdn_road(:)
318 !
319 !* 4.2 Roofs
320 ! -----
321 !
322 ! heat flux into the ground
323 !
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(:)
327 !
328 !
329 ! net radiation
330 !
331 prn_strlroof(:) = zrn_roof_snowfree(:) * pdf_roof(:) + prnsnow_roof(:) * pdn_roof(:)
332 prn_roof(:) = (1.-pfrac_gr(:)) * prn_strlroof(:) + pfrac_gr(:) * prn_greenroof(:)
333 !
334 ! sensible heat flux
335 ! total latent heat of evaporation from
336 ! the roof (snow free + snow)
337 !
338 ! sensible heat flux
339 !
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(:)
343 !
344 ! total latent heat of evaporation from the roof (snow free + snow)
345 !
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(:)
349 !
350 !-------------------------------------------------------------------------------
351 !
352 !* 5. Momentum fluxes
353 ! ---------------
354 !
355 pustar_town(:) = xundef
356 !
357 IF (.NOT. ocanopy) THEN
358  !
359  zustar2(:) = 0.0
360  zvmod(:) = pvmod(:)
361  !
362  IF(himplicit_wind=='OLD')THEN
363  ! old implicitation
364  zustar2(:) = (pcd(:)*pvmod(:)*ppew_b_coef(:))/ &
365  (1.0-prhoa(:)*pcd(:)*pvmod(:)*ppew_a_coef(:))
366  ELSE
367  ! new implicitation
368  zustar2(:) = (pcd(:)*pvmod(:)*(2.*ppew_b_coef(:)-pvmod(:)))/ &
369  (1.0-2.0*prhoa(:)*pcd(:)*pvmod(:)*ppew_a_coef(:))
370  !
371  zvmod(:) = prhoa(:)*ppew_a_coef(:)*zustar2(:) + ppew_b_coef(:)
372  zvmod(:) = max(zvmod(:),0.)
373  !
374  WHERE(ppew_a_coef(:)/= 0.)
375  zustar2(:) = max( ( zvmod(:) - ppew_b_coef(:) ) / (prhoa(:)*ppew_a_coef(:)), 0.)
376  ENDWHERE
377  !
378  ENDIF
379  !
380  pustar_town(:) = sqrt(zustar2(:))
381  !
382 ENDIF
383 !
384 !-------------------------------------------------------------------------------
385 !
386 !* 6. Averaged fluxes
387 ! ---------------
388 !
389 !* 6.1 Built fraction
390 ! --------------
391 !
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(:))
397 !
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(:))
403 !
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(:))
409 !
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(:))
415 !
416 pmelt_blt(:) = ( pbld(:) * pmelt_roof(:) * pdn_roof(:) &
417  + proad(:) * pmelt_road(:) * pdn_road(:)) &
418  / (proad(:) + pbld(:))
419 !
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(:))
425 !
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(:) )
432  pflx_bld(:)= xundef
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(:)
438 ENDIF
439 !
440 pqf_town(:)= pbld(:)*pqf_bld(:) + ph_traffic(:) + ph_industry(:) + ple_traffic(:) + ple_industry(:)
441 !
442 !Flux from the building to its structure -> we need to add the component to the
443 !floor, the mass and the window
444 !
445 !
446 IF (lhook) CALL dr_hook('URBAN_FLUXES',1,zhook_handle)
447 !
448 END SUBROUTINE urban_fluxes
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)
Definition: urban_fluxes.F90:6