SURFEX v8.1
General documentation of Surfex
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 (TOP, T, BOP, B, TIR, DMT, HIMPLICIT_WIND, PTSUN, &
7  PT_CANYON, PQ_CANYON, PU_CANYON, PT_LOWCAN, PQ_LOWCAN, PU_LOWCAN, &
8  PZ_LOWCAN, PPEW_A_COEF, PPEW_B_COEF, PPEW_A_COEF_LOWCAN, &
9  PPEW_B_COEF_LOWCAN, PPS, PPA, PEXNS, PEXNA, PTA, PQA, PRHOA, &
10  PLW_RAD, PRR, PSR, PZREF, PUREF, PVMOD, PH_TRAFFIC, PLE_TRAFFIC, &
11  PTSTEP, PDF_RF, PDN_RF, PDF_RD, PDN_RD, PQSAT_RF, PQSAT_RD, &
12  PDELT_RF, PDELT_RD, PTS_GARDEN, PLEW_RF, PUW_GR, PLEW_RD, PLE_WL_A,&
13  PLE_WL_B, PRNSN_RF, PHSN_RF, PLESN_RF, PGSN_RF, PMELT_RF, PRN_GR, &
14  PH_GR, PLE_GR, PGFLUX_GR, PDRAIN_GR, PRUNOFF_GR, PRNSN_RD, &
15  PHSN_RD, PLESN_RD, PGSN_RD, PMELT_RD, PUW_RD, PUW_RF, PDUWDU_RD, &
16  PDUWDU_RF, PUSTAR_TWN, PCD, PCDN, PCH_TWN, PRI_TWN, PRESA_TWN, &
17  PAC_RF, PAC_RD, PAC_WL, PAC_TOP, PAC_GARDEN, PAC_RF_WAT, &
18  PAC_RD_WAT, PLW_WA_TO_WB, PLW_WA_TO_R, PLW_WB_TO_R, PLW_WA_TO_NR, &
19  PLW_WB_TO_NR, PLW_R_TO_WA, PLW_R_TO_WB, PLW_G_TO_WA, PLW_G_TO_WB, &
20  PLW_S_TO_WA, PLW_S_TO_WB, PLW_S_TO_R, PLW_S_TO_NR, PLW_NR_TO_WA, &
21  PLW_NR_TO_WB, PLW_NR_TO_WIN, PLW_WA_TO_WIN, PLW_WB_TO_WIN, &
22  PLW_G_TO_WIN, PLW_R_TO_WIN, PLW_S_TO_WIN, PLW_WIN_TO_WA, &
23  PLW_WIN_TO_WB, PLW_WIN_TO_R, PLW_WIN_TO_NR, KDAY, PEMIT_LW_FAC, &
24  PEMIT_LW_RD, PT_RAD_IND, PHU_BLD, PTIME, PE_SHADING )
25 ! ##########################################################################
26 !
27 !!**** *TEB*
28 !!
29 !! PURPOSE
30 !! -------
31 !
32 ! Computes the evoultion of prognostic variables and the fluxes
33 ! over artificial surfaces as towns, taking into account the canyon like
34 ! geometry of urbanized areas.
35 !
36 !
37 !!** METHOD
38 ! ------
39 !
40 ! The prognostic variables are:
41 ! - the surface temperature for roofs, roads, and walls
42 ! - the water reservoir, whose maximum value is 10mm
43 !
44 !
45 ! 1 : Warning about snow
46 ! ******************
47 !
48 ! Except for snow mantel evolution, all other computation with snow
49 ! variables must be performed with these variables at previous time-step,
50 ! and NOT new time-step. This insure coherence between snow fractions
51 ! (computed at the begining) and other snow characteristics (albedo, Ts).
52 !
53 !
54 ! 2 : computation of input solar radiation on each surface
55 ! ****************************************************
56 !
57 ! Those are now done in subroutine urban_solar_abs.F90
58 !
59 ! 3 : drag coefficient for momentum
60 ! *****************************
61 !
62 !
63 ! 4 : aerodynamical resistance for heat transfers
64 ! *******************************************
65 !
66 !
67 ! 5 : equation for evolution of Ts_roof
68 ! *********************************
69 !
70 !
71 ! Rn = (dir_Rg + sca_Rg) (1-a) + emis * ( Rat - sigma Ts**4 (t+dt) )
72 !
73 ! H = rho Cp CH V ( Ts (t+dt) - Tas )
74 !
75 ! LE = rho Lv CH V ( qs (t+dt) - qas )
76 !
77 ! where the as subscript denotes atmospheric values at ground level
78 ! (and not at first half level)
79 !
80 !
81 ! 6 : equations for evolution of Ts_road and Ts_wall simultaneously
82 ! *************************************************************
83 !
84 !
85 !
86 ! Rn_w = abs_Rg_w
87 ! - sigma * emis_w * Ts_w**4 (t+dt)
88 ! + emis_w * SVF_w * Rat
89 ! + sigma * emis_w * emis_r * SVF_w * Ts_r**4 (t+dt)
90 ! + sigma * emis_w * emis_w * (1-2*SVF_w) * Ts_w**4 (t+dt)
91 ! + sigma * emis_w * emis_w * (1-emis_r) * SVF_w * (1- SVF_r) * Ts_w**4 (t+dt)
92 ! + sigma * emis_w * emis_w * (1-emis_w) * (1-2*SVF_w) * (1-2*SVF_w) * Ts_w**4 (t+dt)
93 ! + sigma * emis_w * emis_r * (1-emis_w) * SVF_w * (1-2*SVF_w) * Ts_r**4 (t+dt)
94 !
95 ! Rn_r = abs_Rg_r
96 ! - sigma * emis_r * Ts_r**4 (t+dt)
97 ! + emis_r * SVF_r * Rat
98 ! + sigma * emis_r * emis_w * (1-SVF_r) * Ts_w**4 (t+dt)
99 ! + sigma * emis_r * emis_w * (1-emis_w) * (1-SVF_r) * (1-2*SVF_w) * Ts_w**4 (t+dt)
100 ! + sigma * emis_r * emis_r * (1-emis_w) * (1-SVF_r) * SVF_w * Ts_r**4 (t+dt)
101 !
102 ! H_w = rho Cp CH V ( Ts_w (t+dt) - Ta_canyon )
103 !
104 ! LE_w = rho Lv CH V ( qs_w (t+dt) - qa_canyon )
105 !
106 ! H_r = rho Cp CH V ( Ts_r (t+dt) - Ta_canyon )
107 !
108 ! LE_r = rho Lv CH V ( qs_r (t+dt) - qa_canyon )
109 !
110 ! with again
111 ! AC_can * Swall/Sroad * Twall + AC_can * Troad + AC_top * Ta + H_traffic/Cp/rho/Sroad
112 ! Ta_canyon = -------------------------------------------------------------------------------------
113 ! AC_can * Swall/Sroad + AC_can + AC_top
114 !
115 !
116 ! AC_can * delt_road * Hu_road * qsat(Troad) + AC_top * qa + LE_traffic/Lv/rho/Sroad
117 ! qa_canyon = ------------------------------------------------------------------------------------
118 ! AC_can * delt_road + AC_top
119 !
120 !
121 !
122 !
123 ! 7 : computation of fluxes for each surface type
124 ! *******************************************
125 !
126 !
127 ! 8 : averaging of the fluxes
128 ! ***********************
129 !
130 ! This is done on the total exchange surface (roof + wall + road),
131 ! which is bigger than the horizontal surface (roof+road), leading
132 ! to bigger fluxes.
133 !
134 ! The fluxes due to industrial activity are directly added into the
135 ! atmosphere
136 !
137 !
138 ! 9 : road reservoir evolution
139 ! ************************
140 !
141 ! The roof reservoir runoff goes directly into the road reservoir.
142 !
143 ! Runoff occurs for road reservoir (too much water), as well as drainage
144 ! (evacuation system, typical time scale: 1 day)
145 !
146 !
147 !------------------------
148 !! EXTERNAL
149 !! --------
150 !!
151 !!
152 !! IMPLICIT ARGUMENTS
153 !! ------------------
154 !!
155 !! MODD_CST
156 !!
157 !!
158 !! REFERENCE
159 !! ---------
160 !!
161 !!
162 !! AUTHOR
163 !! ------
164 !!
165 !! V. Masson * Meteo-France *
166 !!
167 !! MODIFICATIONS
168 !! -------------
169 !! Original 23/01/98
170 !! 21 / 10 / 2003 P. Tulet output aerodynamical resistance
171 !! 01 / 07 / 2005 P.Le Moigne Exner functions as arguments to urban_fluxes
172 !! 17 / 10 / 2005 (G. Pigeon) computation of anthropogenic heat from domestic heating
173 !! 01 / 2012 V. Masson Separates the 2 walls
174 !! 25 / 09 / 2012 B. Decharme new wind implicitation
175 !! 07 / 2013 V. Masson Adds road watering
176 !-------------------------------------------------------------------------------
177 !
178 !* 0. DECLARATIONS
179 ! ------------
180 !
182 USE modd_teb_n, ONLY : teb_t
184 USE modd_bem_n, ONLY : bem_t
185 USE modd_teb_irrig_n, ONLY : teb_irrig_t
187 !
189 USE modd_csts, ONLY : xtt, xstefan, xcpd, xlvtt
190 USE modd_surf_par, ONLY : xundef
191 USE modd_snow_par, ONLY : xemissn, xansmax_roof, &
192  xansmax_road,xwcrn_roof,xwcrn_road
193 !
194 USE mode_thermos
196 !
197 USE modi_snow_cover_1layer
198 USE modi_urban_drag
199 USE modi_urban_snow_evol
200 USE modi_roof_layer_e_budget
201 USE modi_road_layer_e_budget
202 USE modi_facade_e_budget
203 USE modi_urban_fluxes
204 USE modi_urban_hydro
205 USE modi_bld_e_budget
206 USE modi_wind_threshold
207 USE modi_bem
208 USE modi_teb_irrig
209 !
210 USE yomhook ,ONLY : lhook, dr_hook
211 USE parkind1 ,ONLY : jprb
212 !
213 IMPLICIT NONE
214 !
215 !* 0.1 Declarations of arguments
216 !
217 TYPE(teb_options_t), INTENT(INOUT) :: TOP
218 TYPE(teb_t), INTENT(INOUT) :: T
219 TYPE(bem_options_t), INTENT(INOUT) :: BOP
220 TYPE(bem_t), INTENT(INOUT) :: B
221 TYPE(teb_irrig_t), INTENT(INOUT) :: TIR
222 TYPE(diag_misc_teb_t), INTENT(INOUT) :: DMT
223 !
224  CHARACTER(LEN=*), INTENT(IN) :: HIMPLICIT_WIND ! wind implicitation option
225 ! ! 'OLD' = direct
226 ! ! 'NEW' = Taylor serie, order 1
227 REAL, DIMENSION(:), INTENT(IN) :: PTSUN ! solar time (s from midnight)
228 REAL, DIMENSION(:), INTENT(INOUT) :: PT_CANYON ! canyon air temperature
229 REAL, DIMENSION(:), INTENT(INOUT) :: PQ_CANYON ! canyon air specific humidity
230 REAL, DIMENSION(:), INTENT(IN) :: PU_CANYON ! canyon hor. wind
231 REAL, DIMENSION(:), INTENT(IN) :: PU_LOWCAN ! wind near the road
232 REAL, DIMENSION(:), INTENT(IN) :: PT_LOWCAN ! temp. near the road
233 REAL, DIMENSION(:), INTENT(IN) :: PQ_LOWCAN ! hum. near the road
234 REAL, DIMENSION(:), INTENT(IN) :: PZ_LOWCAN ! height of atm. var. near the road
235 REAL, DIMENSION(:), INTENT(IN) :: PPEW_A_COEF ! implicit coefficients
236 REAL, DIMENSION(:), INTENT(IN) :: PPEW_B_COEF ! for wind coupling
237 REAL, DIMENSION(:), INTENT(IN) :: PPEW_A_COEF_LOWCAN ! implicit coefficients for wind coupling
238 REAL, DIMENSION(:), INTENT(IN) :: PPEW_B_COEF_LOWCAN ! between low canyon wind and road
239 REAL, DIMENSION(:), INTENT(IN) :: PPS ! pressure at the surface
240 REAL, DIMENSION(:), INTENT(IN) :: PPA ! pressure at the first atmospheric level
241 REAL, DIMENSION(:), INTENT(IN) :: PEXNS ! surface exner function
242 REAL, DIMENSION(:), INTENT(IN) :: PTA ! temperature at the lowest level
243 REAL, DIMENSION(:), INTENT(IN) :: PQA ! specific humidity
244  ! at the lowest level
245 REAL, DIMENSION(:), INTENT(IN) :: PVMOD ! module of the horizontal wind
246 REAL, DIMENSION(:), INTENT(IN) :: PH_TRAFFIC ! anthropogenic sensible
247 ! ! heat fluxes due to traffic
248 REAL, DIMENSION(:), INTENT(IN) :: PLE_TRAFFIC ! anthropogenic latent
249 ! ! heat fluxes due to traffic
250 REAL, DIMENSION(:), INTENT(IN) :: PEXNA ! exner function
251  ! at the lowest level
252 REAL, DIMENSION(:), INTENT(IN) :: PRHOA ! air density
253  ! at the lowest level
254 REAL, DIMENSION(:), INTENT(IN) :: PLW_RAD ! atmospheric infrared radiation
255 REAL, DIMENSION(:), INTENT(IN) :: PRR ! rain rate
256 REAL, DIMENSION(:), INTENT(IN) :: PSR ! snow rate
257 REAL, DIMENSION(:), INTENT(IN) :: PZREF ! reference height of the first
258  ! atmospheric level (temperature)
259 REAL, DIMENSION(:), INTENT(IN) :: PUREF ! reference height of the first
260  ! atmospheric level (wind)
261 REAL, INTENT(IN) :: PTSTEP ! time step
262 !
263 REAL, DIMENSION(:), INTENT(INOUT) :: PDF_RF ! snow-free fraction on roofs
264 REAL, DIMENSION(:), INTENT(INOUT) :: PDN_RF ! snow-covered fraction on roofs
265 REAL, DIMENSION(:), INTENT(INOUT) :: PDF_RD ! snow-free fraction on roads
266 REAL, DIMENSION(:), INTENT(INOUT) :: PDN_RD ! snow-covered fraction on roads
267 REAL, DIMENSION(:), INTENT(OUT) :: PQSAT_RF ! hum at saturation over roof
268 REAL, DIMENSION(:), INTENT(OUT) :: PQSAT_RD ! hum at saturation over road
269 REAL, DIMENSION(:), INTENT(OUT) :: PDELT_RF ! water fraction on roof
270 REAL, DIMENSION(:), INTENT(OUT) :: PDELT_RD ! water fraction on road
271 !
272 REAL, DIMENSION(:), INTENT(IN) :: PTS_GARDEN ! GARDEN area surf temp.
273 ! greenroof
274 REAL, DIMENSION(:), INTENT(OUT) :: PLEW_RF ! latent heat flux over roof (snow)
275 REAL, DIMENSION(:), INTENT(OUT) :: PLEW_RD ! latent heat flux over road (snow)
276 REAL, DIMENSION(:), INTENT(OUT) :: PLE_WL_A ! latent heat flux over wall
277 REAL, DIMENSION(:), INTENT(OUT) :: PLE_WL_B ! latent heat flux over wall
278 !
279 REAL, DIMENSION(:), INTENT(IN) :: PUW_GR ! Momentum flux for greenroofs
280 !
281 REAL, DIMENSION(:), INTENT(OUT) :: PRNSN_RF ! net radiation over snow
282 REAL, DIMENSION(:), INTENT(OUT) :: PHSN_RF ! sensible heat flux over snow
283 REAL, DIMENSION(:), INTENT(OUT) :: PLESN_RF ! latent heat flux over snow
284 REAL, DIMENSION(:), INTENT(OUT) :: PGSN_RF ! flux under the snow
285 REAL, DIMENSION(:), INTENT(OUT) :: PMELT_RF ! snow melt
286 REAL, DIMENSION(:), INTENT(OUT) :: PRNSN_RD ! net radiation over snow
287 REAL, DIMENSION(:), INTENT(OUT) :: PHSN_RD ! sensible heat flux over snow
288 REAL, DIMENSION(:), INTENT(OUT) :: PLESN_RD ! latent heat flux over snow
289 REAL, DIMENSION(:), INTENT(OUT) :: PGSN_RD ! flux under the snow
290 REAL, DIMENSION(:), INTENT(OUT) :: PMELT_RD ! snow melt
291 !
292 REAL, DIMENSION(:), INTENT(OUT) :: PUW_RD ! Momentum flux for roads
293 REAL, DIMENSION(:), INTENT(OUT) :: PUW_RF ! Momentum flux for roofs
294 REAL, DIMENSION(:), INTENT(OUT) :: PDUWDU_RD !
295 REAL, DIMENSION(:), INTENT(OUT) :: PDUWDU_RF !
296 REAL, DIMENSION(:), INTENT(OUT) :: PUSTAR_TWN ! friciton velocity over town
297 !
298 REAL, DIMENSION(:), INTENT(IN) :: PRN_GR ! net radiation over greenroof
299 REAL, DIMENSION(:), INTENT(IN) :: PH_GR ! sensible heat flux over greenroof
300 REAL, DIMENSION(:), INTENT(IN) :: PLE_GR ! latent heat flux over greenroof
301 REAL, DIMENSION(:), INTENT(IN) :: PGFLUX_GR ! flux through the greenroof
302 REAL, DIMENSION(:), INTENT(IN) :: PRUNOFF_GR ! runoff over green roofs
303 REAL, DIMENSION(:), INTENT(IN) :: PDRAIN_GR ! outlet drainage at base of green roofs
304 !
305 REAL, DIMENSION(:), INTENT(OUT) :: PCD ! town averaged drag coefficient
306 REAL, DIMENSION(:), INTENT(OUT) :: PCDN ! town averaged neutral drag coefficient
307 REAL, DIMENSION(:), INTENT(OUT) :: PCH_TWN ! town averaged heat transfer
308 ! ! coefficient
309 REAL, DIMENSION(:), INTENT(OUT) :: PRI_TWN ! town averaged Richardson number
310 REAL, DIMENSION(:), INTENT(OUT) :: PRESA_TWN ! town aerodynamical resistance
311 REAL, DIMENSION(:), INTENT(OUT) :: PAC_RF ! roof conductance
312 REAL, DIMENSION(:), INTENT(INOUT) :: PAC_RD ! road conductance
313 REAL, DIMENSION(:), INTENT(OUT) :: PAC_WL ! wall conductance
314 REAL, DIMENSION(:), INTENT(OUT) :: PAC_TOP ! top conductance
315 REAL, DIMENSION(:), INTENT(IN) :: PAC_GARDEN ! garden conductance
316 REAL, DIMENSION(:), INTENT(OUT) :: PAC_RF_WAT ! roof water conductance
317 REAL, DIMENSION(:), INTENT(OUT) :: PAC_RD_WAT ! roof water conductance
318 !
319 REAL, DIMENSION(:), INTENT(IN) :: PLW_WA_TO_WB ! LW contrib. wall A (orB) -> wall B (or A)
320 REAL, DIMENSION(:), INTENT(IN) :: PLW_WA_TO_R ! LW contrib. wall -> road
321 REAL, DIMENSION(:), INTENT(IN) :: PLW_WB_TO_R ! LW contrib. wall -> road
322 REAL, DIMENSION(:), INTENT(IN) :: PLW_WA_TO_NR ! LW contrib. wall -> road(snow)
323 REAL, DIMENSION(:), INTENT(IN) :: PLW_WB_TO_NR ! LW contrib. wall -> road(snow)
324 REAL, DIMENSION(:), INTENT(IN) :: PLW_R_TO_WA ! LW contrib. road -> wall
325 REAL, DIMENSION(:), INTENT(IN) :: PLW_R_TO_WB ! LW contrib. road -> wall
326 REAL, DIMENSION(:), INTENT(IN) :: PLW_G_TO_WA ! LW contrib. GARDEN -> wall
327 REAL, DIMENSION(:), INTENT(IN) :: PLW_G_TO_WB ! LW contrib. GARDEN -> wall
328 REAL, DIMENSION(:), INTENT(IN) :: PLW_NR_TO_WA ! LW contrib. road(snow) -> wall
329 REAL, DIMENSION(:), INTENT(IN) :: PLW_NR_TO_WB ! LW contrib. road(snow) -> wall
330 REAL, DIMENSION(:), INTENT(IN) :: PLW_S_TO_WA ! LW contrib. sky -> wall
331 REAL, DIMENSION(:), INTENT(IN) :: PLW_S_TO_WB ! LW contrib. sky -> wall
332 REAL, DIMENSION(:), INTENT(IN) :: PLW_S_TO_R ! LW contrib. sky -> road
333 REAL, DIMENSION(:), INTENT(IN) :: PLW_S_TO_NR ! LW contrib. sky -> road(snow)
334 !
335 ! new arguments after BEM
336 !
337 INTEGER, INTENT(IN) :: KDAY ! Simulation day
338 REAL, DIMENSION(:), INTENT(IN) :: PLW_WA_TO_WIN ! Radiative heat trasfer coeff wall-window
339  ! [W K-1 m-2]
340 REAL, DIMENSION(:), INTENT(IN) :: PLW_WB_TO_WIN ! Radiative heat trasfer coeff wall-window
341  ! [W K-1 m-2]
342 REAL, DIMENSION(:), INTENT(IN) :: PLW_G_TO_WIN ! Radiative heat trasfer coeff garden-window
343  ! [W K-1 m-2]
344 REAL, DIMENSION(:), INTENT(IN) :: PLW_R_TO_WIN ! Radiative heat trasfer coeff road-window
345  ! [W K-1 m-2]
346 REAL, DIMENSION(:), INTENT(IN) :: PLW_S_TO_WIN ! Radiative heat trasfer coeff window-sky
347  ! [W K-1 m-2]
348 REAL, DIMENSION(:), INTENT(IN) :: PLW_WIN_TO_WA! Radiative heat trasfer coeff window-wall
349  ! [W K-1 m-2]
350 REAL, DIMENSION(:), INTENT(IN) :: PLW_WIN_TO_WB! Radiative heat trasfer coeff window-wall
351  ! [W K-1 m-2]
352 REAL, DIMENSION(:), INTENT(IN) :: PLW_WIN_TO_R ! Radiative heat trasfer coeff window-road
353  ! [W K-1 m-2]
354 REAL, DIMENSION(:), INTENT(IN) :: PLW_NR_TO_WIN! Radiative heat trasfer coeff road(snow)-win
355  ! [W K-1 m-2]
356 REAL, DIMENSION(:), INTENT(IN) :: PLW_WIN_TO_NR! Radiative heat trasfer coeff win-road(snow)
357  ! [W K-1 m-2]
358  !new argument for PET calculation
359 REAL, DIMENSION(:), INTENT(OUT) :: PEMIT_LW_RD ! LW fluxes emitted by road (W/m2 surf road)
360 REAL, DIMENSION(:), INTENT(OUT) :: PEMIT_LW_FAC ! LW fluxes emitted by wall (W/m2 surf wall)
361 REAL, DIMENSION(:), INTENT(OUT) :: PT_RAD_IND ! Indoor mean radiant temperature [K]
362 REAL, DIMENSION(:), INTENT(OUT) :: PHU_BLD ! Indoor relative humidity 0 < (-) < 1
363 REAL, INTENT(IN) :: PTIME ! current time since midnight (UTC, s)
364 REAL, DIMENSION(:), INTENT(IN) :: PE_SHADING !energy not ref., nor absorbed, nor
365  !trans. by glazing [Wm-2(win)]
366 !
367 !* 0.2 Declarations of local variables
368 !
369 REAL, DIMENSION(SIZE(PTA)) :: ZVMOD ! wind
370 REAL, DIMENSION(SIZE(PTA)) :: ZWS_RF_MAX ! maximum deepness of roof
371 REAL, DIMENSION(SIZE(PTA)) :: ZWS_RD_MAX ! and road water reservoirs
372 !
373 REAL, DIMENSION(SIZE(PTA)) :: ZAC_BLD ! surface conductance inside the building itself in DEF building model
374 REAL, DIMENSION(SIZE(PTA)) :: ZTA ! air temperature extrapolated at roof level
375 REAL, DIMENSION(SIZE(PTA)) :: ZQA ! air humidity extrapolated at roof level
376 !
377 REAL, DIMENSION(SIZE(PTA)) :: ZDQS_RD ! heat storage inside road
378 REAL, DIMENSION(SIZE(PTA)) :: ZDQS_RF ! heat storage inside roof
379 REAL, DIMENSION(SIZE(PTA)) :: ZDQS_WL_A ! heat storage inside wall
380 REAL, DIMENSION(SIZE(PTA)) :: ZDQS_WL_B ! heat storage inside wall
381 REAL, DIMENSION(SIZE(PTA)) :: ZFLX_BLD_RF !heat flux from inside through roof
382 REAL, DIMENSION(SIZE(PTA)) :: ZFLX_BLD_WL_A!heat flux from inside through wall
383 REAL, DIMENSION(SIZE(PTA)) :: ZFLX_BLD_WL_B!heat flux from inside through wall
384 REAL, DIMENSION(SIZE(PTA)) :: ZFLX_BLD_FL !heat flux from inside through floor
385 REAL, DIMENSION(SIZE(PTA)) :: ZFLX_BLD_MA !heat flux from inside through mass
386 !
387 REAL, DIMENSION(SIZE(PTA)) :: ZDQS_SN_RF ! heat storage inside roof snowpack
388 REAL, DIMENSION(SIZE(PTA)) :: ZDQS_SN_RD ! heat storage inside road snowpack
389 REAL, DIMENSION(SIZE(PTA)) :: ZMELT_BLT ! Snow melt for built & impervious part
390 !
391 ! coefficients for LW computations over snow (from previous time-step)
392 !
393 REAL, DIMENSION(SIZE(PTA)) :: ZTSSN_RD ! road snow temperature
394 ! ! at previous time-step
395 ! new local variables after BEM
396 !
397 REAL, DIMENSION(SIZE(PTA)) :: ZIMB_RF ! residual energy imbalance
398  ! of the roof for
399  ! verification
400 REAL, DIMENSION(SIZE(PTA)) :: ZIMB_RD ! road residual energy imbalance
401  ! for verification [W m-2]
402 REAL, DIMENSION(SIZE(PTA)) :: ZIMB_WL ! wall residual energy imbalance
403  ! for verification [W m-2]
404 REAL, DIMENSION(SIZE(PTA)) :: ZTS_RD ! road surface temperature
405 ! ! at previous time-step
406 REAL, DIMENSION(SIZE(PTA)) :: ZTS_WL_A ! wall A surface temperature
407 ! ! at previous time-step
408 REAL, DIMENSION(SIZE(PTA)) :: ZTS_WL_B ! wall B surface temperature
409 ! ! at previous time-step
410 REAL, DIMENSION(SIZE(PTA)) :: ZTS_WL ! averaged wall surface temperature
411 ! ! at previous time-step
412 REAL, DIMENSION(SIZE(PTA)) :: ZTS_RF ! roof surface temperature
413 ! ! at previous time-step
414 REAL, DIMENSION(SIZE(PTA),SIZE(T%XT_WALL_A,2)) :: ZT_WL ! averaged wall surface temperature
415 !
416 INTEGER :: IWL, IRF ! number of wall, roof layer
417 REAL, DIMENSION(SIZE(PTA)) :: ZRADHT_IN ! Indoor radiant heat transfer coefficient
418  ! [W K-1 m-2]
419 REAL, DIMENSION(SIZE(PTA)) :: ZTS_FL ! floor surface temperature [K]
420 REAL, DIMENSION(SIZE(PTA)) :: ZRAD_RF_WL ! rad. flux from roof to averaged wall [W m-2(roof)]
421 REAL, DIMENSION(SIZE(PTA)) :: ZRAD_RF_WIN ! rad. flux from roof to window [W m-2(roof)]
422 REAL, DIMENSION(SIZE(PTA)) :: ZRAD_RF_FL ! rad. flux from roof to floor [W m-2(roof)]
423 REAL, DIMENSION(SIZE(PTA)) :: ZRAD_RF_MA ! rad. flux from roof to mass [W m-2(roof)]
424 REAL, DIMENSION(SIZE(PTA)) :: ZCONV_RF_BLD ! rad. flux from roof to bld [W m-2(roof)]
425 REAL, DIMENSION(SIZE(PTA)) :: ZRAD_WL_FL ! rad. flux from averaged wall to floor [W m-2(wall)]
426 REAL, DIMENSION(SIZE(PTA)) :: ZRAD_WL_MA ! rad. flux from averaged wall to mass [W m-2(wall)]
427 REAL, DIMENSION(SIZE(PTA)) :: ZRAD_WIN_FL ! rad. flux from averaged wall to floor [W m-2(win)]
428 REAL, DIMENSION(SIZE(PTA)) :: ZRAD_WIN_MA ! rad. flux from averaged wall to mass [W m-2(win)]
429 REAL, DIMENSION(SIZE(PTA)) :: ZCONV_WL_BLD ! rad. flux from roof to bld [W m-2(wall)]
430 REAL, DIMENSION(SIZE(PTA)) :: ZCONV_WIN_BLD ! rad. flux from roof to bld [W m-2(win)]
431 REAL, DIMENSION(SIZE(PTA)) :: ZAC_WIN ! window aerodynamic conductance
432 
433 REAL, DIMENSION(SIZE(PTA)) :: ZLOAD_IN_RF ! indoor load on roof W/m2[roof]
434 REAL, DIMENSION(SIZE(PTA)) :: ZLOAD_IN_FL ! indoor load on floor W/m2[floor]
435 REAL, DIMENSION(SIZE(PTA)) :: ZLOAD_IN_WL ! indoor load on wall W/m2[wall]
436 REAL, DIMENSION(SIZE(PTA)) :: ZLOAD_IN_WIN ! indoor load on win W/m2[win]
437 REAL, DIMENSION(SIZE(PTA)) :: ZLOAD_IN_MA ! indoor load on mass W/m2[mass]
438 !
439 REAL(KIND=JPRB) :: ZHOOK_HANDLE
440 !-------------------------------------------------------------------------------
441 !
442 IF (lhook) CALL dr_hook('TEB',0,zhook_handle)
443 !
444 !* 1. Initializations
445 ! ---------------
446 !
447 !* 1.1 Water reservoirs
448 ! ----------------
449 !
450 zws_rf_max = 1. ! (1mm) maximum deepness of roof water reservoir
451 zws_rd_max = 1. ! (1mm) maximum deepness of road water reservoir
452 !
453 !* 1.2 radiative snow variables at previous time-step
454 ! ----------------------------------------------
455 !
456 ztssn_rd(:) = t%TSNOW_ROAD%TS(:)
457 !
458 !
459 !* 1.3 indoor aerodynamique conductance for DEF case
460 ! ----------------------------------------------
461 !
462 zac_bld(:) = xundef
463 IF (top%CBEM=='DEF') zac_bld=1. / 0.123 / (xcpd * prhoa(:)) !* (normalized by rho Cp for convenience)
464 !-------------------------------------------------------------------------------
465 !
466 !* 1.3 number of roof/wall layer
467 ! -------------------------
468 !
469 iwl = SIZE(t%XT_WALL_A,2)
470 irf = SIZE(t%XT_ROOF,2)
471 !
472 zts_wl_a(:)=t%XT_WALL_A (:,1)
473 zts_wl_b(:)=t%XT_WALL_B (:,1)
474 zts_wl(:)=0.5 * (zts_wl_a(:)+zts_wl_b(:))
475 zts_rd(:)=t%XT_ROAD (:,1)
476 zts_rf(:)=t%XT_ROOF (:,1)
477 !
478 !
479 !* 1.4 load on indoor walls
480 ! -------------------------
481 !
482 IF (top%CBEM=='BEM') THEN
483  !
484  zload_in_rf = b%XF_FLOOR_WIN * dmt%XTR_SW_WIN + dmt%XQIN * b%XN_FLOOR * (1-b%XQIN_FLAT) * b%XQIN_FRAD &
485  / (2 + t%XWALL_O_BLD + b%XGLAZ_O_BLD + b%XMASS_O_BLD ) ! W/m2 [ROOF]
486  zload_in_fl = b%XF_FLOOR_WIN * dmt%XTR_SW_WIN + dmt%XQIN * b%XN_FLOOR * (1-b%XQIN_FLAT) * b%XQIN_FRAD &
487  / (2 + t%XWALL_O_BLD + b%XGLAZ_O_BLD + b%XMASS_O_BLD )
488  zload_in_ma = b%XF_MASS_WIN * dmt%XTR_SW_WIN + dmt%XQIN * b%XN_FLOOR * (1-b%XQIN_FLAT) * b%XQIN_FRAD &
489  / (2 + t%XWALL_O_BLD + b%XGLAZ_O_BLD + b%XMASS_O_BLD )
490  zload_in_wl = b%XF_WALL_WIN * dmt%XTR_SW_WIN + dmt%XQIN * b%XN_FLOOR * (1-b%XQIN_FLAT) * b%XQIN_FRAD &
491  / (2 + t%XWALL_O_BLD + b%XGLAZ_O_BLD + b%XMASS_O_BLD )
492  zload_in_win = b%XF_WIN_WIN * dmt%XTR_SW_WIN + dmt%XQIN * b%XN_FLOOR * (1-b%XQIN_FLAT) * b%XQIN_FRAD &
493  / (2 + t%XWALL_O_BLD + b%XGLAZ_O_BLD + b%XMASS_O_BLD )
494 ELSE
495  zload_in_rf = 0.
496  zload_in_fl = 0.
497  zload_in_ma = 0.
498  zload_in_wl = 0.
499  zload_in_win = 0.
500 ENDIF
501 !-------------------------------------------------------------------------------
502 !
503 !* 2. Snow-covered surfaces relative effects
504 ! --------------------------------------
505 !
506 !* 2.1 Effects on water reservoirs
507 ! ---------------------------
508 !
509 zws_rf_max(:) = zws_rf_max(:) * pdf_rf(:)
510 zws_rd_max(:) = zws_rd_max(:) * pdf_rd(:)
511 !
512 !-------------------------------------------------------------------------------
513 !
514 !* 3. Surface drag
515 ! ------------
516 !
517  CALL urban_drag(top, t, b, himplicit_wind, ptstep, pt_canyon, pq_canyon, &
518  pu_canyon, pt_lowcan, pq_lowcan, pu_lowcan, pz_lowcan, &
519  zts_rf, zts_rd, zts_wl, pts_garden, pdn_rf, pdn_rd, &
520  pexns, pexna, pta, pqa, pps, prhoa, pzref, puref, &
521  pvmod, zws_rf_max, zws_rd_max, ppew_a_coef, &
522  ppew_b_coef, ppew_a_coef_lowcan, ppew_b_coef_lowcan, &
523  pqsat_rf, pqsat_rd, pdelt_rf, pdelt_rd, pcd, pcdn, &
524  pac_rf, pac_rf_wat, pac_wl, pac_rd, pac_rd_wat, &
525  pac_top, pac_garden, pri_twn, puw_rd, puw_rf, &
526  pduwdu_rd, pduwdu_rf, pustar_twn, zac_win )
527 !
528 !* area-averaged heat transfer coefficient
529 !
530 zvmod(:) = wind_threshold(pvmod(:),puref(:))
531 !
532 pch_twn(:) = (t%XBLD(:) * pac_rf(:) + (1.-t%XBLD(:)) * pac_top(:)) / zvmod(:)
533 !
534 !* aggregation of momentum fluxes for roofs (=> derivate of flux also recalculated)
535 !
536 puw_rf(:) = (1-t%XGREENROOF(:)) * puw_rf(:) + t%XGREENROOF(:) * puw_gr(:)
537 WHERE (pvmod(:)/=0.) pduwdu_rf(:) = 2. * puw_rf(:) / pvmod(:)
538 !
539 !-------------------------------------------------------------------------------
540 !
541 !* 4. Extrapolation of atmospheric T and q at roof level (for fluxes computation)
542 ! --------------------------------------------------
543 !
544 zta(:) = pta(:) * pexns(:) / pexna(:)
545 zqa(:) = pqa(:) * qsat(pta(:),pps(:)) / qsat(zta(:),ppa(:))
546 !
547 !-------------------------------------------------------------------------------
548 !
549 !* 5. Snow mantel model
550 ! -----------------
551 !
552  CALL urban_snow_evol(t, b, pt_lowcan, pq_lowcan, pu_lowcan, zts_rf, zts_rd, zts_wl_a, &
553  zts_wl_b, pps, zta, zqa, prhoa, plw_rad, psr, pzref, puref, pvmod, &
554  ptstep, pz_lowcan, pdn_rf, dmt%XABS_SW_SNOW_ROOF, &
555  dmt%XABS_LW_SNOW_ROOF, pdn_rd, dmt%XABS_SW_SNOW_ROAD, &
556  dmt%XABS_LW_SNOW_ROAD, prnsn_rf, phsn_rf, plesn_rf, pgsn_rf, &
557  pmelt_rf, prnsn_rd, phsn_rd, plesn_rd, pgsn_rd, pmelt_rd, &
558  plw_wa_to_nr, plw_wb_to_nr, plw_s_to_nr, plw_win_to_nr, zdqs_sn_rf, &
559  zdqs_sn_rd )
560 !
561 !-------------------------------------------------------------------------------
562 !
563 !* 6. LW properties
564 ! -------------
565 !
566 pdf_rd(:) = 1. - pdn_rd(:)
567 !
568 !-------------------------------------------------------------------------------
569 !
570 !* 7. Indoor radiative temperature
571 ! ---------------------------
572 !
573 ! uses the averaged temperature of both walls for the building energy balance
574 zt_wl(:,:)=0.5 * (t%XT_WALL_A(:,:)+t%XT_WALL_B(:,:))
575 !
576 SELECT CASE(top%CBEM)
577  CASE("DEF")
578  zts_fl(:) = 19. + xtt
579  pt_rad_ind(:) = ( t%XWALL_O_HOR(:) / t%XBLD(:) * zt_wl(:,iwl) + &
580  t%XT_ROOF(:,irf) + zts_fl(:) ) / (t%XWALL_O_HOR(:) / t%XBLD(:) + 1. + 1.)
581  zradht_in(:) = xundef
582  CASE("BEM")
583  zts_fl(:) = b%XT_FLOOR(:,1)
584  pt_rad_ind(:) = (b%XT_MASS(:,1)*b%XMASS_O_BLD(:) + zt_wl(:,iwl)*t%XWALL_O_BLD(:) &
585  + zts_fl(:) + t%XT_ROOF(:,irf) + b%XT_WIN2(:) * b%XGLAZ_O_BLD(:)) &
586  /(b%XMASS_O_BLD(:) + t%XWALL_O_BLD(:) + 1. + 1. + b%XGLAZ_O_BLD(:))
587  ! Assuming indoor surface emissivities of 0.9
588  zradht_in(:) = 0.9 * 0.9 * 4 * xstefan * pt_rad_ind(:)**3
589 END SELECT
590 !
591 !
592 !* 7. Roof Ts computation
593 ! -------------------
594 !
595 !* ts_roof and qsat_roof are updated
596 !
597 
598  CALL roof_layer_e_budget(top, t, b, pqsat_rf, zac_bld, ptstep, pdn_rf, prhoa, &
599  pac_rf, pac_rf_wat, plw_rad, pps, pdelt_rf, zta, zqa, &
600  pexna, pexns, dmt%XABS_SW_ROOF, pgsn_rf, zflx_bld_rf, &
601  zdqs_rf, dmt%XABS_LW_ROOF, dmt%XH_ROOF, plew_rf, zimb_rf, &
602  dmt%XG_GREENROOF_ROOF, zradht_in, zts_fl, zt_wl(:,iwl),&
603  zrad_rf_wl, zrad_rf_win, zrad_rf_fl, zrad_rf_ma, zconv_rf_bld, &
604  prr, & !modif to add heating/cooling of rain
605  zload_in_rf )
606 !
607 !-------------------------------------------------------------------------------
608 !
609 !* 8. Road Ts computations
610 ! -----------------------------
611 !
612 !* Road watering
613 
614  CALL teb_irrig(tir%LPAR_RD_IRRIG, ptstep, top%TTIME%TDATE%MONTH, ptsun, &
615  tir%XRD_START_MONTH, tir%XRD_END_MONTH, tir%XRD_START_HOUR, &
616  tir%XRD_END_HOUR, tir%XRD_24H_IRRIG, dmt%XIRRIG_ROAD )
617 
618 !* ts_road, ts_wall, qsat_road, t_canyon and q_canyon are updated
619 !
620  CALL road_layer_e_budget(t, b, ptstep, pdn_rd, prhoa, pac_rd, pac_rd_wat, &
621  plw_rad, pps, pqsat_rd, pdelt_rd, pexns, &
622  dmt%XABS_SW_ROAD, pgsn_rd, pq_lowcan, pt_lowcan,&
623  zts_wl_a, zts_wl_b, ztssn_rd, pts_garden, &
624  plw_wa_to_r, plw_wb_to_r, plw_s_to_r, &
625  plw_win_to_r, pemit_lw_rd, zdqs_rd, dmt%XABS_LW_ROAD, &
626  dmt%XH_ROAD, plew_rd, zimb_rd, prr+dmt%XIRRIG_ROAD )
627 !
628 !-------------------------------------------------------------------------------
629 !
630 !* 8. Wall Ts computations
631 ! -----------------------------
632 !
633  CALL facade_e_budget(top, t, b, dmt, ptstep, pdn_rd, prhoa, pac_wl, zac_bld, &
634  plw_rad, pps, pexns, pt_canyon, zts_rd, ztssn_rd, pts_garden, &
635  zts_fl, plw_wa_to_wb, plw_r_to_wa, plw_r_to_wb, &
636  plw_g_to_wa, plw_g_to_wb, plw_s_to_wa, plw_s_to_wb, &
637  plw_nr_to_wa, plw_nr_to_wb, plw_win_to_wa, &
638  plw_win_to_wb, plw_s_to_win, plw_wa_to_win, &
639  plw_wb_to_win, plw_r_to_win, plw_g_to_win, &
640  plw_nr_to_win, zflx_bld_wl_a, zdqs_wl_a, &
641  zflx_bld_wl_b, zdqs_wl_b, pemit_lw_fac, zimb_wl, &
642  zradht_in, zrad_rf_wl, zrad_rf_win, zrad_wl_fl, &
643  zrad_wl_ma, zrad_win_fl, zrad_win_ma, zconv_wl_bld, &
644  zconv_win_bld, zac_win, zload_in_wl, zload_in_win )
645 !
646 !-------------------------------------------------------------------------------
647 !
648 !* 9. Evolution of interior building air temperature
649 ! ----------------------------------------------
650 !
651 ! uses the averaged temperature of both walls for the building energy balance
652 zt_wl(:,:)=0.5 * (t%XT_WALL_A(:,:)+t%XT_WALL_B(:,:))
653 !
654 SELECT CASE(top%CBEM)
655 CASE("DEF")
656 !
657  CALL bld_e_budget(.true., ptstep, t%XBLD, t%XWALL_O_HOR, &
658  prhoa, t%XT_ROOF, zt_wl, b%XTI_BLD, zts_fl(:) )
659 
660  !variables that needs to be computed apart
661  b%XQI_BLD = 0.5 * qsat(b%XTI_BLD, pps)
662  !variables that need to be set 0 for calculation
663  zflx_bld_fl(:) = 0.
664  zflx_bld_ma(:) = 0.
665  !other variables
666  phu_bld(:) = xundef
667 
668 CASE("BEM")
669  CALL bem(bop, t, b, dmt, ptstep, ptsun, kday, pps, prhoa, pt_canyon, &
670  pq_canyon, pu_canyon, phu_bld, pt_rad_ind, zflx_bld_fl,&
671  zflx_bld_ma, zradht_in, zrad_rf_ma, zrad_rf_fl, &
672  zrad_wl_ma, zrad_wl_fl, zrad_win_ma, zrad_win_fl, &
673  zconv_rf_bld, zconv_wl_bld, zconv_win_bld, zload_in_fl,&
674  zload_in_ma )
675 
676  dmt%XH_WASTE = dmt%XH_WASTE * t%XBLD
677  dmt%XLE_WASTE = dmt%XLE_WASTE * t%XBLD
678 END SELECT
679 !
680 !-------------------------------------------------------------------------------
681 !
682 !* 10. Fluxes over built surfaces
683 ! --------------------------
684 !
685  CALL urban_fluxes (top, t, b, dmt, himplicit_wind, pt_canyon, ppew_a_coef, ppew_b_coef, &
686  pexns, prhoa, pvmod, ph_traffic, ple_traffic,pac_wl, pcd, pdf_rf, &
687  pdn_rf, pdf_rd, pdn_rd, prnsn_rf, phsn_rf, plesn_rf, pgsn_rf, &
688  prnsn_rd, phsn_rd, plesn_rd, pgsn_rd, pmelt_rf, zdqs_rf, pmelt_rd, &
689  zdqs_rd, zdqs_wl_a, zdqs_wl_b, zflx_bld_rf, zflx_bld_wl_a, &
690  zflx_bld_wl_b, zflx_bld_fl, zflx_bld_ma, pe_shading, plew_rf, &
691  prn_gr, ph_gr, ple_gr, pgflux_gr, &
692  plew_rd, ple_wl_a, ple_wl_b, zmelt_blt, pustar_twn )
693 !
694 !
695 ! Water transfer from snow reservoir to water reservoir in case of snow melt
696 !
697 WHERE (pmelt_rf(:) .GT. 0.)
698  t%XWS_ROOF(:) = min(zws_rf_max,t%XWS_ROOF(:) + pmelt_rf(:)*ptstep)
699 ENDWHERE
700 !
701 WHERE (pmelt_rd(:) .GT. 0.)
702  t%XWS_ROAD(:) = min(zws_rd_max,t%XWS_ROAD(:) + pmelt_rd(:)*ptstep)
703 ENDWHERE
704 !
705 !-------------------------------------------------------------------------------
706 !
707 !* 11. Roof ans road reservoirs evolution
708 ! ----------------------------------
709 !
710  CALL urban_hydro(zws_rf_max, zws_rd_max, t%XWS_ROOF, t%XWS_ROAD, prr, &
711  dmt%XIRRIG_ROAD, ptstep, t%XBLD, dmt%XLE_ROOF, dmt%XLE_ROAD, &
712  dmt%XRUNOFF_STRLROOF, dmt%XRUNOFF_ROAD )
713 !
714 IF (top%LGREENROOF) THEN
715  dmt%XRUNOFF_ROOF(:) = (1.-t%XGREENROOF(:)) * dmt%XRUNOFF_STRLROOF(:) &
716  + t%XGREENROOF(:) * (prunoff_gr(:) + pdrain_gr(:))
717 ELSE
718  dmt%XRUNOFF_ROOF(:) = dmt%XRUNOFF_STRLROOF(:)
719 ENDIF
720 !
721 !-------------------------------------------------------------------------------
722 !
723 !* 19. Compute aerodynamical resistance
724 ! --------------------------------
725 !
726 presa_twn(:) = 1. / ( t%XBLD(:) * pac_rf(:) + ( 1. - t%XBLD(:)) * pac_top(:))
727 !
728 IF (lhook) CALL dr_hook('TEB',1,zhook_handle)
729 !-------------------------------------------------------------------------------
730 !
731 END SUBROUTINE teb
subroutine roof_layer_e_budget(TOP, T, B, PQSAT_ROOF, PAC_BLD, PTSTEP, PDN_ROOF, PRHOA, PAC_ROOF, PAC_ROOF_WAT, PLW_RAD, PPS, PDELT_ROOF, PTA, PQA, PEXNA, PEXNS, PABS_SW_ROOF, PGSNOW_ROOF, PFLX_BLD_ROOF, PDQS_ROOF, PABS_LW_ROOF, PHFREE_ROOF, PLEFREE_ROOF, PIMB_ROOF, PG_GREENROOF_ROOF, PRADHT_IN, PTS_FLOOR, PTI_WALL, PRAD_ROOF_WALL, PRAD_ROOF_WIN, PRAD_ROOF_FLOOR, PRAD_ROOF_MASS, PCONV_ROOF_BLD, PRR, PLOAD_IN_ROOF)
real, save xcpd
Definition: modd_csts.F90:63
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:9
subroutine bem(BOP, T, B, DMT, PTSTEP, PSUNTIME, KDAY, PPS, PRHOA, PT_CAN, PQ_CAN, PU_CAN, PHU_BLD, PT_RAD_IND, PFLX_BLD_FL, PFLX_BLD_MA, PRADHT_IN, PRAD_RF_MA, PRAD_RF_FL, PRAD_WL_MA, PRAD_WL_FL, PRAD_WIN_MA, PRAD_WIN_FL, PCONV_RF_BLD, PCONV_WL_BLD, PCONV_WIN_BLD, PLOAD_IN_FL, PLOAD_IN_MA)
Definition: bem.F90:11
real, save xstefan
Definition: modd_csts.F90:59
subroutine urban_drag(TOP, T, B, 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, 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, PAC_WIN)
Definition: urban_drag.F90:17
subroutine facade_e_budget(TOP, T, B, DMT, PTSTEP, PDN_RD, PRHOA, PAC_WL, PAC_BLD, PLW_RAD, PPS, PEXNS, PT_CANYON, PTS_RD, PTSN_RD, PTS_GD, PTS_FL, 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, PFLX_BLD_WL_A, PDQS_WL_A, PFLX_BLD_WL_B, PDQS_WL_B, PEMIT_LW_FAC, PIMB_WL, PRADHT_IN, PRAD_RF_WL, PRAD_RF_WIN, PRAD_WL_FL, PRAD_WL_MA, PRAD_WIN_FL, PRAD_WIN_MA, PCONV_WL_BLD, PCONV_WIN_BLD, PAC_WIN, PLOAD_IN_WL, PLOAD_IN_WIN)
real, save xlvtt
Definition: modd_csts.F90:70
subroutine urban_fluxes(TOP, T, B, DMT, HIMPLICIT_WIND, PT_CANYON, PPEW_A_COEF, PPEW_B_COEF, PEXNS, PRHOA, PVMOD, PH_TRAFFIC, PLE_TRAFFIC, PAC_WL, PCD, PDF_RF, PDN_RF, PDF_RD, PDN_RD, PRNSN_RF, PHSN_RF, PLESN_RF, PGSN_RF, PRNSN_RD, PHSN_RD, PLESN_RD, PGSN_RD, PMELT_RF, PDQS_RF, PMELT_RD, PDQS_RD, PDQS_WL_A, PDQS_WL_B, PFLX_BLD_RF, PFLX_BLD_WL_A, PFLX_BLD_WL_B, PFLX_BLD_FL, PFLX_BLD_MA, PE_SHADING, PLEW_RF, PRN_GR, PH_GR, PLE_GR, PGFLUX_GR, PLEW_RD, PLE_WL_A, PLE_WL_B, PMELT_BLT, PUSTAR_TWN)
real, parameter xundef
subroutine teb(TOP, T, BOP, B, TIR, DMT, HIMPLICIT_WIND, PTSUN, PT_CANYON, PQ_CANYON, PU_CANYON, PT_LOWCAN, PQ_LOWCAN, PU_LOWCAN, PZ_LOWCAN, 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, PTSTEP, PDF_RF, PDN_RF, PDF_RD, PDN_RD, PQSAT_RF, PQSAT_RD, PDELT_RF, PDELT_RD, PTS_GARDEN, PLEW_RF, PUW_GR, PLEW_RD, PLE_WL_A, PLE_WL_B, PRNSN_RF, PHSN_RF, PLESN_RF, PGSN_RF, PMELT_RF, PRN_GR, PH_GR, PLE_GR, PGFLUX_GR, PDRAIN_GR, PRUNOFF_GR, PRNSN_RD, PHSN_RD, PLESN_RD, PGSN_RD, PMELT_RD, PUW_RD, PUW_RF, PDUWDU_RD, PDUWDU_RF, PUSTAR_TWN, PCD, PCDN, PCH_TWN, PRI_TWN, PRESA_TWN, PAC_RF, PAC_RD, PAC_WL, PAC_TOP, PAC_GARDEN, PAC_RF_WAT, PAC_RD_WAT, 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, KDAY, PEMIT_LW_FAC, PEMIT_LW_RD, PT_RAD_IND, PHU_BLD, PTIME, PE_SHADING)
Definition: teb.F90:25
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:8
integer, parameter jprb
Definition: parkind1.F90:32
logical lhook
Definition: yomhook.F90:15
subroutine urban_snow_evol(T, B, PT_LWCN, PQ_LWCN, PU_LWCN, PTS_RF, PTS_RD, PTS_WL_A, PTS_WL_B, PPS, PTA, PQA, PRHOA, PLW_RAD, PSR, PZREF, PUREF, PVMOD, PTSTEP, PZ_LWCN, PDN_RF, PABS_SW_SN_RF, PABS_LW_SN_RF, PDN_RD, PABS_SW_SN_RD, PABS_LW_SN_RD, PRNSN_RF, PHSN_RF, PLESN_RF, PGSN_RF, PMELT_RF, PRNSN_RD, PHSN_RD, PLESN_RD, PGSN_RD, PMELT_RD, PLW_WA_TO_NR, PLW_WB_TO_NR, PLW_S_TO_NR, PLW_WIN_TO_NR, PDQS_SN_RF, PDQS_SN_RD)
subroutine teb_irrig(OIRRIG, PTSTEP, KMONTH, PSOLAR_TIME, PSTART_MONTH, PEND_MONTH, PSTART_HOUR, PEND_HOUR, P24H_IRRIG, PIRRIG)
Definition: teb_irrig.F90:9
real, save xtt
Definition: modd_csts.F90:66
subroutine road_layer_e_budget(T, B, PTSTEP, 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, PLW_WA_TO_R, PLW_WB_TO_R, PLW_S_TO_R, PLW_WIN_TO_R, PEMIT_LW_ROAD, PDQS_ROAD, PABS_LW_ROAD, PHFREE_ROAD, PLEFREE_ROAD, PIMB_ROAD, PRR)