SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
teb.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 teb (HZ0H, HIMPLICIT_WIND, HWALL_OPT, HBEM, TPTIME, PTSUN, &
7  pt_canyon, pq_canyon, pu_canyon, &
8  pt_lowcan, pq_lowcan, pu_lowcan, pz_lowcan, pti_bld, &
9  pt_roof, pt_road, pt_wall_a, pt_wall_b,pws_roof, pws_road,&
10  hsnow_roof, pwsnow_roof, ptsnow_roof, prsnow_roof, &
11  pasnow_roof, ptssnow_roof, pesnow_roof, &
12  hsnow_road, pwsnow_road, ptsnow_road, prsnow_road, &
13  pasnow_road, ptssnow_road, pesnow_road, &
14  ppew_a_coef, ppew_b_coef, &
15  ppew_a_coef_lowcan, ppew_b_coef_lowcan, &
16  pps, ppa, pexns, pexna, pta, pqa, prhoa, plw_rad, &
17  prr, psr, pzref, puref, &
18  pvmod, ph_traffic, ple_traffic, ph_industry, ple_industry,&
19  ptstep, pz0_town, pbld, pgarden, proad, pfrac_gr, &
20  pbld_height, pwall_o_hor, pcan_hw_ratio, pwall_o_grnd, &
21  pdf_roof, pdn_roof, pdf_road, &
22  pdn_road, pqsat_roof, pqsat_road, pdelt_roof, pdelt_road, &
23  pemis_roof, phc_roof, ptc_roof, pd_roof, &
24  pemis_road, phc_road, ptc_road, &
25  pd_road, pemis_wall, pts_garden, &
26  phc_wall, ptc_wall, pd_wall, prn_roof, ph_roof, ple_roof, &
27  plew_roof, pgflux_roof, prunoff_roof, &
28  prn_greenroof, ph_greenroof, ple_greenroof, &
29  pgflux_greenroof, puw_greenroof, &
30  prunoff_greenroof, pdrain_greenroof, &
31  prn_strlroof, ph_strlroof, ple_strlroof, pgflux_strlroof, &
32  prunoff_strlroof, &
33  prn_road, ph_road, &
34  ple_road, plew_road, pgflux_road, prunoff_road, &
35  prn_wall_a, ph_wall_a, ple_wall_a, pgflux_wall_a, &
36  prn_wall_b, ph_wall_b, ple_wall_b, pgflux_wall_b, &
37  prn_blt, ph_blt, ple_blt, pgflux_blt, &
38  prnsnow_roof, phsnow_roof, plesnow_roof, pgsnow_roof, &
39  pmelt_roof, &
40  prnsnow_road, phsnow_road, plesnow_road, pgsnow_road, &
41  pmelt_road, &
42  pg_greenroof_roof, &
43  puw_road, puw_roof, pduwdu_road, pduwdu_roof, &
44  pustar_town, pcd, pcdn, pch_town, pri_town, &
45  presa_town, pdqs_town, pqf_town, pqf_bld, pflx_bld, &
46  pac_roof, pac_road, pac_wall, pac_top, pac_garden, &
47  pac_roof_wat, pac_road_wat, pabs_sw_roof, pabs_lw_roof, &
48  pabs_sw_snow_roof, pabs_lw_snow_roof, pabs_sw_road, &
49  pabs_lw_road, pabs_sw_snow_road, pabs_lw_snow_road, &
50  pabs_sw_wall_a,pabs_lw_wall_a, &
51  pabs_sw_wall_b,pabs_lw_wall_b, &
52  plw_wa_to_wb, &
53  plw_wa_to_r, plw_wb_to_r, &
54  plw_wa_to_nr, plw_wb_to_nr, &
55  plw_r_to_wa, plw_r_to_wb, &
56  plw_g_to_wa, plw_g_to_wb, &
57  plw_s_to_wa, plw_s_to_wb, plw_s_to_r, &
58  plw_s_to_nr, plw_nr_to_wa, plw_nr_to_wb, &
59  plw_nr_to_win, plw_wa_to_win, plw_wb_to_win, plw_g_to_win,&
60  plw_r_to_win, plw_s_to_win, plw_win_to_wa, plw_win_to_wb, &
61  plw_win_to_r, plw_win_to_nr, &
62  hnatvent, &
63  hcool_coil, pf_water_cond, hheat_coil, oautosize, &
64  kday, paux_max, pt_floor, pt_mass, ph_bld_cool, &
65  pt_bld_cool, ph_bld_heat, ple_bld_cool, ple_bld_heat, &
66  ph_waste, ple_waste, pf_waste_can, phvac_cool, phvac_heat,&
67  pqin, pqin_frad, pqin_flat, pgr, peff_heat, &
68  pinf, ptcool_target, ptheat_target, phr_target, pt_win2, &
69  pqi_bld, pv_vent, pcap_sys_heat, pcap_sys_rat, pt_adp, &
70  pm_sys_rat, pcop_rat, pcap_sys, pm_sys, pcop, pq_sys, &
71  pt_sys, ptr_sw_win, pfan_power, phc_floor, ptc_floor, &
72  pd_floor, &
73  pt_win1, pabs_sw_win, pabs_lw_win, pugg_win, pemit_lw_fac,&
74  pemit_lw_road, pt_rad_ind, phu_bld, ptime, pe_shading, &
75  onatvent_night, pn_floor, pwall_o_bld, pglaz_o_bld, pmass_o_bld, &
76  pfloor_hw_ratio, pf_floor_mass, pf_floor_wall, &
77  pf_floor_win, pf_floor_roof, pf_wall_floor, pf_wall_mass, &
78  pf_wall_win, pf_win_floor, pf_win_mass, pf_win_wall, &
79  pf_mass_floor, pf_mass_wall, pf_mass_win, ocanopy, &
80  hch_bem, prough_roof, prough_wall, pf_win_win, &
81  opar_rd_irrig, prd_start_month, prd_end_month, &
82  prd_start_hour, prd_end_hour, prd_24h_irrig, pirrig_road )
83 ! ##########################################################################
84 !
85 !!**** *TEB*
86 !!
87 !! PURPOSE
88 !! -------
89 !
90 ! Computes the evoultion of prognostic variables and the fluxes
91 ! over artificial surfaces as towns, taking into account the canyon like
92 ! geometry of urbanized areas.
93 !
94 !
95 !!** METHOD
96 ! ------
97 !
98 ! The prognostic variables are:
99 ! - the surface temperature for roofs, roads, and walls
100 ! - the water reservoir, whose maximum value is 10mm
101 !
102 !
103 ! 1 : Warning about snow
104 ! ******************
105 !
106 ! Except for snow mantel evolution, all other computation with snow
107 ! variables must be performed with these variables at previous time-step,
108 ! and NOT new time-step. This insure coherence between snow fractions
109 ! (computed at the begining) and other snow characteristics (albedo, Ts).
110 !
111 !
112 ! 2 : computation of input solar radiation on each surface
113 ! ****************************************************
114 !
115 ! Those are now done in subroutine urban_solar_abs.F90
116 !
117 ! 3 : drag coefficient for momentum
118 ! *****************************
119 !
120 !
121 ! 4 : aerodynamical resistance for heat transfers
122 ! *******************************************
123 !
124 !
125 ! 5 : equation for evolution of Ts_roof
126 ! *********************************
127 !
128 !
129 ! Rn = (dir_Rg + sca_Rg) (1-a) + emis * ( Rat - sigma Ts**4 (t+dt) )
130 !
131 ! H = rho Cp CH V ( Ts (t+dt) - Tas )
132 !
133 ! LE = rho Lv CH V ( qs (t+dt) - qas )
134 !
135 ! where the as subscript denotes atmospheric values at ground level
136 ! (and not at first half level)
137 !
138 !
139 ! 6 : equations for evolution of Ts_road and Ts_wall simultaneously
140 ! *************************************************************
141 !
142 !
143 !
144 ! Rn_w = abs_Rg_w
145 ! - sigma * emis_w * Ts_w**4 (t+dt)
146 ! + emis_w * SVF_w * Rat
147 ! + sigma * emis_w * emis_r * SVF_w * Ts_r**4 (t+dt)
148 ! + sigma * emis_w * emis_w * (1-2*SVF_w) * Ts_w**4 (t+dt)
149 ! + sigma * emis_w * emis_w * (1-emis_r) * SVF_w * (1- SVF_r) * Ts_w**4 (t+dt)
150 ! + sigma * emis_w * emis_w * (1-emis_w) * (1-2*SVF_w) * (1-2*SVF_w) * Ts_w**4 (t+dt)
151 ! + sigma * emis_w * emis_r * (1-emis_w) * SVF_w * (1-2*SVF_w) * Ts_r**4 (t+dt)
152 !
153 ! Rn_r = abs_Rg_r
154 ! - sigma * emis_r * Ts_r**4 (t+dt)
155 ! + emis_r * SVF_r * Rat
156 ! + sigma * emis_r * emis_w * (1-SVF_r) * Ts_w**4 (t+dt)
157 ! + sigma * emis_r * emis_w * (1-emis_w) * (1-SVF_r) * (1-2*SVF_w) * Ts_w**4 (t+dt)
158 ! + sigma * emis_r * emis_r * (1-emis_w) * (1-SVF_r) * SVF_w * Ts_r**4 (t+dt)
159 !
160 ! H_w = rho Cp CH V ( Ts_w (t+dt) - Ta_canyon )
161 !
162 ! LE_w = rho Lv CH V ( qs_w (t+dt) - qa_canyon )
163 !
164 ! H_r = rho Cp CH V ( Ts_r (t+dt) - Ta_canyon )
165 !
166 ! LE_r = rho Lv CH V ( qs_r (t+dt) - qa_canyon )
167 !
168 ! with again
169 ! AC_can * Swall/Sroad * Twall + AC_can * Troad + AC_top * Ta + H_traffic/Cp/rho/Sroad
170 ! Ta_canyon = -------------------------------------------------------------------------------------
171 ! AC_can * Swall/Sroad + AC_can + AC_top
172 !
173 !
174 ! AC_can * delt_road * Hu_road * qsat(Troad) + AC_top * qa + LE_traffic/Lv/rho/Sroad
175 ! qa_canyon = ------------------------------------------------------------------------------------
176 ! AC_can * delt_road + AC_top
177 !
178 !
179 !
180 !
181 ! 7 : computation of fluxes for each surface type
182 ! *******************************************
183 !
184 !
185 ! 8 : averaging of the fluxes
186 ! ***********************
187 !
188 ! This is done on the total exchange surface (roof + wall + road),
189 ! which is bigger than the horizontal surface (roof+road), leading
190 ! to bigger fluxes.
191 !
192 ! The fluxes due to industrial activity are directly added into the
193 ! atmosphere
194 !
195 !
196 ! 9 : road reservoir evolution
197 ! ************************
198 !
199 ! The roof reservoir runoff goes directly into the road reservoir.
200 !
201 ! Runoff occurs for road reservoir (too much water), as well as drainage
202 ! (evacuation system, typical time scale: 1 day)
203 !
204 !
205 !------------------------
206 !! EXTERNAL
207 !! --------
208 !!
209 !!
210 !! IMPLICIT ARGUMENTS
211 !! ------------------
212 !!
213 !! MODD_CST
214 !!
215 !!
216 !! REFERENCE
217 !! ---------
218 !!
219 !!
220 !! AUTHOR
221 !! ------
222 !!
223 !! V. Masson * Meteo-France *
224 !!
225 !! MODIFICATIONS
226 !! -------------
227 !! Original 23/01/98
228 !! 21 / 10 / 2003 P. Tulet output aerodynamical resistance
229 !! 01 / 07 / 2005 P.Le Moigne Exner functions as arguments to urban_fluxes
230 !! 17 / 10 / 2005 (G. Pigeon) computation of anthropogenic heat from domestic heating
231 !! 01 / 2012 V. Masson Separates the 2 walls
232 !! 25 / 09 / 2012 B. Decharme new wind implicitation
233 !! 07 / 2013 V. Masson Adds road watering
234 !-------------------------------------------------------------------------------
235 !
236 !* 0. DECLARATIONS
237 ! ------------
238 !
240 USE modd_csts, ONLY : xtt, xstefan, xcpd, xlvtt
241 USE modd_surf_par, ONLY : xundef
242 USE modd_snow_par, ONLY : xemissn, xansmax_roof, &
243  xansmax_road,xwcrn_roof,xwcrn_road
244 !
245 USE mode_thermos
247 !
248 USE modi_snow_cover_1layer
249 USE modi_urban_drag
250 USE modi_urban_snow_evol
251 USE modi_roof_layer_e_budget
252 USE modi_road_layer_e_budget
253 USE modi_facade_e_budget
254 USE modi_urban_fluxes
255 USE modi_urban_hydro
256 USE modi_bld_e_budget
257 USE modi_wind_threshold
258 USE modi_bem
259 USE modi_teb_irrig
260 !
261 USE yomhook ,ONLY : lhook, dr_hook
262 USE parkind1 ,ONLY : jprb
263 !
264 IMPLICIT NONE
265 !
266 !* 0.1 Declarations of arguments
267 !
268 !
269  CHARACTER(LEN=6), INTENT(IN) :: hz0h ! TEB option for z0h roof & road
270 ! ! 'MASC95' : Mascart et al 1995
271 ! ! 'BRUT82' : Brustaert 1982
272 ! ! 'KAND07' : Kanda 2007
273  CHARACTER(LEN=*), INTENT(IN) :: himplicit_wind ! wind implicitation option
274 ! ! 'OLD' = direct
275 ! ! 'NEW' = Taylor serie, order 1
276  CHARACTER(LEN=4), INTENT(IN) :: hwall_opt ! TEB option for walls
277  ! 'UNIF' : uniform walls
278  ! 'TWO ' : two different opposite walls
279  CHARACTER(LEN=3), INTENT(IN) :: hbem ! Building Energy model 'DEF' or 'BEM'
280 TYPE(date_time) , INTENT(IN) :: tptime ! current date and time from teb
281 REAL, DIMENSION(:), INTENT(IN) :: ptsun ! solar time (s from midnight)
282 REAL, DIMENSION(:), INTENT(INOUT) :: pt_canyon ! canyon air temperature
283 REAL, DIMENSION(:), INTENT(INOUT) :: pq_canyon ! canyon air specific humidity
284 REAL, DIMENSION(:), INTENT(IN) :: pu_canyon ! canyon hor. wind
285 REAL, DIMENSION(:), INTENT(IN) :: pu_lowcan ! wind near the road
286 REAL, DIMENSION(:), INTENT(IN) :: pt_lowcan ! temp. near the road
287 REAL, DIMENSION(:), INTENT(IN) :: pq_lowcan ! hum. near the road
288 REAL, DIMENSION(:), INTENT(IN) :: pz_lowcan ! height of atm. var. near the road
289 REAL, DIMENSION(:), INTENT(INOUT) :: pti_bld ! inside building temperature
290 REAL, DIMENSION(:,:), INTENT(INOUT) :: pt_roof ! roof layers temperatures
291 REAL, DIMENSION(:,:), INTENT(INOUT) :: pt_road ! road layers temperatures
292 REAL, DIMENSION(:,:), INTENT(INOUT) :: pt_wall_a ! wall A layers temperatures
293 REAL, DIMENSION(:,:), INTENT(INOUT) :: pt_wall_b ! wall B layers temperatures
294 REAL, DIMENSION(:), INTENT(INOUT) :: pws_roof ! roof water reservoir
295 REAL, DIMENSION(:), INTENT(INOUT) :: pws_road ! road water reservoir
296  CHARACTER(LEN=*), INTENT(IN) :: hsnow_roof ! snow roof scheme
297 ! ! 'NONE'
298 ! ! 'D95 '
299 ! ! '1-L '
300  CHARACTER(LEN=*), INTENT(IN) :: hsnow_road ! snow road scheme
301 ! ! 'NONE'
302 ! ! 'D95 '
303 ! ! '1-L '
304 REAL, DIMENSION(:,:), INTENT(INOUT) :: pwsnow_roof ! snow layers reservoir
305 REAL, DIMENSION(:,:), INTENT(INOUT) :: ptsnow_roof ! snow layers temperature
306 REAL, DIMENSION(:,:), INTENT(INOUT) :: prsnow_roof ! snow layers density
307 REAL, DIMENSION(:), INTENT(INOUT) :: pasnow_roof ! snow albedo
308 REAL, DIMENSION(:), INTENT(INOUT) :: pesnow_roof ! snow emissivity
309 REAL, DIMENSION(:), INTENT(INOUT) :: ptssnow_roof! snow surface temperature
310 REAL, DIMENSION(:,:), INTENT(INOUT) :: pwsnow_road ! snow layers reservoir
311 REAL, DIMENSION(:,:), INTENT(INOUT) :: ptsnow_road ! snow layers temperature
312 REAL, DIMENSION(:,:), INTENT(INOUT) :: prsnow_road ! snow layers density
313 REAL, DIMENSION(:), INTENT(INOUT) :: pasnow_road ! snow albedo
314 REAL, DIMENSION(:), INTENT(INOUT) :: pesnow_road ! snow emissivity
315 REAL, DIMENSION(:), INTENT(INOUT) :: ptssnow_road! snow surface temperature
316 REAL, DIMENSION(:), INTENT(IN) :: ppew_a_coef ! implicit coefficients
317 REAL, DIMENSION(:), INTENT(IN) :: ppew_b_coef ! for wind coupling
318 REAL, DIMENSION(:), INTENT(IN) :: ppew_a_coef_lowcan ! implicit coefficients for wind coupling
319 REAL, DIMENSION(:), INTENT(IN) :: ppew_b_coef_lowcan ! between low canyon wind and road
320 REAL, DIMENSION(:), INTENT(IN) :: pps ! pressure at the surface
321 REAL, DIMENSION(:), INTENT(IN) :: ppa ! pressure at the first atmospheric level
322 REAL, DIMENSION(:), INTENT(IN) :: pexns ! surface exner function
323 REAL, DIMENSION(:), INTENT(IN) :: pta ! temperature at the lowest level
324 REAL, DIMENSION(:), INTENT(IN) :: pqa ! specific humidity
325  ! at the lowest level
326 REAL, DIMENSION(:), INTENT(IN) :: pvmod ! module of the horizontal wind
327 REAL, DIMENSION(:), INTENT(IN) :: pexna ! exner function
328  ! at the lowest level
329 REAL, DIMENSION(:), INTENT(IN) :: prhoa ! air density
330  ! at the lowest level
331 REAL, DIMENSION(:), INTENT(IN) :: plw_rad ! atmospheric infrared radiation
332 REAL, DIMENSION(:), INTENT(IN) :: prr ! rain rate
333 REAL, DIMENSION(:), INTENT(IN) :: psr ! snow rate
334 REAL, DIMENSION(:), INTENT(IN) :: ph_traffic ! anthropogenic sensible
335 ! ! heat fluxes due to traffic
336 REAL, DIMENSION(:), INTENT(IN) :: ple_traffic ! anthropogenic latent
337 ! ! heat fluxes due to traffic
338 REAL, DIMENSION(:), INTENT(IN) :: ph_industry ! anthropogenic sensible
339 ! ! heat fluxes due to factories
340 REAL, DIMENSION(:), INTENT(IN) :: ple_industry ! anthropogenic latent
341 ! ! heat fluxes due to factories
342 REAL, DIMENSION(:), INTENT(IN) :: pzref ! reference height of the first
343  ! atmospheric level (temperature)
344 REAL, DIMENSION(:), INTENT(IN) :: puref ! reference height of the first
345  ! atmospheric level (wind)
346 REAL, INTENT(IN) :: ptstep ! time step
347 REAL, DIMENSION(:), INTENT(IN) :: pz0_town ! town roughness length
348  ! for momentum
349 REAL, DIMENSION(:), INTENT(IN) :: pbld ! fraction of buildings
350 REAL, DIMENSION(:), INTENT(IN) :: pgarden ! fraction of GARDEN areas
351 REAL, DIMENSION(:), INTENT(IN) :: proad ! fraction of roads
352 REAL, DIMENSION(:), INTENT(IN) :: pfrac_gr ! fraction of green roofs
353 REAL, DIMENSION(:), INTENT(IN) :: pbld_height ! buildings h
354 REAL, DIMENSION(:), INTENT(IN) :: pwall_o_hor ! wall surf. / hor. surf.
355 REAL, DIMENSION(:), INTENT(IN) :: pcan_hw_ratio ! canyon h/W
356 REAL, DIMENSION(:), INTENT(IN) :: pwall_o_grnd ! wall surf. / (road + gard. surf.)
357 !
358 REAL, DIMENSION(:), INTENT(INOUT) :: pdf_roof ! snow-free fraction on roofs
359 REAL, DIMENSION(:), INTENT(INOUT) :: pdn_roof ! snow-covered fraction on roofs
360 REAL, DIMENSION(:), INTENT(INOUT) :: pdf_road ! snow-free fraction on roads
361 REAL, DIMENSION(:), INTENT(INOUT) :: pdn_road ! snow-covered fraction on roads
362 REAL, DIMENSION(:), INTENT(OUT) :: pqsat_roof ! hum at saturation over roof
363 REAL, DIMENSION(:), INTENT(OUT) :: pqsat_road ! hum at saturation over road
364 REAL, DIMENSION(:), INTENT(OUT) :: pdelt_roof ! water fraction on roof
365 REAL, DIMENSION(:), INTENT(OUT) :: pdelt_road ! water fraction on road
366 !
367 REAL, DIMENSION(:), INTENT(IN) :: pemis_roof ! roof emissivity
368 REAL, DIMENSION(:,:), INTENT(IN) :: phc_roof ! heat capacity for roof layers
369 REAL, DIMENSION(:,:), INTENT(IN) :: ptc_roof ! thermal conductivity for roof layers
370 REAL, DIMENSION(:,:), INTENT(IN) :: pd_roof ! depth of roof layers
371 REAL, DIMENSION(:), INTENT(IN) :: pemis_road ! road emissivity
372 REAL, DIMENSION(:,:), INTENT(IN) :: phc_road ! heat capacity for road layers
373 REAL, DIMENSION(:,:), INTENT(IN) :: ptc_road ! thermal conductivity for road layers
374 REAL, DIMENSION(:,:), INTENT(IN) :: pd_road ! depth of road layers
375 REAL, DIMENSION(:), INTENT(IN) :: pemis_wall ! wall emissivity
376 REAL, DIMENSION(:,:), INTENT(IN) :: phc_wall ! heat capacity for wall layers
377 REAL, DIMENSION(:,:), INTENT(IN) :: ptc_wall ! thermal conductivity for wall layers
378 REAL, DIMENSION(:,:), INTENT(IN) :: pd_wall ! depth of wall layers
379 REAL, DIMENSION(:), INTENT(IN) :: pts_garden ! GARDEN area surf temp.
380 ! greenroof
381 REAL, DIMENSION(:), INTENT(IN) :: pg_greenroof_roof ! snow melt
382 !
383 REAL, DIMENSION(:), INTENT(OUT) :: prn_roof ! net radiation over roof
384 REAL, DIMENSION(:), INTENT(OUT) :: ph_roof ! sensible heat flux over roof
385 REAL, DIMENSION(:), INTENT(OUT) :: ple_roof ! latent heat flux over roof
386 REAL, DIMENSION(:), INTENT(OUT) :: plew_roof ! latent heat flux over roof (snow)
387 REAL, DIMENSION(:), INTENT(OUT) :: pgflux_roof ! flux through the roof
388 REAL, DIMENSION(:), INTENT(OUT) :: prunoff_strlroof ! runoff over the ground
389 REAL, DIMENSION(:), INTENT(OUT) :: prunoff_roof ! runoff over roofs
390 REAL, DIMENSION(:), INTENT(OUT) :: prn_road ! net radiation over road
391 REAL, DIMENSION(:), INTENT(OUT) :: ph_road ! sensible heat flux over road
392 REAL, DIMENSION(:), INTENT(OUT) :: ple_road ! latent heat flux over road
393 REAL, DIMENSION(:), INTENT(OUT) :: plew_road ! latent heat flux over road (snow)
394 REAL, DIMENSION(:), INTENT(OUT) :: pgflux_road ! flux through the road
395 REAL, DIMENSION(:), INTENT(OUT) :: prunoff_road ! runoff over the ground
396 REAL, DIMENSION(:), INTENT(OUT) :: prn_wall_a ! net radiation over wall
397 REAL, DIMENSION(:), INTENT(OUT) :: ph_wall_a ! sensible heat flux over wall
398 REAL, DIMENSION(:), INTENT(OUT) :: ple_wall_a ! latent heat flux over wall
399 REAL, DIMENSION(:), INTENT(OUT) :: pgflux_wall_a! flux through the wall
400 REAL, DIMENSION(:), INTENT(OUT) :: prn_wall_b ! net radiation over wall
401 REAL, DIMENSION(:), INTENT(OUT) :: ph_wall_b ! sensible heat flux over wall
402 REAL, DIMENSION(:), INTENT(OUT) :: ple_wall_b ! latent heat flux over wall
403 REAL, DIMENSION(:), INTENT(OUT) :: pgflux_wall_b! flux through the wall
404 REAL, DIMENSION(:), INTENT(OUT) :: prn_blt ! net radiation over built surf
405 REAL, DIMENSION(:), INTENT(OUT) :: ph_blt ! sensible heat flux over built surf
406 REAL, DIMENSION(:), INTENT(OUT) :: ple_blt ! latent heat flux over built surf
407 REAL, DIMENSION(:), INTENT(OUT) :: pgflux_blt ! flux through the built surf
408 !
409 REAL, DIMENSION(:), INTENT(IN) :: prn_greenroof ! net radiation over greenroof
410 REAL, DIMENSION(:), INTENT(IN) :: ph_greenroof ! sensible heat flux over greenroof
411 REAL, DIMENSION(:), INTENT(IN) :: ple_greenroof ! latent heat flux over greenroof
412 REAL, DIMENSION(:), INTENT(IN) :: pgflux_greenroof ! flux through the greenroof
413 REAL, DIMENSION(:), INTENT(IN) :: puw_greenroof ! Momentum flux for greenroofs
414 REAL, DIMENSION(:), INTENT(IN) :: prunoff_greenroof ! runoff over green roofs
415 REAL, DIMENSION(:), INTENT(IN) :: pdrain_greenroof ! outlet drainage at base of green roofs
416 !
417 REAL, DIMENSION(:), INTENT(OUT) :: prn_strlroof ! net radiation over structural roof
418 REAL, DIMENSION(:), INTENT(OUT) :: ph_strlroof ! sensible heat flux over structural roof
419 REAL, DIMENSION(:), INTENT(OUT) :: ple_strlroof ! latent heat flux over structural roof
420 REAL, DIMENSION(:), INTENT(OUT) :: pgflux_strlroof ! flux through the structural roof
421 !
422 REAL, DIMENSION(:), INTENT(OUT) :: prnsnow_roof ! net radiation over snow
423 REAL, DIMENSION(:), INTENT(OUT) :: phsnow_roof ! sensible heat flux over snow
424 REAL, DIMENSION(:), INTENT(OUT) :: plesnow_roof ! latent heat flux over snow
425 REAL, DIMENSION(:), INTENT(OUT) :: pgsnow_roof ! flux under the snow
426 REAL, DIMENSION(:), INTENT(OUT) :: pmelt_roof ! snow melt
427 REAL, DIMENSION(:), INTENT(OUT) :: prnsnow_road ! net radiation over snow
428 REAL, DIMENSION(:), INTENT(OUT) :: phsnow_road ! sensible heat flux over snow
429 REAL, DIMENSION(:), INTENT(OUT) :: plesnow_road ! latent heat flux over snow
430 REAL, DIMENSION(:), INTENT(OUT) :: pgsnow_road ! flux under the snow
431 REAL, DIMENSION(:), INTENT(OUT) :: pmelt_road ! snow melt
432 !
433 REAL, DIMENSION(:), INTENT(OUT) :: puw_road ! Momentum flux for roads
434 REAL, DIMENSION(:), INTENT(OUT) :: puw_roof ! Momentum flux for roofs
435 REAL, DIMENSION(:), INTENT(OUT) :: pduwdu_road !
436 REAL, DIMENSION(:), INTENT(OUT) :: pduwdu_roof !
437 REAL, DIMENSION(:), INTENT(OUT) :: pustar_town ! friciton velocity over town
438 REAL, DIMENSION(:), INTENT(OUT) :: pcd ! town averaged drag coefficient
439 REAL, DIMENSION(:), INTENT(OUT) :: pcdn ! town averaged neutral drag coefficient
440 REAL, DIMENSION(:), INTENT(OUT) :: pch_town ! town averaged heat transfer
441 ! ! coefficient
442 REAL, DIMENSION(:), INTENT(OUT) :: pri_town ! town averaged Richardson number
443 REAL, DIMENSION(:), INTENT(OUT) :: presa_town ! town aerodynamical resistance
444 REAL, DIMENSION(:), INTENT(OUT) :: pdqs_town ! heat storage inside town
445 REAL, DIMENSION(:), INTENT(OUT) :: pqf_town ! total anthropogenic heat
446 REAL, DIMENSION(:), INTENT(OUT) :: pqf_bld ! anthropogenic heat flux of
447  ! domestic heating
448 REAL, DIMENSION(:), INTENT(OUT) :: pflx_bld ! heat flx from inside bld through its structure
449 REAL, DIMENSION(:), INTENT(OUT) :: pac_roof ! roof conductance
450 REAL, DIMENSION(:), INTENT(INOUT) :: pac_road ! road conductance
451 REAL, DIMENSION(:), INTENT(OUT) :: pac_wall ! wall conductance
452 REAL, DIMENSION(:), INTENT(OUT) :: pac_top ! top conductance
453 REAL, DIMENSION(:), INTENT(IN) :: pac_garden ! garden conductance
454 REAL, DIMENSION(:), INTENT(OUT) :: pac_roof_wat ! roof water conductance
455 REAL, DIMENSION(:), INTENT(OUT) :: pac_road_wat ! roof water conductance
456 !
457 REAL, DIMENSION(:), INTENT(IN) :: pabs_sw_roof ! absorbed solar rad by roof
458 REAL, DIMENSION(:), INTENT(IN) :: pabs_sw_snow_roof ! absorbed solar rad by snow on roof
459 REAL, DIMENSION(:), INTENT(IN) :: pabs_sw_road ! absorbed solar rad by road
460 REAL, DIMENSION(:), INTENT(IN) :: pabs_sw_snow_road ! absorbed solar rad by snow on road
461 REAL, DIMENSION(:), INTENT(IN) :: pabs_sw_wall_a ! absorbed solar rad by wall
462 REAL, DIMENSION(:), INTENT(IN) :: pabs_sw_wall_b ! absorbed solar rad by wall
463 REAL, DIMENSION(:), INTENT(OUT) :: pabs_lw_roof ! absorbed IR rad by roof
464 REAL, DIMENSION(:), INTENT(OUT) :: pabs_lw_snow_roof ! absorbed IR rad by snow on roof
465 REAL, DIMENSION(:), INTENT(OUT) :: pabs_lw_road ! absorbed IR rad by road
466 REAL, DIMENSION(:), INTENT(OUT) :: pabs_lw_snow_road ! absorbed IR rad by snow on road
467 REAL, DIMENSION(:), INTENT(OUT) :: pabs_lw_wall_a ! absorbed IR rad by wall
468 REAL, DIMENSION(:), INTENT(OUT) :: pabs_lw_wall_b ! absorbed IR rad by wall
469 !
470 REAL, DIMENSION(:), INTENT(IN) :: plw_wa_to_wb ! LW contrib. wall A (orB) -> wall B (or A)
471 REAL, DIMENSION(:), INTENT(IN) :: plw_wa_to_r ! LW contrib. wall -> road
472 REAL, DIMENSION(:), INTENT(IN) :: plw_wb_to_r ! LW contrib. wall -> road
473 REAL, DIMENSION(:), INTENT(IN) :: plw_wa_to_nr ! LW contrib. wall -> road(snow)
474 REAL, DIMENSION(:), INTENT(IN) :: plw_wb_to_nr ! LW contrib. wall -> road(snow)
475 REAL, DIMENSION(:), INTENT(IN) :: plw_r_to_wa ! LW contrib. road -> wall
476 REAL, DIMENSION(:), INTENT(IN) :: plw_r_to_wb ! LW contrib. road -> wall
477 REAL, DIMENSION(:), INTENT(IN) :: plw_g_to_wa ! LW contrib. GARDEN -> wall
478 REAL, DIMENSION(:), INTENT(IN) :: plw_g_to_wb ! LW contrib. GARDEN -> wall
479 REAL, DIMENSION(:), INTENT(IN) :: plw_nr_to_wa ! LW contrib. road(snow) -> wall
480 REAL, DIMENSION(:), INTENT(IN) :: plw_nr_to_wb ! LW contrib. road(snow) -> wall
481 REAL, DIMENSION(:), INTENT(IN) :: plw_s_to_wa ! LW contrib. sky -> wall
482 REAL, DIMENSION(:), INTENT(IN) :: plw_s_to_wb ! LW contrib. sky -> wall
483 REAL, DIMENSION(:), INTENT(IN) :: plw_s_to_r ! LW contrib. sky -> road
484 REAL, DIMENSION(:), INTENT(IN) :: plw_s_to_nr ! LW contrib. sky -> road(snow)
485 !
486 ! new arguments after BEM
487 !
488  CHARACTER(LEN=4), DIMENSION(:), INTENT(IN) :: hnatvent
489  CHARACTER(LEN=6), INTENT(IN) :: hcool_coil
490 REAL, DIMENSION(:), INTENT(IN) :: pf_water_cond!fraction of evaporation for the condensers
491  CHARACTER(LEN=6), INTENT(IN) :: hheat_coil
492 LOGICAL, INTENT(IN) :: oautosize ! Flag to activate autosize calculations
493 INTEGER, INTENT(IN) :: kday ! Simulation day
494 REAL, DIMENSION(:), INTENT(INOUT) :: paux_max ! Auxiliar variable for autosize calcs
495 REAL, DIMENSION(:,:), INTENT(INOUT):: pt_floor ! Floor layers temperatures [K]
496 REAL, DIMENSION(:,:), INTENT(INOUT):: pt_mass ! Internal mass layers temperatures [K]
497 REAL, DIMENSION(:), INTENT(OUT) :: ph_bld_cool ! Sensible cooling energy demand
498  ! of the building [W m-2(bld)]
499 REAL, DIMENSION(:), INTENT(OUT) :: pt_bld_cool ! Total cooling energy demand
500  ! of the building [W m-2(bld)]
501 REAL, DIMENSION(:), INTENT(OUT) :: ph_bld_heat ! Heating energy demand
502  ! of the building [W m-2(bld)]
503 REAL, DIMENSION(:), INTENT(OUT) :: ple_bld_cool ! Latent cooling energy demand
504  ! of the building [W m-2(bld)]
505 REAL, DIMENSION(:), INTENT(OUT) :: ple_bld_heat ! Latent heating energy demand
506  ! of the building [W m-2(bld)]
507 REAL, DIMENSION(:), INTENT(OUT) :: ph_waste ! Sensible waste heat from HVAC system
508  ! [W m-2(tot)]
509 REAL, DIMENSION(:), INTENT(OUT) :: ple_waste ! Latent waste heat from HVAC system
510  ! [W m-2(tot)]
511 REAL, DIMENSION(:), INTENT(IN) :: pf_waste_can ! fraction of waste heat released into the canyon
512 REAL, DIMENSION(:), INTENT(OUT) :: phvac_cool ! Energy consumption of the cooling system
513  ! [W m-2(bld)]
514 REAL, DIMENSION(:), INTENT(OUT) :: phvac_heat ! Energy consumption of the heating system
515  ! [W m-2(bld)]
516 REAL, DIMENSION(:), INTENT(IN) :: pqin ! Internal heat gains [W m-2(floor)]
517 REAL, DIMENSION(:), INTENT(IN) :: pqin_frad ! Radiant fraction of internal heat gains
518 REAL, DIMENSION(:), INTENT(IN) :: pqin_flat ! Latent franction of internal heat gains
519 REAL, DIMENSION(:), INTENT(IN) :: pgr ! Glazing ratio
520 REAL, DIMENSION(:), INTENT(IN) :: peff_heat ! Efficiency of the heating system
521 REAL, DIMENSION(:), INTENT(IN) :: pinf ! Infiltration flow rate [AC/H]
522 REAL, DIMENSION(:), INTENT(IN) :: ptcool_target ! Cooling setpoint of HVAC system [K]
523 REAL, DIMENSION(:), INTENT(IN) :: ptheat_target ! Heating setpoint of HVAC system [K]
524 REAL, DIMENSION(:), INTENT(IN) :: phr_target ! Relative humidity setpoint
525 REAL, DIMENSION(:), INTENT(INOUT):: pt_win2 ! Indoor window temperature [K]
526 REAL, DIMENSION(:), INTENT(INOUT):: pqi_bld ! Indoor air specific humidity [kg kg-1]
527 REAL, DIMENSION(:), INTENT(IN) :: pv_vent ! Ventilation flow rate [AC/H]
528 REAL, DIMENSION(:), INTENT(IN) :: pcap_sys_heat ! Capacity of the heating system
529  ! [W m-2(bld)]
530 REAL, DIMENSION(:), INTENT(INOUT):: pcap_sys_rat ! Rated capacity of the cooling system
531  ! [W m-2(bld)]
532 REAL, DIMENSION(:), INTENT(IN) :: pt_adp ! Apparatus dewpoint temperature of the
533  ! cooling coil [K]
534 REAL, DIMENSION(:), INTENT(INOUT):: pm_sys_rat ! Rated HVAC mass flow rate
535  ! [kg s-1 m-2(bld)]
536 REAL, DIMENSION(:), INTENT(IN) :: pcop_rat ! Rated COP of the cooling system
537 REAL, DIMENSION(:), INTENT(OUT) :: pcap_sys ! Actual capacity of the cooling system
538  ! [W m-2(bld)]
539 REAL, DIMENSION(:), INTENT(OUT) :: pm_sys ! Actual HVAC mass flow rate
540  ! [kg s-1 m-2(bld)]
541 REAL, DIMENSION(:), INTENT(OUT) :: pcop ! COP of the cooling system
542 REAL, DIMENSION(:), INTENT(OUT) :: pq_sys ! Supply air specific humidity [kg kg-1]
543 REAL, DIMENSION(:), INTENT(OUT) :: pt_sys ! Supply air temperature [K]
544 REAL, DIMENSION(:), INTENT(IN) :: ptr_sw_win ! Solar radiation transmitted throught
545  ! windows [W m-2(bld)]
546 REAL, DIMENSION(:), INTENT(OUT) :: pfan_power ! HVAC fan power
547 REAL, DIMENSION(:,:),INTENT(IN) :: phc_floor ! heat capacity for road layers
548 REAL, DIMENSION(:,:),INTENT(IN) :: ptc_floor ! thermal conductivity for
549  ! road layers
550 REAL, DIMENSION(:,:),INTENT(IN) :: pd_floor ! depth of road layers
551 REAL, DIMENSION(:), INTENT(IN) :: plw_wa_to_win ! Radiative heat trasfer coeff wall-window
552  ! [W K-1 m-2]
553 REAL, DIMENSION(:), INTENT(IN) :: plw_wb_to_win ! Radiative heat trasfer coeff wall-window
554  ! [W K-1 m-2]
555 REAL, DIMENSION(:), INTENT(IN) :: plw_g_to_win ! Radiative heat trasfer coeff garden-window
556  ! [W K-1 m-2]
557 REAL, DIMENSION(:), INTENT(IN) :: plw_r_to_win ! Radiative heat trasfer coeff road-window
558  ! [W K-1 m-2]
559 REAL, DIMENSION(:), INTENT(IN) :: plw_s_to_win ! Radiative heat trasfer coeff window-sky
560  ! [W K-1 m-2]
561 REAL, DIMENSION(:), INTENT(IN) :: plw_win_to_wa! Radiative heat trasfer coeff window-wall
562  ! [W K-1 m-2]
563 REAL, DIMENSION(:), INTENT(IN) :: plw_win_to_wb! Radiative heat trasfer coeff window-wall
564  ! [W K-1 m-2]
565 REAL, DIMENSION(:), INTENT(IN) :: plw_win_to_r ! Radiative heat trasfer coeff window-road
566  ! [W K-1 m-2]
567 REAL, DIMENSION(:), INTENT(IN) :: plw_nr_to_win! Radiative heat trasfer coeff road(snow)-win
568  ! [W K-1 m-2]
569 REAL, DIMENSION(:), INTENT(IN) :: plw_win_to_nr! Radiative heat trasfer coeff win-road(snow)
570  ! [W K-1 m-2]
571 REAL, DIMENSION(:), INTENT(INOUT):: pt_win1 ! outdoor window temperature [K]
572 REAL, DIMENSION(:), INTENT(IN) :: pabs_sw_win ! window absorbed shortwave radiation [W m-2]
573 REAL, DIMENSION(:), INTENT(OUT) :: pabs_lw_win ! absorbed infrared rad. [W m-2]
574 REAL, DIMENSION(:), INTENT(IN) :: pugg_win ! window glass-to-glass U-factro [W m-2 K-1]
575  !new argument for PET calculation
576 REAL, DIMENSION(:), INTENT(OUT) :: pemit_lw_road ! LW fluxes emitted by road (W/m2 surf road)
577 REAL, DIMENSION(:), INTENT(OUT) :: pemit_lw_fac ! LW fluxes emitted by wall (W/m2 surf wall)
578 REAL, DIMENSION(:), INTENT(OUT) :: pt_rad_ind ! Indoor mean radiant temperature [K]
579 REAL, DIMENSION(:), INTENT(OUT) :: phu_bld ! Indoor relative humidity 0 < (-) < 1
580 REAL, INTENT(IN) :: ptime ! current time since midnight (UTC, s)
581 REAL, DIMENSION(:), INTENT(IN) :: pe_shading !energy not ref., nor absorbed, nor
582  !trans. by glazing [Wm-2(win)]
583 LOGICAL, DIMENSION(:),INTENT(INOUT) :: onatvent_night ! has natural ventilation
584  !been necessary/possible during the night
585 !
586 REAL, DIMENSION(:) , INTENT(IN) :: pn_floor ! Number of floors
587 REAL, DIMENSION(:) , INTENT(IN) :: pwall_o_bld ! Wall area [m2_wall/m2_bld]
588 REAL, DIMENSION(:) , INTENT(IN) :: pglaz_o_bld ! Window area [m2_win/m2_bld]
589 REAL, DIMENSION(:) , INTENT(IN) :: pmass_o_bld ! Mass area [m2_mass/m2_bld]
590 REAL, DIMENSION(:) , INTENT(IN) :: pfloor_hw_ratio ! H/W ratio of 1 floor level
591 REAL, DIMENSION(:) , INTENT(IN) :: pf_floor_mass ! View factor floor-mass
592 REAL, DIMENSION(:) , INTENT(IN) :: pf_floor_wall ! View factor floor-wall
593 REAL, DIMENSION(:) , INTENT(IN) :: pf_floor_win ! View factor floor-window
594 REAL, DIMENSION(:) , INTENT(IN) :: pf_floor_roof ! View factor floor-roof
595 REAL, DIMENSION(:) , INTENT(IN) :: pf_wall_floor ! View factor wall-floor
596 REAL, DIMENSION(:) , INTENT(IN) :: pf_wall_mass ! View factor wall-mass
597 REAL, DIMENSION(:) , INTENT(IN) :: pf_wall_win ! View factor wall-win
598 REAL, DIMENSION(:) , INTENT(IN) :: pf_win_floor ! View factor win-floor
599 REAL, DIMENSION(:) , INTENT(IN) :: pf_win_mass ! View factor win-mass
600 REAL, DIMENSION(:) , INTENT(IN) :: pf_win_wall ! View factor win-wall
601 REAL, DIMENSION(:) , INTENT(IN) :: pf_mass_floor ! View factor mass-floor
602 REAL, DIMENSION(:) , INTENT(IN) :: pf_mass_wall ! View factor mass-wall
603 REAL, DIMENSION(:) , INTENT(IN) :: pf_mass_win ! View factor mass-window
604 LOGICAL, INTENT(IN) :: ocanopy ! is canopy active ?
605  CHARACTER(LEN=5), INTENT(IN) :: hch_bem ! TEB option for outside building coef
606  ! "DOE-2"
607 REAL, DIMENSION(:) , INTENT(IN) :: prough_roof ! roof roughness coef
608 REAL, DIMENSION(:) , INTENT(IN) :: prough_wall ! wall roughness coef
609 REAL, DIMENSION(:) , INTENT(IN) :: pf_win_win ! indoor win to win view factor
610 !
611 !* arguments for road watering
612 !
613 LOGICAL, INTENT(IN) :: opar_rd_irrig ! True if there is potentially irrigation
614 REAL, DIMENSION(:), INTENT(IN) :: prd_start_month! First month of irrigation
615 REAL, DIMENSION(:), INTENT(IN) :: prd_end_month ! Last month of irrigation
616 REAL, DIMENSION(:), INTENT(IN) :: prd_start_hour ! First hour of irrigation (included)
617 REAL, DIMENSION(:), INTENT(IN) :: prd_end_hour ! Last hour of irrigation (excluded)
618 REAL, DIMENSION(:), INTENT(IN) :: prd_24h_irrig ! diurnal averaged irrigation flux (kg/m2/s)
619 REAL, DIMENSION(:), INTENT(OUT) :: pirrig_road ! man-made watering for road (kg/m2/s)
620 !
621 !* 0.2 Declarations of local variables
622 !
623 REAL, DIMENSION(SIZE(PTA)) :: zvmod ! wind
624 REAL, DIMENSION(SIZE(PTA)) :: zws_roof_max ! maximum deepness of roof
625 REAL, DIMENSION(SIZE(PTA)) :: zws_road_max ! and road water reservoirs
626 !
627 REAL, DIMENSION(SIZE(PTA)) :: zac_bld ! surface conductance inside the building itself in DEF building model
628 REAL, DIMENSION(SIZE(PTA)) :: zta ! air temperature extrapolated at roof level
629 REAL, DIMENSION(SIZE(PTA)) :: zqa ! air humidity extrapolated at roof level
630 !
631 REAL, DIMENSION(SIZE(PTA)) :: zdqs_road ! heat storage inside road
632 REAL, DIMENSION(SIZE(PTA)) :: zdqs_roof ! heat storage inside roof
633 REAL, DIMENSION(SIZE(PTA)) :: zdqs_wall_a ! heat storage inside wall
634 REAL, DIMENSION(SIZE(PTA)) :: zdqs_wall_b ! heat storage inside wall
635 REAL, DIMENSION(SIZE(PTA)) :: zflx_bld_roof !heat flux from inside through roof
636 REAL, DIMENSION(SIZE(PTA)) :: zflx_bld_wall_a!heat flux from inside through wall
637 REAL, DIMENSION(SIZE(PTA)) :: zflx_bld_wall_b!heat flux from inside through wall
638 REAL, DIMENSION(SIZE(PTA)) :: zflx_bld_floor !heat flux from inside through floor
639 REAL, DIMENSION(SIZE(PTA)) :: zflx_bld_mass !heat flux from inside through mass
640 !
641 REAL, DIMENSION(SIZE(PTA)) :: zdqs_snow_roof ! heat storage inside roof snowpack
642 REAL, DIMENSION(SIZE(PTA)) :: zdqs_snow_road ! heat storage inside road snowpack
643 REAL, DIMENSION(SIZE(PTA)) :: zmelt_blt ! Snow melt for built & impervious part
644 !
645 ! coefficients for LW computations over snow (from previous time-step)
646 !
647 REAL, DIMENSION(SIZE(PTA)) :: ztssnow_road ! road snow temperature
648 ! ! at previous time-step
649 ! new local variables after BEM
650 !
651 REAL, DIMENSION(SIZE(PTA)) :: zimb_roof ! residual energy imbalance
652  ! of the roof for
653  ! verification
654 REAL, DIMENSION(SIZE(PTA)) :: zimb_road ! road residual energy imbalance
655  ! for verification [W m-2]
656 REAL, DIMENSION(SIZE(PTA)) :: zimb_wall ! wall residual energy imbalance
657  ! for verification [W m-2]
658 REAL, DIMENSION(SIZE(PTA)) :: zts_road ! road surface temperature
659 ! ! at previous time-step
660 REAL, DIMENSION(SIZE(PTA)) :: zts_wall_a ! wall A surface temperature
661 ! ! at previous time-step
662 REAL, DIMENSION(SIZE(PTA)) :: zts_wall_b ! wall B surface temperature
663 ! ! at previous time-step
664 REAL, DIMENSION(SIZE(PTA)) :: zts_wall ! averaged wall surface temperature
665 ! ! at previous time-step
666 REAL, DIMENSION(SIZE(PTA)) :: zts_roof ! roof surface temperature
667 ! ! at previous time-step
668 REAL, DIMENSION(SIZE(PTA),SIZE(PT_WALL_A,2)) :: zt_wall ! averaged wall surface temperature
669 !
670 INTEGER :: iwall, iroof ! number of wall, roof layer
671 REAL, DIMENSION(SIZE(PTA)) :: zradht_in ! Indoor radiant heat transfer coefficient
672  ! [W K-1 m-2]
673 REAL, DIMENSION(SIZE(PTA)) :: zts_floor ! floor surface temperature [K]
674 REAL, DIMENSION(SIZE(PTA)) :: zrad_roof_wall ! rad. flux from roof to averaged wall [W m-2(roof)]
675 REAL, DIMENSION(SIZE(PTA)) :: zrad_roof_win ! rad. flux from roof to window [W m-2(roof)]
676 REAL, DIMENSION(SIZE(PTA)) :: zrad_roof_floor ! rad. flux from roof to floor [W m-2(roof)]
677 REAL, DIMENSION(SIZE(PTA)) :: zrad_roof_mass ! rad. flux from roof to mass [W m-2(roof)]
678 REAL, DIMENSION(SIZE(PTA)) :: zconv_roof_bld ! rad. flux from roof to bld [W m-2(roof)]
679 REAL, DIMENSION(SIZE(PTA)) :: zrad_wall_floor ! rad. flux from averaged wall to floor [W m-2(wall)]
680 REAL, DIMENSION(SIZE(PTA)) :: zrad_wall_mass ! rad. flux from averaged wall to mass [W m-2(wall)]
681 REAL, DIMENSION(SIZE(PTA)) :: zrad_win_floor ! rad. flux from averaged wall to floor [W m-2(win)]
682 REAL, DIMENSION(SIZE(PTA)) :: zrad_win_mass ! rad. flux from averaged wall to mass [W m-2(win)]
683 REAL, DIMENSION(SIZE(PTA)) :: zconv_wall_bld ! rad. flux from roof to bld [W m-2(wall)]
684 REAL, DIMENSION(SIZE(PTA)) :: zconv_win_bld ! rad. flux from roof to bld [W m-2(win)]
685 REAL, DIMENSION(SIZE(PTA)) :: zac_win ! window aerodynamic conductance
686 
687 REAL, DIMENSION(SIZE(PTA)) :: zload_in_roof ! indoor load on roof W/m2[roof]
688 REAL, DIMENSION(SIZE(PTA)) :: zload_in_floor ! indoor load on floor W/m2[floor]
689 REAL, DIMENSION(SIZE(PTA)) :: zload_in_wall ! indoor load on wall W/m2[wall]
690 REAL, DIMENSION(SIZE(PTA)) :: zload_in_win ! indoor load on win W/m2[win]
691 REAL, DIMENSION(SIZE(PTA)) :: zload_in_mass ! indoor load on mass W/m2[mass]
692 !
693 REAL(KIND=JPRB) :: zhook_handle
694 !-------------------------------------------------------------------------------
695 !
696 !* 1. Initializations
697 ! ---------------
698 !
699 !* 1.1 Water reservoirs
700 ! ----------------
701 !
702 IF (lhook) CALL dr_hook('TEB',0,zhook_handle)
703 zws_roof_max = 1. ! (1mm) maximum deepness of roof water reservoir
704 zws_road_max = 1. ! (1mm) maximum deepness of road water reservoir
705 !
706 !* 1.2 radiative snow variables at previous time-step
707 ! ----------------------------------------------
708 !
709 ztssnow_road(:)=ptssnow_road(:)
710 !
711 !
712 !* 1.3 indoor aerodynamique conductance for DEF case
713 ! ----------------------------------------------
714 !
715 zac_bld(:) = xundef
716 IF (hbem=='DEF') zac_bld=1. / 0.123 / (xcpd * prhoa(:)) !* (normalized by rho Cp for convenience)
717 !-------------------------------------------------------------------------------
718 !
719 !* 1.3 number of roof/wall layer
720 ! -------------------------
721 !
722 iwall = SIZE(pt_wall_a,2)
723 iroof = SIZE(pt_roof,2)
724 !
725 zts_wall_a(:)=pt_wall_a(:,1)
726 zts_wall_b(:)=pt_wall_b(:,1)
727 zts_wall(:)=0.5 * (zts_wall_a(:)+zts_wall_b(:))
728 zts_road(:)=pt_road(:,1)
729 zts_roof(:)=pt_roof(:,1)
730 !
731 !
732 !* 1.4 load on indoor walls
733 ! -------------------------
734 !
735 IF (hbem=='BEM') THEN
736  !
737  zload_in_roof = pf_floor_win * ptr_sw_win + pqin * pn_floor * (1-pqin_flat) * pqin_frad &
738  / (2 + pwall_o_bld + pglaz_o_bld + pmass_o_bld ) ! W/m2 [ROOF]
739  zload_in_floor = pf_floor_win * ptr_sw_win + pqin * pn_floor * (1-pqin_flat) * pqin_frad &
740  / (2 + pwall_o_bld + pglaz_o_bld + pmass_o_bld )
741  zload_in_mass = pf_mass_win * ptr_sw_win + pqin * pn_floor * (1-pqin_flat) * pqin_frad &
742  / (2 + pwall_o_bld + pglaz_o_bld + pmass_o_bld )
743  zload_in_wall = pf_wall_win * ptr_sw_win + pqin * pn_floor * (1-pqin_flat) * pqin_frad &
744  / (2 + pwall_o_bld + pglaz_o_bld + pmass_o_bld )
745  zload_in_win = pf_win_win * ptr_sw_win + pqin * pn_floor * (1-pqin_flat) * pqin_frad &
746  / (2 + pwall_o_bld + pglaz_o_bld + pmass_o_bld )
747 ELSE
748  zload_in_roof = 0.
749  zload_in_floor = 0.
750  zload_in_mass = 0.
751  zload_in_wall = 0.
752  zload_in_win = 0.
753 ENDIF
754 !-------------------------------------------------------------------------------
755 !
756 !* 2. Snow-covered surfaces relative effects
757 ! --------------------------------------
758 !
759 !* 2.1 Effects on water reservoirs
760 ! ---------------------------
761 !
762 zws_roof_max(:) = zws_roof_max(:) * pdf_roof(:)
763 zws_road_max(:) = zws_road_max(:) * pdf_road(:)
764 !
765 !-------------------------------------------------------------------------------
766 !
767 !* 3. Surface drag
768 ! ------------
769 !
770  CALL urban_drag(hz0h, himplicit_wind, ptstep, pt_canyon, pq_canyon, &
771  pu_canyon, pt_lowcan, pq_lowcan, pu_lowcan, &
772  pz_lowcan, zts_roof, zts_road, zts_wall, &
773  pts_garden, pdn_roof, pdn_road, &
774  pexns, pexna, pta, pqa, pps, prhoa, &
775  pzref, puref, pvmod, &
776  pz0_town, &
777  pbld, pgarden, proad, &
778  pbld_height, pcan_hw_ratio, &
779  pwall_o_grnd, &
780  pws_roof, pws_road, &
781  zws_roof_max, zws_road_max, &
782  ppew_a_coef, ppew_b_coef, &
783  ppew_a_coef_lowcan, ppew_b_coef_lowcan, &
784  pqsat_roof, pqsat_road, pdelt_roof, pdelt_road, &
785  pcd, pcdn, pac_roof, pac_roof_wat, &
786  pac_wall, pac_road, pac_road_wat, pac_top, &
787  pac_garden, pri_town, &
788  puw_road, puw_roof, pduwdu_road, pduwdu_roof, &
789  pustar_town, ocanopy, pt_win1, zac_win, hch_bem, &
790  prough_roof, prough_wall )
791 !
792 !* area-averaged heat transfer coefficient
793 !
794 zvmod(:) = wind_threshold(pvmod(:),puref(:))
795 !
796 pch_town(:) = (pbld(:) * pac_roof(:) + (1.-pbld(:)) * pac_top(:)) / zvmod(:)
797 !
798 !* aggregation of momentum fluxes for roofs (=> derivate of flux also recalculated)
799 !
800 puw_roof(:) = (1-pfrac_gr(:)) * puw_roof(:) + pfrac_gr(:) * puw_greenroof(:)
801 WHERE (pvmod(:)/=0.) pduwdu_roof(:) = 2. * puw_roof(:) / pvmod(:)
802 !
803 !-------------------------------------------------------------------------------
804 !
805 !* 4. Extrapolation of atmospheric T and q at roof level (for fluxes computation)
806 ! --------------------------------------------------
807 !
808 zta(:) = pta(:) * pexns(:) / pexna(:)
809 zqa(:) = pqa(:) * qsat(pta(:),pps(:)) / qsat(zta(:),ppa(:))
810 !
811 !-------------------------------------------------------------------------------
812 !
813 !* 5. Snow mantel model
814 ! -----------------
815 !
816  CALL urban_snow_evol(pt_lowcan, pq_lowcan, pu_lowcan, &
817  zts_roof,zts_road,zts_wall_a, zts_wall_b, &
818  pt_roof, pd_roof, ptc_roof, phc_roof, &
819  hsnow_roof, &
820  pwsnow_roof, ptsnow_roof, prsnow_roof, pasnow_roof, &
821  ptssnow_roof, pesnow_roof, &
822  hsnow_road, &
823  pwsnow_road, ptsnow_road, prsnow_road, pasnow_road, &
824  ptssnow_road, pesnow_road, &
825  pps, zta, zqa, prhoa, &
826  plw_rad, &
827  psr, pzref, puref, pvmod, &
828  ptstep, &
829  pz_lowcan, &
830  pdn_roof, pabs_sw_snow_roof, pabs_lw_snow_roof, &
831  pdn_road, pabs_sw_snow_road, pabs_lw_snow_road, &
832  prnsnow_roof, phsnow_roof, plesnow_roof, pgsnow_roof, &
833  pmelt_roof, &
834  prnsnow_road, phsnow_road, plesnow_road, pgsnow_road, &
835  pmelt_road, &
836  plw_wa_to_nr, plw_wb_to_nr, plw_s_to_nr, plw_win_to_nr, &
837  zdqs_snow_roof, zdqs_snow_road, pt_win1 )
838 !
839 !-------------------------------------------------------------------------------
840 !
841 !* 6. LW properties
842 ! -------------
843 !
844 pdf_road(:) = 1. - pdn_road(:)
845 !
846 !-------------------------------------------------------------------------------
847 !
848 !* 7. Indoor radiative temperature
849 ! ---------------------------
850 !
851 ! uses the averaged temperature of both walls for the building energy balance
852 zt_wall(:,:)=0.5 * (pt_wall_a(:,:)+pt_wall_b(:,:))
853 !
854 SELECT CASE(hbem)
855  CASE("DEF")
856  zts_floor(:) = 19. + xtt
857  pt_rad_ind(:) = (pwall_o_hor(:) / pbld(:) * zt_wall(:,iwall) + &
858  pt_roof(:,iroof) + zts_floor(:)) &
859  / (pwall_o_hor(:) / pbld(:) + 1. + 1.)
860  zradht_in(:) = xundef
861  CASE("BEM")
862  zts_floor(:) = pt_floor(:,1)
863  pt_rad_ind(:) = (pt_mass(:,1)*pmass_o_bld(:) + zt_wall(:,iwall)*pwall_o_bld(:) &
864  + zts_floor(:) + pt_roof(:,iroof) + pt_win2(:) * pglaz_o_bld(:)) &
865  /(pmass_o_bld(:) + pwall_o_bld(:) + 1. + 1. + pglaz_o_bld(:))
866  ! Assuming indoor surface emissivities of 0.9
867  zradht_in(:) = 0.9 * 0.9 * 4 * xstefan * pt_rad_ind(:)**3
868 END SELECT
869 !
870 !
871 !* 7. Roof Ts computation
872 ! -------------------
873 !
874 !* ts_roof and qsat_roof are updated
875 !
876 
877  CALL roof_layer_e_budget(pt_roof, pqsat_roof, pti_bld, zac_bld, ptstep, &
878  hbem, phc_roof, ptc_roof, pd_roof, pdn_roof, &
879  prhoa, pac_roof, pac_roof_wat, plw_rad, pps, &
880  pdelt_roof, zta, zqa, pexna, pexns, &
881  pabs_sw_roof, pgsnow_roof, pemis_roof, &
882  zflx_bld_roof, zdqs_roof, pabs_lw_roof, &
883  ph_roof, plew_roof, zimb_roof, &
884  pfrac_gr, pg_greenroof_roof, &
885  pf_floor_mass, pf_floor_wall, pf_floor_win, &
886  pf_floor_roof, zradht_in, &
887  pt_mass(:,1), pt_win2, zts_floor(:), &
888  zt_wall(:,iwall), zrad_roof_wall, &
889  zrad_roof_win, zrad_roof_floor, zrad_roof_mass,&
890  zconv_roof_bld, &
891  prr, & !modif to add heating/cooling of rain
892  zload_in_roof )
893 !
894 !-------------------------------------------------------------------------------
895 !
896 !* 8. Road Ts computations
897 ! -----------------------------
898 !
899 !* Road watering
900 
901  CALL teb_irrig(opar_rd_irrig, ptstep, tptime%TDATE%MONTH, ptsun, &
902  prd_start_month, prd_end_month, prd_start_hour, &
903  prd_end_hour, prd_24h_irrig, pirrig_road )
904 
905 !* ts_road, ts_wall, qsat_road, t_canyon and q_canyon are updated
906 !
907  CALL road_layer_e_budget(pt_road, ptstep, phc_road, ptc_road, pd_road, &
908  pdn_road, prhoa, pac_road, pac_road_wat, &
909  plw_rad, pps, pqsat_road, pdelt_road, pexns, &
910  pabs_sw_road, pgsnow_road, pq_lowcan, pt_lowcan, &
911  zts_wall_a, zts_wall_b, ztssnow_road, &
912  pts_garden, pt_win1, &
913  plw_wa_to_r, plw_wb_to_r, plw_s_to_r, plw_win_to_r, &
914  pemis_road, pemit_lw_road, zdqs_road, pabs_lw_road, &
915  ph_road, plew_road, zimb_road, prr+pirrig_road )
916 !
917 !-------------------------------------------------------------------------------
918 !
919 !* 8. Wall Ts computations
920 ! -----------------------------
921 !
922  CALL facade_e_budget(hwall_opt, hbem, &
923  pt_wall_a, pt_wall_b, ptstep, &
924  phc_wall, ptc_wall, pd_wall, &
925  pdn_road, prhoa, pac_wall, &
926  zac_bld, pti_bld, plw_rad, pps, pexns, &
927  pabs_sw_wall_a, pabs_sw_wall_b, pt_canyon, &
928  zts_road, ztssnow_road, pts_garden, pugg_win, pgr, &
929  pabs_sw_win, pf_win_mass, pf_win_wall, &
930  pf_win_floor, pt_mass(:,1), zts_floor(:), &
931  pemis_wall, &
932  plw_wa_to_wb, &
933  plw_r_to_wa, plw_r_to_wb, plw_g_to_wa, plw_g_to_wb, &
934  plw_s_to_wa, plw_s_to_wb, plw_nr_to_wa,plw_nr_to_wb,&
935  plw_win_to_wa, plw_win_to_wb, &
936  plw_s_to_win, plw_wa_to_win, plw_wb_to_win, &
937  plw_r_to_win, plw_g_to_win, plw_nr_to_win, pt_win1, &
938  zflx_bld_wall_a, zdqs_wall_a, &
939  zflx_bld_wall_b, zdqs_wall_b, &
940  pt_win2, pemit_lw_fac, &
941  pabs_lw_wall_a, pabs_lw_wall_b, pabs_lw_win, &
942  ph_wall_a, ph_wall_b, &
943  zimb_wall, pf_wall_mass, pf_wall_floor, &
944  pf_wall_win, zradht_in, zrad_roof_wall, &
945  zrad_roof_win, zrad_wall_floor, zrad_wall_mass, &
946  zrad_win_floor, zrad_win_mass, zconv_wall_bld, &
947  zconv_win_bld, zac_win, &
948  zload_in_wall, zload_in_win )
949 !
950 !-------------------------------------------------------------------------------
951 !
952 !* 9. Evolution of interior building air temperature
953 ! ----------------------------------------------
954 !
955 ! uses the averaged temperature of both walls for the building energy balance
956 zt_wall(:,:)=0.5 * (pt_wall_a(:,:)+pt_wall_b(:,:))
957 !
958 SELECT CASE(hbem)
959  CASE("DEF")
960 !
961  CALL bld_e_budget(.true., ptstep, pbld, pwall_o_hor, &
962  prhoa, pt_roof, zt_wall, pti_bld, zts_floor(:) )
963 
964  !variables that needs to be computed apart
965  pqi_bld = 0.5 * qsat(pti_bld, pps)
966  !variables that need to be set 0 for calculation
967  ph_waste(:) = 0.
968  ple_waste(:) = 0.
969  zflx_bld_floor(:) = 0.
970  zflx_bld_mass(:) = 0.
971  !other variables
972  ph_bld_cool(:) = xundef
973  ple_bld_cool(:)= xundef
974  pt_bld_cool(:) = xundef
975  ph_bld_heat(:) = xundef
976  ple_bld_heat(:)= xundef
977  phvac_cool(:) = xundef
978  phvac_heat(:) = xundef
979  pcap_sys(:) = xundef
980  pm_sys(:) = xundef
981  pcop(:) = xundef
982  pq_sys(:) = xundef
983  pfan_power(:) = xundef
984  phu_bld(:) = xundef
985 
986  CASE("BEM")
987  CALL bem(ptstep, ptsun, hcool_coil, hheat_coil, &
988  oautosize, kday, hnatvent, &
989  pps, prhoa, pt_canyon, pq_canyon, pu_canyon, &
990  pt_roof, pt_wall_a, pt_wall_b, pbld, pbld_height, pwall_o_hor,&
991  phc_floor, ptc_floor, pd_floor, &
992  pt_win2, pgr, pqin, pqin_frad, pqin_flat, &
993  peff_heat, pinf, ptcool_target, ptheat_target, phr_target, &
994  pf_water_cond, pv_vent, pcap_sys_heat, pt_adp, pcop_rat, &
995  paux_max, pt_floor, pt_mass, pti_bld, pqi_bld, &
996  pcap_sys_rat, pm_sys_rat, onatvent_night, &
997  ph_bld_cool, ph_bld_heat, ple_bld_cool, ple_bld_heat, &
998  pt_bld_cool, phvac_cool, pt_sys, pq_sys, ph_waste, ple_waste, &
999  pfan_power, phvac_heat, pm_sys, pcop, pcap_sys, phu_bld, &
1000  ptr_sw_win, pt_rad_ind, zflx_bld_floor, zflx_bld_mass, &
1001  pf_floor_mass, pf_floor_wall, pf_floor_win, &
1002  zradht_in, pn_floor, pwall_o_bld, pglaz_o_bld, pmass_o_bld, &
1003  pfloor_hw_ratio, pf_floor_roof, pf_mass_floor, pf_mass_wall, &
1004  pf_mass_win, zrad_roof_mass, zrad_roof_floor, zrad_wall_mass, &
1005  zrad_wall_floor, zrad_win_mass, zrad_win_floor, &
1006  zconv_roof_bld, zconv_wall_bld, zconv_win_bld, &
1007  zload_in_floor, zload_in_mass )
1008 
1009  ph_waste = ph_waste * pbld
1010  ple_waste = ple_waste * pbld
1011 END SELECT
1012 !
1013 !-------------------------------------------------------------------------------
1014 !
1015 !* 10. Fluxes over built surfaces
1016 ! --------------------------
1017 !
1018  CALL urban_fluxes(himplicit_wind, ocanopy, pt_canyon, &
1019  ppew_a_coef, ppew_b_coef, &
1020  pexns, prhoa, pvmod, &
1021  ph_traffic, ple_traffic, ph_industry, ple_industry, &
1022  pbld, proad, pwall_o_hor, pfrac_gr, &
1023  pabs_sw_roof, pabs_lw_roof, &
1024  pabs_sw_wall_a, pabs_lw_wall_a, &
1025  pabs_sw_wall_b, pabs_lw_wall_b, &
1026  pabs_sw_road, pabs_lw_road, &
1027  pac_wall, pcd, &
1028  pdf_roof, pdn_roof, pdf_road, pdn_road, &
1029  prnsnow_roof, phsnow_roof, plesnow_roof, pgsnow_roof, &
1030  prnsnow_road, phsnow_road, plesnow_road, pgsnow_road, &
1031  pmelt_roof, zdqs_roof, &
1032  pmelt_road, zdqs_road, &
1033  zdqs_wall_a, zdqs_wall_b, &
1034  zflx_bld_roof, zflx_bld_wall_a, zflx_bld_wall_b, &
1035  zflx_bld_floor, &
1036  zflx_bld_mass, pe_shading, hbem, pgr, pt_win1, ph_waste, &
1037  ple_waste, pf_waste_can, pabs_sw_win, pabs_lw_win, pqin, &
1038  pn_floor, plew_roof, plew_road, &
1039  prn_greenroof, ph_greenroof, ple_greenroof, &
1040  pgflux_greenroof, &
1041  ph_roof, ph_road, ph_wall_a, ph_wall_b, &
1042  prn_roof,ple_roof, &
1043  pgflux_roof, prn_road, ple_road, pgflux_road, &
1044  prn_wall_a, ple_wall_a, pgflux_wall_a, &
1045  prn_wall_b, ple_wall_b, pgflux_wall_b, &
1046  prn_strlroof, ph_strlroof, ple_strlroof, &
1047  pgflux_strlroof, &
1048  prn_blt, ph_blt, ple_blt, &
1049  pgflux_blt, zmelt_blt, pqf_bld, pflx_bld, pdqs_town, &
1050  pqf_town, pustar_town, phvac_cool, phvac_heat )
1051 !
1052 !
1053 ! Water transfer from snow reservoir to water reservoir in case of snow melt
1054 !
1055 WHERE (pmelt_roof(:) .GT. 0.)
1056  pws_roof(:) = min(zws_roof_max,pws_roof(:) + pmelt_roof(:)*ptstep)
1057 ENDWHERE
1058 !
1059 WHERE (pmelt_road(:) .GT. 0.)
1060  pws_road(:) = min(zws_road_max,pws_road(:) + pmelt_road(:)*ptstep)
1061 ENDWHERE
1062 !
1063 !-------------------------------------------------------------------------------
1064 !
1065 !* 11. Roof ans road reservoirs evolution
1066 ! ----------------------------------
1067 !
1068  CALL urban_hydro(zws_roof_max,zws_road_max, pws_roof, pws_road, &
1069  prr, pirrig_road, ptstep, pbld, ple_roof, ple_road, &
1070  prunoff_strlroof, &
1071  prunoff_road )
1072 !
1073 prunoff_roof(:) = ( 1. - pfrac_gr(:) ) * prunoff_strlroof(:) &
1074  + pfrac_gr(:) * ( prunoff_greenroof(:) + pdrain_greenroof(:) )
1075 
1076 !
1077 !-------------------------------------------------------------------------------
1078 !
1079 !* 19. Compute aerodynamical resistance
1080 ! --------------------------------
1081 !
1082 presa_town(:) = 1. / ( pbld(:) * pac_roof(:) + ( 1. - pbld(:)) * pac_top(:))
1083 !
1084 IF (lhook) CALL dr_hook('TEB',1,zhook_handle)
1085 !-------------------------------------------------------------------------------
1086 !
1087 END SUBROUTINE teb
subroutine urban_snow_evol(PT_LOWCAN, PQ_LOWCAN, PU_LOWCAN, PTS_ROOF, PTS_ROAD, PTS_WALL_A, PTS_WALL_B, PT_ROOF, PD_ROOF, PTC_ROOF, PHC_ROOF, HSNOW_ROOF, PWSNOW_ROOF, PTSNOW_ROOF, PRSNOW_ROOF, PASNOW_ROOF, PTSSNOW_ROOF, PESNOW_ROOF, HSNOW_ROAD, PWSNOW_ROAD, PTSNOW_ROAD, PRSNOW_ROAD, PASNOW_ROAD, PTSSNOW_ROAD, PESNOW_ROAD, PPS, PTA, PQA, PRHOA, PLW_RAD, PSR, PZREF, PUREF, PVMOD, PTSTEP, PZ_LOWCAN, PDN_ROOF, PABS_SW_SNOW_ROOF, PABS_LW_SNOW_ROOF, PDN_ROAD, PABS_SW_SNOW_ROAD, PABS_LW_SNOW_ROAD, PRNSNOW_ROOF, PHSNOW_ROOF, PLESNOW_ROOF, PGSNOW_ROOF, PMELT_ROOF, PRNSNOW_ROAD, PHSNOW_ROAD, PLESNOW_ROAD, PGSNOW_ROAD, PMELT_ROAD, PLW_WA_TO_NR, PLW_WB_TO_NR, PLW_S_TO_NR, PLW_WIN_TO_NR, PDQS_SNOW_ROOF, PDQS_SNOW_ROAD, PT_WIN1)
subroutine facade_e_budget(HWALL_OPT, HBEM, PT_WALL_A, PT_WALL_B, PTSTEP, PHC_WALL, PTC_WALL, PD_WALL, PDN_ROAD, PRHOA, PAC_WALL, PAC_BLD, PTI_BLD, PLW_RAD, PPS, PEXNS, PABS_SW_WALL_A, PABS_SW_WALL_B, PT_CANYON, PTS_ROAD, PTSNOW_ROAD, PTS_GARDEN, PU_WIN, PGR, PABS_SW_WIN, PF_WIN_MASS, PF_WIN_WALL, PF_WIN_FLOOR, PTS_MASS, PTS_FLOOR, PEMIS_WALL, PLW_WA_TO_WB, PLW_R_TO_WA, PLW_R_TO_WB, PLW_G_TO_WA, PLW_G_TO_WB, PLW_S_TO_WA, PLW_S_TO_WB, PLW_NR_TO_WA, PLW_NR_TO_WB, PLW_WIN_TO_WA, PLW_WIN_TO_WB, PLW_S_TO_WIN, PLW_WA_TO_WIN, PLW_WB_TO_WIN, PLW_R_TO_WIN, PLW_G_TO_WIN, PLW_NR_TO_WIN, PT_WIN1, PFLX_BLD_WALL_A, PDQS_WALL_A, PFLX_BLD_WALL_B, PDQS_WALL_B, PT_WIN2, PEMIT_LW_FAC, PABS_LW_WALL_A, PABS_LW_WALL_B, PABS_LW_WIN, PH_WALL_A, PH_WALL_B, PIMB_WALL, PF_WALL_MASS, PF_WALL_FLOOR, PF_WALL_WIN, PRADHT_IN, PRAD_ROOF_WALL, PRAD_ROOF_WIN, PRAD_WALL_FLOOR, PRAD_WALL_MASS, PRAD_WIN_FLOOR, PRAD_WIN_MASS, PCONV_WALL_BLD, PCONV_WIN_BLD, PAC_WIN, PLOAD_IN_WALL, PLOAD_IN_WIN)
subroutine bem(PTSTEP, PSUNTIME, HCOOL_COIL, HHEAT_COIL, OAUTOSIZE, KDAY, HNATVENT, PPS, PRHOA, PT_CANYON, PQ_CANYON, PU_CANYON, PT_ROOF, PT_WALL_A, PT_WALL_B, PBLD, PBLD_HEIGHT, PWALL_O_HOR, PHC_FLOOR, PTC_FLOOR, PD_FLOOR, PT_WIN2, PGR, PQIN, PQIN_FRAD, PQIN_FLAT, PEFF_HEAT, PINF, PTCOOL_TARGET, PTHEAT_TARGET, PHR_TARGET, PF_WATER_COND, PV_VENT, PCAP_SYS_HEAT, PT_ADP, PCOP_RAT, PAUX_MAX, PT_FLOOR, PT_MASS, PTI_BLD, PQI_BLD, PCAP_SYS_RAT, PM_SYS_RAT, ONATVENT_NIGHT, PH_BLD_COOL, PH_BLD_HEAT, PLE_BLD_COOL, PLE_BLD_HEAT, PT_BLD_COOL, PHVAC_COOL, PT_SYS, PQ_SYS, PH_WASTE, PLE_WASTE, PFAN_POWER, PHVAC_HEAT, PM_SYS, PCOP, PCAP_SYS, PHU_BLD, PTR_SW_WIN, PT_RAD_IND, PFLX_BLD_FLOOR, PFLX_BLD_MASS, PF_FLOOR_MASS, PF_FLOOR_WALL, PF_FLOOR_WIN, PRADHT_IN, PN_FLOOR, PWALL_O_BLD, PGLAZ_O_BLD, PMASS_O_BLD, PFLOOR_HW_RATIO, PF_FLOOR_ROOF, PF_MASS_FLOOR, PF_MASS_WALL, PF_MASS_WIN, PRAD_ROOF_MASS, PRAD_ROOF_FLOOR, PRAD_WALL_MASS, PRAD_WALL_FLOOR, PRAD_WIN_MASS, PRAD_WIN_FLOOR, PCONV_ROOF_BLD, PCONV_WALL_BLD, PCONV_WIN_BLD, PLOAD_IN_FLOOR, PLOAD_IN_MASS)
Definition: bem.F90:6
real function, dimension(size(pwind)) wind_threshold(PWIND, PUREF)
subroutine urban_hydro(PWS_ROOF_MAX, PWS_ROAD_MAX, PWS_ROOF, PWS_ROAD, PRR, PIRRIG_ROAD, PTSTEP, PBLD, PLE_ROOF, PLE_ROAD, PRUNOFF_STRLROOF, PRUNOFF_ROAD)
Definition: urban_hydro.F90:6
subroutine bld_e_budget(OTI_EVOL, PTSTEP, PBLD, PWALL_O_HOR, PRHOA, PT_ROOF, PT_WALL, PTI_BLD, PTS_FLOOR)
Definition: bld_e_budget.F90:6
subroutine urban_drag(HZ0H, HIMPLICIT_WIND, PTSTEP, PT_CANYON, PQ_CANYON, PU_CANYON, PT_LOWCAN, PQ_LOWCAN, PU_LOWCAN, PZ_LOWCAN, PTS_ROOF, PTS_ROAD, PTS_WALL, PTS_GARDEN, PDELT_SNOW_ROOF, PDELT_SNOW_ROAD, PEXNS, PEXNA, PTA, PQA, PPS, PRHOA, PZREF, PUREF, PVMOD, PZ0_TOWN, PBLD, PGARDEN, PROAD, PBLD_HEIGHT, PCAN_HW_RATIO, PWALL_O_GRND, PWS_ROOF, PWS_ROAD, PWS_ROOF_MAX, PWS_ROAD_MAX, PPEW_A_COEF, PPEW_B_COEF, PPEW_A_COEF_LOWCAN, PPEW_B_COEF_LOWCAN, PQSAT_ROOF, PQSAT_ROAD, PDELT_ROOF, PDELT_ROAD, PCD, PCDN, PAC_ROOF, PAC_ROOF_WAT, PAC_WALL, PAC_ROAD, PAC_ROAD_WAT, PAC_TOP, PAC_GARDEN, PRI, PUW_ROAD, PUW_ROOF, PDUWDU_ROAD, PDUWDU_ROOF, PUSTAR_TOWN, OCANOPY, PTS_WIN, PAC_WIN, HCH_BEM, PROUGH_ROOF, PROUGH_WALL)
Definition: urban_drag.F90:6
subroutine road_layer_e_budget(PT_ROAD, PTSTEP, PHC_ROAD, PTC_ROAD, PD_ROAD, PDN_ROAD, PRHOA, PAC_ROAD, PAC_ROAD_WAT, PLW_RAD, PPS, PQSAT_ROAD, PDELT_ROAD, PEXNS, PABS_SW_ROAD, PGSNOW_ROAD, PQ_LOWCAN, PT_LOWCAN, PTS_WALL_A, PTS_WALL_B, PTSNOW_ROAD, PTS_GARDEN, PTS_WIN, PLW_WA_TO_R, PLW_WB_TO_R, PLW_S_TO_R, PLW_WIN_TO_R, PEMIS_ROAD, PEMIT_LW_ROAD, PDQS_ROAD, PABS_LW_ROAD, PHFREE_ROAD, PLEFREE_ROAD, PIMB_ROAD, PRR)
subroutine roof_layer_e_budget(PT_ROOF, PQSAT_ROOF, PTI_BLD, PAC_BLD, PTSTEP, HBLD, PHC_ROOF, PTC_ROOF, PD_ROOF, PDN_ROOF, PRHOA, PAC_ROOF, PAC_ROOF_WAT, PLW_RAD, PPS, PDELT_ROOF, PTA, PQA, PEXNA, PEXNS, PABS_SW_ROOF, PGSNOW_ROOF, PEMIS_ROOF, PFLX_BLD_ROOF, PDQS_ROOF, PABS_LW_ROOF, PHFREE_ROOF, PLEFREE_ROOF, PIMB_ROOF, PFRAC_GR, PG_GREENROOF_ROOF, PF_FLOOR_MASS, PF_FLOOR_WALL, PF_FLOOR_WIN, PF_FLOOR_ROOF, PRADHT_IN, PTS_MASS, PT_WIN2, PTS_FLOOR, PTI_WALL, PRAD_ROOF_WALL, PRAD_ROOF_WIN, PRAD_ROOF_FLOOR, PRAD_ROOF_MASS, PCONV_ROOF_BLD, PRR, PLOAD_IN_ROOF)
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
subroutine teb_irrig(OIRRIG, PTSTEP, KMONTH, PSOLAR_TIME, PSTART_MONTH, PEND_MONTH, PSTART_HOUR, PEND_HOUR, P24H_IRRIG, PIRRIG)
Definition: teb_irrig.F90:6
subroutine teb(HZ0H, HIMPLICIT_WIND, HWALL_OPT, HBEM, TPTIME, PTSUN, PT_CANYON, PQ_CANYON, PU_CANYON, PT_LOWCAN, PQ_LOWCAN, PU_LOWCAN, PZ_LOWCAN, PTI_BLD, PT_ROOF, PT_ROAD, PT_WALL_A, PT_WALL_B, PWS_ROOF, PWS_ROAD, HSNOW_ROOF, PWSNOW_ROOF, PTSNOW_ROOF, PRSNOW_ROOF, PASNOW_ROOF, PTSSNOW_ROOF, PESNOW_ROOF, HSNOW_ROAD, PWSNOW_ROAD, PTSNOW_ROAD, PRSNOW_ROAD, PASNOW_ROAD, PTSSNOW_ROAD, PESNOW_ROAD, PPEW_A_COEF, PPEW_B_COEF, PPEW_A_COEF_LOWCAN, PPEW_B_COEF_LOWCAN, PPS, PPA, PEXNS, PEXNA, PTA, PQA, PRHOA, PLW_RAD, PRR, PSR, PZREF, PUREF, PVMOD, PH_TRAFFIC, PLE_TRAFFIC, PH_INDUSTRY, PLE_INDUSTRY, PTSTEP, PZ0_TOWN, PBLD, PGARDEN, PROAD, PFRAC_GR, PBLD_HEIGHT, PWALL_O_HOR, PCAN_HW_RATIO, PWALL_O_GRND, PDF_ROOF, PDN_ROOF, PDF_ROAD, PDN_ROAD, PQSAT_ROOF, PQSAT_ROAD, PDELT_ROOF, PDELT_ROAD, PEMIS_ROOF, PHC_ROOF, PTC_ROOF, PD_ROOF, PEMIS_ROAD, PHC_ROAD, PTC_ROAD, PD_ROAD, PEMIS_WALL, PTS_GARDEN, PHC_WALL, PTC_WALL, PD_WALL, PRN_ROOF, PH_ROOF, PLE_ROOF, PLEW_ROOF, PGFLUX_ROOF, PRUNOFF_ROOF, PRN_GREENROOF, PH_GREENROOF, PLE_GREENROOF, PGFLUX_GREENROOF, PUW_GREENROOF, PRUNOFF_GREENROOF, PDRAIN_GREENROOF, PRN_STRLROOF, PH_STRLROOF, PLE_STRLROOF, PGFLUX_STRLROOF, PRUNOFF_STRLROOF, PRN_ROAD, PH_ROAD, PLE_ROAD, PLEW_ROAD, PGFLUX_ROAD, PRUNOFF_ROAD, PRN_WALL_A, PH_WALL_A, PLE_WALL_A, PGFLUX_WALL_A, PRN_WALL_B, PH_WALL_B, PLE_WALL_B, PGFLUX_WALL_B, PRN_BLT, PH_BLT, PLE_BLT, PGFLUX_BLT, PRNSNOW_ROOF, PHSNOW_ROOF, PLESNOW_ROOF, PGSNOW_ROOF, PMELT_ROOF, PRNSNOW_ROAD, PHSNOW_ROAD, PLESNOW_ROAD, PGSNOW_ROAD, PMELT_ROAD, PG_GREENROOF_ROOF, PUW_ROAD, PUW_ROOF, PDUWDU_ROAD, PDUWDU_ROOF, PUSTAR_TOWN, PCD, PCDN, PCH_TOWN, PRI_TOWN, PRESA_TOWN, PDQS_TOWN, PQF_TOWN, PQF_BLD, PFLX_BLD, PAC_ROOF, PAC_ROAD, PAC_WALL, PAC_TOP, PAC_GARDEN, PAC_ROOF_WAT, PAC_ROAD_WAT, PABS_SW_ROOF, PABS_LW_ROOF, PABS_SW_SNOW_ROOF, PABS_LW_SNOW_ROOF, PABS_SW_ROAD, PABS_LW_ROAD, PABS_SW_SNOW_ROAD, PABS_LW_SNOW_ROAD, PABS_SW_WALL_A, PABS_LW_WALL_A, PABS_SW_WALL_B, PABS_LW_WALL_B, PLW_WA_TO_WB, PLW_WA_TO_R, PLW_WB_TO_R, PLW_WA_TO_NR, PLW_WB_TO_NR, PLW_R_TO_WA, PLW_R_TO_WB, PLW_G_TO_WA, PLW_G_TO_WB, PLW_S_TO_WA, PLW_S_TO_WB, PLW_S_TO_R, PLW_S_TO_NR, PLW_NR_TO_WA, PLW_NR_TO_WB, PLW_NR_TO_WIN, PLW_WA_TO_WIN, PLW_WB_TO_WIN, PLW_G_TO_WIN, PLW_R_TO_WIN, PLW_S_TO_WIN, PLW_WIN_TO_WA, PLW_WIN_TO_WB, PLW_WIN_TO_R, PLW_WIN_TO_NR, HNATVENT, HCOOL_COIL, PF_WATER_COND, HHEAT_COIL, OAUTOSIZE, KDAY, PAUX_MAX, PT_FLOOR, PT_MASS, PH_BLD_COOL, PT_BLD_COOL, PH_BLD_HEAT, PLE_BLD_COOL, PLE_BLD_HEAT, PH_WASTE, PLE_WASTE, PF_WASTE_CAN, PHVAC_COOL, PHVAC_HEAT, PQIN, PQIN_FRAD, PQIN_FLAT, PGR, PEFF_HEAT, PINF, PTCOOL_TARGET, PTHEAT_TARGET, PHR_TARGET, PT_WIN2, PQI_BLD, PV_VENT, PCAP_SYS_HEAT, PCAP_SYS_RAT, PT_ADP, PM_SYS_RAT, PCOP_RAT, PCAP_SYS, PM_SYS, PCOP, PQ_SYS, PT_SYS, PTR_SW_WIN, PFAN_POWER, PHC_FLOOR, PTC_FLOOR, PD_FLOOR, PT_WIN1, PABS_SW_WIN, PABS_LW_WIN, PUGG_WIN, PEMIT_LW_FAC, PEMIT_LW_ROAD, PT_RAD_IND, PHU_BLD, PTIME, PE_SHADING, ONATVENT_NIGHT, PN_FLOOR, PWALL_O_BLD, PGLAZ_O_BLD, PMASS_O_BLD, PFLOOR_HW_RATIO, PF_FLOOR_MASS, PF_FLOOR_WALL, PF_FLOOR_WIN, PF_FLOOR_ROOF, PF_WALL_FLOOR, PF_WALL_MASS, PF_WALL_WIN, PF_WIN_FLOOR, PF_WIN_MASS, PF_WIN_WALL, PF_MASS_FLOOR, PF_MASS_WALL, PF_MASS_WIN, OCANOPY, HCH_BEM, PROUGH_ROOF, PROUGH_WALL, PF_WIN_WIN, OPAR_RD_IRRIG, PRD_START_MONTH, PRD_END_MONTH, PRD_START_HOUR, PRD_END_HOUR, PRD_24H_IRRIG, PIRRIG_ROAD)
Definition: teb.F90:6