SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
coupling_tebn.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 coupling_teb_n (DTCO, DTI, IG, I, DST, SLT, TM, GDM, GRM, &
7  hprogram, hcoupling, &
8  ptstep, kyear, kmonth, kday, ptime, ki, ksv, ksw, ptsun, pzenith, pazim, &
9  pzref, puref, pzs, pu, pv, pqa, pta, prhoa, psv, pco2, hsv, &
10  prain, psnow, plw, pdir_sw, psca_sw, psw_bands, pps, ppa, &
11  psftq, psfth, psfts, psfco2, psfu, psfv, &
12  ptrad, pdir_alb, psca_alb, pemis, ptsurf, pz0, pz0h, pqsurf, &
13  ppew_a_coef, ppew_b_coef, &
14  ppet_a_coef, ppeq_a_coef, ppet_b_coef, ppeq_b_coef, &
15  htest )
16 ! ###############################################################################
17 !
18 !!**** *COUPLING_TEB_n * - Driver for TEB
19 !!
20 !! PURPOSE
21 !! -------
22 !
23 !!** METHOD
24 !! ------
25 !!
26 !! REFERENCE
27 !! ---------
28 !!
29 !!
30 !! AUTHOR
31 !! ------
32 !! V. Masson
33 !!
34 !! MODIFICATIONS
35 !! -------------
36 !! Original 01/2004
37 !! 10/2005 (G.Pigeon) transfer of domestic heating
38 !! S. Riette 06/2009 Initialisation of XT, XQ, XU and XTKE on canopy levels
39 !! S. Riette 01/2010 Use of interpol_sbl to compute 10m wind diagnostic
40 !! G. Pigeon 09/2012 CCH_BEM, ROUGH_WALL, ROUGH_ROOF for building conv. coef
41 !! G. Pigeon 10/2012 XF_WIN_WIN as arg. of TEB_GARDEN
42 !! B. Decharme 09/2012 New wind implicitation
43 !! J. Escobar 09/2012 KI not allowed without-interface , replace by KI
44 !! V. Masson 08/2013 adds solar panels & occupation calendar
45 !! B. Decharme 04/2013 new coupling variables
46 !!---------------------------------------------------------------
47 !
49 USE modd_data_isba_n, ONLY : data_isba_t
50 USE modd_isba_grid_n, ONLY : isba_grid_t
51 USE modd_isba_n, ONLY : isba_t
52 USE modd_dst_n, ONLY : dst_t
53 USE modd_slt_n, ONLY : slt_t
54 USE modd_surfex_n, ONLY : teb_model_t
57 !
58 USE modd_reprod_oper, ONLY : cimplicit_wind
59 !
60 USE modd_csts, ONLY : xrd, xcpd, xp00, xlvtt, xpi, xkarman, xg
61 USE modd_surf_par, ONLY : xundef
62 !
63 !
64 USE modd_dst_surf
65 USE modd_slt_surf
66 !
67 !
69 USE mode_thermos
70 USE mode_sbls
71 !
72 USE modi_goto_wrapper_teb_patch
73 USE modi_average_rad
74 USE modi_sm10
75 USE modi_add_forecast_to_date_surf
76 USE modi_diag_inline_teb_n
77 USE modi_diag_misc_teb_n
78 USE modi_ch_aer_dep
79 USE modi_ch_dep_town
80 USE modi_dslt_dep
81 USE modi_teb_garden
82 USE modi_teb_canopy
83 !
84 USE yomhook ,ONLY : lhook, dr_hook
85 USE parkind1 ,ONLY : jprb
86 !
87 USE modi_abor1_sfx
88 USE modi_canopy_evol
89 USE modi_canopy_grid_update
90 USE modi_utci_teb
91 USE modi_utcic_stress
92 USE modi_circumsolar_rad
93 !
94 IMPLICIT NONE
95 !
96 !* 0.1 declarations of arguments
97 !
98 !
99 !
100 TYPE(data_cover_t), INTENT(INOUT) :: dtco
101 TYPE(data_isba_t), INTENT(INOUT) :: dti
102 TYPE(isba_grid_t), INTENT(INOUT) :: ig
103 TYPE(isba_t), INTENT(INOUT) :: i
104 TYPE(dst_t), INTENT(INOUT) :: dst
105 TYPE(slt_t), INTENT(INOUT) :: slt
106 TYPE(teb_model_t), INTENT(INOUT) :: tm
107 TYPE(teb_garden_model_t), INTENT(INOUT) :: gdm
108 TYPE(teb_greenroof_model_t), INTENT(INOUT) :: grm
109 !
110  CHARACTER(LEN=6), INTENT(IN) :: hprogram ! program calling surf. schemes
111  CHARACTER(LEN=1), INTENT(IN) :: hcoupling ! type of coupling
112  ! 'E' : explicit
113  ! 'I' : implicit
114 INTEGER, INTENT(IN) :: kyear ! current year (UTC)
115 INTEGER, INTENT(IN) :: kmonth ! current month (UTC)
116 INTEGER, INTENT(IN) :: kday ! current day (UTC)
117 REAL, INTENT(IN) :: ptime ! current time since midnight (UTC, s)
118 INTEGER, INTENT(IN) :: ki ! number of points
119 INTEGER, INTENT(IN) :: ksv ! number of scalars
120 INTEGER, INTENT(IN) :: ksw ! number of short-wave spectral bands
121 REAL, DIMENSION(KI), INTENT(IN) :: ptsun ! solar time (s from midnight)
122 REAL, INTENT(IN) :: ptstep ! atmospheric time-step (s)
123 REAL, DIMENSION(KI), INTENT(IN) :: pzref ! height of T,q forcing (m)
124 REAL, DIMENSION(KI), INTENT(IN) :: puref ! height of wind forcing (m)
125 !
126 REAL, DIMENSION(KI), INTENT(IN) :: pta ! air temperature forcing (K)
127 REAL, DIMENSION(KI), INTENT(IN) :: pqa ! air humidity forcing (kg/m3)
128 REAL, DIMENSION(KI), INTENT(IN) :: prhoa ! air density (kg/m3)
129 REAL, DIMENSION(KI,KSV),INTENT(IN) :: psv ! scalar variables
130 ! ! chemistry: first char. in HSV: '#' (molecule/m3)
131 ! !
132  CHARACTER(LEN=6), DIMENSION(KSV),INTENT(IN):: hsv ! name of all scalar variables
133 REAL, DIMENSION(KI), INTENT(IN) :: pu ! zonal wind (m/s)
134 REAL, DIMENSION(KI), INTENT(IN) :: pv ! meridian wind (m/s)
135 REAL, DIMENSION(KI,KSW),INTENT(IN) :: pdir_sw ! direct solar radiation (on horizontal surf.)
136 ! ! (W/m2)
137 REAL, DIMENSION(KI,KSW),INTENT(IN) :: psca_sw ! diffuse solar radiation (on horizontal surf.)
138 ! ! (W/m2)
139 REAL, DIMENSION(KSW),INTENT(IN) :: psw_bands ! mean wavelength of each shortwave band (m)
140 REAL, DIMENSION(KI), INTENT(IN) :: pzenith ! zenithal angle (radian from the vertical)
141 REAL, DIMENSION(KI), INTENT(IN) :: pazim ! azimuthal angle (radian from North, clockwise)
142 REAL, DIMENSION(KI), INTENT(IN) :: plw ! longwave radiation (on horizontal surf.)
143 ! ! (W/m2)
144 REAL, DIMENSION(KI), INTENT(IN) :: pps ! pressure at atmospheric model surface (Pa)
145 REAL, DIMENSION(KI), INTENT(IN) :: ppa ! pressure at forcing level (Pa)
146 REAL, DIMENSION(KI), INTENT(IN) :: pzs ! atmospheric model orography (m)
147 REAL, DIMENSION(KI), INTENT(IN) :: pco2 ! CO2 concentration in the air (kg/m3)
148 REAL, DIMENSION(KI), INTENT(IN) :: psnow ! snow precipitation (kg/m2/s)
149 REAL, DIMENSION(KI), INTENT(IN) :: prain ! liquid precipitation (kg/m2/s)
150 !
151 !
152 REAL, DIMENSION(KI), INTENT(OUT) :: psfth ! flux of heat (W/m2)
153 REAL, DIMENSION(KI), INTENT(OUT) :: psftq ! flux of water vapor (kg/m2/s)
154 REAL, DIMENSION(KI), INTENT(OUT) :: psfu ! zonal momentum flux (Pa)
155 REAL, DIMENSION(KI), INTENT(OUT) :: psfv ! meridian momentum flux (Pa)
156 REAL, DIMENSION(KI), INTENT(OUT) :: psfco2 ! flux of CO2 (kg/m2/s)
157 REAL, DIMENSION(KI,KSV),INTENT(OUT):: psfts ! flux of scalar var. (kg/m2/s)
158 !
159 REAL, DIMENSION(KI), INTENT(OUT) :: ptrad ! radiative temperature (K)
160 REAL, DIMENSION(KI,KSW),INTENT(OUT):: pdir_alb! direct albedo for each spectral band (-)
161 REAL, DIMENSION(KI,KSW),INTENT(OUT):: psca_alb! diffuse albedo for each spectral band (-)
162 REAL, DIMENSION(KI), INTENT(OUT) :: pemis ! emissivity (-)
163 !
164 REAL, DIMENSION(KI), INTENT(OUT) :: ptsurf ! surface effective temperature (K)
165 REAL, DIMENSION(KI), INTENT(OUT) :: pz0 ! roughness length for momentum (m)
166 REAL, DIMENSION(KI), INTENT(OUT) :: pz0h ! roughness length for heat (m)
167 REAL, DIMENSION(KI), INTENT(OUT) :: pqsurf ! specific humidity at surface (kg/kg)
168 !
169 REAL, DIMENSION(KI), INTENT(IN) :: ppew_a_coef! implicit coefficients
170 REAL, DIMENSION(KI), INTENT(IN) :: ppew_b_coef! needed if HCOUPLING='I'
171 REAL, DIMENSION(KI), INTENT(IN) :: ppet_a_coef
172 REAL, DIMENSION(KI), INTENT(IN) :: ppeq_a_coef
173 REAL, DIMENSION(KI), INTENT(IN) :: ppet_b_coef
174 REAL, DIMENSION(KI), INTENT(IN) :: ppeq_b_coef
175  CHARACTER(LEN=2), INTENT(IN) :: htest ! must be equal to 'OK'
176 !
177 !
178 !* 0.2 declarations of local variables
179 !
180 INTEGER :: jswb ! loop counter on shortwave spectral bands
181 !
182 REAL, DIMENSION(KI) :: zqa ! specific humidity (kg/kg)
183 REAL, DIMENSION(KI) :: zexna ! Exner function at forcing level
184 REAL, DIMENSION(KI) :: zexns ! Exner function at surface level
185 REAL, DIMENSION(KI) :: zwind ! wind
186 !
187 ! Ouput Diagnostics:
188 !
189 REAL, DIMENSION(KI) :: zu_canyon ! wind in canyon
190 REAL, DIMENSION(KI) :: zt_canyon ! temperature in canyon
191 REAL, DIMENSION(KI) :: zq_canyon ! specific humidity in canyon
192 REAL, DIMENSION(KI) :: zt_can ! temperature in canyon (evolving in TEB)
193 REAL, DIMENSION(KI) :: zq_can ! specific humidity in canyon (evolving in TEB)
194 !
195 REAL, DIMENSION(KI) :: zrn_roof ! net radiation on roof
196 REAL, DIMENSION(KI) :: zh_roof ! sensible heat flux on roof
197 REAL, DIMENSION(KI) :: zle_roof ! latent heat flux on roof
198 REAL, DIMENSION(KI) :: zlew_roof ! latent heat flux on snowfree roof
199 REAL, DIMENSION(KI) :: zgflux_roof ! storage flux in roof
200 REAL, DIMENSION(KI) :: zrunoff_roof! water runoff from roof
201 REAL, DIMENSION(KI) :: zrn_road ! net radiation on road
202 REAL, DIMENSION(KI) :: zh_road ! sensible heat flux on road
203 REAL, DIMENSION(KI) :: zle_road ! latent heat flux on road
204 REAL, DIMENSION(KI) :: zlew_road ! latent heat flux on snowfree road
205 REAL, DIMENSION(KI) :: zgflux_road ! storage flux in road
206 REAL, DIMENSION(KI) :: zrunoff_road! water runoff from road
207 REAL, DIMENSION(KI) :: zirrig_road ! water supply from road summer watering
208 REAL, DIMENSION(KI) :: zrn_wall_a ! net radiation on walls
209 REAL, DIMENSION(KI) :: zh_wall_a ! sensible heat flux on walls
210 REAL, DIMENSION(KI) :: zle_wall_a ! latent heat flux on walls
211 REAL, DIMENSION(KI) :: zgflux_wall_a!storage flux in walls
212 REAL, DIMENSION(KI) :: zrn_wall_b ! net radiation on walls
213 REAL, DIMENSION(KI) :: zh_wall_b ! sensible heat flux on walls
214 REAL, DIMENSION(KI) :: zle_wall_b ! latent heat flux on walls
215 REAL, DIMENSION(KI) :: zgflux_wall_b!storage flux in walls
216 REAL, DIMENSION(KI) :: zrn_garden ! net radiation on green areas
217 REAL, DIMENSION(KI) :: zh_garden ! sensible heat flux on green areas
218 REAL, DIMENSION(KI) :: zle_garden ! latent heat flux on green areas
219 REAL, DIMENSION(KI) :: zgflux_garden!storage flux in green areas
220 REAL, DIMENSION(KI) :: zrunoff_garden!runoff over green areas
221 REAL, DIMENSION(KI) :: zdrain_garden !drainage over green areas
222 REAL, DIMENSION(KI) :: zirrig_garden !water supply from garden summer irrigation
223 REAL, DIMENSION(KI) :: zrn_greenroof! net radiation on green roofs
224 REAL, DIMENSION(KI) :: zh_greenroof ! sensible heat flux on green roofs
225 REAL, DIMENSION(KI) :: zle_greenroof! latent heat flux on green roofs
226 REAL, DIMENSION(KI) :: zgflux_greenroof ! storage flux in green roofs
227 REAL, DIMENSION(KI) :: zg_greenroof_roof ! heat flux between base of greenroof
228 REAL, DIMENSION(KI) :: zrunoff_greenroof ! water runoff from green roof
229 REAL, DIMENSION(KI) :: zdrain_greenroof ! water drainage from green roof
230 REAL, DIMENSION(KI) :: zirrig_greenroof ! water supply from green roof summer irrigation
231 REAL, DIMENSION(KI) :: zrn_strlroof ! net radiation on structural roof
232 REAL, DIMENSION(KI) :: zh_strlroof ! sensible heat flux on structural roof
233 REAL, DIMENSION(KI) :: zle_strlroof ! latent heat flux on structural roof
234 REAL, DIMENSION(KI) :: zgflux_strlroof ! storage flux in structural roof
235 REAL, DIMENSION(KI) :: zrunoff_strlroof ! runoff over structural roof
236 REAL, DIMENSION(KI) :: zh_panel ! sensible heat flux on solar panel
237 REAL, DIMENSION(KI) :: zther_prod_panel ! thermal energy production from solar panel (W/m2 panel)
238 REAL, DIMENSION(KI) :: zphot_prod_panel ! photovoltaic energy production from solar panel (W/m2 panel)
239 REAL, DIMENSION(KI) :: zprod_panel ! averaged energy production from solar panel (W/m2 panel)
240 REAL, DIMENSION(KI) :: zther_prod_bld ! thermal energy production from solar panel (W/m2 bld)
241 REAL, DIMENSION(KI) :: zphot_prod_bld ! photovoltaic energy production from solar panel (W/m2 bld)
242 REAL, DIMENSION(KI) :: zprod_bld ! averaged energy production from solar panel (W/m2 bld)
243 REAL, DIMENSION(KI) :: zrn_panel ! net radiation of solar panel
244 REAL, DIMENSION(KI) :: zrn_blt ! net radiation on built surf
245 REAL, DIMENSION(KI) :: zh_blt ! sensible heat flux on built surf
246 REAL, DIMENSION(KI) :: zle_blt ! latent heat flux on built surf
247 REAL, DIMENSION(KI) :: zgflux_blt ! storage flux in built surf
248 REAL, DIMENSION(KI) :: zrn_grnd ! net radiation on ground built surf
249 REAL, DIMENSION(KI) :: zh_grnd ! sensible heat flux on ground built surf
250 REAL, DIMENSION(KI) :: zle_grnd ! latent heat flux on ground built surf
251 REAL, DIMENSION(KI) :: zgflux_grnd ! storage flux in ground built surf
252 REAL, DIMENSION(KI) :: zrnsnow_roof ! net radiation over snow
253 REAL, DIMENSION(KI) :: zhsnow_roof ! sensible heat flux over snow
254 REAL, DIMENSION(KI) :: zlesnow_roof ! latent heat flux over snow
255 REAL, DIMENSION(KI) :: zgsnow_roof ! flux under the snow
256 REAL, DIMENSION(KI) :: zmelt_roof ! snow melt
257 REAL, DIMENSION(KI) :: zrnsnow_road ! net radiation over snow
258 REAL, DIMENSION(KI) :: zhsnow_road ! sensible heat flux over snow
259 REAL, DIMENSION(KI) :: zlesnow_road ! latent heat flux over snow
260 REAL, DIMENSION(KI) :: zgsnow_road ! flux under the snow
261 REAL, DIMENSION(KI) :: zmelt_road ! snow melt
262 !
263 REAL, DIMENSION(KI) :: ztrad ! radiative temperature for current patch
264 REAL, DIMENSION(KI) :: zemis ! emissivity for current patch
265 REAL, DIMENSION(KI,TM%TOP%NTEB_PATCH) :: ztrad_patch ! radiative temperature for each patch
266 REAL, DIMENSION(KI,TM%TOP%NTEB_PATCH) :: zemis_patch ! emissivity for each patch
267 REAL, DIMENSION(KI,KSW,TM%TOP%NTEB_PATCH) :: zdir_alb_patch ! direct albedo per wavelength and patch
268 REAL, DIMENSION(KI,KSW,TM%TOP%NTEB_PATCH) :: zsca_alb_patch ! diffuse albedo per wavelength and patch
269 !
270 REAL, DIMENSION(KI) :: zrn ! net radiation over town
271 REAL, DIMENSION(KI) :: zh ! sensible heat flux over town
272 REAL, DIMENSION(KI) :: zle ! latent heat flux over town
273 REAL, DIMENSION(KI) :: zgflux ! flux through the ground
274 REAL, DIMENSION(KI) :: zsfco2 ! CO2 flux over town
275 REAL, DIMENSION(KI) :: zqf_bld ! domestic heating
276 REAL, DIMENSION(KI) :: zflx_bld ! flux from bld
277 REAL, DIMENSION(KI) :: zdqs_town ! storage inside town materials
278 REAL, DIMENSION(KI) :: zqf_town ! total anthropogenic heat
279 REAL, DIMENSION(KI) :: zevap ! evaporation (km/m2/s)
280 REAL, DIMENSION(KI) :: zrunoff_town ! runoff over the ground
281 REAL, DIMENSION(KI) :: zcd ! drag coefficient
282 REAL, DIMENSION(KI) :: zcdn ! neutral drag coefficient
283 REAL, DIMENSION(KI) :: zch ! heat drag
284 REAL, DIMENSION(KI) :: zri ! Richardson number
285 REAL, DIMENSION(KI) :: zuw_grnd ! momentum flux for ground built surf
286 REAL, DIMENSION(KI) :: zuw_roof ! momentum flux for roofs
287 REAL, DIMENSION(KI) :: zduwdu_grnd !
288 REAL, DIMENSION(KI) :: zduwdu_roof !
289 REAL, DIMENSION(KI) :: zustar ! friction velocity
290 REAL, DIMENSION(KI) :: zsfu ! momentum flux for patch (U direction)
291 REAL, DIMENSION(KI) :: zsfv ! momentum flux for patch (V direction)
292 REAL, DIMENSION(KI) :: zavg_dir_alb ! direct albedo of town
293 REAL, DIMENSION(KI) :: zavg_sca_alb ! diffuse albedo of town
294 REAL, DIMENSION(KI) :: zavg_t_canyon ! temperature in canyon for town
295 REAL, DIMENSION(KI) :: zavg_q_canyon ! specific humidity in canyon for town
296 !
297 REAL, DIMENSION(KI) :: zavg_cd ! aggregated drag coefficient
298 REAL, DIMENSION(KI) :: zavg_cdn ! aggregated neutral drag coefficient
299 REAL, DIMENSION(KI) :: zavg_ri ! aggregated Richardson number
300 REAL, DIMENSION(KI) :: zavg_ch ! aggregated Heat transfer coefficient
301 !
302 REAL, DIMENSION(KI) :: zdir_alb ! direct albedo of town
303 REAL, DIMENSION(KI) :: zsca_alb ! diffuse albedo of town
304 !
305 REAL, DIMENSION(KI) :: zh_traffic ! anthropogenic sensible
306 ! ! heat fluxes due to traffic
307 REAL, DIMENSION(KI) :: zle_traffic ! anthropogenic latent
308 ! ! heat fluxes due to traffic
309 REAL, DIMENSION(KI) :: zresa_town ! aerodynamical resistance
310 REAL, DIMENSION(KI) :: zac_road ! road aerodynamical conductance
311 REAL, DIMENSION(KI) :: zac_garden ! green area aerodynamical conductance
312 REAL, DIMENSION(KI) :: zac_grnd ! ground built surf aerodynamical conductance
313 REAL, DIMENSION(KI) :: zac_greenroof ! green roof aerodynamical conductance
314 REAL, DIMENSION(KI) :: zac_road_wat ! road water aerodynamical conductance
315 REAL, DIMENSION(KI) :: zac_garden_wat! green area water aerodynamical conductance
316 REAL, DIMENSION(KI) :: zac_grnd_wat ! ground built surf water aerodynamical conductance
317 REAL, DIMENSION(KI) :: zac_greenroof_wat! green roof water aerodynamical conductance
318 REAL, DIMENSION(KI,1):: zesnow_garden ! green area snow emissivity
319 !
320 REAL :: zbegin_traffic_time ! start traffic time (solar time, s)
321 REAL :: zend_traffic_time ! end traffic time (solar time, s)
322 REAL, DIMENSION(KI) :: zdir_sw ! total direct SW
323 REAL, DIMENSION(KI) :: zsca_sw ! total diffuse SW
324 REAL, DIMENSION(KI) :: zpew_a_coef ! implicit coefficients
325 REAL, DIMENSION(KI) :: zpew_b_coef ! needed if HCOUPLING='I'
326 
327 !***** CANOPY *****
328 REAL, DIMENSION(KI) :: zsflux_u ! Surface flux u'w' (m2/s2)
329 REAL, DIMENSION(KI) :: zsflux_t ! Surface flux w'T' (mK/s)
330 REAL, DIMENSION(KI) :: zsflux_q ! Surface flux w'q' (kgm2/s)
331 REAL, DIMENSION(KI,TM%TCP%NLVL) :: zforc_u ! tendency due to drag force for wind
332 REAL, DIMENSION(KI,TM%TCP%NLVL) :: zdforc_udu! formal derivative of
333 ! ! tendency due to drag force for wind
334 REAL, DIMENSION(KI,TM%TCP%NLVL) :: zforc_e ! tendency due to drag force for TKE
335 REAL, DIMENSION(KI,TM%TCP%NLVL) :: zdforc_ede! formal derivative of
336 ! ! tendency due to drag force for TKE
337 REAL, DIMENSION(KI,TM%TCP%NLVL) :: zforc_t ! tendency due to drag force for Temp
338 REAL, DIMENSION(KI,TM%TCP%NLVL) :: zdforc_tdt! formal derivative of
339 ! ! tendency due to drag force for Temp
340 REAL, DIMENSION(KI,TM%TCP%NLVL) :: zforc_q ! tendency due to drag force for hum
341 REAL, DIMENSION(KI,TM%TCP%NLVL) :: zdforc_qdq! formal derivative of
342 ! ! tendency due to drag force for hum.
343 
344 REAL, DIMENSION(KI) :: zavg_uw_grnd
345 REAL, DIMENSION(KI) :: zavg_duwdu_grnd
346 REAL, DIMENSION(KI) :: zavg_uw_roof
347 REAL, DIMENSION(KI) :: zavg_duwdu_roof
348 REAL, DIMENSION(KI) :: zavg_h_grnd
349 REAL, DIMENSION(KI) :: zavg_h_wall
350 REAL, DIMENSION(KI) :: zavg_h_roof
351 REAL, DIMENSION(KI) :: zavg_e_grnd
352 REAL, DIMENSION(KI) :: zavg_e_roof
353 REAL, DIMENSION(KI) :: zavg_ac_grnd
354 REAL, DIMENSION(KI) :: zavg_ac_grnd_wat
355 REAL, DIMENSION(KI) :: zavg_z0_town
356 REAL, DIMENSION(KI) :: zavg_resa_town
357 REAL, DIMENSION(KI) :: zavg_ustar ! town avegared Ustar
358 REAL, DIMENSION(KI) :: zavg_bld ! town averaged building fraction
359 REAL, DIMENSION(KI) :: zavg_bld_height ! town averaged building height
360 REAL, DIMENSION(KI) :: zavg_wall_o_hor ! town averaged Wall/hor ratio
361 REAL, DIMENSION(KI) :: zavg_can_hw_ratio ! town averaged road aspect ratio
362 REAL, DIMENSION(KI) :: zavg_h
363 REAL, DIMENSION(KI) :: zavg_le
364 REAL, DIMENSION(KI) :: zavg_rn
365 REAL, DIMENSION(KI) :: zavg_gflux
366 REAL, DIMENSION(KI) :: zavg_ref_sw_grnd
367 REAL, DIMENSION(KI) :: zavg_ref_sw_fac
368 REAL, DIMENSION(KI) :: zavg_sca_sw
369 REAL, DIMENSION(KI) :: zavg_dir_sw
370 REAL, DIMENSION(KI) :: zavg_emit_lw_fac
371 REAL, DIMENSION(KI) :: zavg_emit_lw_grnd
372 REAL, DIMENSION(KI) :: zavg_t_rad_ind
373 REAL, DIMENSION(KI) :: zt_lowcan ! temperature at lowest canyon level (K)
374 REAL, DIMENSION(KI) :: zq_lowcan ! humidity at lowest canyon level (kg/kg)
375 REAL, DIMENSION(KI) :: zu_lowcan ! wind at lowest canyon level (m/s)
376 REAL, DIMENSION(KI) :: zz_lowcan ! height of lowest canyon level (m)
377 REAL, DIMENSION(KI) :: zpew_a_coef_lowcan ! implicit coefficients for wind coupling
378 REAL, DIMENSION(KI) :: zpew_b_coef_lowcan ! between first canopy level and road
379 REAL, DIMENSION(KI) :: zta ! temperature at canyon level just above roof (K)
380 REAL, DIMENSION(KI) :: zpa ! pressure at canyon level just above roof (K)
381 REAL, DIMENSION(KI) :: zua ! wind at canyon level just above roof (m/s)
382 REAL, DIMENSION(KI) :: zuref ! height of canyon level just above roof (m)
383 REAL, DIMENSION(KI) :: zzref ! height of canyon level just above roof (m)
384 REAL, DIMENSION(KI) :: zlambda_f ! frontal density (-)
385 REAL, DIMENSION(KI) :: zlmo ! Monin-Obukhov length at canopy height (m)
386 REAL, DIMENSION(KI,TM%TCP%NLVL) :: zl ! Mixing length generic profile at mid levels
387 !
388 ! absorbed solar and infra-red radiation by road, wall and roof
389 !
390 REAL, DIMENSION(KI) :: zabs_sw_road
391 REAL, DIMENSION(KI) :: zabs_sw_wall_a
392 REAL, DIMENSION(KI) :: zabs_sw_wall_b
393 REAL, DIMENSION(KI) :: zabs_sw_roof
394 REAL, DIMENSION(KI) :: zabs_sw_garden
395 REAL, DIMENSION(KI) :: zabs_sw_greenroof
396 REAL, DIMENSION(KI) :: zabs_sw_panel
397 REAL, DIMENSION(KI) :: zabs_sw_snow_road
398 REAL, DIMENSION(KI) :: zabs_sw_snow_roof
399 REAL, DIMENSION(KI) :: zabs_lw_snow_road
400 REAL, DIMENSION(KI) :: zabs_lw_snow_roof
401 REAL, DIMENSION(KI) :: zabs_lw_road
402 REAL, DIMENSION(KI) :: zabs_lw_wall_a
403 REAL, DIMENSION(KI) :: zabs_lw_wall_b
404 REAL, DIMENSION(KI) :: zabs_lw_roof
405 REAL, DIMENSION(KI) :: zabs_lw_garden
406 REAL, DIMENSION(KI) :: zabs_lw_greenroof
407 REAL, DIMENSION(KI) :: zabs_lw_panel
408 !
409 REAL, DIMENSION(KI) :: zu_utci ! wind speed for the UTCI calculation (m/s)
410 
411 REAL, DIMENSION(KI) :: zalfau ! V+(1) = alfa u'w'(1) + beta
412 REAL, DIMENSION(KI) :: zbetau ! V+(1) = alfa u'w'(1) + beta
413 REAL, DIMENSION(KI) :: zalfat ! Th+(1) = alfa w'th'(1) + beta
414 REAL, DIMENSION(KI) :: zbetat ! Th+(1) = alfa w'th'(1) + beta
415 REAL, DIMENSION(KI) :: zalfaq ! Q+(1) = alfa w'q'(1) + beta
416 REAL, DIMENSION(KI) :: zbetaq ! Q+(1) = alfa w'q'(1) + beta
417 !***** CANOPY *****
418 REAL, DIMENSION(KI) :: zwake ! reduction of average wind speed
419 ! ! in canyon due to direction average.
420 ! new local variables after BEM
421 !
422 REAL, DIMENSION(KI) :: zcap_sys
423 REAL, DIMENSION(KI) :: zm_sys
424 REAL, DIMENSION(KI) :: zcop
425 REAL, DIMENSION(KI) :: zq_sys
426 REAL, DIMENSION(KI) :: zt_sys
427 REAL, DIMENSION(KI) :: ztr_sw_win
428 REAL, DIMENSION(KI) :: zfan_power
429 REAL, DIMENSION(KI) :: zabs_sw_win
430 REAL, DIMENSION(KI) :: zabs_lw_win
431 REAL, DIMENSION(KI) :: zh_bld_cool
432 REAL, DIMENSION(KI) :: zt_bld_cool
433 REAL, DIMENSION(KI) :: zh_bld_heat
434 REAL, DIMENSION(KI) :: zle_bld_cool
435 REAL, DIMENSION(KI) :: zle_bld_heat
436 REAL, DIMENSION(KI) :: zh_waste
437 REAL, DIMENSION(KI) :: zle_waste
438 REAL, DIMENSION(KI) :: zhvac_cool
439 REAL, DIMENSION(KI) :: zhvac_heat
440 
441 !new local variables for UTCI calculation
442 REAL, DIMENSION(KI) :: zemit_lw_grnd
443 REAL, DIMENSION(KI) :: zemit_lw_fac
444 REAL, DIMENSION(KI) :: zt_rad_ind ! Indoor mean radiant temperature [K]
445 REAL, DIMENSION(KI) :: zref_sw_grnd ! total solar rad reflected from ground
446 REAL, DIMENSION(KI) :: zref_sw_fac ! total solar rad reflected from facade
447 REAL, DIMENSION(KI) :: zhu_bld
448 REAL, DIMENSION(KI) :: zavg_ti_bld
449 REAL, DIMENSION(KI) :: zavg_qi_bld
450 REAL, DIMENSION(KI) :: zf1_o_b
451 REAL, DIMENSION(KI,SIZE(PDIR_SW,2)) :: zdir_swb ! total direct SW per band
452 REAL, DIMENSION(KI,SIZE(PSCA_SW,2)) :: zsca_swb ! total diffuse SW per band
453 !
454 ! occupation of buildings
455 REAL, DIMENSION(SIZE(PTA)) :: zcur_tcool_target ! Cooling target temperature at current time
456 REAL, DIMENSION(SIZE(PTA)) :: zcur_theat_target ! Heating target temperature at current time
457 REAL, DIMENSION(SIZE(PTA)) :: zcur_qin ! Internal heat gains at current time
458 !
459 REAL, DIMENSION(KI) :: zcoef
460 !
461 REAL :: zconvertfacm0_slt, zconvertfacm0_dst
462 REAL :: zconvertfacm3_slt, zconvertfacm3_dst
463 REAL :: zconvertfacm6_slt, zconvertfacm6_dst
464 !
465 INTEGER :: ji
466 INTEGER :: jlayer
467 INTEGER :: jj
468 !
469 ! number of TEB patches
470 !
471 INTEGER :: jteb_patch ! loop counter
472 !
473 REAL(KIND=JPRB) :: zhook_handle
474 !
475 !-------------------------------------------------------------------------------------
476 ! Preliminaries:
477 !-------------------------------------------------------------------------------------
478 IF (lhook) CALL dr_hook('COUPLING_TEB_N',0,zhook_handle)
479 IF (htest/='OK') THEN
480  CALL abor1_sfx('COUPLING_TEBN: FATAL ERROR DURING ARGUMENT TRANSFER')
481 END IF
482 
483 !-------------------------------------------------------------------------------------
484 !
485 ! scalar fluxes
486 !
487 psfts(:,:) = 0.
488 !
489 ! broadband radiative fluxes
490 !
491 zdir_sw(:) = 0.
492 zsca_sw(:) = 0.
493 DO jswb=1,ksw
494  !add directionnal contrib from scattered radiation
495  CALL circumsolar_rad(pdir_sw(:,jswb), psca_sw(:,jswb), pzenith, zf1_o_b)
496  zdir_swb(:,jswb) = pdir_sw(:,jswb) + psca_sw(:,jswb) * zf1_o_b
497  zsca_swb(:,jswb) = psca_sw(:,jswb) * (1. - zf1_o_b)
498  !add directionnal contrib from scattered radiation
499  DO jj=1,SIZE(pdir_sw,1)
500  zdir_sw(jj) = zdir_sw(jj) + zdir_swb(jj,jswb)
501  zsca_sw(jj) = zsca_sw(jj) + zsca_swb(jj,jswb)
502  ENDDO
503 END DO
504 !
505 DO jj=1,ki
506 ! specific humidity (conversion from kg/m3 to kg/kg)
507 !
508  zqa(jj) = pqa(jj) / prhoa(jj)
509 !
510 ! wind
511 !
512  zwind(jj) = sqrt(pu(jj)**2+pv(jj)**2)
513 !
514 ENDDO
515 ! method of wind coupling
516 !
517 IF (hcoupling=='I') THEN
518  zpew_a_coef = ppew_a_coef
519  zpew_b_coef = ppew_b_coef
520 ELSE
521  zpew_a_coef = 0.
522  zpew_b_coef = zwind
523 END IF
524 !
525 !
526 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
527 ! Time evolution
528 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
529 !
530 tm%TOP%TTIME%TIME = tm%TOP%TTIME%TIME + ptstep
531  CALL add_forecast_to_date_surf(tm%TOP%TTIME%TDATE%YEAR,tm%TOP%TTIME%TDATE%MONTH,&
532  tm%TOP%TTIME%TDATE%DAY,tm%TOP%TTIME%TIME)
533 !
534 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
535 ! Anthropogenic fluxes (except building heating)
536 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
537 !
538 zbegin_traffic_time = 21600.
539 zend_traffic_time = 64800.
540 !
541 WHERE( ptsun>zbegin_traffic_time &
542  .AND. ptsun<zend_traffic_time )
543  zh_traffic(:) = tm%T%CUR%XH_TRAFFIC (:)
544  zle_traffic(:) = tm%T%CUR%XLE_TRAFFIC (:)
545 ELSEWHERE
546  zh_traffic(:) = 0.
547  zle_traffic(:) = 0.
548 END WHERE
549 !
550 !--------------------------------------------------------------------------------------
551 ! Canyon forcing for TEB
552 !--------------------------------------------------------------------------------------
553 !-------------------------------------------------------------------------------------
554 ! Town averaged quantities to force canopy atmospheric layers
555 !-------------------------------------------------------------------------------------
556 
557 DO jteb_patch=1,tm%TOP%NTEB_PATCH
558  CALL goto_wrapper_teb_patch(tm%B, tm%DGCT, tm%DGMT, tm%T, &
559  gdm%TGD, gdm%TGDPE, grm%TGR, grm%TGRPE, jteb_patch)
560  CALL add_patch_contrib(jteb_patch,zavg_bld, tm%T%CUR%XBLD )
561  CALL add_patch_contrib(jteb_patch,zavg_bld_height, tm%T%CUR%XBLD_HEIGHT )
562  CALL add_patch_contrib(jteb_patch,zavg_wall_o_hor, tm%T%CUR%XWALL_O_HOR )
563  CALL add_patch_contrib(jteb_patch,zavg_can_hw_ratio,tm%T%CUR%XCAN_HW_RATIO)
564  CALL add_patch_contrib(jteb_patch,zavg_z0_town, tm%T%CUR%XZ0_TOWN )
565 END DO
566 !
567 IF (tm%TOP%LCANOPY) THEN
568 !-------------------------------------------------------------------------------------
569 ! Updates canopy vertical grid as a function of forcing height
570 !-------------------------------------------------------------------------------------
571 !
572 !* determines where is the forcing level and modifies the upper levels of the canopy grid
573 !
574  CALL canopy_grid_update(ki,tm%TCP%NLVL,zavg_bld_height,zavg_bld_height+puref,&
575  tm%TCP%XZ,tm%TCP%XZF,tm%TCP%XDZ,tm%TCP%XDZF)
576 !
577 !* Initialisations of T, Q, TKE and wind at first time step
578 !
579 
580  IF(any(tm%TCP%XT(:,:) == xundef)) THEN
581  DO jlayer=1,tm%TCP%NLVL
582  tm%TCP%XT(:,jlayer) = pta(:)
583  tm%TCP%XQ(:,jlayer) = pqa(:)
584  tm%TCP%XU(:,jlayer) = 2./xpi * zwind(:) &
585  * log( ( 2.* tm%T%CUR%XBLD_HEIGHT(:)/3.) / tm%T%CUR%XZ0_TOWN(:)) &
586  / log( (puref(:)+ 2.* tm%T%CUR%XBLD_HEIGHT(:)/3.) / tm%T%CUR%XZ0_TOWN(:))
587  END DO
588  tm%TCP%XTKE(:,:) = 1.
589  ENDIF
590 !
591 !* default forcing above roof: forcing level
592 zuref(:) = puref(:)
593 zzref(:) = pzref(:)
594 zua(:) = tm%TCP%XU(:,tm%TCP%NLVL)
595 zta(:) = tm%TCP%XT(:,tm%TCP%NLVL)
596 zqa(:) = tm%TCP%XQ(:,tm%TCP%NLVL)/prhoa(:)
597 zpa(:) = tm%TCP%XP(:,tm%TCP%NLVL)
598 !* for the time being, only one value is kept for wall in-canyon forcing, in the middle of the canyon
599 zu_canyon(:) = zua(:)
600 zt_canyon(:) = zta(:)
601 zq_canyon(:) = zqa(:)
602  DO jlayer=1,tm%TCP%NLVL-1
603  DO ji=1,ki
604  !* finds middle canyon layer
605  IF (tm%TCP%XZ(ji,jlayer)<zavg_bld_height(ji)/2. .AND. &
606  tm%TCP%XZ(ji,jlayer+1)>=zavg_bld_height(ji)/2.) THEN
607  zcoef(ji) = (zavg_bld_height(ji)/2.-tm%TCP%XZ(ji,jlayer))/(tm%TCP%XZ(ji,jlayer+1)-tm%TCP%XZ(ji,jlayer))
608  zu_canyon(ji) = tm%TCP%XU(ji,jlayer) + zcoef(ji) * (tm%TCP%XU(ji,jlayer+1)-tm%TCP%XU(ji,jlayer))
609  zt_canyon(ji) = tm%TCP%XT(ji,jlayer) + zcoef(ji) * (tm%TCP%XT(ji,jlayer+1)-tm%TCP%XT(ji,jlayer))
610  zq_canyon(ji) =(tm%TCP%XQ(ji,jlayer) + zcoef(ji) * &
611  (tm%TCP%XQ(ji,jlayer+1)-tm%TCP%XQ(ji,jlayer)))/prhoa(ji)
612  END IF
613  !* finds layer just above roof (at least 1m above roof)
614  IF (tm%TCP%XZ(ji,jlayer)<zavg_bld_height(ji)+1. .AND. &
615  tm%TCP%XZ(ji,jlayer+1)>=zavg_bld_height(ji)+1.) THEN
616  zuref(ji) = tm%TCP%XZ(ji,jlayer+1) - zavg_bld_height(ji)
617  zzref(ji) = tm%TCP%XZ(ji,jlayer+1) - zavg_bld_height(ji)
618  zta(ji) = tm%TCP%XT(ji,jlayer+1)
619  zqa(ji) = tm%TCP%XQ(ji,jlayer+1)/prhoa(ji)
620  !ZUA (JI) = XU(JI,JLAYER+1)
621  zua(ji) = max(tm%TCP%XU(ji,jlayer+1) - 2.*sqrt(tm%TCP%XTKE(ji,jlayer+1)) , tm%TCP%XU(ji,jlayer+1)/3.)
622  zpa(ji) = tm%TCP%XP(ji,jlayer+1)
623  zlmo(ji) = tm%TCP%XLMO(ji,jlayer+1)
624  END IF
625  END DO
626  END DO
627  zu_canyon= max(zu_canyon,0.2)
628  zu_lowcan=tm%TCP%XU(:,1)
629  zt_lowcan=tm%TCP%XT(:,1)
630  zq_lowcan=tm%TCP%XQ(:,1) / prhoa(:)
631  zz_lowcan=tm%TCP%XZ(:,1)
632  WHERE(zpa==xundef) zpa = ppa ! security for first time step
633 !
634 !-------------------------------------------------------------------------------------
635 ! determine the vertical profile for mixing and dissipative lengths (at full levels)
636 !-------------------------------------------------------------------------------------
637 !
638 ! frontal density
639  zlambda_f(:) = zavg_can_hw_ratio*zavg_bld / (0.5*xpi)
640 !
641  CALL sm10(tm%TCP%XZ,zavg_bld_height,zlambda_f,zl)
642 !
643 !-------------------------------------------------------------------------------------
644 ! computes coefficients for implicitation
645 !-------------------------------------------------------------------------------------
646 !
647  zavg_uw_grnd(:) = 0.
648  zavg_duwdu_grnd(:) = 0.
649  zavg_uw_roof(:) = 0.
650  zavg_duwdu_roof(:) = 0.
651  zavg_h_grnd(:) = 0.
652  zavg_h_wall(:) = 0.
653  zavg_h_roof(:) = 0.
654  zavg_e_grnd(:) = 0.
655  zavg_e_roof(:) = 0.
656  zavg_ac_grnd(:) = 0.
657  zavg_ac_grnd_wat(:) = 0.
658  zsflux_u(:) = 0.
659  zsflux_t(:) = 0.
660  zsflux_q(:) = 0.
661 !
662  DO jlayer=1,tm%TCP%NLVL-1
663  !* Monin-Obuhkov theory not used inside the urban canopy
664  ! => neutral mixing if layer is below : (roof level +1 meter)
665  WHERE (tm%TCP%XZ(:,jlayer)<=zavg_bld_height(:)+1.) tm%TCP%XLMO(:,jlayer) = xundef
666  ENDDO
667 !
668 !
669 !* computes tendencies on wind and Tke due to canopy
670  CALL teb_canopy(ki,tm%TCP%NLVL,tm%TCP%XZ,tm%TCP%XZF,tm%TCP%XDZ,tm%TCP%XDZF,&
671  zavg_bld,zavg_bld_height,zavg_wall_o_hor, &
672  ppa,prhoa,tm%TCP%XU, &
673  zavg_duwdu_grnd, zavg_uw_roof, zavg_duwdu_roof, &
674  zavg_h_wall,zavg_h_roof,zavg_e_roof,zavg_ac_grnd,zavg_ac_grnd_wat, &
675  zforc_u,zdforc_udu,zforc_e,zdforc_ede,zforc_t,zdforc_tdt,zforc_q,zdforc_qdq)
676 !
677 !* computes coefficients for implicitation
678  CALL canopy_evol(ki,tm%TCP%NLVL,ptstep,1, &
679  zl,zwind,pta,pqa,ppa,prhoa, &
680  zsflux_u,zsflux_t,zsflux_q, &
681  zforc_u,zdforc_udu,zforc_e,zdforc_ede, &
682  zforc_t,zdforc_tdt,zforc_q,zdforc_qdq, &
683  tm%TCP%XZ,tm%TCP%XZF,tm%TCP%XDZ,tm%TCP%XDZF,tm%TCP%XU,&
684  tm%TCP%XTKE,tm%TCP%XT,tm%TCP%XQ,tm%TCP%XLMO, &
685  tm%TCP%XLM,tm%TCP%XLEPS,tm%TCP%XP,zavg_ustar, &
686  zalfau,zbetau,zalfat,zbetat,zalfaq,zbetaq)
687 !
688  zpew_a_coef_lowcan = - zalfau / prhoa
689  zpew_b_coef_lowcan = zbetau
690 !
691 !- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
692 ELSE ! no canopy case
693 !- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
694  DO ji=1,ki
695 !* skimming flow for h/w>1 (maximum effect of direction on wind in the canyon);
696 !* isolated flow for h/w<0.5 (wind is the same in large streets for all dir.)
697 !* wake flow between.
698 !
699  zwake(ji)= 1. + (2./xpi-1.) * 2. * (zavg_can_hw_ratio(ji)-0.5)
700  zwake(ji)= max(min(zwake(ji),1.),2./xpi)
701 !
702 !* Estimation of canyon wind speed from wind just above roof level
703 ! (at 1.33h). Wind at 1.33h is estimated using the log law.
704 !
705  IF (zavg_bld_height(ji) .GT. 0.) THEN
706  zu_canyon(ji) = zwake(ji) * exp(-zavg_can_hw_ratio(ji)/4.) * zwind(ji) &
707  * log( ( 2.* zavg_bld_height(ji)/3.) / zavg_z0_town(ji)) &
708  / log( (puref(ji)+ 2.* zavg_bld_height(ji)/3.) / zavg_z0_town(ji))
709  zz_lowcan(ji) = zavg_bld_height(ji) / 2.
710  ELSE
711  zu_canyon(ji) = zwind(ji)
712  zz_lowcan(ji) = pzref(ji)
713  ENDIF
714  END DO
715 !
716 !* Without SBL scheme, canyon air is assumed at mid height
717  zu_lowcan=zu_canyon
718  zt_lowcan=tm%T%CUR%XT_CANYON
719  zq_lowcan=tm%T%CUR%XQ_CANYON
720  zt_canyon=tm%T%CUR%XT_CANYON
721  zq_canyon=tm%T%CUR%XQ_CANYON
722  zuref =puref
723  zzref =pzref
724  zta =pta
725  zua =zwind
726  zpa =ppa
727  zpew_a_coef_lowcan = 0.
728  zpew_b_coef_lowcan = zu_canyon
729 END IF
730 !
731 ! Exner functions
732 !
733 zexns(:) = (pps(:)/xp00)**(xrd/xcpd)
734 zexna(:) = (zpa(:)/xp00)**(xrd/xcpd)
735 
736 !--------------------------------------------------------------------------------------
737 ! Over Urban surfaces/towns:
738 !--------------------------------------------------------------------------------------
739 !
740 DO jteb_patch=1,tm%TOP%NTEB_PATCH
741  CALL goto_wrapper_teb_patch(tm%B, tm%DGCT, tm%DGMT, tm%T, &
742  gdm%TGD, gdm%TGDPE, grm%TGR, grm%TGRPE, jteb_patch)
743 !
744 zt_can=zt_canyon
745 zq_can=zq_canyon
746 !
747 IF (tm%TOP%LCANOPY) THEN
748  tm%T%CUR%XT_CANYON(:) = zt_canyon(:)
749  tm%T%CUR%XQ_CANYON(:) = zq_canyon(:)
750 END IF
751 !
752 zlesnow_roof(:) = 0.
753 zlesnow_road(:) = 0.
754 zg_greenroof_roof(:) = 0.
755 !
756 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
757 ! Call the physical routines of TEB (including gardens & greenroofs)
758 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
759 !
760  CALL teb_garden(dtco, dti, ig, i, tm, gdm, grm, &
761  tm%TOP%LGARDEN, tm%TOP%LGREENROOF, tm%TOP%LSOLAR_PANEL, &
762  tm%TOP%CZ0H, cimplicit_wind, tm%TOP%CROAD_DIR, tm%TOP%CWALL_OPT, &
763  tm%TOP%TTIME, ptsun, zt_can, zq_can, zu_canyon, &
764  zt_lowcan, zq_lowcan, zu_lowcan, zz_lowcan, &
765  tm%B%CUR%XTI_BLD,tm%T%CUR%XT_ROOF, tm%T%CUR%XT_ROAD, &
766  tm%T%CUR%XT_WALL_A, tm%T%CUR%XT_WALL_B, tm%T%CUR%XWS_ROOF, &
767  tm%T%CUR%XWS_ROAD,tm%T%CUR%TSNOW_ROOF%SCHEME, &
768  tm%T%CUR%TSNOW_ROOF%WSNOW(:,:,1), tm%T%CUR%TSNOW_ROOF%T(:,:,1), &
769  tm%T%CUR%TSNOW_ROOF%RHO(:,:,1), tm%T%CUR%TSNOW_ROOF%ALB(:,1), &
770  tm%T%CUR%TSNOW_ROOF%TS(:,1), tm%T%CUR%TSNOW_ROOF%EMIS(:,1), &
771  tm%T%CUR%TSNOW_ROAD%SCHEME, &
772  tm%T%CUR%TSNOW_ROAD%WSNOW(:,:,1), tm%T%CUR%TSNOW_ROAD%T(:,:,1), &
773  tm%T%CUR%TSNOW_ROAD%RHO(:,:,1), tm%T%CUR%TSNOW_ROAD%ALB(:,1), &
774  tm%T%CUR%TSNOW_ROAD%TS(:,1), tm%T%CUR%TSNOW_ROAD%EMIS(:,1), &
775  zpew_a_coef, zpew_b_coef,zpew_a_coef_lowcan, zpew_b_coef_lowcan, &
776  pps, zpa, zexns, zexna, zta, zqa, prhoa, pco2, &
777  plw, zdir_swb, zsca_swb, psw_bands, ksw, pzenith, pazim, &
778  prain, psnow, zzref, zuref, zua, &
779  zh_traffic, zle_traffic, tm%T%CUR%XH_INDUSTRY, tm%T%CUR%XLE_INDUSTRY, &
780  ptstep, &
781  tm%T%CUR%XZ0_TOWN, tm%T%CUR%XBLD, tm%T%CUR%XGARDEN, &
782  tm%T%CUR%XROAD_DIR, tm%T%CUR%XROAD, tm%T%CUR%XGREENROOF, &
783  tm%T%CUR%XBLD_HEIGHT, tm%T%CUR%XWALL_O_HOR, tm%T%CUR%XCAN_HW_RATIO, &
784  tm%T%CUR%XROAD_O_GRND, tm%T%CUR%XGARDEN_O_GRND, tm%T%CUR%XWALL_O_GRND,&
785  tm%T%CUR%XALB_ROOF, tm%T%CUR%XEMIS_ROOF, tm%T%CUR%XHC_ROOF, &
786  tm%T%CUR%XTC_ROOF,tm%T%CUR%XD_ROOF,tm%T%CUR%XALB_ROAD, &
787  tm%T%CUR%XEMIS_ROAD, tm%T%CUR%XSVF_ROAD,tm%T%CUR%XHC_ROAD, &
788  tm%T%CUR%XTC_ROAD,tm%T%CUR%XD_ROAD,tm%T%CUR%XALB_WALL, &
789  tm%T%CUR%XEMIS_WALL, tm%T%CUR%XSVF_WALL,tm%T%CUR%XSVF_GARDEN, &
790  tm%T%CUR%XHC_WALL,tm%T%CUR%XTC_WALL,tm%T%CUR%XD_WALL, &
791  zrn_roof, zh_roof, zle_roof, zlew_roof, zgflux_roof, &
792  zrunoff_roof, &
793  zrn_road, zh_road, zle_road, zlew_road, zgflux_road, &
794  zrunoff_road, &
795  zrn_wall_a, zh_wall_a, zle_wall_a, zgflux_wall_a, &
796  zrn_wall_b, zh_wall_b, zle_wall_b, zgflux_wall_b, &
797  zrn_garden,zh_garden,zle_garden,zgflux_garden, &
798  zrunoff_garden, zdrain_garden, zirrig_garden, &
799  zrn_greenroof,zh_greenroof,zle_greenroof,zgflux_greenroof, &
800  zrn_strlroof,zh_strlroof,zle_strlroof,zgflux_strlroof, &
801  zrunoff_strlroof, &
802  zrn_blt,zh_blt,zle_blt,zgflux_blt, &
803  zrnsnow_roof, zhsnow_roof, zlesnow_roof, zgsnow_roof, &
804  zmelt_roof, &
805  zrnsnow_road, zhsnow_road, zlesnow_road, zgsnow_road, &
806  zmelt_road, &
807  zrn_grnd, zh_grnd, zle_grnd, zgflux_grnd, &
808  zrn, zh, zle, zgflux, zevap, zrunoff_town, zsfco2, &
809  zuw_grnd, zuw_roof, zduwdu_grnd, zduwdu_roof, &
810  zustar, zcd, zcdn, zch, zri, &
811  ztrad, zemis, zdir_alb, zsca_alb, zresa_town, zdqs_town, &
812  zqf_town, zqf_bld, &
813  zflx_bld, zac_road, zac_garden, zac_greenroof, &
814  zac_road_wat, zac_garden_wat, zac_greenroof_wat, &
815  zabs_sw_roof,zabs_lw_roof, &
816  zabs_sw_snow_roof,zabs_lw_snow_roof, &
817  zabs_sw_road,zabs_lw_road, &
818  zabs_sw_snow_road,zabs_lw_snow_road, &
819  zabs_sw_wall_a, zabs_lw_wall_a, &
820  zabs_sw_wall_b, zabs_lw_wall_b, &
821  zabs_sw_panel,zabs_lw_panel, &
822  zabs_sw_garden,zabs_lw_garden, &
823  zabs_sw_greenroof,zabs_lw_greenroof, zg_greenroof_roof, &
824  zrunoff_greenroof, zdrain_greenroof, &
825  zirrig_greenroof, tm%BOP%CCOOL_COIL, tm%B%CUR%XF_WATER_COND, &
826  tm%BOP%CHEAT_COIL,tm%B%CUR%CNATVENT,kday, tm%B%CUR%XAUX_MAX, &
827  tm%B%CUR%XT_FLOOR, tm%B%CUR%XT_MASS, zh_bld_cool,zt_bld_cool, &
828  zh_bld_heat, zle_bld_cool, zle_bld_heat, zh_waste, zle_waste, &
829  tm%B%CUR%XF_WASTE_CAN, zhvac_cool, zhvac_heat, tm%B%CUR%XQIN, &
830  tm%B%CUR%XQIN_FRAD, tm%B%CUR%XQIN_FLAT, tm%B%CUR%XGR, &
831  tm%B%CUR%XEFF_HEAT, tm%B%CUR%XINF, tm%B%CUR%XTCOOL_TARGET, &
832  tm%B%CUR%XTHEAT_TARGET, tm%B%CUR%XHR_TARGET, tm%B%CUR%XT_WIN2, &
833  tm%B%CUR%XQI_BLD, tm%B%CUR%XV_VENT,tm%B%CUR%XCAP_SYS_HEAT, &
834  tm%B%CUR%XCAP_SYS_RAT, tm%B%CUR%XT_ADP, tm%B%CUR%XM_SYS_RAT, &
835  tm%B%CUR%XCOP_RAT, zcap_sys, zm_sys, zcop, zq_sys, zt_sys, &
836  ztr_sw_win, zfan_power, tm%B%CUR%XHC_FLOOR, tm%B%CUR%XTC_FLOOR, &
837  tm%B%CUR%XD_FLOOR, tm%B%CUR%XT_WIN1, zabs_sw_win, zabs_lw_win, &
838  tm%B%CUR%XSHGC, tm%B%CUR%XSHGC_SH, tm%B%CUR%XUGG_WIN, &
839  tm%B%CUR%XALB_WIN, tm%B%CUR%XABS_WIN, zemit_lw_fac, zemit_lw_grnd,&
840  zt_rad_ind, zref_sw_grnd,zref_sw_fac, zhu_bld, ptime, &
841  tm%B%CUR%LSHADE, tm%B%CUR%LSHAD_DAY, tm%B%CUR%LNATVENT_NIGHT, &
842  tm%TOP%CBEM, tm%B%CUR%XN_FLOOR, tm%T%CUR%XWALL_O_BLD, &
843  tm%B%CUR%XGLAZ_O_BLD, tm%B%CUR%XMASS_O_BLD, tm%B%CUR%XFLOOR_HW_RATIO,&
844  tm%B%CUR%XF_FLOOR_MASS, tm%B%CUR%XF_FLOOR_WALL, tm%B%CUR%XF_FLOOR_WIN,&
845  tm%B%CUR%XF_FLOOR_ROOF, tm%B%CUR%XF_WALL_FLOOR, tm%B%CUR%XF_WALL_MASS,&
846  tm%B%CUR%XF_WALL_WIN, tm%B%CUR%XF_WIN_FLOOR, tm%B%CUR%XF_WIN_MASS, &
847  tm%B%CUR%XF_WIN_WALL, tm%B%CUR%XF_MASS_FLOOR, tm%B%CUR%XF_MASS_WALL, &
848  tm%B%CUR%XF_MASS_WIN, tm%TOP%LCANOPY, tm%B%CUR%XTRAN_WIN, &
849  tm%TOP%CCH_BEM, tm%T%CUR%XROUGH_ROOF, tm%T%CUR%XROUGH_WALL, &
850  tm%B%CUR%XF_WIN_WIN, gdm%TIR%LPAR_RD_IRRIG, gdm%TIR%XRD_START_MONTH, &
851  gdm%TIR%XRD_END_MONTH, gdm%TIR%XRD_START_HOUR, gdm%TIR%XRD_END_HOUR, &
852  gdm%TIR%XRD_24H_IRRIG, zirrig_road, tm%TPN%XEMIS_PANEL, &
853  tm%TPN%XALB_PANEL, tm%TPN%XEFF_PANEL, tm%TPN%XFRAC_PANEL, &
854  tm%T%CUR%XRESIDENTIAL, zther_prod_panel, zphot_prod_panel, &
855  zprod_panel, zther_prod_bld , zphot_prod_bld, zprod_bld, &
856  tm%TPN%XTHER_PRODC_DAY, zh_panel, zrn_panel, &
857  tm%T%CUR%XDT_RES, tm%T%CUR%XDT_OFF, &
858  zcur_tcool_target, zcur_theat_target, zcur_qin )
859 
860 
861 !
862 IF (.NOT. tm%TOP%LCANOPY) THEN
863  CALL add_patch_contrib(jteb_patch,zavg_t_canyon,zt_can)
864  CALL add_patch_contrib(jteb_patch,zavg_q_canyon,zq_can)
865 !
866 ! Momentum fluxes
867 !
868  zsfu = 0.
869  zsfv = 0.
870  DO jj=1,SIZE(pu)
871  IF (zwind(jj)>0.) THEN
872  zcoef(jj) = - prhoa(jj) * zustar(jj)**2 / zwind(jj)
873  zsfu(jj) = zcoef(jj) * pu(jj)
874  zsfv(jj) = zcoef(jj) * pv(jj)
875  ENDIF
876  ENDDO
877  CALL add_patch_contrib(jteb_patch,psfu,zsfu)
878  CALL add_patch_contrib(jteb_patch,psfv,zsfv)
879 !
880 ENDIF
881 !
882 !-------------------------------------------------------------------------------------
883 ! Outputs:
884 !-------------------------------------------------------------------------------------
885 !
886 ! Grid box average fluxes/properties: Arguments and standard diagnostics
887 !
888  CALL add_patch_contrib(jteb_patch,psfth,zh)
889  CALL add_patch_contrib(jteb_patch,psftq,zevap)
890  CALL add_patch_contrib(jteb_patch,psfco2,zsfco2)
891 !
892 !
893 ! Albedo for each wavelength and patch
894 !
895 DO jswb=1,SIZE(psw_bands)
896  DO jj=1,SIZE(zdir_alb)
897  zdir_alb_patch(jj,jswb,jteb_patch) = zdir_alb(jj)
898  zsca_alb_patch(jj,jswb,jteb_patch) = zsca_alb(jj)
899  ENDDO
900 END DO
901 !
902 ! emissivity and radiative temperature
903 !
904 zemis_patch(:,jteb_patch) = zemis
905 ztrad_patch(:,jteb_patch) = ztrad
906 !
907 ! computes some aggregated diagnostics
908 !
909  CALL add_patch_contrib(jteb_patch,zavg_cd ,zcd )
910  CALL add_patch_contrib(jteb_patch,zavg_cdn,zcdn)
911  CALL add_patch_contrib(jteb_patch,zavg_ri ,zri )
912  CALL add_patch_contrib(jteb_patch,zavg_ch ,zch )
913  CALL add_patch_contrib(jteb_patch,zavg_rn ,zrn )
914  CALL add_patch_contrib(jteb_patch,zavg_h ,zh )
915  CALL add_patch_contrib(jteb_patch,zavg_le ,zle )
916  CALL add_patch_contrib(jteb_patch,zavg_gflux ,zgflux )
917 !
918 !* warning: aerodynamical resistance does not yet take into account gardens
919  CALL add_patch_contrib(jteb_patch,zavg_resa_town,1./zresa_town)
920 IF (jteb_patch==tm%TOP%NTEB_PATCH) zavg_resa_town = 1./zavg_resa_town
921 !
922 !-------------------------------------------------------------------------------------
923 ! Diagnostics on each patch
924 !-------------------------------------------------------------------------------------
925 !
926  CALL diag_misc_teb_n(tm%DGCT, tm%DGMT, tm%DGMTO, tm%TOP, &
927  ptstep, zdqs_town, zqf_bld, zqf_town, zflx_bld, &
928  zrunoff_town, &
929  zrn_road, zh_road, zle_road, zgflux_road, &
930  zrunoff_road, zirrig_road, &
931  zrn_wall_a, zh_wall_a, zgflux_wall_a, &
932  zrn_wall_b, zh_wall_b, zgflux_wall_b, &
933  zrn_roof, zh_roof, zle_roof, zgflux_roof, zrunoff_roof, &
934  zrn_strlroof, zh_strlroof, zle_strlroof, zgflux_strlroof, &
935  zrunoff_strlroof, &
936  zrn_greenroof, zh_greenroof, &
937  zle_greenroof, zgflux_greenroof, zg_greenroof_roof, &
938  zrunoff_greenroof, zdrain_greenroof,zirrig_greenroof, &
939  zrn_garden,zh_garden,zle_garden,zgflux_garden, &
940  zrunoff_garden, zdrain_garden, zirrig_garden, &
941  zrn_blt,zh_blt,zle_blt,zgflux_blt, &
942  zabs_sw_roof,zabs_lw_roof, &
943  zabs_sw_snow_roof,zabs_lw_snow_roof, &
944  zabs_sw_road,zabs_lw_road, &
945  zabs_sw_snow_road,zabs_lw_snow_road, &
946  zabs_sw_wall_a, zabs_lw_wall_a, zabs_sw_wall_b, &
947  zabs_lw_wall_b, &
948  zabs_sw_garden,zabs_lw_garden, &
949  zabs_sw_greenroof,zabs_lw_greenroof, &
950  zh_bld_cool, zt_bld_cool, &
951  zh_bld_heat, zle_bld_cool, zle_bld_heat, &
952  zh_waste, zle_waste, zhvac_cool, &
953  zhvac_heat, zcap_sys, zm_sys, zcop, &
954  zq_sys, zt_sys, ztr_sw_win, zfan_power, &
955  zabs_sw_win, zabs_lw_win, &
956  zcur_tcool_target, zcur_theat_target, zcur_qin, &
957  zabs_sw_panel, zabs_lw_panel, zrn_panel, &
958  zh_panel, zther_prod_panel, zphot_prod_panel, zprod_panel,&
959  zther_prod_bld, zphot_prod_bld )
960 !
961 !
962 !-------------------------------------------------------------------------------------
963 ! Computes averaged parameters necessary for UTCI
964 !-------------------------------------------------------------------------------------
965 !
966 IF (tm%DGT%N2M >0 .AND. tm%DGUT%LUTCI) THEN
967  CALL add_patch_contrib(jteb_patch,zavg_ref_sw_grnd ,zref_sw_grnd )
968  CALL add_patch_contrib(jteb_patch,zavg_ref_sw_fac ,zref_sw_fac )
969  CALL add_patch_contrib(jteb_patch,zavg_sca_sw ,zsca_sw )
970  CALL add_patch_contrib(jteb_patch,zavg_dir_sw ,zdir_sw )
971  CALL add_patch_contrib(jteb_patch,zavg_emit_lw_fac ,zemit_lw_fac )
972  CALL add_patch_contrib(jteb_patch,zavg_emit_lw_grnd,zemit_lw_grnd)
973  CALL add_patch_contrib(jteb_patch,zavg_t_rad_ind ,zt_rad_ind )
974  CALL add_patch_contrib(jteb_patch,zavg_ti_bld ,tm%B%CUR%XTI_BLD )
975  CALL add_patch_contrib(jteb_patch,zavg_qi_bld ,tm%B%CUR%XQI_BLD )
976 END IF
977 !
978 !-------------------------------------------------------------------------------------
979 ! Use of the canopy version of TEB
980 !-------------------------------------------------------------------------------------
981 !
982 IF (tm%TOP%LCANOPY) THEN
983 !-------------------------------------------------------------------------------------
984 ! Town averaged quantities to force canopy atmospheric layers
985 !-------------------------------------------------------------------------------------
986 
987  CALL add_patch_contrib(jteb_patch,zavg_duwdu_grnd ,zduwdu_grnd )
988  CALL add_patch_contrib(jteb_patch,zavg_uw_roof ,zuw_roof)
989  CALL add_patch_contrib(jteb_patch,zavg_duwdu_roof ,zduwdu_roof)
990  CALL add_patch_contrib(jteb_patch,zavg_h_wall ,0.5*(zh_wall_a+zh_wall_b))
991  CALL add_patch_contrib(jteb_patch,zavg_h_roof ,(zh_roof+tm%T%CUR%XH_INDUSTRY))
992  CALL add_patch_contrib(jteb_patch,zavg_e_roof ,(zle_roof+tm%T%CUR%XLE_INDUSTRY)/xlvtt)
993 !
994 !-------------------------------------------------------------------------------------
995 ! Computes the impact of canopy and surfaces on air
996 !-------------------------------------------------------------------------------------
997 !
998 zac_grnd(:) = (tm%T%CUR%XROAD(:)*zac_road(:) + &
999  tm%T%CUR%XGARDEN(:)*zac_garden(:)) / (tm%T%CUR%XROAD(:)+tm%T%CUR%XGARDEN(:))
1000 zac_grnd_wat(:) = (tm%T%CUR%XROAD(:)*zac_road_wat(:) + &
1001  tm%T%CUR%XGARDEN(:)*zac_garden_wat(:)) / (tm%T%CUR%XROAD(:)+tm%T%CUR%XGARDEN(:))
1002 !
1003  CALL add_patch_contrib(jteb_patch,zavg_ac_grnd ,zac_grnd )
1004  CALL add_patch_contrib(jteb_patch,zavg_ac_grnd_wat ,zac_grnd_wat)
1005  CALL add_patch_contrib(jteb_patch,zsflux_u ,zuw_grnd * (1.-tm%T%CUR%XBLD))
1006  CALL add_patch_contrib(jteb_patch,zsflux_t ,zh_grnd * (1.-tm%T%CUR%XBLD)/xcpd/prhoa)
1007  CALL add_patch_contrib(jteb_patch,zsflux_q ,zle_grnd * (1.-tm%T%CUR%XBLD)/xlvtt)
1008 !
1009 
1010 END IF
1011 !
1012 !-------------------------------------------------------------------------------------
1013 ! end of loop on TEB patches
1014 END DO
1015 !-------------------------------------------------------------------------------------
1016 !
1017 !-------------------------------------------------------------------------------------
1018 !* Evolution of canopy air if canopy option is active
1019 !-------------------------------------------------------------------------------------
1020 !
1021 IF (tm%TOP%LCANOPY) THEN
1022 !
1023 !-------------------------------------------------------------------------------------
1024 !* Impact of TEB fluxes on the air
1025 !-------------------------------------------------------------------------------------
1026 !
1027  CALL teb_canopy(ki,tm%TCP%NLVL,tm%TCP%XZ,tm%TCP%XZF,tm%TCP%XDZ,tm%TCP%XDZF,zavg_bld,&
1028  zavg_bld_height,zavg_wall_o_hor, ppa,prhoa,tm%TCP%XU, &
1029  zavg_duwdu_grnd, zavg_uw_roof, zavg_duwdu_roof, &
1030  zavg_h_wall,zavg_h_roof,zavg_e_roof,zavg_ac_grnd,zavg_ac_grnd_wat, &
1031  zforc_u,zdforc_udu,zforc_e,zdforc_ede,zforc_t,zdforc_tdt,zforc_q,zdforc_qdq)
1032 !
1033 !-------------------------------------------------------------------------------------
1034 !* Evolution of canopy air due to these impacts
1035 !-------------------------------------------------------------------------------------
1036 !
1037  CALL canopy_evol(ki,tm%TCP%NLVL,ptstep,2, &
1038  zl,zwind,pta,pqa,ppa,prhoa, &
1039  zsflux_u,zsflux_t,zsflux_q, &
1040  zforc_u,zdforc_udu,zforc_e,zdforc_ede, &
1041  zforc_t,zdforc_tdt,zforc_q,zdforc_qdq, &
1042  tm%TCP%XZ,tm%TCP%XZF,tm%TCP%XDZ,tm%TCP%XDZF,tm%TCP%XU, &
1043  tm%TCP%XTKE,tm%TCP%XT,tm%TCP%XQ,tm%TCP%XLMO,tm%TCP%XLM, &
1044  tm%TCP%XLEPS,tm%TCP%XP, &
1045  zavg_ustar, &
1046  zalfau,zbetau,zalfat,zbetat,zalfaq,zbetaq )
1047 !
1048 !
1049 !-------------------------------------------------------------------------------------
1050 ! Momentum fluxes in the case canopy is active
1051 !-------------------------------------------------------------------------------------
1052 !
1053 psfu=0.
1054 psfv=0.
1055 zavg_z0_town(:) = min(zavg_z0_town(:),puref(:)*0.5)
1056 zavg_cdn=(xkarman/log(puref(:)/zavg_z0_town(:)))**2
1057 zavg_cd = zavg_cdn
1058 zavg_ri = 0.
1059 DO jj=1,SIZE(pu)
1060  IF (zwind(jj)>0.) THEN
1061  zcoef(jj) = - prhoa(jj) * zavg_ustar(jj)**2 / zwind(jj)
1062  psfu(jj) = zcoef(jj) * pu(jj)
1063  psfv(jj) = zcoef(jj) * pv(jj)
1064  zavg_cd(jj) = zavg_ustar(jj)**2 / zwind(jj)**2
1065  zavg_ri(jj) = -xg/pta(jj)*zsflux_t(jj)/zavg_ustar(jj)**4
1066  ENDIF
1067 ENDDO
1068 !
1069 !-------------------------------------------------------------------------------------
1070 ! End of specific case with canopy option
1071 !-------------------------------------------------------------------------------------
1072 !
1073 END IF
1074 !
1075 !-------------------------------------------------------------------------------------
1076 ! Outputs:
1077 !-------------------------------------------------------------------------------------
1078 !
1079 !-------------------------------------------------------------------------------------
1080 !Radiative properties should be at time t+1 (see by the atmosphere) in order to close
1081 !the energy budget between surfex and the atmosphere. It is not the case here
1082 !for ALB and EMIS
1083 !-------------------------------------------------------------------------------------
1084 !
1085  CALL average_rad(tm%TOP%XTEB_PATCH, &
1086  zdir_alb_patch, zsca_alb_patch, zemis_patch, ztrad_patch,&
1087  pdir_alb, psca_alb, pemis, ptrad )
1088 !
1089 !-------------------------------------------------------------------------------
1090 !Physical properties see by the atmosphere in order to close the energy budget
1091 !between surfex and the atmosphere. All variables should be at t+1 but very
1092 !difficult to do. Maybe it will be done later. However, Ts can be at time t+1
1093 !-------------------------------------------------------------------------------
1094 !
1095 ptsurf(:) = ptrad(:) ! Should be the surface effective temperature; not radative
1096 pz0(:) = zavg_z0_town(:) ! Should account for ISBA (greenroof and garden) Z0
1097 pz0h(:) = pz0(:) / 200. ! Should account for ISBA (greenroof and garden) Z0
1098 pqsurf(:) = tm%T%CUR%XQ_CANYON (:) ! Should account for ISBA (greenroof and garden) Qs
1099 !
1100 !-------------------------------------------------------------------------------------
1101 ! Scalar fluxes:
1102 !-------------------------------------------------------------------------------------
1103 !
1104 zavg_ustar(:) = sqrt(sqrt(psfu**2+psfv**2))
1105 !
1106 !
1107 IF (tm%CHT%SVT%NBEQ>0) THEN
1108  IF (tm%CHT%CCH_DRY_DEP == "WES89") THEN
1109  CALL ch_dep_town(zavg_resa_town, zavg_ustar, pta, ptrad, zavg_wall_o_hor,&
1110  psv(:,tm%CHT%SVT%NSV_CHSBEG:tm%CHT%SVT%NSV_CHSEND), &
1111  tm%CHT%SVT%CSV(tm%CHT%SVT%NSV_CHSBEG:tm%CHT%SVT%NSV_CHSEND), &
1112  tm%CHT%XDEP(:,1:tm%CHT%SVT%NBEQ) )
1113 
1114  DO ji=tm%CHT%SVT%NSV_CHSBEG,tm%CHT%SVT%NSV_CHSEND
1115 !cdir nodep
1116  DO jj=1,SIZE(psfts,1)
1117  psfts(jj,ji) = - psv(jj,ji) * tm%CHT%XDEP(jj,ji-tm%CHT%SVT%NSV_CHSBEG+1)
1118  ENDDO
1119  ENDDO
1120 
1121  IF (tm%CHT%SVT%NAEREQ > 0 ) THEN
1122  CALL ch_aer_dep(psv(:,tm%CHT%SVT%NSV_AERBEG:tm%CHT%SVT%NSV_AEREND),&
1123  psfts(:,tm%CHT%SVT%NSV_AERBEG:tm%CHT%SVT%NSV_AEREND),&
1124  zavg_ustar,zavg_resa_town,pta,prhoa)
1125  END IF
1126 
1127  ELSE
1128  DO ji=tm%CHT%SVT%NSV_CHSBEG,tm%CHT%SVT%NSV_CHSEND
1129  psfts(:,ji) =0.
1130  ENDDO
1131  IF(tm%CHT%SVT%NSV_AERBEG.LT.tm%CHT%SVT%NSV_AEREND) THEN
1132  DO ji=tm%CHT%SVT%NSV_AERBEG,tm%CHT%SVT%NSV_AEREND
1133  psfts(:,ji) =0.
1134  ENDDO
1135  ENDIF
1136  ENDIF
1137 ENDIF
1138 
1139 IF (tm%CHT%SVT%NDSTEQ>0) THEN
1140  ! Blindage à enlever lorsque que TEB aura été corrigé
1141  zustar(:) = min(zustar(:), 10.)
1142  zresa_town(:) = max(zresa_town(:), 10.)
1143  !
1144  CALL dslt_dep(psv(:,tm%CHT%SVT%NSV_DSTBEG:tm%CHT%SVT%NSV_DSTEND), &
1145  psfts(:,tm%CHT%SVT%NSV_DSTBEG:tm%CHT%SVT%NSV_DSTEND), &
1146  zustar, zresa_town, pta, prhoa, dst%XEMISSIG_DST, dst%XEMISRADIUS_DST, &
1147  jpmode_dst, xdensity_dst, xmolarweight_dst, zconvertfacm0_dst, &
1148  zconvertfacm6_dst, zconvertfacm3_dst, lvarsig_dst, lrgfix_dst, &
1149  cvermod )
1150 
1151  CALL massflux2momentflux( &
1152  psfts(:,tm%CHT%SVT%NSV_DSTBEG:tm%CHT%SVT%NSV_DSTEND), & !I/O ![kg/m2/sec] In: flux of only mass, out: flux of moments
1153  prhoa, & !I [kg/m3] air density
1154  dst%XEMISRADIUS_DST, &!I [um] emitted radius for the modes (max 3)
1155  dst%XEMISSIG_DST, &!I [-] emitted sigma for the different modes (max 3)
1156  ndstmde, &
1157  zconvertfacm0_dst, &
1158  zconvertfacm6_dst, &
1159  zconvertfacm3_dst, &
1160  lvarsig_dst, lrgfix_dst )
1161 ENDIF
1162 IF (tm%CHT%SVT%NSLTEQ>0) THEN
1163  CALL dslt_dep(psv(:,tm%CHT%SVT%NSV_SLTBEG:tm%CHT%SVT%NSV_SLTEND), &
1164  psfts(:,tm%CHT%SVT%NSV_SLTBEG:tm%CHT%SVT%NSV_SLTEND), &
1165  zustar, zresa_town, pta, prhoa, slt%XEMISSIG_SLT, slt%XEMISRADIUS_SLT, &
1166  jpmode_slt, xdensity_slt, xmolarweight_slt, zconvertfacm0_slt, &
1167  zconvertfacm6_slt, zconvertfacm3_slt, lvarsig_slt, lrgfix_slt, &
1168  cvermod )
1169 
1170  CALL massflux2momentflux( &
1171  psfts(:,tm%CHT%SVT%NSV_SLTBEG:tm%CHT%SVT%NSV_SLTEND), & !I/O ![kg/m2/sec] In: flux of only mass, out: flux of moments
1172  prhoa, & !I [kg/m3] air density
1173  slt%XEMISRADIUS_SLT, &!I [um] emitted radius for the modes (max 3)
1174  slt%XEMISSIG_SLT, &!I [-] emitted sigma for the different modes (max 3)
1175  nsltmde, &
1176  zconvertfacm0_slt, &
1177  zconvertfacm6_slt, &
1178  zconvertfacm3_slt, &
1179  lvarsig_slt, lrgfix_slt )
1180 ENDIF
1181 !
1182 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1183 ! Inline diagnostics
1184 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1185 !
1186  CALL diag_inline_teb_n(tm%DGT, tm%TCP, tm%T, &
1187  tm%TOP%LCANOPY, pta, ptrad, zqa, ppa, pps, prhoa, &
1188  pu, pv, zwind, pzref, puref, &
1189  zavg_cd, zavg_cdn, zavg_ri, zavg_ch, zavg_z0_town, &
1190  ptrad, pemis, pdir_alb, psca_alb, &
1191  plw, zdir_swb, zsca_swb, &
1192  psfth, psftq, psfu, psfv, psfco2, &
1193  zavg_rn, zavg_h, zavg_le, zavg_gflux )
1194 !
1195 !-------------------------------------------------------------------------------------
1196 ! Stores Canyon air and humidity if historical option of TEB is active
1197 !-------------------------------------------------------------------------------------
1198 !
1199 IF (.NOT. tm%TOP%LCANOPY) THEN
1200  DO jteb_patch=1,tm%TOP%NTEB_PATCH
1201  CALL goto_wrapper_teb_patch(tm%B, tm%DGCT, tm%DGMT, tm%T, &
1202  gdm%TGD, gdm%TGDPE, grm%TGR, grm%TGRPE, jteb_patch)
1203  tm%T%CUR%XT_CANYON(:) = zavg_t_canyon(:)
1204  tm%T%CUR%XQ_CANYON(:) = zavg_q_canyon(:)
1205  END DO
1206 END IF
1207 !
1208 !-------------------------------------------------------------------------------------
1209 ! Thermal confort index
1210 !-------------------------------------------------------------------------------------
1211 !
1212 IF (tm%DGUT%LUTCI .AND. tm%DGT%N2M >0) THEN
1213  DO jj=1,ki
1214  IF (tm%DGT%XZON10M(jj)/=xundef) THEN
1215  zu_utci(jj) = sqrt(tm%DGT%XZON10M(jj)**2+tm%DGT%XMER10M(jj)**2)
1216  ELSE
1217  zu_utci(jj) = zwind(jj)
1218  ENDIF
1219  ENDDO
1220  CALL utci_teb(tm%T%CUR%XT_CANYON, tm%T%CUR%XQ_CANYON, zavg_ti_bld, zavg_qi_bld, zu_utci, &
1221  pps, zavg_ref_sw_grnd,zavg_ref_sw_fac, zavg_sca_sw, zavg_dir_sw, pzenith, &
1222  zavg_emit_lw_fac, zavg_emit_lw_grnd, plw, zavg_t_rad_ind, tm%T%CUR%XBLD, &
1223  tm%T%CUR%XBLD_HEIGHT, tm%T%CUR%XWALL_O_HOR, tm%DGUT%XUTCI_IN, tm%DGUT%XUTCI_OUTSUN, &
1224  tm%DGUT%XUTCI_OUTSHADE, tm%DGUT%XTRAD_SUN, tm%DGUT%XTRAD_SHADE )
1225  CALL utcic_stress(ptstep,tm%DGUT%XUTCI_IN ,tm%DGUT%XUTCIC_IN )
1226  CALL utcic_stress(ptstep,tm%DGUT%XUTCI_OUTSUN ,tm%DGUT%XUTCIC_OUTSUN )
1227  CALL utcic_stress(ptstep,tm%DGUT%XUTCI_OUTSHADE,tm%DGUT%XUTCIC_OUTSHADE)
1228 ELSE IF (tm%DGUT%LUTCI) THEN
1229  tm%DGUT%XUTCI_IN(:) = xundef
1230  tm%DGUT%XUTCI_OUTSUN(:) = xundef
1231  tm%DGUT%XUTCI_OUTSHADE(:) = xundef
1232  tm%DGUT%XTRAD_SUN(:) = xundef
1233  tm%DGUT%XTRAD_SHADE(:) = xundef
1234  tm%DGUT%XUTCIC_IN(:,:) = xundef
1235  tm%DGUT%XUTCIC_OUTSUN(:,:) = xundef
1236  tm%DGUT%XUTCIC_OUTSHADE(:,:) = xundef
1237 ENDIF
1238 
1239 !
1240 IF (lhook) CALL dr_hook('COUPLING_TEB_N',1,zhook_handle)
1241 !
1242 !-------------------------------------------------------------------------------------
1243  CONTAINS
1244 SUBROUTINE add_patch_contrib(JP,PAVG,PFIELD)
1245 INTEGER, INTENT(IN) :: jp
1246 REAL, DIMENSION(:), INTENT(INOUT) :: pavg
1247 REAL, DIMENSION(:), INTENT(IN) :: pfield
1248 !
1249 IF (jteb_patch==1) pavg = 0.
1250 pavg = pavg + tm%TOP%XTEB_PATCH(:,jp) * pfield(:)
1251 !
1252 END SUBROUTINE add_patch_contrib
1253 !-------------------------------------------------------------------------------------
1254 !
1255 END SUBROUTINE coupling_teb_n
1256 
1257 
subroutine diag_misc_teb_n(DGCT, DGMT, DGMTO, TOP, PTSTEP, PDQS_TOWN, PQF_BLD, PQF_TOWN, PFLX_BLD, PRUNOFF_TOWN, PRN_ROAD, PH_ROAD, PLE_ROAD, PGFLUX_ROAD, PRUNOFF_ROAD, PIRRIG_ROAD, PRN_WALL_A, PH_WALL_A, PGFLUX_WALL_A, PRN_WALL_B, PH_WALL_B, PGFLUX_WALL_B, PRN_ROOF, PH_ROOF, PLE_ROOF, PGFLUX_ROOF, PRUNOFF_ROOF, PRN_STRLROOF, PH_STRLROOF, PLE_STRLROOF, PGFLUX_STRLROOF, PRUNOFF_STRLROOF, PRN_GREENROOF, PH_GREENROOF, PLE_GREENROOF, PGFLUX_GREENROOF, PG_GREENROOF_ROOF, PRUNOFF_GREENROOF, PDRAIN_GREENROOF, PIRRIG_GREENROOF, PRN_GARDEN, PH_GARDEN, PLE_GARDEN, PGFLUX_GARDEN, PRUNOFF_GARDEN, PDRAIN_GARDEN, PIRRIG_GARDEN, PRN_BLT, PH_BLT, PLE_BLT, PGFLUX_BLT, 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, PABS_SW_GARDEN, PABS_LW_GARDEN, PABS_SW_GREENROOF, PABS_LW_GREENROOF, PH_BLD_COOL, PT_BLD_COOL, PH_BLD_HEAT, PLE_BLD_COOL, PLE_BLD_HEAT, PH_WASTE, PLE_WASTE, PHVAC_COOL, PHVAC_HEAT, PCAP_SYS, PM_SYS, PCOP, PQ_SYS, PT_SYS, PTR_SW_WIN, PFAN_POWER, PABS_SW_WIN, PABS_LW_WIN, PTCOOL_TARGET, PTHEAT_TARGET, PQIN, PABS_SW_PANEL, PABS_LW_PANEL, PRN_PANEL, PH_PANEL, PTHER_PROD_PANEL, PPHOT_PROD_PANEL, PPROD_PANEL, PTHER_PROD_BLD, PPHOT_PROD_BLD)
subroutine teb_garden(DTCO, DTI, IG, I, TM, GDM, GRM, OGARDEN, OGREENROOF, OSOLAR_PANEL, HZ0H, HIMPLICIT_WIND, HROAD_DIR, HWALL_OPT, 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, PCO2, PLW_RAD, PDIR_SW, PSCA_SW, PSW_BANDS, KSW, PZENITH, PAZIM, PRR, PSR, PZREF, PUREF, PVMOD, PH_TRAFFIC, PLE_TRAFFIC, PH_INDUSTRY, PLE_INDUSTRY, PTSTEP, PZ0_TOWN, PBLD, PGARDEN, PROAD_DIR, PROAD, PFRAC_GR, PBLD_HEIGHT, PWALL_O_HOR, PCAN_HW_RATIO, PROAD_O_GRND, PGARDEN_O_GRND, PWALL_O_GRND, PALB_ROOF, PEMIS_ROOF, PHC_ROOF, PTC_ROOF, PD_ROOF, PALB_ROAD, PEMIS_ROAD, PSVF_ROAD, PHC_ROAD, PTC_ROAD, PD_ROAD, PALB_WALL, PEMIS_WALL, PSVF_WALL, PSVF_GARDEN, PHC_WALL, PTC_WALL, PD_WALL, PRN_ROOF, PH_ROOF, PLE_ROOF, PLEW_ROOF, PGFLUX_ROOF, PRUNOFF_ROOF, 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_GARDEN, PH_GARDEN, PLE_GARDEN, PGFLUX_GARDEN, PRUNOFF_GARDEN, PDRAIN_GARDEN, PIRRIG_GARDEN, PRN_GREENROOF, PH_GREENROOF, PLE_GREENROOF, PGFLUX_GREENROOF, PRN_STRLROOF, PH_STRLROOF, PLE_STRLROOF, PGFLUX_STRLROOF, PRUNOFF_STRLROOF, 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, PRN_GRND, PH_GRND, PLE_GRND, PGFLUX_GRND, PRN_TOWN, PH_TOWN, PLE_TOWN, PGFLUX_TOWN, PEVAP_TOWN, PRUNOFF_TOWN, PSFCO2, PUW_GRND, PUW_ROOF, PDUWDU_GRND, PDUWDU_ROOF, PUSTAR_TOWN, PCD, PCDN, PCH_TOWN, PRI_TOWN, PTS_TOWN, PEMIS_TOWN, PDIR_ALB_TOWN, PSCA_ALB_TOWN, PRESA_TOWN, PDQS_TOWN, PQF_TOWN, PQF_BLD, PFLX_BLD, PAC_ROAD, PAC_GARDEN, PAC_GREENROOF, PAC_ROAD_WAT, PAC_GARDEN_WAT, PAC_GREENROOF_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, PABS_SW_PANEL, PABS_LW_PANEL, PABS_SW_GARDEN, PABS_LW_GARDEN, PABS_SW_GREENROOF, PABS_LW_GREENROOF, PG_GREENROOF_ROOF, PRUNOFF_GREENROOF, PDRAIN_GREENROOF, PIRRIG_GREENROOF, HCOOL_COIL, PF_WATER_COND, HHEAT_COIL, HNATVENT, 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, PSHGC, PSHGC_SH, PUGG_WIN, PALB_WIN, PABS_WIN, PEMIT_LW_FAC, PEMIT_LW_GRND, PT_RAD_IND, PREF_SW_GRND, PREF_SW_FAC, PHU_BLD, PTIME, OSHADE, OSHAD_DAY, ONATVENT_NIGHT, HBEM, 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, PTRAN_WIN, 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, PEMIS_PANEL, PALB_PANEL, PEFF_PANEL, PFRAC_PANEL, PRESIDENTIAL, PTHER_PROD_PANEL, PPHOT_PROD_PANEL, PPROD_PANEL, PTHER_PROD_BLD, PPHOT_PROD_BLD, PPROD_BLD, PTHER_PRODC_DAY, PH_PANEL, PRN_PANEL, PDT_RES, PDT_OFF, PCUR_TCOOL_TARGET, PCUR_THEAT_TARGET, PCUR_QIN)
Definition: teb_garden.F90:6
subroutine utci_teb(PT_CAN, PQ_CAN, PTI_BLD, PQI_BLD, PU10, PPS, PREF_SW_GRND, PREF_SW_FAC, PSCA_SW, PDIR_SW, PZENITH, PEMIT_LW_FAC, PEMIT_LW_GRND, PLW_RAD, PTRAD_IN, PBLD, PBLD_HEIGHT, PWALL_O_HOR, PUTCI_IN, PUTCI_OUTSUN, PUTCI_OUTSHADE, PTRAD_SUN, PTRAD_SHADE)
Definition: utci_teb.F90:6
subroutine ch_dep_town(PRESA_TOWN, PUSTAR_TOWN, PTA, PTRAD, PWALL_O_HOR, PSV, HSV, PDEP)
Definition: ch_dep_town.F90:6
subroutine ch_aer_dep(PSVT, PFSVT, PUSTAR, PRESA, PTA, PRHODREF)
Definition: ch_aer_dep.F90:6
subroutine sm10(PZ, PBLD_HEIGHT, PLAMBDA_F, PL)
Definition: sm10.F90:6
subroutine coupling_teb_n(DTCO, DTI, IG, I, DST, SLT, TM, GDM, GRM, HPROGRAM, HCOUPLING, PTSTEP, KYEAR, KMONTH, KDAY, PTIME, KI, KSV, KSW, PTSUN, PZENITH, PAZIM, PZREF, PUREF, PZS, PU, PV, PQA, PTA, PRHOA, PSV, PCO2, HSV, PRAIN, PSNOW, PLW, PDIR_SW, PSCA_SW, PSW_BANDS, PPS, PPA, PSFTQ, PSFTH, PSFTS, PSFCO2, PSFU, PSFV, PTRAD, PDIR_ALB, PSCA_ALB, PEMIS, PTSURF, PZ0, PZ0H, PQSURF, PPEW_A_COEF, PPEW_B_COEF, PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF, PPEQ_B_COEF, HTEST)
subroutine canopy_grid_update(KI, KLVL, PH, PZFORC, PZ, PZF, PDZ, PDZF)
subroutine abor1_sfx(YTEXT)
Definition: abor1_sfx.F90:6
subroutine goto_wrapper_teb_patch(B, DGCT, DGMT, T, TGD, TGDPE, TGR, TGRPE, KTO_PATCH)
subroutine teb_canopy(KI, KLVL, PZ, PZF, PDZ, PDZF, PBLD, PBLD_HEIGHT, PWALL_O_HOR, PPA, PRHOA, PU, PDUWDU_ROAD, PUW_ROOF, PDUWDU_ROOF, PH_WALL, PH_ROOF, PE_ROOF, PAC_ROAD, PAC_ROAD_WAT, PFORC_U, PDFORC_UDU, PFORC_E, PDFORC_EDE, PFORC_T, PDFORC_TDT, PFORC_Q, PDFORC_QDQ)
Definition: teb_canopy.F90:6
subroutine average_rad(PFRAC_TILE, PDIR_ALB_TILE, PSCA_ALB_TILE, PEMIS_TILE, PTRAD_TILE, PDIR_ALB, PSCA_ALB, PEMIS, PTRAD)
Definition: average_rad.F90:6
subroutine massflux2momentflux(PFLUX, PRHODREF, PEMISRADIUS, PEMISSIG, KMDE, PCONVERTFACM0, PCONVERTFACM6, PCONVERTFACM3, OVARSIG, ORGFIX)
subroutine dslt_dep(PSVT, PFSVT, PUSTAR, PRESA, PTA, PRHODREF, PEMISSIG, PEMISRADIUS, KPMODE, PDENSITY, PMOLARWEIGHT, PCONVERTFACM0, PCONVERTFACM6, PCONVERTFACM3, OVARSIG, ORGFIX, HVERMOD)
Definition: dslt_dep.F90:6
subroutine add_patch_contrib(JP, PAVG, PFIELD)
subroutine add_forecast_to_date_surf(KYEAR, KMONTH, KDAY, PSEC)
subroutine diag_inline_teb_n(DGT, TCP, T, OCANOPY, PTA, PTS, PQA, PPA, PPS, PRHOA, PZONA, PMERA, PWIND, PHT, PHW, PCD, PCDN, PRI, PCH, PZ0, PTRAD, PEMIS, PDIR_ALB, PSCA_ALB, PLW, PDIR_SW, PSCA_SW, PSFTH, PSFTQ, PSFZON, PSFMER, PSFCO2, PRN, PH, PLE, PGFLUX)
subroutine canopy_evol(KI, KLVL, PTSTEP, KIMPL, PZZ, PWIND, PTA, PQA, PPA, PRHOA, PSFLUX_U, PSFLUX_T, PSFLUX_Q, PFORC_U, PDFORC_UDU, PFORC_E, PDFORC_EDE, PFORC_T, PDFORC_TDT, PFORC_Q, PDFORC_QDQ, PZ, PZF, PDZ, PDZF, PU, PTKE, PT, PQ, PLMO, PLM, PLEPS, PP, PUSTAR, PALFAU, PBETAU, PALFATH, PBETATH, PALFAQ, PBETAQ, ONEUTRAL)
Definition: canopy_evol.F90:6
subroutine circumsolar_rad(PDIR_SW, PSCA_SW, PZENITH, PF1_o_B)
subroutine utcic_stress(PTSTEP, PUTCI, PUTCIC)
Definition: utcic_stress.F90:6