SURFEX v8.1
General documentation of Surfex
teb_garden.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_garden (DTCO, G, TOP, T, BOP, B, TPN, TIR, DMT, GDM, GRM, KTEB_P, &
7  HIMPLICIT_WIND, PTSUN, PT_CAN, PQ_CAN, PU_CAN, PT_LOWCAN, PQ_LOWCAN, &
8  PU_LOWCAN, PZ_LOWCAN, PPEW_A_COEF, PPEW_B_COEF, PPEW_A_COEF_LOWCAN, &
9  PPEW_B_COEF_LOWCAN, PPS, PPA, PEXNS, PEXNA, PTA, PQA, PRHOA, PCO2, &
10  PLW_RAD, PDIR_SW, PSCA_SW, PSW_BANDS, KSW, PZENITH, PAZIM, PRR, PSR, &
11  PZREF, PUREF, PVMOD, PH_TRAFFIC, PLE_TRAFFIC, PTSTEP, PLEW_RF, PLEW_RD,&
12  PLE_WL_A, PLE_WL_B, PRNSN_RF, PHSN_RF, PLESN_RF, PGSN_RF, PMELT_RF, &
13  PRNSN_RD, PHSN_RD, PLESN_RD, PGSN_RD, PMELT_RD, PRN_GRND, PH_GRND, &
14  PLE_GRND, PGFLX_GRND, PRN_TWN, PH_TWN, PLE_TWN, PGFLX_TWN, PEVAP_TWN, &
15  PSFCO2, PUW_GRND, PUW_RF, PDUWDU_GRND, PDUWDU_RF, &
16  PUSTAR_TWN, PCD, PCDN, PCH_TWN, PRI_TWN, PTS_TWN, PEMIS_TWN, &
17  PDIR_ALB_TWN, PSCA_ALB_TWN, PRESA_TWN, PAC_RD, PAC_GD, PAC_GR, &
18  PAC_RD_WAT, PAC_GD_WAT, PAC_GR_WAT, KDAY, PEMIT_LW_FAC, PEMIT_LW_GRND, &
19  PT_RAD_IND, PREF_SW_GRND, PREF_SW_FAC, PHU_BLD, PTIME, PPROD_BLD )
20 ! ##########################################################################
21 !
22 !!**** *TEB_GARDEN*
23 !!
24 !! PURPOSE
25 !! -------
26 !
27 !
28 !!** METHOD
29 ! ------
30 !
31 !
32 !! EXTERNAL
33 !! --------
34 !!
35 !!
36 !! IMPLICIT ARGUMENTS
37 !! ------------------
38 !!
39 !!
40 !! REFERENCE
41 !! ---------
42 !!
43 !!
44 !! AUTHOR
45 !! ------
46 !!
47 !! A. Lemonsu * Meteo-France *
48 !!
49 !! MODIFICATIONS
50 !! -------------
51 !! Original 05/2009
52 !! 04/2012 add B%XTRAN_WIN
53 !! modified 08/2012 TOP%CCH_BEM/ ROUGH_WALL and ROUGH_ROOF for buildind conv coef.
54 !! modified 10/2012 add B%XF_WIN_WIN as arg
55 !-------------------------------------------------------------------------------
56 !
57 !* 0. DECLARATIONS
58 ! ------------
59 !
61 USE modd_sfx_grid_n, ONLY : grid_t
63 USE modd_teb_n, ONLY : teb_t
65 USE modd_bem_n, ONLY : bem_t
66 USE modd_teb_panel_n, ONLY : teb_panel_t
67 USE modd_teb_irrig_n, ONLY : teb_irrig_t
69 !
70 USE modd_diag_n, ONLY : diag_t
73 !
76 !
78 USE modd_csts, ONLY: xtt, xstefan
79 USE modd_surf_par, ONLY: xundef
80 USE modd_snow_par, ONLY: xemissn, xansmax
81 !
82 USE mode_thermos
84 !
85 USE modi_solar_panel
86 USE modi_teb_veg_properties
87 USE modi_window_shading_availability
88 USE modi_urban_solar_abs
89 USE modi_urban_lw_coef
90 USE modi_garden
91 USE modi_greenroof
92 USE modi_teb
93 USE modi_avg_urban_fluxes
94 USE modi_bld_occ_calendar
95 !
96 USE yomhook ,ONLY : lhook, dr_hook
97 USE parkind1 ,ONLY : jprb
98 !
99 IMPLICIT NONE
100 !
101 !* 0.1 Declarations of arguments
102 !
103 TYPE(data_cover_t), INTENT(INOUT) :: DTCO
104 !
105 TYPE(grid_t), INTENT(INOUT) :: G
106 !
107 TYPE(teb_options_t), INTENT(INOUT) :: TOP
108 TYPE(teb_t), INTENT(INOUT) :: T
109 TYPE(bem_options_t), INTENT(INOUT) :: BOP
110 TYPE(bem_t), INTENT(INOUT) :: B
111 TYPE(teb_panel_t), INTENT(INOUT) :: TPN
112 TYPE(teb_irrig_t), INTENT(INOUT) :: TIR
113 TYPE(diag_misc_teb_t), INTENT(INOUT) :: DMT
114 !
115 TYPE(teb_garden_model_t), INTENT(INOUT) :: GDM
116 TYPE(teb_greenroof_model_t), INTENT(INOUT) :: GRM
117 !
118 INTEGER, INTENT(IN) :: KTEB_P ! TEB current patch number
119 !
120  CHARACTER(LEN=*), INTENT(IN) :: HIMPLICIT_WIND ! wind implicitation option
121 ! ! 'OLD' = direct
122 ! ! 'NEW' = Taylor serie, order 1
123 REAL, DIMENSION(:), INTENT(IN) :: PTSUN ! solar time (s from midnight)
124 !
125 REAL, DIMENSION(:) , INTENT(INOUT) :: PT_CAN ! canyon air temperature
126 REAL, DIMENSION(:) , INTENT(INOUT) :: PQ_CAN ! canyon air specific humidity
127 REAL, DIMENSION(:) , INTENT(IN) :: PU_CAN ! canyon hor. wind
128 REAL, DIMENSION(:) , INTENT(IN) :: PU_LOWCAN ! wind near the road
129 REAL, DIMENSION(:) , INTENT(IN) :: PT_LOWCAN ! temp. near the road
130 REAL, DIMENSION(:) , INTENT(IN) :: PQ_LOWCAN ! hum. near the road
131 REAL, DIMENSION(:) , INTENT(IN) :: PZ_LOWCAN ! height of atm. var. near the road
132 REAL, DIMENSION(:) , INTENT(IN) :: PPEW_A_COEF ! implicit coefficients
133 REAL, DIMENSION(:) , INTENT(IN) :: PPEW_B_COEF ! for wind coupling
134 REAL, DIMENSION(:) , INTENT(IN) :: PPEW_A_COEF_LOWCAN ! implicit coefficients for wind coupling
135 REAL, DIMENSION(:) , INTENT(IN) :: PPEW_B_COEF_LOWCAN ! between low canyon wind and road
136 REAL, DIMENSION(:) , INTENT(IN) :: PPS ! pressure at the surface
137 REAL, DIMENSION(:) , INTENT(IN) :: PPA ! pressure at the first atmospheric level
138 REAL, DIMENSION(:) , INTENT(IN) :: PEXNS ! surface exner function
139 REAL, DIMENSION(:) , INTENT(IN) :: PTA ! temperature at the lowest level
140 REAL, DIMENSION(:) , INTENT(IN) :: PQA ! specific humidity at the lowest level
141 REAL, DIMENSION(:) , INTENT(IN) :: PVMOD ! module of the horizontal wind
142 REAL, DIMENSION(:) , INTENT(IN) :: PEXNA ! exner function at the lowest level
143 REAL, DIMENSION(:) , INTENT(IN) :: PRHOA ! air density at the lowest level
144 REAL, DIMENSION(:) , INTENT(IN) :: PCO2 ! CO2 concentration in the air (kg/m3)
145 REAL, DIMENSION(:) , INTENT(IN) :: PLW_RAD ! atmospheric infrared radiation
146 REAL, DIMENSION(:,:), INTENT(IN) :: PDIR_SW ! incoming direct solar rad on an horizontal surface
147 REAL, DIMENSION(:,:), INTENT(IN) :: PSCA_SW ! scattered incoming solar rad.
148 REAL, DIMENSION(:) , INTENT(IN) :: PSW_BANDS ! mean wavelength of each shortwave band (m)
149 INTEGER, INTENT(IN) :: KSW ! number of short-wave spectral bands
150 REAL, DIMENSION(:) , INTENT(IN) :: PZENITH ! solar zenithal angle
151 REAL, DIMENSION(:) , INTENT(IN) :: PAZIM ! solar azimuthal angle
152  ! (radian form N, clockwise)
153 REAL, DIMENSION(:) , INTENT(IN) :: PRR ! rain rate
154 REAL, DIMENSION(:) , INTENT(IN) :: PSR ! snow rate
155 REAL, DIMENSION(:) , INTENT(IN) :: PH_TRAFFIC ! anthropogenic sensible heat fluxes due to traffic
156 REAL, DIMENSION(:) , INTENT(IN) :: PLE_TRAFFIC ! anthropogenic latent heat fluxes due to traffic
157 REAL, DIMENSION(:) , INTENT(IN) :: PZREF ! reference height of the first atm level (temperature)
158 REAL, DIMENSION(:) , INTENT(IN) :: PUREF ! reference height of the first atm level (wind)
159 REAL , INTENT(IN) :: PTSTEP ! time step
160 !
161 REAL, DIMENSION(:) , INTENT(OUT) :: PLEW_RF ! latent heat flux over roof (snow)
162 REAL, DIMENSION(:) , INTENT(OUT) :: PLEW_RD ! latent heat flux over road (snow)
163 REAL, DIMENSION(:) , INTENT(OUT) :: PLE_WL_A ! latent heat flux over wall
164 REAL, DIMENSION(:) , INTENT(OUT) :: PLE_WL_B ! latent heat flux over wall
165 
166 !
167 REAL, DIMENSION(:) , INTENT(OUT) :: PRNSN_RF ! net radiation over snow
168 REAL, DIMENSION(:) , INTENT(OUT) :: PHSN_RF ! sensible heat flux over snow
169 REAL, DIMENSION(:) , INTENT(OUT) :: PLESN_RF ! latent heat flux over snow
170 REAL, DIMENSION(:) , INTENT(OUT) :: PGSN_RF ! flux under the snow
171 REAL, DIMENSION(:) , INTENT(OUT) :: PMELT_RF ! snow melt
172 REAL, DIMENSION(:) , INTENT(OUT) :: PRNSN_RD ! net radiation over snow
173 REAL, DIMENSION(:) , INTENT(OUT) :: PHSN_RD ! sensible heat flux over snow
174 REAL, DIMENSION(:) , INTENT(OUT) :: PLESN_RD ! latent heat flux over snow
175 REAL, DIMENSION(:) , INTENT(OUT) :: PGSN_RD ! flux under the snow
176 REAL, DIMENSION(:) , INTENT(OUT) :: PMELT_RD ! snow melt
177 !
178 REAL, DIMENSION(:) , INTENT(OUT) :: PRN_GRND ! net radiation over ground
179 REAL, DIMENSION(:) , INTENT(OUT) :: PH_GRND ! sensible heat flux over ground
180 REAL, DIMENSION(:) , INTENT(OUT) :: PLE_GRND ! latent heat flux over ground
181 REAL, DIMENSION(:) , INTENT(OUT) :: PGFLX_GRND ! flux through the ground
182 REAL, DIMENSION(:) , INTENT(OUT) :: PRN_TWN ! net radiation over town
183 REAL, DIMENSION(:) , INTENT(OUT) :: PH_TWN ! sensible heat flux over town
184 REAL, DIMENSION(:) , INTENT(OUT) :: PLE_TWN ! latent heat flux over town
185 REAL, DIMENSION(:) , INTENT(OUT) :: PGFLX_TWN ! flux through the ground
186 REAL, DIMENSION(:) , INTENT(OUT) :: PEVAP_TWN ! evaporation flux (kg/m2/s)
187 REAL, DIMENSION(:) , INTENT(OUT) :: PSFCO2 ! flux of CO2 (m/s*kg_CO2/kg_air)
188 REAL, DIMENSION(:) , INTENT(OUT) :: PUW_GRND ! momentum flux for ground built surf
189 REAL, DIMENSION(:) , INTENT(OUT) :: PUW_RF ! momentum flux for roofs
190 REAL, DIMENSION(:) , INTENT(OUT) :: PDUWDU_GRND !
191 REAL, DIMENSION(:) , INTENT(OUT) :: PDUWDU_RF !
192 REAL, DIMENSION(:) , INTENT(OUT) :: PUSTAR_TWN ! friciton velocity over town
193 REAL, DIMENSION(:) , INTENT(OUT) :: PCD ! town averaged drag coefficient
194 REAL, DIMENSION(:) , INTENT(OUT) :: PCDN ! town averaged neutral drag coefficient
195 REAL, DIMENSION(:) , INTENT(OUT) :: PCH_TWN ! town averaged heat transfer coefficient
196 REAL, DIMENSION(:) , INTENT(OUT) :: PRI_TWN ! town averaged Richardson number
197 REAL, DIMENSION(:) , INTENT(OUT) :: PTS_TWN ! town surface temperature
198 REAL, DIMENSION(:) , INTENT(OUT) :: PEMIS_TWN ! town equivalent emissivity
199 REAL, DIMENSION(:) , INTENT(OUT) :: PDIR_ALB_TWN ! town equivalent direct albedo
200 REAL, DIMENSION(:) , INTENT(OUT) :: PSCA_ALB_TWN ! town equivalent diffuse albedo
201 REAL, DIMENSION(:) , INTENT(OUT) :: PRESA_TWN ! town aerodynamical resistance
202 REAL, DIMENSION(:) , INTENT(OUT) :: PAC_RD ! road conductance
203 REAL, DIMENSION(:) , INTENT(OUT) :: PAC_GD ! green area conductance
204 REAL, DIMENSION(:) , INTENT(OUT) :: PAC_GR ! green roof conductance
205 REAL, DIMENSION(:) , INTENT(OUT) :: PAC_RD_WAT ! road conductance for latent heat
206 REAL, DIMENSION(:) , INTENT(OUT) :: PAC_GD_WAT ! green area conductance for latent heat
207 REAL, DIMENSION(:) , INTENT(OUT) :: PAC_GR_WAT ! green roof conductance for latent heat
208 !
209 ! new arguments created after BEM
210 !
211 INTEGER , INTENT(IN) :: KDAY ! Simulation day
212 ! new argument for the UTCI calculation
213 REAL, DIMENSION(:) , INTENT(OUT) :: PEMIT_LW_GRND ! LW flux emitted by the ground (W/m2 ground)
214 REAL, DIMENSION(:) , INTENT(OUT) :: PEMIT_LW_FAC ! LW flux emitted by the facade (W/m2 ground)
215 REAL, DIMENSION(:) , INTENT(OUT) :: PT_RAD_IND ! Indoor mean radiant temperature [K]
216 REAL, DIMENSION(:) , INTENT(OUT) :: PREF_SW_GRND ! total solar rad reflected from ground
217 REAL, DIMENSION(:) , INTENT(OUT) :: PREF_SW_FAC ! total solar rad reflected from facade
218 REAL, DIMENSION(:) , INTENT(OUT) :: PHU_BLD ! Indoor relative humidity 0 < (-) < 1
219 !
220 ! new arguments for shading, schedule or natural ventilation
221 REAL , INTENT(IN) :: PTIME ! current time since midnight (UTC, s)
222 !
223 !* arguments for solar panels
224 !
225 REAL, DIMENSION(:), INTENT(OUT) :: PPROD_BLD ! Averaged Energy production of solar panel on roofs (W/m2 bld )
226 !
227 !* 0.2 Declarations of local variables
228 !
229 TYPE(diag_t), POINTER :: GDDK
230 TYPE(diag_evap_isba_t), POINTER :: GDDEK
231 TYPE(diag_misc_isba_t), POINTER :: GDDMK
232 !
233 TYPE(diag_t), POINTER :: GRDK
234 TYPE(diag_evap_isba_t), POINTER :: GRDEK
235 TYPE(diag_misc_isba_t), POINTER :: GRDMK
236 !
237 REAL, DIMENSION(SIZE(PTA)) :: ZTA ! air temperature extrapolated at roof level
238 REAL, DIMENSION(SIZE(PTA)) :: ZQA ! air humidity extrapolated at roof level
239 !
240 REAL, DIMENSION(SIZE(PTA)) :: ZDN_RF ! snow fraction on roofs
241 REAL, DIMENSION(SIZE(PTA)) :: ZDN_RD ! snow fraction on roads
242 REAL, DIMENSION(SIZE(PTA)) :: ZDF_RF ! free-snow fraction on roofs
243 REAL, DIMENSION(SIZE(PTA)) :: ZDF_RD ! free-snow fraction on roads
244 REAL, DIMENSION(SIZE(PTA)) :: ZDELT_RD ! fraction of water on roads
245 REAL, DIMENSION(SIZE(PTA)) :: ZDELT_RF ! fraction of water on roofs
246 REAL, DIMENSION(SIZE(PTA)) :: ZAC_RF ! roof conductance
247 REAL, DIMENSION(SIZE(PTA)) :: ZAC_RF_WAT ! roof water conductance
248 REAL, DIMENSION(SIZE(PTA)) :: ZAC_WL ! wall conductance
249 REAL, DIMENSION(SIZE(PTA)) :: ZAC_TOP ! top conductance
250 REAL, DIMENSION(SIZE(PTA)) :: ZQSAT_RD ! hum of saturation for roads
251 REAL, DIMENSION(SIZE(PTA)) :: ZQSAT_GD ! hum of saturation for green areas
252 REAL, DIMENSION(SIZE(PTA)) :: ZQSAT_RF ! hum of saturation for roofs
253 REAL, DIMENSION(SIZE(PTA)) :: ZQSAT_GR ! hum of saturation for green roofs
254 !
255 ! coefficients for LW computations over snow (from previous time-step)
256 !
257 REAL, DIMENSION(SIZE(PTA)) :: ZTSSN_RF ! roof snow temp at previous time-step
258 REAL, DIMENSION(SIZE(PTA)) :: ZTSSN_RD ! road snow temp at previous time-step
259 REAL, DIMENSION(SIZE(PTA)) :: ZESN_RF ! snow emissivity at previous time-step
260 REAL, DIMENSION(SIZE(PTA)) :: ZESN_RD ! snow emissivity at previous time-step
261 !
262 ! incoming shortwave radiation
263 !
264 REAL, DIMENSION(SIZE(PTA)) :: ZDIR_SW ! direct solar rad
265 REAL, DIMENSION(SIZE(PTA)) :: ZSCA_SW ! diffuse solar rad
266 INTEGER :: JSWB
267 !
268 ! albedo & emissivity
269 !
270 REAL, DIMENSION(SIZE(PTA)) :: ZALB_GD ! albedo for green areas
271 REAL, DIMENSION(SIZE(PTA)) :: ZEMIS_GD ! emissivity for green areas
272 REAL, DIMENSION(SIZE(PTA)) :: ZALB_GR ! albedo for green roofs
273 REAL, DIMENSION(SIZE(PTA)) :: ZEMIS_GR ! emissivity for green roofs
274 !
275 REAL, DIMENSION(SIZE(PTA)) :: ZALBNIR_TVEG_GD ! nearIR veg tot albedo
276 REAL, DIMENSION(SIZE(PTA)) :: ZALBVIS_TVEG_GD ! visible veg tot albedo
277 REAL, DIMENSION(SIZE(PTA)) :: ZALBNIR_TSOIL_GD ! nearIR soil tot albedo
278 REAL, DIMENSION(SIZE(PTA)) :: ZALBVIS_TSOIL_GD ! visible soil tot albedo
279 !
280 REAL, DIMENSION(SIZE(PTA)) :: ZALBNIR_TVEG_GR ! nearIR veg tot albedo
281 REAL, DIMENSION(SIZE(PTA)) :: ZALBVIS_TVEG_GR ! visible veg tot albedo
282 REAL, DIMENSION(SIZE(PTA)) :: ZALBNIR_TSOIL_GR ! nearIR soil tot albedo
283 REAL, DIMENSION(SIZE(PTA)) :: ZALBVIS_TSOIL_GR ! visible soil tot albedo
284 !
285 ! radiation received by surfaces
286 !
287 REAL, DIMENSION(SIZE(PTA)) :: ZREC_SW_RD ! solar rad received by roads
288 REAL, DIMENSION(SIZE(PTA)) :: ZREC_SW_WL_A ! solar rad received by walls
289 REAL, DIMENSION(SIZE(PTA)) :: ZREC_SW_WL_B ! solar rad received by walls
290 REAL, DIMENSION(SIZE(PTA)) :: ZREC_SW_GD ! solar rad received by gardens
291 REAL, DIMENSION(SIZE(PTA)) :: ZREC_SW_SN_RD ! solar rad received by snow on roads
292 !
293 REAL, DIMENSION(SIZE(PTA)) :: ZREC_LW_GD ! IR rad received by gardens
294 !
295 REAL, DIMENSION(SIZE(PTA)) :: ZSW_RAD_GD ! solar radiation reaching urban green areas
296 REAL, DIMENSION(SIZE(PTA)) :: ZREC_SW_RF ! solar rad received by roofs in presence of solar panels
297 !
298 ! coefficients for LW contributions
299 !
300 REAL, DIMENSION(SIZE(PTA)) :: ZLW_WA_TO_WB ! LW contrib. wall -> opposite wall
301 REAL, DIMENSION(SIZE(PTA)) :: ZLW_WA_TO_R ! LW contrib. wall -> road
302 REAL, DIMENSION(SIZE(PTA)) :: ZLW_WB_TO_R ! LW contrib. wall -> road
303 REAL, DIMENSION(SIZE(PTA)) :: ZLW_WA_TO_G ! LW contrib. wall -> green
304 REAL, DIMENSION(SIZE(PTA)) :: ZLW_WB_TO_G ! LW contrib. wall -> green
305 REAL, DIMENSION(SIZE(PTA)) :: ZLW_WA_TO_WIN ! Radiative heat trasfer coeff wall-window
306 REAL, DIMENSION(SIZE(PTA)) :: ZLW_WB_TO_WIN ! Radiative heat trasfer coeff wall-window
307  ! [W K-1 m-2]
308 REAL, DIMENSION(SIZE(PTA)) :: ZLW_WA_TO_NR ! LW contrib. wall -> road(snow)
309 REAL, DIMENSION(SIZE(PTA)) :: ZLW_WB_TO_NR ! LW contrib. wall -> road(snow)
310 REAL, DIMENSION(SIZE(PTA)) :: ZLW_R_TO_WA ! LW contrib. road -> wall
311 REAL, DIMENSION(SIZE(PTA)) :: ZLW_R_TO_WB ! LW contrib. road -> wall
312 REAL, DIMENSION(SIZE(PTA)) :: ZLW_R_TO_WIN ! Radiative heat trasfer coeff road-window
313  ! [W K-1 m-2]
314 REAL, DIMENSION(SIZE(PTA)) :: ZLW_G_TO_WA ! LW contrib. green -> wall
315 REAL, DIMENSION(SIZE(PTA)) :: ZLW_G_TO_WB ! LW contrib. green -> wall
316 REAL, DIMENSION(SIZE(PTA)) :: ZLW_G_TO_WIN ! L.W. interactions GARDEN areas->road
317  !
318 REAL, DIMENSION(SIZE(PTA)) :: ZLW_WIN_TO_WA ! Radiative heat trasfer coeff window-wall
319  ! [W K-1 m-2]
320 REAL, DIMENSION(SIZE(PTA)) :: ZLW_WIN_TO_WB ! Radiative heat trasfer coeff window-wall
321  ! [W K-1 m-2]
322 REAL, DIMENSION(SIZE(PTA)) :: ZLW_WIN_TO_R ! Radiative heat trasfer coeff window-road
323  ! [W K-1 m-2]
324 REAL, DIMENSION(SIZE(PTA)) :: ZLW_WIN_TO_G ! Radiative heat trasfer coeff window-garden
325  ! [W K-1 m-2]
326 REAL, DIMENSION(SIZE(PTA)) :: ZLW_WIN_TO_NR ! Radiative heat trasfer coeff window-road(snow)
327  ! [W K-1 m-2]
328 REAL, DIMENSION(SIZE(PTA)) :: ZLW_S_TO_WA ! LW contrib. sky -> wall
329 REAL, DIMENSION(SIZE(PTA)) :: ZLW_S_TO_WB ! LW contrib. sky -> wall
330 REAL, DIMENSION(SIZE(PTA)) :: ZLW_S_TO_R ! LW contrib. sky -> road
331 REAL, DIMENSION(SIZE(PTA)) :: ZLW_S_TO_G ! LW contrib. sky -> green
332 REAL, DIMENSION(SIZE(PTA)) :: ZLW_S_TO_WIN ! Radiative heat trasfer coeff window-sky
333  ! [W K-1 m-2]
334 REAL, DIMENSION(SIZE(PTA)) :: ZLW_S_TO_NR ! LW contrib. sky -> road(snow)
335 REAL, DIMENSION(SIZE(PTA)) :: ZLW_NR_TO_WA ! LW contrib. road(snow) -> wall
336 REAL, DIMENSION(SIZE(PTA)) :: ZLW_NR_TO_WB ! LW contrib. road(snow) -> wall
337 REAL, DIMENSION(SIZE(PTA)) :: ZLW_NR_TO_WIN ! L.W. interactions snow(road)->GARDEN areas
338  !
339 REAL, DIMENSION(SIZE(PTA)) :: ZREC_SW_WIN ! solar received by windows [W m-2(win)]
340 REAL, DIMENSION(SIZE(PTA)) :: ZT_SKY ! sky temperature [K]
341 REAL, DIMENSION(SIZE(PTA)) :: ZREC_LW_RF ! Incoming LW on roofs in presence of solar panels
342 !
343 ! local variable at previous time-step
344 !
345 REAL, DIMENSION(SIZE(PTA)) :: ZPET_A_COEF
346 REAL, DIMENSION(SIZE(PTA)) :: ZPET_B_COEF
347 REAL, DIMENSION(SIZE(PTA)) :: ZPEQ_A_COEF
348 REAL, DIMENSION(SIZE(PTA)) :: ZPEQ_B_COEF
349 !
350 REAL, DIMENSION(SIZE(PTA)) :: ZUW_RD ! momentum flux for roads
351 REAL, DIMENSION(SIZE(PTA)) :: ZUW_GD ! momentum flux for green areas
352 REAL, DIMENSION(SIZE(PTA)) :: ZUW_GR ! momentum flux for green roofs
353 REAL, DIMENSION(SIZE(PTA)) :: ZDUWDU_RD !
354 !
355 REAL, DIMENSION(SIZE(PTA)) :: ZAC_AGG_GD ! aggreg. aeodynamic resistance for green areas
356 REAL, DIMENSION(SIZE(PTA)) :: ZHU_AGG_GD ! aggreg. relative humidity for green areas
357 REAL, DIMENSION(SIZE(PTA)) :: ZAC_AGG_GR ! aggreg. aeodynamic resistance for green roofs
358 REAL, DIMENSION(SIZE(PTA)) :: ZHU_AGG_GR ! aggreg. relative humidity for green roofs
359 !
360 ! surfaces relative fractions
361 !
362 REAL, DIMENSION(SIZE(PTA)) :: ZRF_FRAC ! roof, wall and
363 REAL, DIMENSION(SIZE(PTA)) :: ZWL_FRAC ! road fractions
364 REAL, DIMENSION(SIZE(PTA)) :: ZRD_FRAC ! of exchange surf.
365 REAL, DIMENSION(SIZE(PTA)) :: ZGD_FRAC !
366 REAL, DIMENSION(SIZE(PTA)) :: ZTOTS_O_HORS ! total canyon+roof surface
367 ! ! over horizontal surface
368 REAL, DIMENSION(SIZE(PTA)) :: ZWL_O_RD ! wall surface over road surface
369 REAL, DIMENSION(SIZE(PTA)) :: ZWL_O_GRND ! wall surface over (road+green area) surface
370 !
371 ! surface temperatures
372 !
373 REAL, DIMENSION(SIZE(PTA)) :: ZMTC_O_GR_R1 ! mean thermal conductivity over distance
374 ! ! between two layers (bottom GR & roof)
375 !
376 ! fluxes from green surfaces
377 !
378 REAL, DIMENSION(SIZE(PTA)) :: ZSFCO2_GD ! CO2 fluxes (m/s*kg_CO2/kg_air)
379 REAL, DIMENSION(SIZE(PTA)) :: ZEMIT_LW_GD ! LW flux emitted by the garden (W/m2 garden)
380 REAL, DIMENSION(SIZE(PTA)) :: ZSFCO2_GR ! CO2 fluxes over greenroofs (m/s*kg_CO2/kg_air)
381 !
382 ! fluxes from built surfaces
383 REAL, DIMENSION(SIZE(PTA)) :: ZEMIT_LW_RD ! LW flux emitted by the road (W/m2 road)
384 !
385 ! fluxes from/to solar panel
386 REAL, DIMENSION(SIZE(PTA)) :: ZEMIT_LWDN_PANEL ! LW flux emitted DOWNWARDS by the solar panel (W/m2 panel)
387 REAL, DIMENSION(SIZE(PTA)) :: ZEMIT_LWUP_PANEL ! LW flux emitted UPWARDS by the solar panel (W/m2 panel)
388 REAL, DIMENSION(SIZE(PTA)) :: ZEMIT_LW_RF ! LW flux emitted UPWARDS by the roof (W/m2 roof )
389 !
390 REAL, DIMENSION(SIZE(PTA)) :: ZRN_GD, ZH_GD, ZLE_GD, ZGFLUX_GD, ZEVAP_GD, ZTSRAD_GD, ZRUNOFF_GD
391 REAL, DIMENSIOn(SIZE(PTA)) :: ZRN_GR, ZH_GR, ZLE_GR, ZGFLUX_GR
392 REAL, DIMENSION(SIZE(PTA)) :: ZEVAP_GR, ZTSRAD_GR, ZRUNOFF_GR, ZDRAIN_GR
393 !
394 !new local variables for shading
395 REAL, DIMENSION(SIZE(PTA)) :: ZE_SHADING ! energy not ref., nor absorbed, nor
396  ! trans. by glazing [Wm-2(win)]
397 LOGICAL, DIMENSION(SIZE(PTA)) :: GSHADE ! describes if one encounters the
398 ! ! conditions to close windows
399 INTEGER :: JJ
400 
401 REAL(KIND=JPRB) :: ZHOOK_HANDLE
402 !-------------------------------------------------------------------------------
403 !
404 !* 1. Initializations
405 ! ---------------
406 !
407 !* 1.0 broadband radiative fluxes
408 ! --------------------------
409 !
410 IF (lhook) CALL dr_hook('TEB_GARDEN',0,zhook_handle)
411 !
412 gddk => gdm%VD%ND%AL(kteb_p)
413 gddek => gdm%VD%NDE%AL(kteb_p)
414 gddmk => gdm%VD%NDM%AL(kteb_p)
415 !
416 grdk => grm%VD%ND%AL(kteb_p)
417 grdek => grm%VD%NDE%AL(kteb_p)
418 grdmk => grm%VD%NDM%AL(kteb_p)
419 !
420 zdir_sw(:) = 0.
421 zsca_sw(:) = 0.
422 !
423 DO jswb=1,ksw
424  DO jj=1,SIZE(pdir_sw,1)
425  zdir_sw(jj) = zdir_sw(jj) + pdir_sw(jj,jswb)
426  zsca_sw(jj) = zsca_sw(jj) + psca_sw(jj,jswb)
427  ENDDO
428 END DO
429 !
430 !
431 !* 1.1 surfaces relative fractions
432 ! ---------------------------
433 !
434 DO jj=1,SIZE(t%XROAD)
435  IF (t%XROAD(jj) .GT. 0.) THEN
436  ztots_o_hors(jj) = 1. + t%XWALL_O_HOR(jj)
437  zrf_frac(jj) = t%XBLD (jj) / ztots_o_hors(jj)
438  zwl_frac(jj) = t%XWALL_O_HOR(jj) / ztots_o_hors(jj)
439  zrd_frac(jj) = t%XROAD (jj) / ztots_o_hors(jj)
440  zgd_frac(jj) = t%XGARDEN (jj) / ztots_o_hors(jj)
441  zwl_o_rd(jj) = zwl_frac(jj) / zrd_frac(jj)
442  zwl_o_grnd(jj) = zwl_frac(jj) / (zrd_frac(jj)+zgd_frac(jj))
443  ELSEIF (t%XBLD(jj) .EQ. 0. .AND. t%XROAD(jj) .EQ. 0.) THEN
444  ztots_o_hors(jj) = 1. + t%XWALL_O_HOR(jj)
445  zrf_frac(jj) = 0.
446  zwl_frac(jj) = t%XWALL_O_HOR(jj) / ztots_o_hors(jj)
447  zrd_frac(jj) = 0.
448  zgd_frac(jj) = t%XGARDEN (jj) / ztots_o_hors(jj)
449  zwl_o_rd(jj) = 0.
450  zwl_o_grnd(jj) = zwl_frac(jj) / zgd_frac(jj)
451  ENDIF
452 ENDDO
453 !
454 !-------------------------------------------------------------------------------
455 !
456 !* 2. Snow-covered surfaces relative effects
457 ! --------------------------------------
458 !
459 !* 2.1 Snow-covered surfaces relative fractions (at previous time-step)
460 ! ----------------------------------------
461  CALL snow_frac_road(t%TSNOW_ROAD%WSNOW(:,1),psr(:)>0.,zdn_rd,zdf_rd)
462  CALL snow_frac_roof(t%TSNOW_ROOF%WSNOW(:,1),psr(:)>0.,zdn_rf,zdf_rf)
463 !
464 !* new snow albedo
465 !
466 WHERE (t%TSNOW_ROAD%WSNOW(:,1)==0. .AND. psr(:)>0.) t%TSNOW_ROAD%ALB(:) = xansmax
467 WHERE (t%TSNOW_ROOF%WSNOW(:,1)==0. .AND. psr(:)>0.) t%TSNOW_ROOF%ALB(:) = xansmax
468 !
469 !* 2.2 If snow was not present at previous time-step but is falling
470 ! ------------------------------------------------------------
471 !
472 WHERE (t%TSNOW_ROAD%WSNOW(:,1)==0. .AND. psr(:)>0.)
473  t%TSNOW_ROAD%ALB (:) = xansmax
474  t%TSNOW_ROAD%EMIS(:) = xemissn
475  t%TSNOW_ROAD%TS (:) = min(t%XT_ROAD(:,1), xtt)
476 END WHERE
477 WHERE (t%TSNOW_ROOF%WSNOW(:,1)==0. .AND. psr(:)>0.)
478  t%TSNOW_ROOF%ALB (:) = xansmax
479  t%TSNOW_ROOF%EMIS(:) = xemissn
480  t%TSNOW_ROOF%TS (:) = min(t%XT_ROOF(:,1), xtt)
481 END WHERE
482 !
483 !* 2.3 Radiative snow variables at previous time-step
484 ! ----------------------------------------------
485 !
486 zesn_rf(:) = t%TSNOW_ROOF%EMIS(:)
487 zesn_rd(:) = t%TSNOW_ROAD%EMIS(:)
488 ztssn_rf(:) = t%TSNOW_ROOF%TS (:)
489 ztssn_rd(:) = t%TSNOW_ROAD%TS (:)
490 !
491 !-------------------------------------------------------------------------------
492 !
493 !* 3. Extrapolation of atmospheric T and q at roof level (for fluxes computation)
494 ! --------------------------------------------------
495 !
496 zta(:) = pta(:) * pexns(:) / pexna(:)
497 zqa(:) = pqa(:) * qsat(zta(:),pps(:)) / qsat(pta(:),ppa(:))
498 !
499 !-------------------------------------------------------------------------------
500 !
501 
502 !* 4. Grid-averaged albedo and emissivity of green areas
503 ! --------------------------------------------------
504 !
505 zalb_gd = xundef
506 zemis_gd = xundef
507 ztsrad_gd = xundef
508 !
509 IF (top%LGARDEN) THEN
510  CALL teb_veg_properties(t%XGARDEN, gdm%O, gdm%NPE%AL(kteb_p), &
511  pdir_sw, psca_sw, psw_bands, ksw, &
512  ztsrad_gd, zemis_gd, zalb_gd, &
513  pta=pt_lowcan, &
514  palbnir_tveg=zalbnir_tveg_gd, &
515  palbvis_tveg=zalbvis_tveg_gd, &
516  palbnir_tsoil=zalbnir_tsoil_gd, &
517  palbvis_tsoil=zalbvis_tsoil_gd )
518 ENDIF
519 !
520 ! for greenroofs :
521 !
522 zalb_gr = xundef
523 zemis_gr = xundef
524 ztsrad_gr = xundef
525 !
526 IF (top%LGREENROOF) THEN
527  CALL teb_veg_properties(t%XGREENROOF, grm%O, grm%NPE%AL(kteb_p), &
528  pdir_sw, psca_sw, psw_bands, ksw, &
529  ztsrad_gr, zemis_gr, zalb_gr, &
530  pta=pta, &
531  palbnir_tveg=zalbnir_tveg_gr, &
532  palbvis_tveg=zalbvis_tveg_gr, &
533  palbnir_tsoil=zalbnir_tsoil_gr, &
534  palbvis_tsoil=zalbvis_tsoil_gr )
535 ENDIF
536 !
537 !-------------------------------------------------------------------------------
538 !
539 !* 5. Occupation of buildings
540 ! -----------------------
541 !
542 !* when building in unoccupied, target temperature is modified
543 !
544 IF (top%CBEM=="BEM") THEN
545  CALL bld_occ_calendar(top%TTIME, ptsun, t, b, 1., dmt%XTCOOL_TARGET, dmt%XTHEAT_TARGET, dmt%XQIN )
546 ENDIF
547 !
548 !-------------------------------------------------------------------------------
549 !
550 !* 5. Solar radiation
551 ! ---------------
552 !
553 !
554 !* 5.1 Windows management
555 ! ------------------
556 !
557 !* checks if one encouters the conditions for closing the windows at day
558 ! (needs to be equiped of solar protections and not to be confortable inside)
559 !
560 gshade(:) = .false.
561 IF (top%CBEM=="BEM") THEN
562  CALL window_shading_availability(b%LSHADE, b%XTI_BLD, dmt%XTCOOL_TARGET, gshade)
563 !
564 !* Reinitialize shading of windows when changing day
565 !
566  WHERE (ptsun .LT. ptstep + 1e-3) b%LSHAD_DAY(:) = .false.
567 END IF
568 !
569 !
570 !* 5.2 computes solar radiation exchanges
571 ! ----------------------------------
572 !
573  CALL urban_solar_abs(top, t, b, dmt, zdir_sw, zsca_sw, pzenith, pazim, &
574  tpn%XFRAC_PANEL, tpn%XALB_PANEL, zalb_gd, &
575  t%XSVF_GARDEN, zalb_gr, zdn_rf, zdf_rf, &
576  zdn_rd, zdf_rd, zrec_sw_rd, zrec_sw_sn_rd, &
577  zrec_sw_wl_a, zrec_sw_wl_b, zrec_sw_gd, &
578  zrec_sw_rf, pdir_alb_twn, psca_alb_twn, &
579  zsw_rad_gd, zrec_sw_win,pref_sw_grnd, &
580  pref_sw_fac, ze_shading, b%LSHAD_DAY, gshade )
581 !
582 !-------------------------------------------------------------------------------
583 !
584 !* 6. LW properties
585 ! -------------
586 !
587  CALL urban_lw_coef(b, t, plw_rad, zemis_gd, t%TSNOW_ROAD%TS, ztsrad_gd, &
588  zlw_wa_to_wb, zlw_wa_to_r, zlw_wb_to_r, &
589  zlw_wa_to_nr, zlw_wb_to_nr, zlw_wa_to_g, &
590  zlw_wb_to_g, zlw_wa_to_win, zlw_wb_to_win, &
591  zlw_r_to_wa, zlw_r_to_wb, zlw_r_to_win, &
592  zlw_g_to_wa, zlw_g_to_wb, zlw_g_to_win, &
593  zlw_s_to_wa, zlw_s_to_wb, zlw_s_to_r, &
594  zlw_s_to_nr, zlw_s_to_g,zlw_s_to_win, &
595  zlw_win_to_wa, zlw_win_to_wb, zlw_win_to_r, &
596  zlw_win_to_nr, zlw_win_to_g, zlw_nr_to_wa, &
597  zlw_nr_to_wb, zlw_nr_to_win )
598 !
599 !-------------------------------------------------------------------------------
600 !
601 ! The subroutine is splitted in 2 because of compilation optimization issues
602  CALL teb_garden2
603  CALL teb_garden3
604 !
605 IF (lhook) CALL dr_hook('TEB_GARDEN',1,zhook_handle)
606 !-------------------------------------------------------------------------------
607 CONTAINS
608 !-------------------------------------------------------------------------------
609 SUBROUTINE teb_garden2
610 !
611 !* 7. Terms of radiation absorption
612 ! -----------------------------
613 !
614 !* 7.1 IR rad received by gardens (snow free and snow covered separately)
615 ! --------------------------
616 !
617 IF (top%LGARDEN) THEN
618  zt_sky(:) = (plw_rad(:)/xstefan)**0.25
619  zrec_lw_gd(:) = (zlw_s_to_g(:) * (zt_sky(:) - ztsrad_gd(:)) &
620  + zlw_wa_to_g(:) * (t%XT_WALL_A(:,1)- ztsrad_gd(:)) &
621  + zlw_wb_to_g(:) * (t%XT_WALL_B(:,1)- ztsrad_gd(:)) &
622  + zlw_win_to_g(:) * (b%XT_WIN1(:) - ztsrad_gd(:)) ) &
623  / zemis_gd(:) + xstefan * ztsrad_gd(:)**4
624 ELSE
625  zrec_lw_gd(:) = xundef
626 END IF
627 !
628 !* 7.2 Effect of solar panels on incoming LW on roofs
629 ! ----------------------------------------------
630 !
631 IF (top%LSOLAR_PANEL) THEN
632  !
633  ! solar panels downwards surface is supposed to be at air temperature
634  ! and to be have an emissivity of 1.
635  !
636  zemit_lwdn_panel = xstefan * pta**4
637  !
638  ! note that, for the time being, one considers that the solar panel
639  ! intercept radiation both above roof and greenroofs (if any)
640  zrec_lw_rf = (1.-tpn%XFRAC_PANEL(:)) * plw_rad + tpn%XFRAC_PANEL(:) * zemit_lwdn_panel
641 ELSE
642  zemit_lwdn_panel = xundef
643  zrec_lw_rf = plw_rad
644 END IF
645 !
646 !-------------------------------------------------------------------------------
647 !
648 !* 8. Treatment of green areas
649 ! ------------------------
650 !
651 !* 8.1 Implicit coeefs for T and Q
652 ! ---------------------------
653 !
654 !* explicit coupling for the time being.
655 ! canopy may need implicitation if there is a lot a garden in the grid mesh
656 !
657 zpet_a_coef(:) = 0.
658 zpet_b_coef(:) = pt_lowcan(:) / pexns(:)
659 zpeq_a_coef(:) = 0.
660 zpeq_b_coef(:) = pq_lowcan(:)
661 !
662 !* 8.2 Call ISBA for green areas
663 ! -------------------------
664 !
665 IF (top%LGARDEN) THEN
666 !
667  CALL garden(dtco, g, t, top, tir, gdm%DTV, gdm%GB, gddk, gddek, gddmk, &
668  gdm%O, gdm%S, gdm%K, gdm%P, gdm%NPE%AL(kteb_p), &
669  himplicit_wind, top%TTIME, ptsun, ppew_a_coef_lowcan, ppew_b_coef_lowcan, &
670  zpet_a_coef, zpeq_a_coef, zpet_b_coef, zpeq_b_coef, ptstep, pz_lowcan, &
671  pt_lowcan, pq_lowcan, pexns, prhoa, pco2, pps, prr, psr, pzenith, &
672  zrec_sw_gd, zrec_lw_gd, pu_lowcan, zalbnir_tveg_gd, zalbvis_tveg_gd, &
673  zalbnir_tsoil_gd, zalbvis_tsoil_gd, zrn_gd, zh_gd, zle_gd, zgflux_gd, &
674  zsfco2_gd, zevap_gd, zuw_gd, zrunoff_gd, pac_gd, zqsat_gd, ztsrad_gd, &
675  zac_agg_gd, zhu_agg_gd, dmt%XIRRIG_GARDEN )
676 
677  pac_gd_wat(:) = pac_gd(:)
678  dmt%XABS_SW_GARDEN(:) = (1.-zalb_gd(:)) * zrec_sw_gd
679  dmt%XABS_LW_GARDEN(:) = zemis_gd(:) * zrec_lw_gd(:) - xstefan * zemis_gd(:) * ztsrad_gd(:)**4
680  zemit_lw_gd(:) = xstefan * ztsrad_gd(:)**4 + (1 - zemis_gd(:)) / zemis_gd(:) * dmt%XABS_LW_GARDEN(:)
681 
682 ELSE
683  !
684  zrn_gd(:) = 0.
685  zh_gd(:) = 0.
686  zle_gd(:) = 0.
687  zgflux_gd(:) = 0.
688  zevap_gd(:) = 0.
689  zrunoff_gd(:) = 0.
690  !
691  ztsrad_gd(:) = xundef
692  !
693  zuw_gd(:) = 0.
694  pac_gd(:) = 0.
695  zsfco2_gd(:) = 0.
696  zqsat_gd(:) = xundef
697  zac_agg_gd(:) = xundef
698  zhu_agg_gd(:) = xundef
699  pac_gd_wat(:) = xundef
700  zemit_lw_gd(:) = 0.
701  !
702  dmt%XABS_SW_GARDEN (:) = xundef
703  dmt%XABS_LW_GARDEN (:) = xundef
704  !
705  dmt%XIRRIG_GARDEN (:) = 0.
706  !
707 ENDIF
708 !
709 !* 8.3 Call ISBA for greenroofs
710 ! -------------------------
711 !
712 IF (top%LGREENROOF) THEN
713  !
714  CALL greenroof(dtco, g, t, top, tir, grm%DTV, grm%GB, grdk, grdek, &
715  grdmk, grm%O, grm%S, grm%K, grm%P, grm%NPE%AL(kteb_p), &
716  himplicit_wind, top%TTIME, ptsun, ppew_a_coef, ppew_b_coef, &
717  zpet_a_coef, zpeq_a_coef, zpet_b_coef, zpeq_b_coef, ptstep, pzref, &
718  puref, pta, pqa, pexns, pexna,prhoa, pco2, pps, prr, psr, pzenith, &
719  zrec_sw_rf, zrec_lw_rf, pvmod,zalbnir_tveg_gr, zalbvis_tveg_gr, &
720  zalbnir_tsoil_gr, zalbvis_tsoil_gr, zrn_gr, zh_gr, zle_gr, &
721  zgflux_gr, zsfco2_gr, zevap_gr, zuw_gr, zrunoff_gr, zdrain_gr, &
722  pac_gr, zqsat_gr, ztsrad_gr, zac_agg_gr, zhu_agg_gr, &
723  dmt%XG_GREENROOF_ROOF, dmt%XIRRIG_GREENROOF )
724  !
725  pac_gr_wat(:) = pac_gr(:)
726  dmt%XABS_SW_GREENROOF(:) = (1.-zalb_gr(:)) * zrec_sw_rf
727  dmt%XABS_LW_GREENROOF(:) = zemis_gr * zrec_lw_rf - xstefan * zemis_gr * ztsrad_gr**4
728 
729 ELSE
730  !
731  zrn_gr(:) = 0.
732  zh_gr(:) = 0.
733  zle_gr(:) = 0.
734  zgflux_gr(:) = 0.
735  zevap_gr(:) = 0.
736  zrunoff_gr(:) = 0.
737  zdrain_gr(:) = 0.
738  !
739  ztsrad_gr(:) = xundef
740  !
741  zuw_gr(:) = 0.
742  pac_gr(:) = 0.
743  zsfco2_gr(:) = 0.
744  zqsat_gr(:) = xundef
745  zac_agg_gr(:) = xundef
746  zhu_agg_gr(:) = xundef
747  zmtc_o_gr_r1(:) = xundef
748  !
749  dmt%XIRRIG_GREENROOF (:) = 0.
750  dmt%XABS_SW_GREENROOF(:) = xundef
751  dmt%XABS_LW_GREENROOF(:) = xundef
752  dmt%XG_GREENROOF_ROOF(:) = xundef
753  !
754 ENDIF
755 
756 END SUBROUTINE teb_garden2
757 !-------------------------------------------------------------------------------
758 SUBROUTINE teb_garden3
759 !
760 !* 9. Treatment of built covers
761 ! -------------------------
762 !
763  CALL teb (top, t, bop, b, tir, dmt, himplicit_wind, &
764  ptsun, pt_can, pq_can, pu_can, pt_lowcan, pq_lowcan, pu_lowcan, &
765  pz_lowcan, ppew_a_coef, ppew_b_coef, ppew_a_coef_lowcan, &
766  ppew_b_coef_lowcan, pps, ppa, pexns, pexna, pta, pqa, prhoa, plw_rad, &
767  prr, psr, pzref, puref, pvmod, ph_traffic, ple_traffic, ptstep, &
768  zdf_rf, zdn_rf, zdf_rd, zdn_rd, zqsat_rf, zqsat_rd, zdelt_rf, &
769  zdelt_rd, ztsrad_gd, plew_rf, zuw_gr, plew_rd, ple_wl_a, &
770  ple_wl_b, prnsn_rf, phsn_rf, plesn_rf, pgsn_rf, pmelt_rf, &
771  zrn_gr, zh_gr, zle_gr, zgflux_gr, zdrain_gr, zrunoff_gr, &
772  prnsn_rd, phsn_rd, plesn_rd, pgsn_rd, pmelt_rd, zuw_rd, puw_rf, &
773  zduwdu_rd, pduwdu_rf, pustar_twn, pcd, pcdn, pch_twn, pri_twn, presa_twn, &
774  zac_rf, pac_rd, zac_wl, zac_top, pac_gd, zac_rf_wat, pac_rd_wat, &
775  zlw_wa_to_wb, zlw_wa_to_r, zlw_wb_to_r, zlw_wa_to_nr, zlw_wb_to_nr, &
776  zlw_r_to_wa, zlw_r_to_wb, zlw_g_to_wa, zlw_g_to_wb, zlw_s_to_wa, &
777  zlw_s_to_wb, zlw_s_to_r, zlw_s_to_nr, zlw_nr_to_wa, zlw_nr_to_wb, &
778  zlw_nr_to_win, zlw_wa_to_win, zlw_wb_to_win, zlw_g_to_win, &
779  zlw_r_to_win, zlw_s_to_win, zlw_win_to_wa, zlw_win_to_wb, &
780  zlw_win_to_r, zlw_win_to_nr, kday, pemit_lw_fac, zemit_lw_rd, &
781  pt_rad_ind, phu_bld, ptime, ze_shading )
782 !
783 !-------------------------------------------------------------------------------
784 !
785 !* 10. Treatment of solar panels
786 ! -------------------------
787 !
788 IF (top%LSOLAR_PANEL) THEN
789  !
790  !* LW radiation coming upwards from roofs
791  !
792  zemit_lw_rf = zrec_lw_rf &
793  - ( t%XGREENROOF(:) * dmt%XABS_LW_GREENROOF(:) &
794  + (1.-t%XGREENROOF(:)) * zdf_rf(:) * dmt%XABS_LW_ROOF(:) &
795  + (1.-t%XGREENROOF(:)) * zdn_rf(:) * dmt%XABS_LW_SNOW_ROOF(:) )
796  !
797  ! note that, for the time being, one considers that the solar panel
798  ! intercept radiation both above roof and greenroofs (if any)
799  CALL solar_panel(tpn, dmt, ptstep, ptsun, t%XRESIDENTIAL, zemit_lw_rf, zemit_lwdn_panel, &
800  plw_rad, pta, b%XN_FLOOR, pprod_bld )
801 ELSE
802  pprod_bld = xundef
803 END IF
804 !-------------------------------------------------------------------------------
805 !
806 !* 11. Aggregation
807 ! -----------
808 !
809  CALL avg_urban_fluxes(top, t, b, tpn, dmt, &
810  pts_twn, pemis_twn, pt_can, pq_can, pt_lowcan, pq_lowcan, &
811  zta, zqa, prhoa, pps, ph_traffic, ple_traffic, zwl_o_grnd, &
812  zesn_rf, zemis_gr, plw_rad, zac_rf, zac_rf_wat, zac_wl, pac_rd, &
813  pac_rd_wat, zac_top, pac_gd, zqsat_gd, zac_agg_gd, zhu_agg_gd, &
814  zqsat_rf, zqsat_rd, zdelt_rf, zdelt_rd, zrf_frac, zwl_frac, &
815  zrd_frac, zgd_frac, ztots_o_hors, zdf_rf, zdn_rf, zdf_rd, zdn_rd, &
816  ple_wl_a, ple_wl_b, plew_rf, plesn_rf, plew_rd, plesn_rd, phsn_rd, &
817  ztsrad_gd, zrn_gd, zh_gd, zle_gd, zgflux_gd, zevap_gd, &
818  zrunoff_gd, zevap_gr, zrunoff_gr, zdrain_gr, &
819  prn_grnd, ph_grnd, ple_grnd, pgflx_grnd, prn_twn, ph_twn, ple_twn, &
820  pgflx_twn, pevap_twn, zemit_lw_rd,zemit_lw_gd, pemit_lw_grnd, zemis_gd )
821 !
822 psfco2(:) = t%XGARDEN(:) * zsfco2_gd(:) + t%XBLD(:) * t%XGREENROOF(:) * zsfco2_gr(:) ! no CO2 flux from built and road yet.
823 !
824 !-------------------------------------------------------------------------------
825 !
826 !* 12. Momentum flux for ground built surfaces
827 ! ---------------------------------------
828 !
829 puw_grnd(:) = (t%XROAD(:)*zuw_rd(:) + t%XGARDEN(:)*zuw_gd(:)) / (t%XROAD(:)+t%XGARDEN(:))
830 !
831 pduwdu_grnd(:) = 0.
832 !
833 END SUBROUTINE teb_garden3
834 !
835 !-------------------------------------------------------------------------------
836 !
837 !
838 END SUBROUTINE teb_garden
subroutine bld_occ_calendar(TPTIME, PTSUN, T, B, PQIN_FRAC, PTCOOL_TARGET, PTHEAT_TARGET, PQIN)
subroutine avg_urban_fluxes(TOP, T, B, TPN, DMT, PTS_TWN, PEMIS_TWN, PT_CAN, PQ_CAN, PT_LOWCAN, PQ_LOWCAN, PTA, PQA, PRHOA, PPS, PH_TRAFFIC, PLE_TRAFFIC, PWL_O_GRND, PESN_RF, PEMIS_GR, PLW_RAD, PAC_RF, PAC_RF_WAT, PAC_WL, PAC_RD, PAC_RD_WAT, PAC_TOP, PAC_GD, PQSAT_GD, PAC_AGG_GD, PHU_AGG_GD, PQSAT_RF, PQSAT_RD, PDELT_RF, PDELT_RD, PRF_FRAC, PWL_FRAC, PRD_FRAC, PGD_FRAC, PTOTS_O_HORS, PDF_RF, PDN_RF, PDF_RD, PDN_RD, PLE_WL_A, PLE_WL_B, PLEW_RF, PLESN_RF, PLEW_RD, PLESN_RD, PHSN_RD, PTSRAD_GD, PRN_GD, PH_GD, PLE_GD, PGFLUX_GD, PEVAP_GD, PRUNOFF_GD, PEVAP_GR, PRUNOFF_GR, PDRAIN_GR, PRN_GRND, PH_GRND, PLE_GRND, PGFLX_GRND, PRN_TWN, PH_TWN, PLE_TWN, PGFLX_TWN, PEVAP_TWN, PEMIT_LW_RD, PEMIT_LW_GD, PEMIT_LW_GRND, PEMIS_GD)
subroutine snow_frac_road(PWSNOW_ROAD, OSNOW, PDN_ROAD, PDF_ROAD)
real, save xstefan
Definition: modd_csts.F90:59
subroutine urban_solar_abs(TOP, T, B, DMT, PDIR_SW, PSCA_SW, PZENITH, PAZIM, PFRAC_PANEL, PALB_PANEL, PALB_GD, PSVF_GD, PALB_GRF, PDN_RF, PDF_RF, PDN_RD, PDF_RD, PREC_SW_RD, PREC_SW_SN_RD, PREC_SW_WL_A, PREC_SW_WL_B, PREC_SW_GD, PREC_SW_RF, PDIR_ALB_TWN, PSCA_ALB_TWN, PSW_RAD_GD, PREC_SW_WIN, PREF_SW_GRND, PREF_SW_FAC, PE_SHADING, OSHAD_DAY, OSHADE, OALB_ONLY)
subroutine window_shading_availability(OSHADE, PTI_BLD, PTCOOL_TAR
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 urban_lw_coef(B, T, PLW_RAD, PEMIS_G, PTS_SR, PTS_G, PLW_WA_TO_WB, PLW_WA_TO_R, PLW_WB_TO_R, PLW_WA_TO_NR, PLW_WB_TO_NR, PLW_WA_TO_G, PLW_WB_TO_G, PLW_WA_TO_WIN, PLW_WB_TO_WIN, PLW_R_TO_WA, PLW_R_TO_WB, PLW_R_TO_WIN, PLW_G_TO_WA, PLW_G_TO_WB, PLW_G_TO_WIN, PLW_S_TO_WA, PLW_S_TO_WB, PLW_S_TO_R, PLW_S_TO_NR, PLW_S_TO_G, PLW_S_TO_WIN, PLW_WIN_TO_WA, PLW_WIN_TO_WB, PLW_WIN_TO_R, PLW_WIN_TO_NR, PLW_WIN_TO_G, PLW_NR_TO_WA, PLW_NR_TO_WB, PLW_NR_TO_WIN)
integer, parameter jprb
Definition: parkind1.F90:32
subroutine teb_garden(DTCO, G, TOP, T, BOP, B, TPN, TIR, DMT, GDM, GRM, KTEB_P, HIMPLICIT_WIND, PTSUN, PT_CAN, PQ_CAN, PU_CAN, 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, PCO2, PLW_RAD, PDIR_SW, PSCA_SW, PSW_BANDS, KSW, PZENITH, PAZIM, PRR, PSR, PZREF, PUREF, PVMOD, PH_TRAFFIC, PLE_TRAFFIC, PTSTEP, PLEW_RF, PLEW_RD, PLE_WL_A, PLE_WL_B, PRNSN_RF, PHSN_RF, PLESN_RF, PGSN_RF, PMELT_RF, PRNSN_RD, PHSN_RD, PLESN_RD, PGSN_RD, PMELT_RD, PRN_GRND, PH_GRND, PLE_GRND, PGFLX_GRND, PRN_TWN, PH_TWN, PLE_TWN, PGFLX_TWN, PEVAP_TWN, PSFCO2, PUW_GRND, PUW_RF, PDUWDU_GRND, PDUWDU_RF, PUSTAR_TWN, PCD, PCDN, PCH_TWN, PRI_TWN, PTS_TWN, PEMIS_TWN, PDIR_ALB_TWN, PSCA_ALB_TWN, PRESA_TWN, PAC_RD, PAC_GD, PAC_GR, PAC_RD_WAT, PAC_GD_WAT, PAC_GR_WAT, KDAY, PEMIT_LW_FAC, PEMIT_LW_GRND, PT_RAD_IND, PREF_SW_GRND, PREF_SW_FAC, PHU_BLD, PTIME, PPROD_BLD)
Definition: teb_garden.F90:20
subroutine teb_veg_properties(PMASK, IO, PEK, PDIR_SW, PSCA_SW, P
subroutine teb_garden3
Definition: teb_garden.F90:759
logical lhook
Definition: yomhook.F90:15
subroutine garden(DTCO, G, T, TOP, TIR, DTV, GB, DK, DEK, DMK, GDO, S, K, P, PEK, HIMPLICIT_WIND, TPTIME, PTSUN, PPEW_A_COEF, PPEW_B_COEF, PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF, PPEQ_B_COEF, PTSTEP, PZREF, PTA, PQA, PEXNS, PRHOA, PCO2, PPS, PRR, PSR, PZENITH, PSW, PLW, PVMOD, PALBNIR_TVEG, PALBVIS_TVEG, PALBNIR_TSOIL, PALBVIS_TSOIL, PRN, PH, PLE, PGFLUX, PSFCO2, PEVAP, PUW, PRUNOFF, PAC, PQSAT, PTSRAD, PAC_AGG, PHU_AGG, PIRRIG)
Definition: garden.F90:14
subroutine greenroof(DTCO, G, T, TOP, TIR, DTV, GB, DK, DEK, DMK, GRO, S, K, P, PEK, HIMPLICIT_WIND, TPTIME, PTSUN, PPEW_A_COEF, PPEW_B_COEF, PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF, PPEQ_B_COEF, PTSTEP, PZREF, PUREF, PTA, PQA, PEXNS, PEXNA, PRHOA, PCO2, PPS, PRR, PSR, PZENITH, PSW, PLW, PVMOD, PALBNIR_TVEG, PALBVIS_TVEG, PALBNIR_TSOIL, PALBVIS_TSOIL, PRN, PH, PLE, PGFLUX, PSFCO2, PEVAP, PUW, PRUNOFF, PDRAIN, PAC, PQSAT, PTSRAD, PAC_AGG, PHU_AGG, PDEEP_FLUX, PIRRIG)
Definition: greenroof.F90:14
subroutine solar_panel(TPN, DMT, PTSTEP, PTSUN, PRESIDENTIAL, PEMIT_LW_ROOF, PEMIT_LWDN_PANEL, PLW_RAD, PTA, PN_FLOOR, PPROD_BLD)
Definition: solar_panel.F90:8
subroutine snow_frac_roof(PWSNOW_ROOF, OSNOW, PDN_ROOF, PDF_ROOF)
real, save xtt
Definition: modd_csts.F90:66
subroutine teb_garden2
Definition: teb_garden.F90:610