SURFEX v8.1
General documentation of Surfex
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(TOP, T, B, TPN, DMT, &
7  PTS_TWN, PEMIS_TWN, PT_CAN, &
8  PQ_CAN, PT_LOWCAN, PQ_LOWCAN, PTA, PQA, PRHOA, PPS,&
9  PH_TRAFFIC, PLE_TRAFFIC, PWL_O_GRND, PESN_RF, &
10  PEMIS_GR, PLW_RAD, PAC_RF, PAC_RF_WAT, PAC_WL, &
11  PAC_RD, PAC_RD_WAT, PAC_TOP, PAC_GD, PQSAT_GD, &
12  PAC_AGG_GD, PHU_AGG_GD, PQSAT_RF, PQSAT_RD, &
13  PDELT_RF, PDELT_RD, PRF_FRAC, PWL_FRAC, PRD_FRAC, &
14  PGD_FRAC, PTOTS_O_HORS, PDF_RF, PDN_RF, PDF_RD, &
15  PDN_RD, PLE_WL_A, PLE_WL_B, PLEW_RF, PLESN_RF, &
16  PLEW_RD, PLESN_RD, PHSN_RD, &
17  PTSRAD_GD, PRN_GD, PH_GD, PLE_GD, PGFLUX_GD, PEVAP_GD,&
18  PRUNOFF_GD, PEVAP_GR, PRUNOFF_GR, PDRAIN_GR, &
19  PRN_GRND, PH_GRND, PLE_GRND, PGFLX_GRND, &
20  PRN_TWN, PH_TWN, PLE_TWN, PGFLX_TWN, PEVAP_TWN, &
21  PEMIT_LW_RD, PEMIT_LW_GD, PEMIT_LW_GRND, PEMIS_GD )
22 ! ##########################################################################
23 !
24 !!**** *AVG_URBAN_FLUXES* computes fluxes on urbanized surfaces
25 !!
26 !! PURPOSE
27 !! -------
28 !
29 !
30 !!** METHOD
31 ! ------
32 !
33 !
34 !
35 !
36 !! EXTERNAL
37 !! --------
38 !!
39 !!
40 !! IMPLICIT ARGUMENTS
41 !! ------------------
42 !!
43 !! MODD_CST
44 !!
45 !!
46 !! REFERENCE
47 !! ---------
48 !!
49 !!
50 !! AUTHOR
51 !! ------
52 !!
53 !! V. Masson * Meteo-France *
54 !!
55 !! MODIFICATIONS
56 !! -------------
57 !! Original 23/01/98
58 !! 12/02 (A. Lemonsu) modifications of emissivity and Tstown
59 !! 07/07 (P. LeMoigne) expression of latent heat fluxes as
60 !! functions of w'theta' instead of w'T'
61 !! 17/10 (G. Pigeon) computation of anthropogenic heat due
62 !! to domestic heating
63 !! 10/11 (G. Pigeon) simplification for road, garden, roof,
64 !! wall fractions
65 !! 08/13 (V. Masson) adds solar panels
66 !-------------------------------------------------------------------------------
67 !
68 !* 0. DECLARATIONS
69 ! ------------
70 !
72 USE modd_teb_n, ONLY : teb_t
73 USE modd_bem_n, ONLY : bem_t
74 USE modd_teb_panel_n, ONLY : teb_panel_t
76 !
77 USE modd_csts,ONLY : xcpd, xlvtt, xlstt, xstefan
78 !
79 USE mode_thermos
80 !
81 !
82 USE yomhook ,ONLY : lhook, dr_hook
83 USE parkind1 ,ONLY : jprb
84 !
85 IMPLICIT NONE
86 !
87 !* 0.1 declarations of arguments
88 !
89 TYPE(teb_options_t), INTENT(INOUT) :: TOP
90 TYPE(teb_t), INTENT(INOUT) :: T
91 TYPE(bem_t), INTENT(INOUT) :: B
92 TYPE(teb_panel_t), INTENT(INOUT) :: TPN
93 TYPE(diag_misc_teb_t), INTENT(INOUT) :: DMT
94 !
95 REAL, DIMENSION(:), INTENT(OUT) :: PTS_TWN ! town surface temperature
96 REAL, DIMENSION(:), INTENT(OUT) :: PEMIS_TWN ! town equivalent emissivity
97 REAL, DIMENSION(:), INTENT(INOUT) :: PT_CAN ! canyon air temperature
98 REAL, DIMENSION(:), INTENT(INOUT) :: PQ_CAN ! canyon air specific humidity
99 REAL, DIMENSION(:), INTENT(IN) :: PT_LOWCAN ! low canyon air temperature
100 REAL, DIMENSION(:), INTENT(IN) :: PQ_LOWCAN ! low canyon air specific humidity
101 !
102 REAL, DIMENSION(:), INTENT(IN) :: PTA ! temperature at roof level
103 REAL, DIMENSION(:), INTENT(IN) :: PQA ! specific humidity
104  ! at roof level
105 REAL, DIMENSION(:), INTENT(IN) :: PRHOA ! air density
106  ! at the lowest level
107 REAL, DIMENSION(:), INTENT(IN) :: PPS ! surface pressure
108 REAL, DIMENSION(:), INTENT(IN) :: PH_TRAFFIC ! anthropogenic sensible
109 ! ! heat fluxes due to traffic
110 REAL, DIMENSION(:), INTENT(IN) :: PLE_TRAFFIC ! anthropogenic latent
111 ! ! heat fluxes due to traffic
112 REAL, DIMENSION(:), INTENT(IN) :: PWL_O_GRND ! wall Surf. / ground (road+green) Surf.
113 !
114 REAL, DIMENSION(:), INTENT(IN) :: PESN_RF ! snow roof emissivity
115 !
116 REAL, DIMENSION(:), INTENT(IN) :: PEMIS_GR ! green roof emissivity
117 !
118 REAL, DIMENSION(:), INTENT(IN) :: PLW_RAD ! incoming longwave rad.
119 !
120 REAL, DIMENSION(:), INTENT(IN) :: PAC_RF ! surface conductance
121 ! ! for heat transfers
122 ! ! above roofs
123 REAL, DIMENSION(:), INTENT(IN) :: PAC_RF_WAT ! surface conductance
124 ! ! for heat transfers
125 ! ! above roofs (for water)
126 REAL, DIMENSION(:), INTENT(IN) :: PAC_WL ! surface conductance
127 ! ! for heat transfer
128 ! ! between wall and canyon
129 REAL, DIMENSION(:), INTENT(IN) :: PAC_RD ! surface conductance
130 ! ! for heat transfers
131 ! ! between road and canyon
132 REAL, DIMENSION(:), INTENT(IN) :: PAC_RD_WAT ! surface conductance
133 ! ! for heat transfers
134 ! ! inside canyon (for water)
135 REAL, DIMENSION(:), INTENT(IN) :: PAC_TOP ! aerodynamical conductance
136 ! ! between atmosphere and
137 ! ! canyon top
138 REAL, DIMENSION(:), INTENT(IN) :: PAC_GD ! aerodynamical conductance
139 ! ! between atmosphere and
140 ! ! green areas
141 REAL, DIMENSION(:), INTENT(IN) :: PQSAT_GD ! q_sat(Ts)
142 REAL, DIMENSION(:), INTENT(IN) :: PAC_AGG_GD ! aggregated aerodyn resistance for green areas
143 REAL, DIMENSION(:), INTENT(IN) :: PHU_AGG_GD ! aggregated relative humidity for green areas
144 !
145 REAL, DIMENSION(:), INTENT(IN) :: PQSAT_RF ! q_sat(Ts)
146 REAL, DIMENSION(:), INTENT(IN) :: PQSAT_RD ! q_sat(Ts)
147 REAL, DIMENSION(:), INTENT(IN) :: PDELT_RF ! water fraction on snow-free
148 REAL, DIMENSION(:), INTENT(IN) :: PDELT_RD ! roof and roads
149 REAL, DIMENSION(:), INTENT(IN) :: PRF_FRAC ! roof, wall,
150 REAL, DIMENSION(:), INTENT(IN) :: PWL_FRAC ! road, and green area
151 REAL, DIMENSION(:), INTENT(IN) :: PRD_FRAC ! fractions
152 REAL, DIMENSION(:), INTENT(IN) :: PGD_FRAC ! of exchange surf.
153 REAL, DIMENSION(:), INTENT(IN) :: PTOTS_O_HORS ! total canyon+roof surface
154 ! ! over horizontal surface
155 REAL, DIMENSION(:), INTENT(IN) :: PDF_RF ! snow-free roof fraction
156 REAL, DIMENSION(:), INTENT(IN) :: PDN_RF ! snow-covered roof fraction
157 REAL, DIMENSION(:), INTENT(IN) :: PDF_RD ! snow-free road fraction
158 REAL, DIMENSION(:), INTENT(IN) :: PDN_RD ! snow-covered road fraction
159 !
160 REAL, DIMENSION(:), INTENT(IN) :: PLE_WL_A ! latent heat flux over wall
161 REAL, DIMENSION(:), INTENT(IN) :: PLE_WL_B ! latent heat flux over wall
162 !
163 REAL, DIMENSION(:), INTENT(IN) :: PLEW_RF ! latent heat flux of snowfree roof
164 REAL, DIMENSION(:), INTENT(IN) :: PLESN_RF ! latent heat flux over snow
165 REAL, DIMENSION(:), INTENT(IN) :: PLEW_RD ! latent heat flux of snowfree road
166 REAL, DIMENSION(:), INTENT(IN) :: PLESN_RD ! latent heat flux over snow
167 REAL, DIMENSION(:), INTENT(IN) :: PHSN_RD ! sensible heat flux over snow
168 
169 REAL, DIMENSION(:), INTENT(IN) :: PTSRAD_GD ! green area surface temperature
170 REAL, DIMENSION(:), INTENT(IN) :: PRN_GD ! net radiation over green areas
171 REAL, DIMENSION(:), INTENT(IN) :: PH_GD ! sensible heat flux over green areas
172 REAL, DIMENSION(:), INTENT(IN) :: PLE_GD ! latent heat flux over green areas
173 REAL, DIMENSION(:), INTENT(IN) :: PGFLUX_GD ! flux through the green areas
174 REAL, DIMENSION(:), INTENT(IN) :: PEVAP_GD ! evaporation over gardens
175 REAL, DIMENSION(:), INTENT(IN) :: PRUNOFF_GD ! surface runoff over green areas (kg/m2/s)
176 REAL, DIMENSION(:), INTENT(IN) :: PEVAP_GR ! evaporation over green roofs
177 REAL, DIMENSION(:), INTENT(IN) :: PRUNOFF_GR ! surface runoff over green roofs (kg/m2/s)
178 REAL, DIMENSION(:), INTENT(IN) :: PDRAIN_GR ! outlet drainage at green roof base (kg/m2/s)
179 !
180 !
181 REAL, DIMENSION(:), INTENT(OUT) :: PRN_GRND ! net radiation over ground
182 REAL, DIMENSION(:), INTENT(OUT) :: PH_GRND ! sensible heat flux over ground
183 REAL, DIMENSION(:), INTENT(OUT) :: PLE_GRND ! latent heat flux over ground
184 REAL, DIMENSION(:), INTENT(OUT) :: PGFLX_GRND ! flux through the ground
185 REAL, DIMENSION(:), INTENT(OUT) :: PRN_TWN ! net radiation over town
186 REAL, DIMENSION(:), INTENT(OUT) :: PH_TWN ! sensible heat flux over town
187 REAL, DIMENSION(:), INTENT(OUT) :: PLE_TWN ! latent heat flux over town
188 REAL, DIMENSION(:), INTENT(OUT) :: PGFLX_TWN ! flux through the ground for town
189 REAL, DIMENSION(:), INTENT(OUT) :: PEVAP_TWN ! evaporation (kg/m2/s)
190 !
191 REAL, DIMENSION(:), INTENT(IN) :: PEMIT_LW_RD ! LW emitted by the road (W/m2 road)
192 REAL, DIMENSION(:), INTENT(IN) :: PEMIT_LW_GD ! LW emitted by the garden (W/m2 garden)
193 REAL, DIMENSION(:), INTENT(OUT) :: PEMIT_LW_GRND ! LW emitted by the ground (road+garden) (W/m2 ground)
194 !
195 REAL, DIMENSION(:), INTENT(IN) :: PEMIS_GD ! garden emissivity
196 !
197 !* 0.2 declarations of local variables
198 !
199 REAL, DIMENSION(SIZE(PLW_RAD)) :: ZLW_UP ! upwards radiations
200 REAL, DIMENSION(SIZE(T%XROAD)) :: ZQSAT_CAN
201 REAL, DIMENSION(SIZE(T%XROAD)) :: ZRD, ZGD
202 !
203 REAL :: ZINTER
204 INTEGER :: JJ
205 REAL(KIND=JPRB) :: ZHOOK_HANDLE
206 !-------------------------------------------------------------------------------
207 !
208 IF (lhook) CALL dr_hook('AVG_URBAN_FLUXES',0,zhook_handle)
209 !
210 zrd(:)=0.
211 zgd(:)=0.
212 !
213 DO jj=1,SIZE(t%XROAD)
214 !
215  IF (t%XROAD(jj)+t%XGARDEN(jj).NE.0.) THEN
216  zrd(jj) = t%XROAD(jj) / (t%XROAD(jj)+t%XGARDEN(jj))
217  zgd(jj) = t%XGARDEN(jj) / (t%XROAD(jj)+t%XGARDEN(jj))
218  ELSE
219  zrd(jj)=0.
220  zgd(jj)=0.
221  ENDIF
222 !
223 !* 1. Averaged fluxes for ground (green areas + road)
224 ! -----------------------------------------------
225 !
226  prn_grnd(jj) = zrd(jj) * dmt%XRN_ROAD (jj) + zgd(jj) * prn_gd(jj)
227 !
228  ph_grnd(jj) = zrd(jj) * dmt%XH_ROAD (jj) + zgd(jj) * ph_gd(jj) + ph_traffic(jj) / (1.-t%XBLD (jj))
229 !
230  ple_grnd(jj) = zrd(jj) * dmt%XLE_ROAD (jj) + zgd(jj) * ple_gd(jj) + ple_traffic(jj) / (1.-t%XBLD (jj))
231 !
232  pgflx_grnd(jj) = zrd(jj) * dmt%XGFLUX_ROAD(jj) + zgd(jj) * pgflux_gd(jj)
233 !
234 !
235  pemit_lw_grnd(jj) = t%XROAD_O_GRND(jj) * pemit_lw_rd(jj) + t%XGARDEN_O_GRND(jj) * pemit_lw_gd(jj)
236 !-------------------------------------------------------------------------------
237 !
238 !* 2. Averaged fluxes JJ built + green areas
239 ! -------------------------------------
240 !
241  prn_twn(jj) = ptots_o_hors(jj) * ( &
242  + prf_frac(jj) * dmt%XRN_ROOF (jj) &
243  + prd_frac(jj) * dmt%XRN_ROAD (jj) &
244  + pgd_frac(jj) * prn_gd(jj) &
245  + pwl_frac(jj) * dmt%XRN_WALL_A (jj) * 0.5 &
246  + pwl_frac(jj) * dmt%XRN_WALL_B (jj) * 0.5 )
247 !
248  ph_twn(jj) = ptots_o_hors(jj) * ( &
249  + prf_frac(jj) * dmt%XH_ROOF (jj) &
250  + prd_frac(jj) * dmt%XH_ROAD (jj) &
251  + pgd_frac(jj) * ph_gd(jj) &
252  + pwl_frac(jj) * dmt%XH_WALL_A (jj) * 0.5 &
253  + pwl_frac(jj) * dmt%XH_WALL_B (jj) * 0.5 ) &
254  + ph_traffic(jj) + t%XH_INDUSTRY(jj)
255 !
256  ple_twn(jj) = ptots_o_hors(jj) * ( &
257  prf_frac(jj) * dmt%XLE_ROOF (jj) &
258  + prd_frac(jj) * dmt%XLE_ROAD (jj) &
259  + pgd_frac(jj) * ple_gd(jj) &
260  + pwl_frac(jj) * ple_wl_a(jj) * 0.5 &
261  + pwl_frac(jj) * ple_wl_b(jj) * 0.5 ) &
262  + ple_traffic(jj) + t%XLE_INDUSTRY(jj)
263 !
264  pgflx_twn(jj)= ptots_o_hors(jj) * ( &
265  prf_frac(jj) * dmt%XGFLUX_ROOF (jj) &
266  + prd_frac(jj) * dmt%XGFLUX_ROAD (jj) &
267  + pgd_frac(jj) * pgflux_gd(jj) &
268  + pwl_frac(jj) * dmt%XGFLUX_WALL_A(jj) * 0.5 &
269  + pwl_frac(jj) * dmt%XGFLUX_WALL_B(jj) * 0.5 )
270 !
271  IF (top%LSOLAR_PANEL) THEN
272  prn_twn(jj) = prn_twn(jj) + ptots_o_hors(jj) * (prf_frac(jj) * dmt%XRN_PANEL(jj) * tpn%XFRAC_PANEL(jj))
273  ph_twn(jj) = ph_twn(jj) + ptots_o_hors(jj) * (prf_frac(jj) * dmt%XH_PANEL (jj) * tpn%XFRAC_PANEL(jj))
274  ENDIF
275 !-------------------------------------------------------------------------------
276 !
277 !* 3. Infra-red Radiative properties
278 ! ------------------------------
279 !
280 !* 3.1 Upward IR radiation for town
281 ! ----------------------------
282 !
283  zlw_up(jj) = plw_rad(jj) &
284  - ( prf_frac(jj) * (1.-t%XGREENROOF(jj)) * pdf_rf(jj) * dmt%XABS_LW_ROOF (jj) &
285  +prf_frac(jj) * (1.-t%XGREENROOF(jj)) * pdn_rf(jj) * dmt%XABS_LW_SNOW_ROOF(jj) &
286  +prf_frac(jj) * t%XGREENROOF(jj) * dmt%XABS_LW_GREENROOF(jj) &
287  +prd_frac(jj) * pdf_rd(jj) * dmt%XABS_LW_ROAD (jj) &
288  +prd_frac(jj) * pdn_rd(jj) * dmt%XABS_LW_SNOW_ROAD(jj) &
289  +pgd_frac(jj) * dmt%XABS_LW_GARDEN (jj) &
290  +pwl_frac(jj)* 0.5 * dmt%XABS_LW_WALL_A (jj) &
291  +pwl_frac(jj)* 0.5 * dmt%XABS_LW_WALL_B (jj) &
292  ) * ptots_o_hors(jj)
293 !
294  IF (top%LSOLAR_PANEL) THEN
295  zlw_up(jj) = zlw_up(jj) - ptots_o_hors(jj) * (prf_frac(jj) * dmt%XABS_LW_PANEL(jj) * tpn%XFRAC_PANEL(jj))
296  ENDIF
297 !
298 !* 3.2 Town emissivity
299 ! ---------------
300 !
301  pemis_twn(jj) = t%XBLD (jj) * (1.-t%XGREENROOF(jj)) * pdf_rf(jj) * t%XEMIS_ROOF(jj) * (1.-tpn%XFRAC_PANEL(jj)) &
302  + t%XBLD (jj) * (1.-t%XGREENROOF(jj)) * pdn_rf(jj) * pesn_rf(jj) * (1.-tpn%XFRAC_PANEL(jj)) &
303  + t%XBLD (jj) * t%XGREENROOF(jj) * pemis_gr(jj) * (1.-tpn%XFRAC_PANEL(jj)) &
304  + t%XBLD (jj) * tpn%XEMIS_PANEL(jj) * tpn%XFRAC_PANEL(jj) &
305  + t%XROAD (jj) * ( t%XSVF_ROAD(jj) * pdf_rd(jj) * t%XEMIS_ROAD(jj) &
306  + t%XSVF_ROAD(jj) * pdn_rd(jj) * t%TSNOW_ROAD%EMIS(jj)) &
307  + t%XGARDEN (jj) * t%XSVF_GARDEN(jj) * pemis_gd(jj) &
308  + t%XWALL_O_HOR(jj) * t%XSVF_WALL (jj) * t%XEMIS_WALL(jj)
309 !
310 !* 3.3 Town radiative surface temperature
311 ! ----------------------------------
312 !
313  pts_twn(jj) = ((zlw_up(jj) - plw_rad(jj)*(1.-pemis_twn(jj))) /pemis_twn(jj)/xstefan)**0.25
314 !
315 !-------------------------------------------------------------------------------
316 !
317 !* 4. Averaged evaporative flux (kg/m2/s)
318 ! -----------------------------------
319 !
320  pevap_twn(jj) = ptots_o_hors(jj)*( &
321  prf_frac(jj) * pdf_rf(jj) * (1.-t%XGREENROOF(jj)) * plew_rf(jj) / xlvtt &
322  + prf_frac(jj) * pdn_rf(jj) * (1.-t%XGREENROOF(jj)) * plesn_rf(jj) / xlstt &
323  + prf_frac(jj) * t%XGREENROOF(jj) * pevap_gr(jj) &
324  + prd_frac(jj) * pdf_rd(jj) * plew_rd(jj) / xlvtt &
325  + prd_frac(jj) * pdn_rd(jj) * plesn_rd(jj) / xlstt &
326  + pgd_frac(jj) * pevap_gd(jj) &
327  + pwl_frac(jj) * 0.5 * (ple_wl_a(jj) + ple_wl_b(jj)) / xlvtt )&
328  + ple_traffic(jj) / xlvtt &
329  + t%XLE_INDUSTRY(jj) / xlvtt
330 !
331  IF (top%CBEM=="BEM") THEN
332  pevap_twn(jj) = pevap_twn(jj) + prf_frac(jj) * (1.-b%XF_WASTE_CAN(jj)) * dmt%XLE_WASTE(jj) / xlvtt
333  ENDIF
334 !-------------------------------------------------------------------------------
335 !
336 !* 5. Averaged runoff flux (kg/m2/s)
337 ! -----------------------------------
338 !
339  dmt%XRUNOFF_TOWN(jj) = ((1.-t%XGREENROOF(jj))* dmt%XRUNOFF_STRLROOF (jj) &
340  + t%XGREENROOF(jj) *(prunoff_gr(jj) + pdrain_gr(jj))) * t%XBLD(jj) &
341  + t%XROAD (jj) * dmt%XRUNOFF_ROAD(jj) &
342  + t%XGARDEN (jj) * prunoff_gd(jj)
343 !-------------------------------------------------------------------------------
344 !
345 !* 6. Air canyon temperature at time t+dt
346 ! -----------------------------------
347 !
348  IF (.NOT. top%LCANOPY) THEN
349  zinter = pac_rd(jj) * pdf_rd(jj) * zrd(jj) + pac_gd(jj) * zgd(jj) + pac_wl(jj) * pwl_o_grnd(jj) + pac_top(jj)
350  pt_can(jj) = ( t%XT_ROAD (jj,1) * pac_rd(jj) * pdf_rd(jj) * zrd(jj) &
351  + t%XT_WALL_A(jj,1) * pac_wl(jj) * (1.-b%XGR(jj)) * pwl_o_grnd(jj) * 0.5 &
352  + t%XT_WALL_B(jj,1) * pac_wl(jj) * (1.-b%XGR(jj)) * pwl_o_grnd(jj) * 0.5 &
353  + b%XT_WIN1 (jj) * pac_wl(jj) * b%XGR(jj) * pwl_o_grnd(jj) &
354  + pta(jj) * pac_top(jj) &
355  + ph_traffic(jj) / (1.-t%XBLD (jj)) / prhoa(jj) / xcpd &
356  + phsn_rd(jj) * pdn_rd(jj) / prhoa(jj) / xcpd ) &
357  / zinter
358 !
359  pt_can(jj) = pt_can(jj) + ( ptsrad_gd(jj) * pac_gd(jj) * zgd(jj) ) / zinter
360  !
361  IF (top%CBEM=="BEM") THEN
362  pt_can(jj) = pt_can(jj) + (dmt%XH_WASTE(jj) * b%XF_WASTE_CAN(jj) / (1-t%XBLD(jj)) / prhoa(jj) / xcpd) / zinter
363  ENDIF
364 !-------------------------------------------------------------------------------
365 !
366 !* 7. Air canyon specific humidity
367 ! ----------------------------
368 !
369  zinter = pac_rd_wat(jj) * pdf_rd(jj) * pdelt_rd(jj) * zrd(jj) + pac_agg_gd(jj) * phu_agg_gd(jj) * zgd(jj) + pac_top(jj)
370  pq_can(jj) = ( pqsat_rd(jj) * pac_rd_wat(jj) * pdf_rd(jj) * zrd(jj) * pdelt_rd(jj) &
371  + pqsat_gd(jj) * pac_agg_gd(jj) * phu_agg_gd(jj) * zgd(jj) &
372  + pqa(jj) * pac_top(jj) &
373  + ple_traffic(jj) / (1.-t%XBLD(jj)) / prhoa(jj) / xlvtt &
374  + plesn_rd(jj) * pdn_rd(jj) / prhoa(jj) / xlvtt * zrd(jj) ) / zinter
375 
376  IF (top%CBEM=="BEM") THEN
377  pq_can(jj) = pq_can(jj) + (dmt%XLE_WASTE(jj) * b%XF_WASTE_CAN(jj) / (1-t%XBLD(jj)) / prhoa(jj) / xlvtt) / zinter
378  ENDIF
379 
380  ENDIF
381 !
382 ENDDO
383 !
384 !*check that canyon specif. humidity lower than saturation
385 !
386 zqsat_can(:) = qsat(pt_can(:), pps(:))
387 WHERE (pq_can(:) > zqsat_can(:))
388  pq_can(:) = zqsat_can(:)
389 END WHERE
390 !
391 IF (lhook) CALL dr_hook('AVG_URBAN_FLUXES',1,zhook_handle)
392 !-------------------------------------------------------------------------------
393 !
394 END SUBROUTINE avg_urban_fluxes
subroutine avg_urban_fluxes(TOP, T, B, TPN, DMT, PTS_TWN, PEMIS_TWN, PT_CAN, PQ_CAN, PT_LOWCAN, PQ_LOWCAN, PTA, PQA, PRHOA, PPS, PH_TRAFFIC, PLE_TRAFFIC, PWL_O_GRND, PESN_RF, PEMIS_GR, PLW_RAD, PAC_RF, PAC_RF_WAT, PAC_WL, PAC_RD, PAC_RD_WAT, PAC_TOP, PAC_GD, PQSAT_GD, PAC_AGG_GD, PHU_AGG_GD, PQSAT_RF, PQSAT_RD, PDELT_RF, PDELT_RD, PRF_FRAC, PWL_FRAC, PRD_FRAC, PGD_FRAC, PTOTS_O_HORS, PDF_RF, PDN_RF, PDF_RD, PDN_RD, PLE_WL_A, PLE_WL_B, PLEW_RF, PLESN_RF, PLEW_RD, PLESN_RD, PHSN_RD, PTSRAD_GD, PRN_GD, PH_GD, PLE_GD, PGFLUX_GD, PEVAP_GD, PRUNOFF_GD, PEVAP_GR, PRUNOFF_GR, PDRAIN_GR, PRN_GRND, PH_GRND, PLE_GRND, PGFLX_GRND, PRN_TWN, PH_TWN, PLE_TWN, PGFLX_TWN, PEVAP_TWN, PEMIT_LW_RD, PEMIT_LW_GD, PEMIT_LW_GRND, PEMIS_GD)
real, save xcpd
Definition: modd_csts.F90:63
real, save xstefan
Definition: modd_csts.F90:59
real, save xlvtt
Definition: modd_csts.F90:70
real, save xlstt
Definition: modd_csts.F90:71
integer, parameter jprb
Definition: parkind1.F90:32
logical lhook
Definition: yomhook.F90:15