SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
avg_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 avg_urban_fluxes( &
7  pts_town, pemis_town, &
8  pt_canyon, pq_canyon, &
9  pt_lowcan, pq_lowcan, &
10  pts_roof,pts_road,pts_wall_a,pts_wall_b,pts_garden, &
11  pta, pqa, prhoa, pps, &
12  ph_traffic, ple_traffic, ph_industry, ple_industry, &
13  pbld, proad, pgarden, pwall_o_hor, pwall_o_grnd, &
14  pfrac_gr, &
15  pemis_roof, pesnow_roof, pemis_greenroof, &
16  plw_rad, &
17  pabs_lw_roof, pabs_lw_wall_a, pabs_lw_wall_b, &
18  pabs_lw_road, pabs_lw_garden, pabs_lw_greenroof, &
19  pabs_lw_snow_roof, pabs_lw_snow_road, &
20  pac_roof, pac_roof_wat, &
21  pac_wall, pac_road, pac_road_wat, pac_top, &
22  pac_garden, &
23  pqsat_garden, pac_agg_garden, phu_agg_garden, &
24  pqsat_roof, pqsat_road, &
25  pdelt_roof, pdelt_road, &
26  proof_frac, pwall_frac, proad_frac, pgarden_frac, &
27  ptots_o_hors, &
28  pdf_roof, pdn_roof, pdf_road, pdn_road, &
29  prn_roof, ph_roof, ple_roof, pgflux_roof, &
30  prn_road, ph_road, ple_road, pgflux_road, &
31  prn_garden, ph_garden, ple_garden, pgflux_garden, &
32  prn_wall_a, ph_wall_a, ple_wall_a, pgflux_wall_a, &
33  prn_wall_b, ph_wall_b, ple_wall_b, pgflux_wall_b, &
34  plew_roof, plesnow_roof, &
35  plew_road, plesnow_road, phsnow_road, &
36  pevap_garden, pevap_greenroof, &
37  prn_grnd, ph_grnd, ple_grnd, pgflux_grnd, &
38  prn_town, ph_town, ple_town, pgflux_town, pevap_town, &
39  prunoff_garden,prunoff_road,prunoff_strlroof, &
40  prunoff_greenroof, pdrain_greenroof, prunoff_town, &
41  pabs_lw_panel, pemis_panel, pfrac_panel, prn_panel, &
42  ph_panel, &
43  ph_waste, ple_waste, pf_waste_can, &
44  pabs_lw_win, pt_win1, pgr, pemit_lw_road, &
45  pemit_lw_garden, pemit_lw_grnd, hbem, &
46  psvf_road, psvf_garden, psvf_wall, pgarden_o_grnd, &
47  proad_o_grnd, &
48  pemis_road, pesnow_road, pemis_wall, pemis_garden, &
49  ocanopy )
50 ! ##########################################################################
51 !
52 !!**** *AVG_URBAN_FLUXES* computes fluxes on urbanized surfaces
53 !!
54 !! PURPOSE
55 !! -------
56 !
57 !
58 !!** METHOD
59 ! ------
60 !
61 !
62 !
63 !
64 !! EXTERNAL
65 !! --------
66 !!
67 !!
68 !! IMPLICIT ARGUMENTS
69 !! ------------------
70 !!
71 !! MODD_CST
72 !!
73 !!
74 !! REFERENCE
75 !! ---------
76 !!
77 !!
78 !! AUTHOR
79 !! ------
80 !!
81 !! V. Masson * Meteo-France *
82 !!
83 !! MODIFICATIONS
84 !! -------------
85 !! Original 23/01/98
86 !! 12/02 (A. Lemonsu) modifications of emissivity and Tstown
87 !! 07/07 (P. LeMoigne) expression of latent heat fluxes as
88 !! functions of w'theta' instead of w'T'
89 !! 17/10 (G. Pigeon) computation of anthropogenic heat due
90 !! to domestic heating
91 !! 10/11 (G. Pigeon) simplification for road, garden, roof,
92 !! wall fractions
93 !! 08/13 (V. Masson) adds solar panels
94 !-------------------------------------------------------------------------------
95 !
96 !* 0. DECLARATIONS
97 ! ------------
98 !
99 USE modd_csts,ONLY : xcpd, xlvtt, xlstt, xstefan
100 !
101 USE mode_thermos
102 !
103 !
104 USE yomhook ,ONLY : lhook, dr_hook
105 USE parkind1 ,ONLY : jprb
106 !
107 IMPLICIT NONE
108 !
109 !* 0.1 declarations of arguments
110 !
111 !
112 REAL, DIMENSION(:), INTENT(OUT) :: pts_town ! town surface temperature
113 REAL, DIMENSION(:), INTENT(OUT) :: pemis_town ! town equivalent emissivity
114 REAL, DIMENSION(:), INTENT(INOUT) :: pt_canyon ! canyon air temperature
115 REAL, DIMENSION(:), INTENT(INOUT) :: pq_canyon ! canyon air specific humidity
116 REAL, DIMENSION(:), INTENT(IN) :: pt_lowcan ! low canyon air temperature
117 REAL, DIMENSION(:), INTENT(IN) :: pq_lowcan ! low canyon air specific humidity
118 REAL, DIMENSION(:), INTENT(IN) :: pts_roof ! roof surface temperature
119 REAL, DIMENSION(:), INTENT(IN) :: pts_road ! road surface temperature
120 REAL, DIMENSION(:), INTENT(IN) :: pts_wall_a ! wall surface temperature
121 REAL, DIMENSION(:), INTENT(IN) :: pts_wall_b ! wall surface temperature
122 REAL, DIMENSION(:), INTENT(IN) :: pts_garden ! green area surface temperature
123 
124 REAL, DIMENSION(:), INTENT(IN) :: pta ! temperature at roof level
125 REAL, DIMENSION(:), INTENT(IN) :: pqa ! specific humidity
126  ! at roof level
127 REAL, DIMENSION(:), INTENT(IN) :: prhoa ! air density
128  ! at the lowest level
129 REAL, DIMENSION(:), INTENT(IN) :: pps ! surface pressure
130 REAL, DIMENSION(:), INTENT(IN) :: ph_traffic ! anthropogenic sensible
131 ! ! heat fluxes due to traffic
132 REAL, DIMENSION(:), INTENT(IN) :: ple_traffic ! anthropogenic latent
133 ! ! heat fluxes due to traffic
134 REAL, DIMENSION(:), INTENT(IN) :: ph_industry ! anthropogenic sensible
135 ! ! heat fluxes due to factories
136 REAL, DIMENSION(:), INTENT(IN) :: ple_industry ! anthropogenic latent
137 ! ! heat fluxes due to factories
138 REAL, DIMENSION(:), INTENT(IN) :: pbld ! fraction of buildings
139 REAL, DIMENSION(:), INTENT(IN) :: proad ! fraction of roads
140 REAL, DIMENSION(:), INTENT(IN) :: pgarden ! fraction of green areas
141 REAL, DIMENSION(:), INTENT(IN) :: pwall_o_hor ! wall Surf. / (bld+road+green) Surf.
142 REAL, DIMENSION(:), INTENT(IN) :: pwall_o_grnd ! wall Surf. / ground (road+green) Surf.
143 REAL, DIMENSION(:), INTENT(IN) :: pfrac_gr ! fraction of green roofs
144 REAL, DIMENSION(:), INTENT(IN) :: pemis_roof ! roof emissivity
145 !
146 REAL, DIMENSION(:), INTENT(IN) :: pesnow_roof ! snow roof emissivity
147 !
148 REAL, DIMENSION(:), INTENT(IN) :: pemis_greenroof ! green roof emissivity
149 !
150 REAL, DIMENSION(:), INTENT(IN) :: plw_rad ! incoming longwave rad.
151 !
152 REAL, DIMENSION(:), INTENT(IN) :: pabs_lw_roof ! absorbed LW rad. by roof
153 REAL, DIMENSION(:), INTENT(IN) :: pabs_lw_wall_a ! absorbed LW rad. by wall
154 REAL, DIMENSION(:), INTENT(IN) :: pabs_lw_wall_b ! absorbed LW rad. by wall
155 REAL, DIMENSION(:), INTENT(IN) :: pabs_lw_road ! absorbed LW rad. by road
156 REAL, DIMENSION(:), INTENT(IN) :: pabs_lw_garden ! absorbed LW rad. by green areas
157 REAL, DIMENSION(:), INTENT(IN) :: pabs_lw_greenroof ! absorbed LW rad. by green roofs
158 REAL, DIMENSION(:), INTENT(IN) :: pabs_lw_snow_roof ! abs. LW rad. by snow
159 REAL, DIMENSION(:), INTENT(IN) :: pabs_lw_snow_road ! abs. LW rad. by snow
160 !
161 REAL, DIMENSION(:), INTENT(IN) :: pac_roof ! surface conductance
162 ! ! for heat transfers
163 ! ! above roofs
164 REAL, DIMENSION(:), INTENT(IN) :: pac_roof_wat ! surface conductance
165 ! ! for heat transfers
166 ! ! above roofs (for water)
167 REAL, DIMENSION(:), INTENT(IN) :: pac_wall ! surface conductance
168 ! ! for heat transfer
169 ! ! between wall and canyon
170 REAL, DIMENSION(:), INTENT(IN) :: pac_road ! surface conductance
171 ! ! for heat transfers
172 ! ! between road and canyon
173 REAL, DIMENSION(:), INTENT(IN) :: pac_road_wat ! surface conductance
174 ! ! for heat transfers
175 ! ! inside canyon (for water)
176 REAL, DIMENSION(:), INTENT(IN) :: pac_top ! aerodynamical conductance
177 ! ! between atmosphere and
178 ! ! canyon top
179 REAL, DIMENSION(:), INTENT(IN) :: pac_garden ! aerodynamical conductance
180 ! ! between atmosphere and
181 ! ! green areas
182 REAL, DIMENSION(:), INTENT(IN) :: pqsat_garden ! q_sat(Ts)
183 REAL, DIMENSION(:), INTENT(IN) :: pac_agg_garden ! aggregated aerodyn resistance for green areas
184 REAL, DIMENSION(:), INTENT(IN) :: phu_agg_garden ! aggregated relative humidity for green areas
185 !
186 REAL, DIMENSION(:), INTENT(IN) :: pqsat_roof ! q_sat(Ts)
187 REAL, DIMENSION(:), INTENT(IN) :: pqsat_road ! q_sat(Ts)
188 REAL, DIMENSION(:), INTENT(IN) :: pdelt_roof ! water fraction on snow-free
189 REAL, DIMENSION(:), INTENT(IN) :: pdelt_road ! roof and roads
190 REAL, DIMENSION(:), INTENT(IN) :: proof_frac ! roof, wall,
191 REAL, DIMENSION(:), INTENT(IN) :: pwall_frac ! road, and green area
192 REAL, DIMENSION(:), INTENT(IN) :: proad_frac ! fractions
193 REAL, DIMENSION(:), INTENT(IN) :: pgarden_frac ! of exchange surf.
194 REAL, DIMENSION(:), INTENT(IN) :: ptots_o_hors ! total canyon+roof surface
195 ! ! over horizontal surface
196 REAL, DIMENSION(:), INTENT(IN) :: pdf_roof ! snow-free roof fraction
197 REAL, DIMENSION(:), INTENT(IN) :: pdn_roof ! snow-covered roof fraction
198 REAL, DIMENSION(:), INTENT(IN) :: pdf_road ! snow-free road fraction
199 REAL, DIMENSION(:), INTENT(IN) :: pdn_road ! snow-covered road fraction
200 !
201 REAL, DIMENSION(:), INTENT(IN) :: prn_roof ! net radiation over roof
202 REAL, DIMENSION(:), INTENT(IN) :: ph_roof ! sensible heat flux over roof
203 REAL, DIMENSION(:), INTENT(IN) :: ple_roof ! latent heat flux over roof
204 REAL, DIMENSION(:), INTENT(IN) :: pgflux_roof ! flux through the roof
205 REAL, DIMENSION(:), INTENT(IN) :: prn_road ! net radiation over road
206 REAL, DIMENSION(:), INTENT(IN) :: ph_road ! sensible heat flux over road
207 REAL, DIMENSION(:), INTENT(IN) :: ple_road ! latent heat flux over road
208 REAL, DIMENSION(:), INTENT(IN) :: pgflux_road ! flux through the road
209 REAL, DIMENSION(:), INTENT(IN) :: prn_garden ! net radiation over green areas
210 REAL, DIMENSION(:), INTENT(IN) :: ph_garden ! sensible heat flux over green areas
211 REAL, DIMENSION(:), INTENT(IN) :: ple_garden ! latent heat flux over green areas
212 REAL, DIMENSION(:), INTENT(IN) :: pgflux_garden ! flux through the green areas
213 REAL, DIMENSION(:), INTENT(IN) :: prn_wall_a ! net radiation over wall
214 REAL, DIMENSION(:), INTENT(IN) :: ph_wall_a ! sensible heat flux over wall
215 REAL, DIMENSION(:), INTENT(IN) :: ple_wall_a ! latent heat flux over wall
216 REAL, DIMENSION(:), INTENT(IN) :: pgflux_wall_a ! flux through the wall
217 REAL, DIMENSION(:), INTENT(IN) :: prn_wall_b ! net radiation over wall
218 REAL, DIMENSION(:), INTENT(IN) :: ph_wall_b ! sensible heat flux over wall
219 REAL, DIMENSION(:), INTENT(IN) :: ple_wall_b ! latent heat flux over wall
220 REAL, DIMENSION(:), INTENT(IN) :: pgflux_wall_b ! flux through the wall
221 !
222 REAL, DIMENSION(:), INTENT(IN) :: plew_roof ! latent heat flux of snowfree roof
223 REAL, DIMENSION(:), INTENT(IN) :: plesnow_roof ! latent heat flux over snow
224 REAL, DIMENSION(:), INTENT(IN) :: plew_road ! latent heat flux of snowfree road
225 REAL, DIMENSION(:), INTENT(IN) :: plesnow_road ! latent heat flux over snow
226 REAL, DIMENSION(:), INTENT(IN) :: phsnow_road ! sensible heat flux over snow
227 REAL, DIMENSION(:), INTENT(IN) :: pevap_garden ! evaporation over gardens
228 REAL, DIMENSION(:), INTENT(IN) :: pevap_greenroof ! evaporation over green roofs
229 !
230 REAL, DIMENSION(:), INTENT(IN) :: prunoff_garden ! surface runoff over green areas (kg/m2/s)
231 REAL, DIMENSION(:), INTENT(IN) :: prunoff_road ! surface runoff over roads (kg/m2/s)
232 REAL, DIMENSION(:), INTENT(IN) :: prunoff_strlroof ! surface runoff over structural roofs (kg/m2/s)
233 REAL, DIMENSION(:), INTENT(IN) :: prunoff_greenroof ! surface runoff over green roofs (kg/m2/s)
234 REAL, DIMENSION(:), INTENT(IN) :: pdrain_greenroof ! outlet drainage at green roof base (kg/m2/s)
235 !
236 REAL, DIMENSION(:), INTENT(OUT) :: prn_grnd ! net radiation over ground
237 REAL, DIMENSION(:), INTENT(OUT) :: ph_grnd ! sensible heat flux over ground
238 REAL, DIMENSION(:), INTENT(OUT) :: ple_grnd ! latent heat flux over ground
239 REAL, DIMENSION(:), INTENT(OUT) :: pgflux_grnd ! flux through the ground
240 REAL, DIMENSION(:), INTENT(OUT) :: prn_town ! net radiation over town
241 REAL, DIMENSION(:), INTENT(OUT) :: ph_town ! sensible heat flux over town
242 REAL, DIMENSION(:), INTENT(OUT) :: ple_town ! latent heat flux over town
243 REAL, DIMENSION(:), INTENT(OUT) :: pgflux_town ! flux through the ground for town
244 REAL, DIMENSION(:), INTENT(OUT) :: pevap_town ! evaporation (kg/m2/s)
245 REAL, DIMENSION(:), INTENT(OUT) :: prunoff_town ! aggregated runoff for town (kg/m2/s)
246 
247 REAL, DIMENSION(:), INTENT(IN) :: pabs_lw_panel ! absorbed LW radiation by solar panels
248 REAL, DIMENSION(:), INTENT(IN) :: pemis_panel ! emissivity of solar panels
249 REAL, DIMENSION(:), INTENT(IN) :: pfrac_panel ! fraction of solar panels on roofs
250 REAL, DIMENSION(:), INTENT(IN) :: prn_panel ! net radiation of solar panels
251 REAL, DIMENSION(:), INTENT(IN) :: ph_panel ! sensible heat flux of solar panels
252 !
253 REAL, DIMENSION(:), INTENT(IN) :: ph_waste ! sensible waste heat released by HVAC systems
254 REAL, DIMENSION(:), INTENT(IN) :: ple_waste ! latent waste heat released by HVAC systems
255 REAL, DIMENSION(:), INTENT(IN) :: pf_waste_can ! fraction of waste heat released into the canyon
256 REAL, DIMENSION(:), INTENT(IN) :: pabs_lw_win ! absorbed LW radiation by windows
257 REAL, DIMENSION(:), INTENT(IN) :: pt_win1 ! window outdoor temperature
258 REAL, DIMENSION(:), INTENT(IN) :: pgr ! glazing ratio
259 !
260 REAL, DIMENSION(:), INTENT(IN) :: pemit_lw_road ! LW emitted by the road (W/m2 road)
261 REAL, DIMENSION(:), INTENT(IN) :: pemit_lw_garden ! LW emitted by the garden (W/m2 garden)
262 REAL, DIMENSION(:), INTENT(OUT) :: pemit_lw_grnd ! LW emitted by the ground (road+garden) (W/m2 ground)
263  CHARACTER(LEN=3), INTENT(IN) :: hbem ! Building Energy model 'DEF' or 'BEM'
264 REAL, DIMENSION(:), INTENT(IN) :: pgarden_o_grnd! garden surf. / (road+garden surf.)
265 REAL, DIMENSION(:), INTENT(IN) :: proad_o_grnd ! road surf. / (road+garden surf.)
266 
267 REAL, DIMENSION(:), INTENT(IN) :: psvf_road ! road sky view factor
268 REAL, DIMENSION(:), INTENT(IN) :: psvf_garden ! garden sky view factor
269 REAL, DIMENSION(:), INTENT(IN) :: psvf_wall ! wall sky view factor
270 REAL, DIMENSION(:), INTENT(IN) :: pemis_road ! snow free road emissivity
271 REAL, DIMENSION(:), INTENT(IN) :: pesnow_road ! snow (road) emissivity
272 REAL, DIMENSION(:), INTENT(IN) :: pemis_wall ! wall emissivity
273 REAL, DIMENSION(:), INTENT(IN) :: pemis_garden ! garden emissivity
274 LOGICAL, INTENT(IN) :: ocanopy ! is canopy active ?
275 !
276 !* 0.2 declarations of local variables
277 !
278 REAL, DIMENSION(SIZE(PLW_RAD)) :: zlw_up ! upwards radiations
279 REAL, DIMENSION(SIZE(PROAD)) :: zqsat_canyon
280 REAL, DIMENSION(SIZE(PROAD)) :: zroad, zgarden
281 !
282 INTEGER :: jj
283 REAL(KIND=JPRB) :: zhook_handle
284 !-------------------------------------------------------------------------------
285 !
286 IF (lhook) CALL dr_hook('AVG_URBAN_FLUXES',0,zhook_handle)
287 !
288 zroad(:)=0.
289 zgarden(:)=0.
290 !
291 DO jj=1,SIZE(proad)
292 !
293  IF (proad(jj)+pgarden(jj).NE.0.) THEN
294  zroad(jj) = proad(jj) / (proad(jj)+pgarden(jj))
295  zgarden(jj) = pgarden(jj) / (proad(jj)+pgarden(jj))
296  ELSE
297  zroad(jj)=0.
298  zgarden(jj)=0.
299  ENDIF
300 !
301 !* 1. Averaged fluxes for ground (green areas + road)
302 ! -----------------------------------------------
303 !
304  prn_grnd(jj) = zroad(jj) * prn_road(jj) + zgarden(jj) * prn_garden(jj)
305 !
306  ph_grnd(jj) = zroad(jj) * ph_road(jj) + zgarden(jj) * ph_garden(jj) &
307  + ph_traffic(jj) / (1.-pbld(jj))
308 !
309  ple_grnd(jj) = zroad(jj) * ple_road(jj) + zgarden(jj) * ple_garden(jj) &
310  + ple_traffic(jj) / (1.-pbld(jj))
311 !
312  pgflux_grnd(jj) = zroad(jj) * pgflux_road(jj) + zgarden(jj) * pgflux_garden(jj)
313 !
314 !
315  pemit_lw_grnd(jj) = proad_o_grnd(jj) * pemit_lw_road(jj) + pgarden_o_grnd(jj) * pemit_lw_garden(jj)
316 !-------------------------------------------------------------------------------
317 !
318 !* 2. Averaged fluxes JJ built + green areas
319 ! -------------------------------------
320 !
321  prn_town(jj) = ptots_o_hors(jj) * ( &
322  proof_frac(jj) * prn_panel(jj) * pfrac_panel(jj)&
323  + proof_frac(jj) * prn_roof(jj) &
324  + proad_frac(jj) * prn_road(jj) &
325  + pgarden_frac(jj) * prn_garden(jj) &
326  + pwall_frac(jj) * prn_wall_a(jj) * 0.5 &
327  + pwall_frac(jj) * prn_wall_b(jj) * 0.5 )
328 !
329  ph_town(jj) = ptots_o_hors(jj) * ( &
330  proof_frac(jj) * ph_panel(jj) * pfrac_panel(jj) &
331  + proof_frac(jj) * ph_roof(jj) &
332  + proad_frac(jj) * ph_road(jj) &
333  + pgarden_frac(jj) * ph_garden(jj) &
334  + pwall_frac(jj) * ph_wall_a(jj) * 0.5 &
335  + pwall_frac(jj) * ph_wall_b(jj) * 0.5 ) &
336  + ph_traffic(jj) &
337  + ph_industry(jj)
338 !
339  ple_town(jj) = ptots_o_hors(jj) * ( &
340  proof_frac(jj) * ple_roof(jj) &
341  + proad_frac(jj) * ple_road(jj) &
342  + pgarden_frac(jj) * ple_garden(jj) &
343  + pwall_frac(jj) * ple_wall_a(jj) * 0.5 &
344  + pwall_frac(jj) * ple_wall_b(jj) * 0.5 ) &
345  + ple_traffic(jj) &
346  + ple_industry(jj)
347 !
348  pgflux_town(jj)= ptots_o_hors(jj) * ( &
349  proof_frac(jj) * pgflux_roof(jj) &
350  + proad_frac(jj) * pgflux_road(jj) &
351  + pgarden_frac(jj) * pgflux_garden(jj) &
352  + pwall_frac(jj) * pgflux_wall_a(jj) * 0.5 &
353  + pwall_frac(jj) * pgflux_wall_b(jj) * 0.5 )
354 !
355 !-------------------------------------------------------------------------------
356 !
357 !* 3. Infra-red Radiative properties
358 ! ------------------------------
359 !
360 !* 3.1 Upward IR radiation for town
361 ! ----------------------------
362 !
363  zlw_up(jj) = plw_rad(jj) &
364  - ( proof_frac(jj)*(1.-pfrac_gr(jj))*pdf_roof(jj)*pabs_lw_roof(jj) &
365  +proof_frac(jj)*(1.-pfrac_gr(jj))*pdn_roof(jj)*pabs_lw_snow_roof(jj) &
366  +proof_frac(jj)* pfrac_gr(jj) *pabs_lw_greenroof(jj) &
367  +proof_frac(jj)* pfrac_panel(jj) *pabs_lw_panel(jj) &
368  +proad_frac(jj) *pdf_road(jj)*pabs_lw_road(jj) &
369  +proad_frac(jj) *pdn_road(jj)*pabs_lw_snow_road(jj) &
370  +pgarden_frac(jj) *pabs_lw_garden(jj) &
371  +pwall_frac(jj)* 0.5 *pabs_lw_wall_a(jj) &
372  +pwall_frac(jj)* 0.5 *pabs_lw_wall_b(jj) &
373  )*ptots_o_hors(jj)
374 !
375 !* 3.2 Town emissivity
376 ! ---------------
377 !
378  pemis_town(jj) = pbld(jj)*(1.-pfrac_gr(jj))*pdf_roof(jj)*pemis_roof(jj)* (1.-pfrac_panel(jj)) &
379  + pbld(jj)*(1.-pfrac_gr(jj))*pdn_roof(jj)*pesnow_roof(jj)* (1.-pfrac_panel(jj)) &
380  + pbld(jj)* pfrac_gr(jj) *pemis_greenroof(jj)* (1.-pfrac_panel(jj)) &
381  + pbld(jj) *pemis_panel(jj)* pfrac_panel(jj) &
382  + proad(jj)*( psvf_road(jj) *pdf_road(jj)*pemis_road(jj) &
383  + psvf_road(jj) *pdn_road(jj)*pesnow_road(jj)) &
384  + pgarden(jj)* psvf_garden(jj) *pemis_garden(jj) &
385  + pwall_o_hor(jj)* psvf_wall(jj) *pemis_wall(jj)
386 !* 3.3 Town radiative surface temperature
387 ! ----------------------------------
388 !
389  pts_town(jj) = ((zlw_up(jj) - plw_rad(jj)*(1.-pemis_town(jj))) /pemis_town(jj)/xstefan)**0.25
390 !
391 !-------------------------------------------------------------------------------
392 !
393 !* 4. Averaged evaporative flux (kg/m2/s)
394 ! -----------------------------------
395 !
396  pevap_town(jj) = ptots_o_hors(jj)*( &
397  proof_frac(jj)*pdf_roof(jj)*(1.-pfrac_gr(jj))*plew_roof(jj) /xlvtt &
398  + proof_frac(jj)*pdn_roof(jj)*(1.-pfrac_gr(jj))*plesnow_roof(jj) /xlstt &
399  + proof_frac(jj) * pfrac_gr(jj) *pevap_greenroof(jj) &
400  + proad_frac(jj)*pdf_road(jj) *plew_road(jj) /xlvtt &
401  + proad_frac(jj)*pdn_road(jj) *plesnow_road(jj) /xlstt &
402  + pgarden_frac(jj) *pevap_garden(jj) &
403  + pwall_frac(jj)*0.5 * (ple_wall_a(jj)+ple_wall_b(jj))/xlvtt) &
404  + proof_frac(jj) *(1.-pf_waste_can(jj))*ple_waste(jj) /xlvtt &
405  + ple_traffic(jj) /xlvtt &
406  + ple_industry(jj) /xlvtt
407 !
408 !-------------------------------------------------------------------------------
409 !
410 !* 5. Averaged runoff flux (kg/m2/s)
411 ! -----------------------------------
412  prunoff_town(jj) = ((1.-pfrac_gr(jj))* prunoff_strlroof(jj) &
413  + pfrac_gr(jj) *(prunoff_greenroof(jj)+pdrain_greenroof(jj))) * pbld(jj) &
414  + proad(jj) * prunoff_road(jj) &
415  + pgarden(jj) * prunoff_garden(jj)
416 !-------------------------------------------------------------------------------
417 !
418 !* 6. Air canyon temperature at time t+dt
419 ! -----------------------------------
420 !
421  IF (.NOT. ocanopy) THEN
422  pt_canyon(jj) = &
423  ( pts_road(jj) * pac_road(jj) * pdf_road(jj) * zroad(jj) &
424  + pts_garden(jj) * pac_garden(jj) * zgarden(jj) &
425  + pts_wall_a(jj) * pac_wall(jj) * (1.-pgr(jj)) * pwall_o_grnd(jj) * 0.5 &
426  + pts_wall_b(jj) * pac_wall(jj) * (1.-pgr(jj)) * pwall_o_grnd(jj) * 0.5 &
427  + pt_win1(jj) * pac_wall(jj) * pgr(jj) * pwall_o_grnd(jj) &
428  + pta(jj) * pac_top(jj) &
429  + ph_traffic(jj) / (1.-pbld(jj)) / prhoa(jj) / xcpd &
430  + phsnow_road(jj) * pdn_road(jj) / prhoa(jj) / xcpd &
431  + ph_waste(jj) * pf_waste_can(jj)/(1-pbld(jj))/ prhoa(jj) / xcpd ) &
432  / ( pac_road(jj) * pdf_road(jj) * zroad(jj) &
433  + pac_garden(jj) * zgarden(jj) &
434  + pac_wall(jj) * pwall_o_grnd(jj) &
435  + pac_top(jj) )
436 !
437 !-------------------------------------------------------------------------------
438 !
439 !* 7. Air canyon specific humidity
440 ! ----------------------------
441 !
442  pq_canyon(jj) = &
443  ( pqsat_road(jj) * pac_road_wat(jj) * pdf_road(jj) * zroad(jj) * pdelt_road(jj) &
444  + pqsat_garden(jj) * pac_agg_garden(jj) * phu_agg_garden(jj) * zgarden(jj) &
445  + pqa(jj) * pac_top(jj) &
446  + ple_traffic(jj) / (1.-pbld(jj)) / prhoa(jj) / xlvtt &
447  + plesnow_road(jj) * pdn_road(jj) / prhoa(jj) / xlvtt * zroad(jj) &
448  + ple_waste(jj) * pf_waste_can(jj) / (1-pbld(jj)) / prhoa(jj) / xlvtt ) &
449  / ( pac_road_wat(jj) * pdf_road(jj) * pdelt_road(jj) * zroad(jj) &
450  + pac_agg_garden(jj) * phu_agg_garden(jj) * zgarden(jj) &
451  + pac_top(jj) )
452  ENDIF
453 !
454 ENDDO
455 !
456 !*check that canyon specif. humidity lower than saturation
457 !
458 zqsat_canyon(:) = qsat(pt_canyon(:), pps(:))
459 WHERE (pq_canyon(:) > zqsat_canyon(:))
460  pq_canyon(:) = zqsat_canyon(:)
461 END WHERE
462 IF (lhook) CALL dr_hook('AVG_URBAN_FLUXES',1,zhook_handle)
463 !-------------------------------------------------------------------------------
464 !
465 END SUBROUTINE avg_urban_fluxes
subroutine avg_urban_fluxes(PTS_TOWN, PEMIS_TOWN, PT_CANYON, PQ_CANYON, PT_LOWCAN, PQ_LOWCAN, PTS_ROOF, PTS_ROAD, PTS_WALL_A, PTS_WALL_B, PTS_GARDEN, PTA, PQA, PRHOA, PPS, PH_TRAFFIC, PLE_TRAFFIC, PH_INDUSTRY, PLE_INDUSTRY, PBLD, PROAD, PGARDEN, PWALL_O_HOR, PWALL_O_GRND, PFRAC_GR, PEMIS_ROOF, PESNOW_ROOF, PEMIS_GREENROOF, PLW_RAD, PABS_LW_ROOF, PABS_LW_WALL_A, PABS_LW_WALL_B, PABS_LW_ROAD, PABS_LW_GARDEN, PABS_LW_GREENROOF, PABS_LW_SNOW_ROOF, PABS_LW_SNOW_ROAD, PAC_ROOF, PAC_ROOF_WAT, PAC_WALL, PAC_ROAD, PAC_ROAD_WAT, PAC_TOP, PAC_GARDEN, PQSAT_GARDEN, PAC_AGG_GARDEN, PHU_AGG_GARDEN, PQSAT_ROOF, PQSAT_ROAD, PDELT_ROOF, PDELT_ROAD, PROOF_FRAC, PWALL_FRAC, PROAD_FRAC, PGARDEN_FRAC, PTOTS_O_HORS, PDF_ROOF, PDN_ROOF, PDF_ROAD, PDN_ROAD, PRN_ROOF, PH_ROOF, PLE_ROOF, PGFLUX_ROOF, PRN_ROAD, PH_ROAD, PLE_ROAD, PGFLUX_ROAD, PRN_GARDEN, PH_GARDEN, PLE_GARDEN, PGFLUX_GARDEN, PRN_WALL_A, PH_WALL_A, PLE_WALL_A, PGFLUX_WALL_A, PRN_WALL_B, PH_WALL_B, PLE_WALL_B, PGFLUX_WALL_B, PLEW_ROOF, PLESNOW_ROOF, PLEW_ROAD, PLESNOW_ROAD, PHSNOW_ROAD, PEVAP_GARDEN, PEVAP_GREENROOF, PRN_GRND, PH_GRND, PLE_GRND, PGFLUX_GRND, PRN_TOWN, PH_TOWN, PLE_TOWN, PGFLUX_TOWN, PEVAP_TOWN, PRUNOFF_GARDEN, PRUNOFF_ROAD, PRUNOFF_STRLROOF, PRUNOFF_GREENROOF, PDRAIN_GREENROOF, PRUNOFF_TOWN, PABS_LW_PANEL, PEMIS_PANEL, PFRAC_PANEL, PRN_PANEL, PH_PANEL, PH_WASTE, PLE_WASTE, PF_WASTE_CAN, PABS_LW_WIN, PT_WIN1, PGR, PEMIT_LW_ROAD, PEMIT_LW_GARDEN, PEMIT_LW_GRND, HBEM, PSVF_ROAD, PSVF_GARDEN, PSVF_WALL, PGARDEN_O_GRND, PROAD_O_GRND, PEMIS_ROAD, PESNOW_ROAD, PEMIS_WALL, PEMIS_GARDEN, OCANOPY)