SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
init_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 init_teb_n (DTCO, DGU, UG, U, CHI, DTI, I, &
7  tm, gdm, grm, dst, slt, &
8  hprogram,hinit, &
9  ki,ksv,ksw, &
10  hsv,pco2,prhoa, &
11  pzenith,pazim,psw_bands,pdir_alb,psca_alb, &
12  pemis,ptsrad,ptsurf, &
13  kyear, kmonth,kday, ptime, &
14  hatmfile,hatmfiletype, &
15  htest )
16 ! #############################################################
17 !
18 !!**** *INIT_TEB_n* - routine to initialize TEB
19 !!
20 !! PURPOSE
21 !! -------
22 !!
23 !!** METHOD
24 !! ------
25 !!
26 !! EXTERNAL
27 !! --------
28 !!
29 !!
30 !! IMPLICIT ARGUMENTS
31 !! ------------------
32 !!
33 !! REFERENCE
34 !! ---------
35 !!
36 !!
37 !! AUTHOR
38 !! ------
39 !! V. Masson *Meteo France*
40 !!
41 !! MODIFICATIONS
42 !! -------------
43 !! Original 01/2003
44 !! G. Pigeon 09/2012: add ROUGH_WALL/ROUGH_ROOF/CH_BEM for conv. coef.
45 !! B. Decharme 04/2013 new coupling variables
46 !! delete CTOPREG option (never used)
47 !-------------------------------------------------------------------------------
48 !
49 !* 0. DECLARATIONS
50 ! ------------
51 !
52 !
56 USE modd_surf_atm_n, ONLY : surf_atm_t
57 USE modd_ch_isba_n, ONLY : ch_isba_t
58 USE modd_data_isba_n, ONLY : data_isba_t
59 USE modd_isba_n, ONLY : isba_t
60 USE modd_surfex_n, ONLY : teb_model_t
63 USE modd_dst_n, ONLY : dst_t
64 USE modd_slt_n, ONLY : slt_t
65 !
66 USE modd_io_surf_asc,ONLY: cmask
67 USE modd_snow_par, ONLY : xemissn
68 !
69 USE modd_read_namelist, ONLY : lnam_read
70 !
71 USE modd_chs_aerosol, ONLY: lvarsigi, lvarsigj
72 USE modd_dst_surf, ONLY: lvarsig_dst, ndstmde, ndst_mdebeg, lrgfix_dst
73 USE modd_slt_surf, ONLY: lvarsig_slt, nsltmde, nslt_mdebeg, lrgfix_slt
74 USE modd_surf_par, ONLY: xundef, nundef
75 !
76 USE modi_init_io_surf_n
77 USE modi_default_ch_dep
78 USE modi_default_teb
79 USE modi_default_diag_teb
80 USE modi_read_default_teb_n
81 USE modi_read_teb_conf_n
82 USE modi_prep_ctrl_teb
83 USE modi_read_teb_n
84 USE modi_read_pgd_teb_n
85 USE modi_convert_teb
86 USE modi_convert_patch_teb
87 USE modi_init_snow_lw
88 USE modi_averaged_tsrad_teb
89 USE modi_averaged_albedo_teb
90 USE modi_diag_teb_init_n
91 USE modi_diag_misc_teb_init_n
92 USE modi_end_io_surf_n
93 USE modi_get_luout
95 USE modi_read_prep_teb_snow
96 USE modi_read_teb_date
97 USE modi_read_nam_prep_teb_n
98 USE modi_init_chemical_n
99 USE modi_garden_properties
100 USE modi_hvac_autosize
101 USE modi_goto_wrapper_teb_patch
102 !
103 USE modi_init_teb_garden_n
104 USE modi_init_teb_garden_pgd_n
105 USE modi_init_teb_veg_options_n
106 USE modi_teb_morpho
107 USE modi_init_bem_n
108 USE modi_init_teb_greenroof_n
109 USE modi_init_teb_greenroof_pgd_n
110 USE modi_greenroof_properties
111 USE modi_read_pgd_teb_irrig_n
112 !
113 USE modi_read_cover_garden
114 USE modi_abor1_sfx
115 USE modi_read_teb_canopy_n
116 USE modi_set_surfex_filein
117 !
118 USE yomhook ,ONLY : lhook, dr_hook
119 USE parkind1 ,ONLY : jprb
120 !
121 IMPLICIT NONE
122 !
123 !* 0.1 Declarations of arguments
124 ! -------------------------
125 !
126 !
127 TYPE(data_cover_t), INTENT(INOUT) :: dtco
128 TYPE(diag_surf_atm_t), INTENT(INOUT) :: dgu
129 TYPE(surf_atm_grid_t), INTENT(INOUT) :: ug
130 TYPE(surf_atm_t), INTENT(INOUT) :: u
131 TYPE(ch_isba_t), INTENT(INOUT) :: chi
132 TYPE(data_isba_t), INTENT(INOUT) :: dti
133 TYPE(isba_t), INTENT(INOUT) :: i
134 TYPE(teb_model_t), INTENT(INOUT) :: tm
135 TYPE(teb_garden_model_t), INTENT(INOUT) :: gdm
136 TYPE(teb_greenroof_model_t), INTENT(INOUT) :: grm
137 TYPE(dst_t), INTENT(INOUT) :: dst
138 TYPE(slt_t), INTENT(INOUT) :: slt
139 !
140  CHARACTER(LEN=6), INTENT(IN) :: hprogram ! program calling surf. schemes
141  CHARACTER(LEN=3), INTENT(IN) :: hinit ! choice of fields to initialize
142 INTEGER, INTENT(IN) :: ki ! number of points
143 INTEGER, INTENT(IN) :: ksv ! number of scalars
144 INTEGER, INTENT(IN) :: ksw ! number of short-wave spectral bands
145  CHARACTER(LEN=6), DIMENSION(KSV), INTENT(IN) :: hsv ! name of all scalar variables
146 REAL, DIMENSION(KI), INTENT(IN) :: pco2 ! CO2 concentration (kg/m3)
147 REAL, DIMENSION(KI), INTENT(IN) :: prhoa ! air density
148 REAL, DIMENSION(KI), INTENT(IN) :: pzenith ! solar zenithal angle
149 REAL, DIMENSION(KI), INTENT(IN) :: pazim ! solar azimuthal angle (rad from N, clock)
150 REAL, DIMENSION(KSW), INTENT(IN) :: psw_bands ! middle wavelength of each band
151 REAL, DIMENSION(KI,KSW),INTENT(OUT) :: pdir_alb ! direct albedo for each band
152 REAL, DIMENSION(KI,KSW),INTENT(OUT) :: psca_alb ! diffuse albedo for each band
153 REAL, DIMENSION(KI), INTENT(OUT) :: pemis ! emissivity
154 REAL, DIMENSION(KI), INTENT(OUT) :: ptsrad ! radiative temperature
155 REAL, DIMENSION(KI), INTENT(OUT) :: ptsurf ! surface effective temperature (K)
156 INTEGER, INTENT(IN) :: kyear ! current year (UTC)
157 INTEGER, INTENT(IN) :: kmonth ! current month (UTC)
158 INTEGER, INTENT(IN) :: kday ! current day (UTC)
159 REAL, INTENT(IN) :: ptime ! current time since
160  ! midnight (UTC, s)
161 !
162  CHARACTER(LEN=28), INTENT(IN) :: hatmfile ! atmospheric file name
163  CHARACTER(LEN=6), INTENT(IN) :: hatmfiletype! atmospheric file type
164  CHARACTER(LEN=2), INTENT(IN) :: htest ! must be equal to 'OK'
165 !
166 !* 0.2 Declarations of local variables
167 ! -------------------------------
168 !
169 INTEGER :: ilu ! sizes of TEB arrays
170 INTEGER :: iluout ! unit of output listing file
171 INTEGER :: iresp ! return code
172 !
173 INTEGER :: iswb ! number of shortwave spectral bands
174 INTEGER :: jswb ! loop on shortwave spectral bands
175 !
176 REAL :: zdef_road_dir ! default raod direction
177 REAL, DIMENSION(:), ALLOCATABLE :: zdir_alb ! direct town albedo
178 REAL, DIMENSION(:), ALLOCATABLE :: zsca_alb ! diffuse town albedo
179 !
180 ! local variables for urban green areas
181 REAL, DIMENSION(KI,KSW) :: zdir_sw ! direct SW for each band
182 REAL, DIMENSION(KI,KSW) :: zsca_sw ! diffuse SW for each band
183 REAL, DIMENSION(KI) :: zemis_garden ! emissivity
184 REAL, DIMENSION(KI) :: zalb_garden ! albedo
185 REAL, DIMENSION(KI) :: zts_garden ! radiative temperature
186 !
187 ! local variables for urban greenroofs
188 REAL, DIMENSION(KI) :: zemis_greenroof ! emissivity
189 REAL, DIMENSION(KI) :: zalb_greenroof ! albedo
190 REAL, DIMENSION(KI) :: zts_greenroof ! radiative temperature
191 !
192 INTEGER :: jpatch
193 INTEGER :: iversion, ibugfix
194 
195 REAL(KIND=JPRB) :: zhook_handle
196 !-------------------------------------------------------------------------------
197 !
198 ! Initialisation for IO
199 !
200 IF (lhook) CALL dr_hook('INIT_TEB_N',0,zhook_handle)
201  CALL get_luout(hprogram,iluout)
202 !
203 IF (htest/='OK') THEN
204  CALL abor1_sfx('INIT_TEBN: FATAL ERROR DURING ARGUMENT TRANSFER')
205 END IF
206 !
207 ! Other little things
208 !
209 pdir_alb = xundef
210 psca_alb = xundef
211 pemis = xundef
212 ptsrad = xundef
213 ptsurf = xundef
214 !
215 tm%DGMTO%LSURF_EVAP_BUDGET = .false.
216 !
217 IF (lnam_read) THEN
218  !
219  !* 0. Defaults
220  ! --------
221  !
222  ! 0.1. Hard defaults
223  !
224  CALL default_teb(tm%TOP%CZ0H,tm%TOP%XTSTEP,tm%TOP%XOUT_TSTEP, tm%TOP%CCH_BEM, &
225  tm%T%CUR%XDT_RES, tm%T%CUR%XDT_OFF)
226  CALL default_ch_dep(tm%CHT%CCH_DRY_DEP)
227  CALL default_diag_teb(tm%DGT%N2M,tm%DGT%LSURF_BUDGET,tm%DGT%L2M_MIN_ZS,tm%DGT%LRAD_BUDGET,&
228  tm%DGT%LCOEF,tm%DGT%LSURF_VARS,tm%DGMTO%LSURF_MISC_BUDGET,&
229  tm%DGMTO%LSURF_DIAG_ALBEDO,tm%DGUT%LUTCI,tm%DGT%LPGD,&
230  tm%DGT%LPGD_FIX,tm%DGT%XDIAG_TSTEP)
231 !
232 ENDIF
233 !
234 ! 0.2. Defaults from file header
235 !
236  CALL read_default_teb_n(tm%CHT, tm%DGMTO, tm%DGT, tm%DGUT, grm%TGRO, tm%T, tm%TOP, &
237  hprogram)
238 !
239 !* 1. Reading of configuration:
240 ! -------------------------
241 !
242  CALL read_teb_conf_n(tm%CHT, tm%DGMTO, tm%DGT, tm%DGUT, tm%T, tm%TOP, &
243  hprogram)
244 !
245 !* initialization of snow scheme
246 !
247 IF (hinit=='PRE') THEN
248  DO jpatch=1,tm%TOP%NTEB_PATCH
249  CALL goto_wrapper_teb_patch(tm%B, tm%DGCT, tm%DGMT, tm%T, gdm%TGD, gdm%TGDPE, &
250  grm%TGR, grm%TGRPE, jpatch)
251  CALL read_prep_teb_snow(hprogram,tm%T%CUR%TSNOW_ROOF%SCHEME,tm%T%CUR%TSNOW_ROOF%NLAYER, &
252  tm%T%CUR%TSNOW_ROAD%SCHEME,tm%T%CUR%TSNOW_ROAD%NLAYER)
253  END DO
254 ENDIF
255 !
256 !* 2. Cover fields and grid:
257 ! ---------------------
258 !* date
259 !
260 SELECT CASE (hinit)
261  CASE ('PGD')
262  tm%TOP%TTIME%TDATE%YEAR = nundef
263  tm%TOP%TTIME%TDATE%MONTH= nundef
264  tm%TOP%TTIME%TDATE%DAY = nundef
265  tm%TOP%TTIME%TIME = xundef
266 
267  CASE ('PRE')
268  CALL prep_ctrl_teb(tm%DGT%N2M,tm%DGT%LSURF_BUDGET,tm%DGT%L2M_MIN_ZS,tm%DGT%LRAD_BUDGET,&
269  tm%DGT%LCOEF,tm%DGT%LSURF_VARS,tm%DGMTO%LSURF_EVAP_BUDGET,&
270  tm%DGMTO%LSURF_MISC_BUDGET,tm%DGUT%LUTCI,iluout )
271  IF (lnam_read) CALL read_nam_prep_teb_n(hprogram)
272  CALL read_teb_date(&
273  hprogram,hinit,iluout,hatmfile,hatmfiletype,kyear,kmonth,kday,ptime,tm%TOP%TTIME)
274 
275  CASE default
276  CALL init_io_surf_n(dtco, dgu, u, &
277  hprogram,'TOWN ','TEB ','READ ')
278  CALL read_surf(&
279  hprogram,'DTCUR',tm%TOP%TTIME,iresp)
280  CALL end_io_surf_n(hprogram)
281 END SELECT
282 !
283 !-----------------------------------------------------------------------------------------------------
284 ! READ PGD FILE
285 !-----------------------------------------------------------------------------------------------------
286 !
287 ! Initialisation for IO
288 !
289  CALL set_surfex_filein(hprogram,'PGD ') ! change input file name to pgd name
290  CALL init_io_surf_n(dtco, dgu, u, &
291  hprogram,'TOWN ','TEB ','READ ')
292 !
293  CALL read_surf(&
294  hprogram,'VERSION',iversion,iresp)
295  CALL read_surf(&
296  hprogram,'BUG',ibugfix,iresp)
297 !
298 ! Reading of the fields
299 !
300  CALL read_cover_garden(&
301  hprogram,tm%TOP%LGARDEN)
302 !
303  CALL read_pgd_teb_n(dtco, u, tm, &
304  hprogram)
305 !
306  CALL end_io_surf_n(hprogram)
307 !
308 !* Fraction of each patch in the grid mesh
309 !
310 ilu = SIZE(tm%TOP%XCOVER,1)
311 !
312 ALLOCATE(tm%TOP%XTEB_PATCH(ilu,tm%TOP%NTEB_PATCH))
313  CALL convert_teb(tm%TOP, &
314  tm%TOP%XCOVER,tm%TOP%XTEB_PATCH)
315 !
316  CALL set_surfex_filein(hprogram,'PREP') ! restore input file name
317  CALL init_io_surf_n(dtco, dgu, u, &
318  hprogram,'TOWN ','TEB ','READ ')
319 !
320  CALL read_surf(&
321  hprogram,'VERSION',iversion,iresp)
322  CALL read_surf(&
323  hprogram,'BUG',ibugfix,iresp)
324 !
325 !* reads what is the option defined for road orientations & walls
326 !
327 IF (hinit=='ALL') THEN
328  tm%TOP%CROAD_DIR='UNIF'
329  tm%TOP%CWALL_OPT='UNIF'
330  IF (iversion>7 .OR. (iversion==7 .AND. ibugfix>=3)) THEN
331  CALL read_surf(&
332  hprogram,'ROAD_DIR',tm%TOP%CROAD_DIR,iresp)
333  CALL read_surf(&
334  hprogram,'WALL_OPT',tm%TOP%CWALL_OPT,iresp)
335  END IF
336 END IF
337  CALL end_io_surf_n(hprogram)
338 !-----------------------------------------------------------------------------------
339 !
340 !* LOOP ON TEB PATCHES
341 ! -------------------
342 !
343 DO jpatch=1,tm%TOP%NTEB_PATCH
344 
345  CALL goto_wrapper_teb_patch(tm%B, tm%DGCT, tm%DGMT, tm%T, &
346  gdm%TGD, gdm%TGDPE, grm%TGR, grm%TGRPE, jpatch)
347  !-----------------------------------------------------------------------------------
348  !
349  !* 3. Physiographic data fields from land cover:
350  ! -----------------------------------------
351  !
352  ALLOCATE(tm%T%CUR%XZ0_TOWN (ilu))
353  ALLOCATE(tm%T%CUR%XALB_ROOF (ilu))
354  ALLOCATE(tm%T%CUR%XEMIS_ROOF (ilu))
355  ALLOCATE(tm%T%CUR%XALB_ROAD (ilu))
356  ALLOCATE(tm%T%CUR%XEMIS_ROAD (ilu))
357  ALLOCATE(tm%T%CUR%XALB_WALL (ilu))
358  ALLOCATE(tm%T%CUR%XEMIS_WALL (ilu))
359  ALLOCATE(tm%T%CUR%XBLD (ilu))
360  ALLOCATE(tm%T%CUR%XROAD_DIR (ilu))
361  ALLOCATE(tm%T%CUR%XROAD (ilu))
362  ALLOCATE(tm%T%CUR%XBLD_HEIGHT (ilu))
363  ALLOCATE(tm%T%CUR%XWALL_O_HOR (ilu))
364  ALLOCATE(tm%T%CUR%XCAN_HW_RATIO(ilu))
365  ALLOCATE(tm%T%CUR%XROAD_O_GRND(ilu))
366  ALLOCATE(tm%T%CUR%XGARDEN_O_GRND(ilu))
367  ALLOCATE(tm%T%CUR%XWALL_O_GRND(ilu))
368  ALLOCATE(tm%T%CUR%XWALL_O_BLD(ilu))
369  ALLOCATE(tm%T%CUR%XH_TRAFFIC (ilu))
370  ALLOCATE(tm%T%CUR%XLE_TRAFFIC (ilu))
371  ALLOCATE(tm%T%CUR%XH_INDUSTRY (ilu))
372  ALLOCATE(tm%T%CUR%XLE_INDUSTRY (ilu))
373  ALLOCATE(tm%T%CUR%XHC_ROOF (ilu,tm%TOP%NROOF_LAYER))
374  ALLOCATE(tm%T%CUR%XTC_ROOF (ilu,tm%TOP%NROOF_LAYER))
375  ALLOCATE(tm%T%CUR%XD_ROOF (ilu,tm%TOP%NROOF_LAYER))
376  ALLOCATE(tm%T%CUR%XHC_ROAD (ilu,tm%TOP%NROAD_LAYER))
377  ALLOCATE(tm%T%CUR%XTC_ROAD (ilu,tm%TOP%NROAD_LAYER))
378  ALLOCATE(tm%T%CUR%XD_ROAD (ilu,tm%TOP%NROAD_LAYER))
379  ALLOCATE(tm%T%CUR%XHC_WALL (ilu,tm%TOP%NWALL_LAYER))
380  ALLOCATE(tm%T%CUR%XTC_WALL (ilu,tm%TOP%NWALL_LAYER))
381  ALLOCATE(tm%T%CUR%XD_WALL (ilu,tm%TOP%NWALL_LAYER))
382  ALLOCATE(tm%T%CUR%XROUGH_ROOF (ilu))
383  ALLOCATE(tm%T%CUR%XROUGH_WALL (ilu))
384  ALLOCATE(tm%T%CUR%XRESIDENTIAL (ilu))
385  ALLOCATE(tm%T%CUR%XGREENROOF (ilu))
386  ALLOCATE(tm%T%CUR%XGARDEN (ilu))
387  ALLOCATE(tm%TPN%XEMIS_PANEL (ilu))
388  ALLOCATE(tm%TPN%XALB_PANEL (ilu))
389  ALLOCATE(tm%TPN%XEFF_PANEL (ilu))
390  ALLOCATE(tm%TPN%XFRAC_PANEL (ilu))
391  !
392  tm%T%CUR%XROAD_DIR(:) = 0.
393  tm%T%CUR%XROAD (:) = 0.
394  !
395  zdef_road_dir = 0.
396  IF (tm%TOP%CROAD_DIR/='UNIF') THEN
397  !* road direction if not specified by the user depends on patch number
398  ! First patch has a Notrh-South road. Other patches have roads spaced by
399  ! regular angles
400  zdef_road_dir = 180. * float(jpatch-1) / float(tm%TOP%NTEB_PATCH)
401  END IF
402  !
403  CALL convert_patch_teb(tm%BDD, tm%DTB, dtco, tm%DTT, tm%TOP, &
404  tm%TOP%XCOVER, tm%TOP%LCOVER, zdef_road_dir, &
405  pz0_town=tm%T%CUR%XZ0_TOWN, palb_roof=tm%T%CUR%XALB_ROOF, &
406  pemis_roof=tm%T%CUR%XEMIS_ROOF,phc_roof=tm%T%CUR%XHC_ROOF,ptc_roof=tm%T%CUR%XTC_ROOF, &
407  pd_roof=tm%T%CUR%XD_ROOF, palb_road=tm%T%CUR%XALB_ROAD, &
408  pemis_road=tm%T%CUR%XEMIS_ROAD,phc_road=tm%T%CUR%XHC_ROAD,ptc_road=tm%T%CUR%XTC_ROAD, &
409  pd_road=tm%T%CUR%XD_ROAD, palb_wall=tm%T%CUR%XALB_WALL, &
410  pemis_wall=tm%T%CUR%XEMIS_WALL,phc_wall=tm%T%CUR%XHC_WALL,ptc_wall=tm%T%CUR%XTC_WALL, &
411  pd_wall=tm%T%CUR%XD_WALL, pbld_height=tm%T%CUR%XBLD_HEIGHT, &
412  pwall_o_hor=tm%T%CUR%XWALL_O_HOR,pbld=tm%T%CUR%XBLD, proad_dir=tm%T%CUR%XROAD_DIR, &
413  pgarden=tm%T%CUR%XGARDEN, &
414  ph_traffic=tm%T%CUR%XH_TRAFFIC, ple_traffic=tm%T%CUR%XLE_TRAFFIC, &
415  ph_industry=tm%T%CUR%XH_INDUSTRY, ple_industry=tm%T%CUR%XLE_INDUSTRY, &
416  prough_roof = tm%T%CUR%XROUGH_ROOF, prough_wall = tm%T%CUR%XROUGH_WALL, &
417  presidential = tm%T%CUR%XRESIDENTIAL, &
418  pgreenroof = tm%T%CUR%XGREENROOF, &
419  pemis_panel=tm%TPN%XEMIS_PANEL, palb_panel=tm%TPN%XALB_PANEL, &
420  peff_panel=tm%TPN%XEFF_PANEL, pfrac_panel=tm%TPN%XFRAC_PANEL )
421  !
422  IF (.NOT. tm%TOP%LGREENROOF .AND. maxval(tm%T%CUR%XGREENROOF)>0. ) THEN
423  WRITE(iluout,*) 'You choose NOT to have greenroofs, BUT your greenroof fraction is not zero'
424  WRITE(iluout,*) 'Please activate the greenroof option (and rerun the SURFEX suite from the PGD step)'
425  WRITE(iluout,*) 'Or be sure NOT to have any greenroofs in your area'
426  CALL abor1_sfx('INIT_TEBN: GREENROOF OPTION NOT ACTIVATED WHILE GREENROOFS ARE PRESENT')
427  ENDIF
428  !
429  IF (.NOT. tm%TOP%LSOLAR_PANEL .AND. maxval(tm%TPN%XFRAC_PANEL)>0. ) THEN
430  WRITE(iluout,*) 'You choose NOT to have solar panels, BUT your solar panel fraction is not zero'
431  WRITE(iluout,*) 'Please activate the solar panel option (and rerun the SURFEX suite from the PGD step)'
432  WRITE(iluout,*) 'Or be sure NOT to have any solar panel in your area'
433  CALL abor1_sfx('INIT_TEBN: SOLAR_PANEL OPTION NOT ACTIVATED WHILE SOLAR PANELS ARE PRESENT')
434  ENDIF
435  !
436  !-------------------------------------------------------------------------------
437  !
438  !* 5. Sky-view-factors:
439  ! ----------------
440  !
441  ALLOCATE(tm%T%CUR%XSVF_ROAD (ilu))
442  ALLOCATE(tm%T%CUR%XSVF_GARDEN(ilu))
443  ALLOCATE(tm%T%CUR%XSVF_WALL (ilu))
444  !
445  ALLOCATE(tm%B%CUR%XGR (ilu))
446  ALLOCATE(tm%B%CUR%XALB_WIN (ilu))
447  ALLOCATE(tm%B%CUR%XF_WASTE_CAN (ilu))
448  !
449  !
450  CALL teb_morpho(hprogram, tm%T%CUR%XBLD, tm%T%CUR%XWALL_O_HOR, tm%T%CUR%XGARDEN, tm%T%CUR%XBLD_HEIGHT, &
451  tm%T%CUR%XROAD, tm%T%CUR%XROAD_O_GRND, tm%T%CUR%XGARDEN_O_GRND, tm%T%CUR%XWALL_O_GRND, &
452  tm%T%CUR%XCAN_HW_RATIO, tm%T%CUR%XSVF_ROAD, tm%T%CUR%XSVF_GARDEN, tm%T%CUR%XSVF_WALL, &
453  tm%T%CUR%XZ0_TOWN, tm%T%CUR%XWALL_O_BLD, tm%T%CUR%XH_TRAFFIC, tm%T%CUR%XLE_TRAFFIC )
454  !
455  !-------------------------------------------------------------------------------
456  !
457  !* 6. Building Energy Model
458  ! ---------------------
459  !
460  CALL init_bem_n(dgu, dtco, ug, u, tm, &
461  iluout)
462  !
463  !-------------------------------------------------------------------------------
464  !
465  !* 7. Case of urban green areas
466  ! -------------------------
467  !
468  IF (tm%TOP%LGARDEN) THEN
469  !
470  CALL set_surfex_filein(hprogram,'PGD ') ! change input file name to pgd name
471  CALL init_io_surf_n(dtco, dgu, u, &
472  hprogram,'TOWN ','TEB ','READ ')
473  IF (jpatch==1) CALL init_teb_veg_options_n(&
474  tm%CHT, tm%DGMTO, gdm%TGDO, gdm%TVG, &
475  hprogram)
476  CALL init_teb_garden_pgd_n(dtco, u, chi, dti, i, dst, slt, tm%CHT, tm%TG, tm%T, tm%TOP, gdm, &
477  hprogram,hinit,(jpatch==1),ki,ksv,hsv,iversion,ibugfix,pco2,prhoa)
478  ! Case of urban green roofs
479  IF (tm%TOP%LGREENROOF) CALL init_teb_greenroof_pgd_n(dtco, u, chi, dti, i, dst, slt, &
480  tm%CHT, tm%TG, tm%T, tm%TOP, gdm%TVG, grm, &
481  hprogram,hinit,(jpatch==1),ki,ksv,hsv,iversion,pco2,prhoa)
482  CALL end_io_surf_n(hprogram)
483  !
484  ENDIF
485 !-------------------------------------------------------------------------------
486 END DO ! end of loop on TEB patches
487 !-------------------------------------------------------------------------------
488 !
489 !* Read irrigation parameters for TEB
490 !
491  CALL set_surfex_filein(hprogram,'PGD ') ! change input file name to pgd name
492  CALL init_io_surf_n(dtco, dgu, u, &
493  hprogram,'TOWN ','TEB ','READ ')
494  CALL read_pgd_teb_irrig_n(&
495  tm%TG, gdm%TIR, &
496  hprogram)
497  CALL end_io_surf_n(hprogram)
498 !
499 !-------------------------------------------------------------------------------
500 !
501 !* if only physiographic fields are to be initialized, stop here.
502 !
503 IF (hinit/='ALL' .AND. hinit/='SOD') THEN
504  IF (lhook) CALL dr_hook('INIT_TEB_N',1,zhook_handle)
505  RETURN
506 END IF
507 !
508 !-------------------------------------------------------------------------------
509 !
510 ! Initialisation for IO
511 !
512  CALL set_surfex_filein(hprogram,'PREP') ! restore input file name
513  CALL init_io_surf_n(dtco, dgu, u, &
514  hprogram,'TOWN ','TEB ','READ ')
515 !
516 !* 9. Prognostic fields:
517 ! -----------------
518 !
519 ! -------------------------
520 !
521 
522 !
523 !* LOOP ON TEB PATCHES
524 ! -------------------
525 !
526 DO jpatch=1,tm%TOP%NTEB_PATCH
527  CALL goto_wrapper_teb_patch(tm%B, tm%DGCT, tm%DGMT, tm%T, &
528  gdm%TGD, gdm%TGDPE, grm%TGR, grm%TGRPE, jpatch)
529 !
530 !* TEB fields
531  CALL read_teb_n(tm%B, tm%BOP, dtco, dgu, u, tm%T, tm%TOP, tm%TPN, &
532  hprogram,jpatch)
533 !
534  ALLOCATE(tm%T%CUR%XAC_ROOF (ilu))
535  ALLOCATE(tm%T%CUR%XAC_ROAD (ilu))
536  ALLOCATE(tm%T%CUR%XAC_WALL (ilu))
537  ALLOCATE(tm%T%CUR%XAC_TOP (ilu))
538  ALLOCATE(tm%T%CUR%XAC_ROOF_WAT(ilu))
539  ALLOCATE(tm%T%CUR%XAC_ROAD_WAT(ilu))
540  ALLOCATE(tm%T%CUR%XQSAT_ROOF (ilu))
541  ALLOCATE(tm%T%CUR%XQSAT_ROAD (ilu))
542  ALLOCATE(tm%T%CUR%XDELT_ROOF (ilu))
543  ALLOCATE(tm%T%CUR%XDELT_ROAD (ilu))
544 !
545 !* Case of urban green areas
546  IF (tm%TOP%LGARDEN) THEN
547 ! CALL SET_SURFEX_FILEIN(HPROGRAM,'PREP') ! change input file name to pgd name
548 ! CALL INIT_IO_SURF_n(HPROGRAM,'TOWN ','TEB ','READ ')
549  CALL init_teb_garden_n(dtco, dgu, ug, u, tm%DGMTO, tm%TOP, gdm, &
550  hprogram,hinit,ki,ksw,psw_bands,jpatch)
551  ! Case of urban green roofs
552  IF (tm%TOP%LGREENROOF) CALL init_teb_greenroof_n(dtco, u, tm%DGMTO, tm%TOP, gdm%TVG, grm, &
553  hprogram,hinit,ki,ksv,psw_bands,jpatch)
554 ! CALL END_IO_SURF_n(HPROGRAM)
555  ENDIF
556 !-------------------------------------------------------------------------------
557 !
558 !* 10. Infra-red Radiative fields:
559 ! --------------------------
560 !
561 !* snow long-wave properties (not initialized in read_gr_snow)
562 !
563  CALL init_snow_lw(xemissn,tm%T%CUR%TSNOW_ROOF)
564  CALL init_snow_lw(xemissn,tm%T%CUR%TSNOW_ROAD)
565 !
566  IF (tm%TOP%LGARDEN) THEN
567  zdir_sw=0. ! night as first guess for albedo computation
568  zsca_sw=0. !
569  CALL garden_properties(tm%T, gdm, &
570  zdir_sw, zsca_sw, psw_bands, ksw, &
571  zts_garden, zemis_garden, zalb_garden )
572  ELSE
573  zalb_garden = xundef
574  zemis_garden= xundef
575  zts_garden = xundef
576  END IF
577  !
578  IF (tm%TOP%LGREENROOF) THEN
579  zdir_sw=0. ! night as first guess for albedo computation
580  zsca_sw=0. !
581  CALL greenroof_properties(tm%T, gdm%TVG, grm, &
582  zdir_sw, zsca_sw, psw_bands, ksw, &
583  zts_greenroof, zemis_greenroof, zalb_greenroof )
584  ELSE
585  zalb_greenroof = xundef
586  zemis_greenroof = xundef
587  zts_greenroof = xundef
588  END IF
589 !
590 !* averaged albedo, emissivity and radiative temperature
591 !
592  CALL averaged_tsrad_teb(tm%T%CUR%XEMIS_ROOF,tm%T%CUR%XT_ROOF(:,1), &
593  tm%T%CUR%XEMIS_ROAD,tm%T%CUR%XT_ROAD(:,1), &
594  tm%T%CUR%XEMIS_WALL, &
595  tm%T%CUR%XT_WALL_A(:,1), &
596  tm%T%CUR%XT_WALL_B(:,1), &
597  zemis_garden, zts_garden, &
598  zemis_greenroof, zts_greenroof,&
599  tm%T%CUR%TSNOW_ROOF,tm%T%CUR%TSNOW_ROAD, &
600  tm%T%CUR%XROAD, tm%T%CUR%XGREENROOF, tm%T%CUR%XGARDEN, &
601  tm%T%CUR%XBLD,tm%T%CUR%XWALL_O_HOR, &
602  tm%T%CUR%XSVF_ROAD,tm%T%CUR%XSVF_WALL, &
603  tm%T%CUR%XSVF_GARDEN, &
604  pemis,ptsrad, tm%B%CUR%XT_WIN1, &
605  tm%B%CUR%XGR )
606 !
607 !
608 !* 9. Visible and near-infra-red Radiative fields:
609 ! -------------------------------------------
610 !
611  ALLOCATE(zdir_alb(ilu))
612  ALLOCATE(zsca_alb(ilu))
613 !
614  CALL averaged_albedo_teb(tm%TOP%CBEM,tm%TOP%CROAD_DIR,tm%TOP%CWALL_OPT,pzenith,pazim, &
615  tm%T%CUR%XBLD, tm%T%CUR%XGARDEN, tm%T%CUR%XROAD_DIR, tm%T%CUR%XROAD, &
616  tm%T%CUR%XGREENROOF, tm%TPN%XFRAC_PANEL, tm%TPN%XALB_PANEL, &
617  tm%T%CUR%XWALL_O_HOR, tm%T%CUR%XCAN_HW_RATIO, &
618  tm%T%CUR%XALB_ROOF, tm%T%CUR%XALB_ROAD, tm%T%CUR%XSVF_ROAD, &
619  tm%T%CUR%XALB_WALL, tm%T%CUR%XSVF_WALL, &
620  zalb_garden, tm%T%CUR%XSVF_GARDEN, zalb_greenroof, &
621  tm%T%CUR%TSNOW_ROOF, tm%T%CUR%TSNOW_ROAD, &
622  tm%B%CUR%XGR, tm%B%CUR%XSHGC, tm%B%CUR%XSHGC_SH, &
623  tm%B%CUR%XABS_WIN, tm%B%CUR%XALB_WIN, &
624  tm%B%CUR%LSHAD_DAY, &
625  zdir_alb, zsca_alb, tm%B%CUR%XTRAN_WIN )
626 
627  iswb=SIZE(psw_bands)
628  DO jswb=1,iswb
629  pdir_alb(:,jswb) = zdir_alb(:)
630  psca_alb(:,jswb) = zsca_alb(:)
631  END DO
632  !
633  DEALLOCATE(zdir_alb)
634  DEALLOCATE(zsca_alb)
635 !-------------------------------------------------------------------------------
636 !
637 !* 10. Chemistry /dust
638 ! ---------------
639 !
640  CALL init_chemical_n(iluout, ksv, hsv, tm%CHT%SVT, &
641  tm%CHT%CCH_NAMES, tm%CHT%CAER_NAMES, &
642  hdstnames=tm%CHT%CDSTNAMES, hsltnames=tm%CHT%CSLTNAMES )
643 !
644 !* Initialization of dry deposition scheme (chemistry)
645 !
646  IF (tm%CHT%SVT%NBEQ>0 .AND. tm%CHT%CCH_DRY_DEP=='WES89') THEN
647  ALLOCATE(tm%CHT%XDEP(ilu,tm%CHT%SVT%NBEQ))
648  ELSE
649  ALLOCATE(tm%CHT%XDEP(0,0))
650  END IF
651 !
652 !-------------------------------------------------------------------------------
653 END DO ! end of loop on patches
654 !
655 IF (hinit/='ALL') THEN
656  CALL end_io_surf_n(hprogram)
657  IF (lhook) CALL dr_hook('INIT_TEB_N',1,zhook_handle)
658  RETURN
659 END IF
660 !-------------------------------------------------------------------------------
661 !
662 !* 7. Canopy air fields:
663 ! ------------------
664 !
665  CALL read_teb_canopy_n(dtco, u, tm%TCP, tm%TOP, &
666  hprogram)
667 !
668 !-------------------------------------------------------------------------------
669 !
670 !* 11. Diagnostics:
671 ! -----------
672 !
673  CALL diag_teb_init_n(tm%DGT, tm%DGUT, &
674  hprogram,ilu,iswb)
675 DO jpatch=1,tm%TOP%NTEB_PATCH
676  CALL goto_wrapper_teb_patch(tm%B, tm%DGCT, tm%DGMT, tm%T, &
677  gdm%TGD, gdm%TGDPE, grm%TGR, grm%TGRPE, jpatch)
678  CALL diag_misc_teb_init_n(tm%DGCT, tm%DGMT, tm%DGMTO, tm%TOP, &
679  hprogram,ilu,iswb)
680 END DO ! end of loop on patches
681 !
682 !-------------------------------------------------------------------------------
683 !
684 ! End of IO
685 !
686  CALL end_io_surf_n(hprogram)
687 IF (lhook) CALL dr_hook('INIT_TEB_N',1,zhook_handle)
688 !
689 !
690 END SUBROUTINE init_teb_n
subroutine averaged_albedo_teb(HBEM, HROAD_DIR, HWALL_OPT, PZENITH, PAZIM, PBLD, PGARDEN, PROAD_DIR, PROAD, PFRAC_GR, PFRAC_PANEL, PALB_PANEL, PWALL_O_HOR, PCAN_HW_RATIO, PALB_ROOF, PALB_ROAD, PSVF_ROAD, PALB_WALL, PSVF_WALL, PALB_GARDEN, PSVF_GARDEN, PALB_GREENROOF, TSNOW_ROOF, TSNOW_ROAD, PGR, PSHGC, PSHGC_SH, PABS_WIN, PALB_WIN, OSHAD_DAY, PDIR_ALB_TOWN, PSCA_ALB_TOWN, PTRAN_WIN)
subroutine init_io_surf_n(DTCO, DGU, U, HPROGRAM, HMASK, HSCHEME, HACTION)
subroutine read_cover_garden(HPROGRAM, OGARDEN, HDIR)
subroutine prep_ctrl_teb(K2M, OSURF_BUDGET, O2M_MIN_ZS, ORAD_BUDGET, OCOEF, OSURF_VARS, OSURF_EVAP_BUDGET, OSURF_MISC_BUDGET, OUTCI, KLUOUT)
subroutine set_surfex_filein(HPROGRAM, HMASK)
subroutine averaged_tsrad_teb(PEMIS_ROOF, PTS_ROOF, PEMIS_ROAD, PTS_ROAD, PEMIS_WALL, PTS_WALL_A, PTS_WALL_B, PEMIS_GARDEN, PTS_GARDEN, PEMIS_GREENROOF, PTS_GREENROOF, TSNOW_ROOF, TSNOW_ROAD, PROAD, PFRAC_GR, PGARDEN, PBLD, PWALL_O_HOR, PSVF_ROAD, PSVF_WALL, PSVF_GARDEN, PEMIS, PTSRAD, PT_WIN1, PGR)
subroutine read_pgd_teb_n(DTCO, U, TM, HPROGRAM)
subroutine init_snow_lw(PEMISSN, TPSNOW)
Definition: init_snow_lw.F90:6
subroutine init_teb_veg_options_n(CHT, DGMTO, TGDO, TVG, HPROGRAM)
subroutine teb_morpho(HPROGRAM, PBLD, PWALL_O_HOR, PGARDEN, PBLD_HEIGHT, PROAD, PROAD_O_GRND, PGARDEN_O_GRND, PWALL_O_GRND, PCAN_HW_RATIO, PSVF_ROAD, PSVF_GARDEN, PSVF_WALL, PZ0_TOWN, PWALL_O_BLD, PH_TRAFFIC, PLE_TRAFFIC)
Definition: teb_morpho.F90:6
subroutine read_prep_teb_snow(HPROGRAM, HSNOW_ROOF, KSNOW_ROOF, HSNOW_ROAD, KSNOW_ROAD, HFILE, HFILETYPE, HFILEPGD, HFILEPGDTYPE)
subroutine abor1_sfx(YTEXT)
Definition: abor1_sfx.F90:6
subroutine init_teb_greenroof_n(DTCO, U, DGMTO, TOP, TVG, GRM, HPROGRAM, HINIT, KI, KSW, PSW_BANDS, KPATCH)
subroutine init_teb_garden_pgd_n(DTCO, U, CHI, DTI, I, DST, SLT, CHT, TG, T, TOP, GDM, HPROGRAM, HINIT, OREAD_PGD, KI, KSV, HSV, KVERSION, KBUGFIX, PCO2, PRHOA)
subroutine goto_wrapper_teb_patch(B, DGCT, DGMT, T, TGD, TGDPE, TGR, TGRPE, KTO_PATCH)
subroutine read_default_teb_n(CHT, DGMTO, DGT, DGUT, TGRO, T, TOP, HPROGRAM)
subroutine read_teb_n(B, BOP, DTCO, DGU, U, T, TOP, TPN, HPROGRAM, KPATCH)
Definition: read_tebn.F90:6
subroutine default_ch_dep(HCH_DRY_DEP)
subroutine convert_teb(TOP, PCOVER, PTEB_PATCH)
Definition: convert_teb.F90:6
subroutine end_io_surf_n(HPROGRAM)
Definition: end_io_surfn.F90:6
subroutine read_teb_date(HPROGRAM, HINIT, KLUOUT, HATMFILE, HATMFILETYPE, KYEAR, KMONTH, KDAY, PTIME, TPTIME)
subroutine get_luout(HPROGRAM, KLUOUT)
Definition: get_luout.F90:6
subroutine default_teb(HZ0H, PTSTEP, POUT_TSTEP, HCH_BEM, PDT_RES, PDT_OFF)
Definition: default_teb.F90:6
subroutine diag_misc_teb_init_n(DGCT, DGMT, DGMTO, TOP, HPROGRAM, KLU, KSW)
subroutine default_diag_teb(K2M, OSURF_BUDGET, O2M_MIN_ZS, ORAD_BUDGET, OCOEF, OSURF_VARS, OSURF_MISC_BUDGET, OSURF_DIAG_ALBEDO, OUTCI, OPGD, OPGD_FIX, PDIAG_TSTEP)
subroutine read_teb_canopy_n(DTCO, U, TCP, TOP, HPROGRAM)
subroutine init_teb_garden_n(DTCO, DGU, UG, U, DGMTO, TOP, GDM, HPROGRAM, HINIT, KI, KSW, PSW_BANDS, KPATCH)
subroutine convert_patch_teb(BDD, DTB, DTCO, DTT, TOP, PCOVER, OCOVER, PDEF_ROAD_DIR, PZ0_TOWN, PALB_ROOF, PEMIS_ROOF, PHC_ROOF, PTC_ROOF, PD_ROOF, PALB_ROAD, PEMIS_ROAD, PHC_ROAD, PTC_ROAD, PD_ROAD, PALB_WALL, PEMIS_WALL, PHC_WALL, PTC_WALL, PD_WALL, PBLD_HEIGHT, PWALL_O_HOR, PBLD, PGARDEN, PROAD_DIR, PH_TRAFFIC, PLE_TRAFFIC, PH_INDUSTRY, PLE_INDUSTRY, PHC_FLOOR, PTC_FLOOR, PD_FLOOR, PTCOOL_TARGET, PTHEAT_TARGET, PF_WASTE_CAN, PEFF_HEAT, PQIN, PQIN_FRAD, PSHGC, PU_WIN, PGR, PSHGC_SH, PFLOOR_HEIGHT, PINF, PF_WATER_COND, PQIN_FLAT, PHR_TARGET, PV_VENT, PCAP_SYS_HEAT, PCAP_SYS_RAT, PT_ADP, PM_SYS_RAT, PCOP_RAT, PT_SIZE_MAX, PT_SIZE_MIN, PSHADE, PNATVENT, PROUGH_ROOF, PRESIDENTIAL, PROUGH_WALL, PGREENROOF, PEMIS_PANEL, PALB_PANEL, PEFF_PANEL, PFRAC_PANEL)
subroutine init_teb_greenroof_pgd_n(DTCO, U, CHI, DTI, I, DST, SLT, CHT, TG, T, TOP, TVG, GRM, HPROGRAM, HINIT, OREAD_PGD, KI, KSV, HSV, KVERSION, PCO2, PRHOA)
subroutine read_teb_conf_n(CHT, DGMTO, DGT, DGUT, T, TOP, HPROGRAM)
subroutine read_nam_prep_teb_n(HPROGRAM)
subroutine garden_properties(T, GDM, PDIR_SW, PSCA_SW, PSW_BANDS, KSW, PTS, PEMIS, PALB, PTA, PALBNIR_TVEG, PALBVIS_TVEG, PALBNIR_TSOIL, PALBVIS_TSOIL)
subroutine greenroof_properties(T, TVG, GRM, PDIR_SW, PSCA_SW, PSW_BANDS, KSW, PTS, PEMIS, PALB, PTA, PALBNIR_TVEG, PALBVIS_TVEG, PALBNIR_TSOIL, PALBVIS_TSOIL)
subroutine diag_teb_init_n(DGT, DGUT, HPROGRAM, KLU, KSW)
subroutine init_teb_n(DTCO, DGU, UG, U, CHI, DTI, I, TM, GDM, GRM, DST, SLT, HPROGRAM, HINIT, KI, KSV, KSW, HSV, PCO2, PRHOA, PZENITH, PAZIM, PSW_BANDS, PDIR_ALB, PSCA_ALB, PEMIS, PTSRAD, PTSURF, KYEAR, KMONTH, KDAY, PTIME, HATMFILE, HATMFILETYPE, HTEST)
Definition: init_tebn.F90:6
subroutine read_pgd_teb_irrig_n(TG, TIR, HPROGRAM)
subroutine init_chemical_n(KLUOUT, KSV, HSV, YSV, HCH_NAMES, HAER_NAMES, HDSTNAMES, HSLTNAMES)
subroutine init_bem_n(DGU, DTCO, UG, U, TM, KLUOUT)
Definition: init_bemn.F90:6