SURFEX v8.1
General documentation of Surfex
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, UG, U, GCP, CHT, DTT, SB, TG, TOP, TPN, &
7  TIR, NT, TD, BDD, BOP, DTB, NB, GDM, GRM, &
8  HPROGRAM, HINIT, KI, KSV, KSW, HSV, PCO2, &
9  PRHOA, PZENITH, PAZIM, PSW_BANDS, PDIR_ALB, &
10  PSCA_ALB, PEMIS, PTSRAD, PTSURF, KYEAR, KMONTH, &
11  KDAY, PTIME, HATMFILE, HATMFILETYPE, HTEST )
12 ! #############################################################
13 !
14 !!**** *INIT_TEB_n* - routine to initialize TEB
15 !!
16 !! PURPOSE
17 !! -------
18 !!
19 !!** METHOD
20 !! ------
21 !!
22 !! EXTERNAL
23 !! --------
24 !!
25 !!
26 !! IMPLICIT ARGUMENTS
27 !! ------------------
28 !!
29 !! REFERENCE
30 !! ---------
31 !!
32 !!
33 !! AUTHOR
34 !! ------
35 !! V. Masson *Meteo France*
36 !!
37 !! MODIFICATIONS
38 !! -------------
39 !! Original 01/2003
40 !! G. Pigeon 09/2012: add ROUGH_WALL/ROUGH_ROOF/CH_BEM for conv. coef.
41 !! B. Decharme 04/2013 new coupling variables
42 !! delete CTOPREG option (never used)
43 !-------------------------------------------------------------------------------
44 !
45 !* 0. DECLARATIONS
46 ! ------------
47 !
50 USE modd_surf_atm_n, ONLY : surf_atm_t
52 !
53 USE modd_ch_teb_n, ONLY : ch_teb_t
54 USE modd_data_teb_n, ONLY : data_teb_t
55 USE modd_canopy_n, ONLY: canopy_t
56 USE modd_sfx_grid_n, ONLY : grid_t
58 USE modd_teb_panel_n, ONLY : teb_panel_t
59 USE modd_teb_irrig_n, ONLY : teb_irrig_t
60 USE modd_teb_n, ONLY : teb_np_t
64 USE modd_data_bem_n, ONLY : data_bem_t
65 USE modd_bem_n, ONLY : bem_np_t
66 !
67 USE modd_io_surf_asc,ONLY: cmask
68 USE modd_snow_par, ONLY : xemissn
69 !
70 USE modd_read_namelist, ONLY : lnam_read
71 !
75 USE modd_surf_par, ONLY: xundef, nundef
76 !
78 !
79 USE modi_init_io_surf_n
80 USE modi_default_ch_dep
81 USE modi_default_teb
82 USE modi_default_diag_teb
83 USE modi_read_default_teb_n
84 USE modi_read_teb_conf_n
85 USE modi_prep_ctrl_teb
86 USE modi_read_teb_n
87 USE modi_read_pgd_teb_n
88 USE modi_convert_teb
89 USE modi_convert_patch_teb
90 USE modi_init_snow_lw
91 USE modi_averaged_tsrad_teb
92 USE modi_averaged_albedo_teb
93 USE modi_diag_teb_init_n
94 USE modi_diag_misc_teb_init_n
95 USE modi_end_io_surf_n
96 USE modi_get_luout
98 USE modi_read_prep_teb_snow
99 USE modi_read_teb_date
100 USE modi_read_nam_prep_teb_n
101 USE modi_init_chemical_n
102 USE modi_teb_veg_properties
103 USE modi_hvac_autosize
104 !
105 USE modi_init_teb_garden_n
106 USE modi_init_teb_garden_pgd_n
107 USE modi_init_teb_veg_options_n
108 USE modi_teb_morpho
109 USE modi_init_bem_n
110 USE modi_init_teb_greenroof_n
111 USE modi_init_teb_greenroof_pgd_n
112 USE modi_read_pgd_teb_irrig_n
113 !
114 USE modi_read_cover_garden
115 USE modi_abor1_sfx
116 USE modi_read_sbl_n
117 USE modi_set_surfex_filein
118 !
119 USE yomhook ,ONLY : lhook, dr_hook
120 USE parkind1 ,ONLY : jprb
121 !
122 IMPLICIT NONE
123 !
124 !* 0.1 Declarations of arguments
125 ! -------------------------
126 !
127 !
128 TYPE(data_cover_t), INTENT(INOUT) :: DTCO
129 TYPE(surf_atm_grid_t), INTENT(INOUT) :: UG
130 TYPE(surf_atm_t), INTENT(INOUT) :: U
131 TYPE(grid_conf_proj_t),INTENT(INOUT) :: GCP
132 !
133 TYPE(ch_teb_t), INTENT(INOUT) :: CHT
134 TYPE(data_teb_t), INTENT(INOUT) :: DTT
135 TYPE(canopy_t), INTENT(INOUT) :: SB
136 TYPE(grid_t), INTENT(INOUT) :: TG
137 TYPE(teb_options_t), INTENT(INOUT) :: TOP
138 TYPE(teb_panel_t), INTENT(INOUT) :: TPN
139 TYPE(teb_irrig_t), INTENT(INOUT) :: TIR
140 TYPE(teb_np_t), INTENT(INOUT) :: NT
141 !
142 TYPE(teb_diag_t), INTENT(INOUT) :: TD
143 !
144 TYPE(bld_desc_t), INTENT(INOUT) :: BDD
145 TYPE(bem_options_t), INTENT(INOUT) :: BOP
146 TYPE(data_bem_t), INTENT(INOUT) :: DTB
147 TYPE(bem_np_t), INTENT(INOUT) :: NB
148 !
149 TYPE(teb_garden_model_t), INTENT(INOUT) :: GDM
150 TYPE(teb_greenroof_model_t), INTENT(INOUT) :: GRM
151 !
152  CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling surf. schemes
153  CHARACTER(LEN=3), INTENT(IN) :: HINIT ! choice of fields to initialize
154 INTEGER, INTENT(IN) :: KI ! number of points
155 INTEGER, INTENT(IN) :: KSV ! number of scalars
156 INTEGER, INTENT(IN) :: KSW ! number of short-wave spectral bands
157  CHARACTER(LEN=6), DIMENSION(KSV), INTENT(IN) :: HSV ! name of all scalar variables
158 REAL, DIMENSION(KI), INTENT(IN) :: PCO2 ! CO2 concentration (kg/m3)
159 REAL, DIMENSION(KI), INTENT(IN) :: PRHOA ! air density
160 REAL, DIMENSION(KI), INTENT(IN) :: PZENITH ! solar zenithal angle
161 REAL, DIMENSION(KI), INTENT(IN) :: PAZIM ! solar azimuthal angle (rad from N, clock)
162 REAL, DIMENSION(KSW), INTENT(IN) :: PSW_BANDS ! middle wavelength of each band
163 REAL, DIMENSION(KI,KSW),INTENT(OUT) :: PDIR_ALB ! direct albedo for each band
164 REAL, DIMENSION(KI,KSW),INTENT(OUT) :: PSCA_ALB ! diffuse albedo for each band
165 REAL, DIMENSION(KI), INTENT(OUT) :: PEMIS ! emissivity
166 REAL, DIMENSION(KI), INTENT(OUT) :: PTSRAD ! radiative temperature
167 REAL, DIMENSION(KI), INTENT(OUT) :: PTSURF ! surface effective temperature (K)
168 INTEGER, INTENT(IN) :: KYEAR ! current year (UTC)
169 INTEGER, INTENT(IN) :: KMONTH ! current month (UTC)
170 INTEGER, INTENT(IN) :: KDAY ! current day (UTC)
171 REAL, INTENT(IN) :: PTIME ! current time since
172  ! midnight (UTC, s)
173 !
174  CHARACTER(LEN=28), INTENT(IN) :: HATMFILE ! atmospheric file name
175  CHARACTER(LEN=6), INTENT(IN) :: HATMFILETYPE! atmospheric file type
176  CHARACTER(LEN=2), INTENT(IN) :: HTEST ! must be equal to 'OK'
177 !
178 !* 0.2 Declarations of local variables
179 ! -------------------------------
180 !
181 INTEGER :: ILU ! sizes of TEB arrays
182 INTEGER :: ILUOUT ! unit of output listing file
183 INTEGER :: IRESP ! return code
184 !
185 INTEGER :: ISWB ! number of shortwave spectral bands
186 INTEGER :: JSWB ! loop on shortwave spectral bands
187 !
188 REAL :: ZDEF_ROAD_DIR ! default raod direction
189 REAL, DIMENSION(:), ALLOCATABLE :: ZDIR_ALB ! direct town albedo
190 REAL, DIMENSION(:), ALLOCATABLE :: ZSCA_ALB ! diffuse town albedo
191 !
192 ! local variables for urban green areas
193 REAL, DIMENSION(KI,KSW) :: ZDIR_SW ! direct SW for each band
194 REAL, DIMENSION(KI,KSW) :: ZSCA_SW ! diffuse SW for each band
195 REAL, DIMENSION(KI) :: ZEMIS_GARDEN ! emissivity
196 REAL, DIMENSION(KI) :: ZALB_GARDEN ! albedo
197 REAL, DIMENSION(KI) :: ZTS_GARDEN ! radiative temperature
198 !
199 ! local variables for urban greenroofs
200 REAL, DIMENSION(KI) :: ZEMIS_GREENROOF ! emissivity
201 REAL, DIMENSION(KI) :: ZALB_GREENROOF ! albedo
202 REAL, DIMENSION(KI) :: ZTS_GREENROOF ! radiative temperature
203 !
204 INTEGER :: JP
205 INTEGER :: IVERSION, IBUGFIX
206 
207 REAL(KIND=JPRB) :: ZHOOK_HANDLE
208 !-------------------------------------------------------------------------------
209 !
210 ! Initialisation for IO
211 !
212 IF (lhook) CALL dr_hook('INIT_TEB_N',0,zhook_handle)
213  CALL get_luout(hprogram,iluout)
214 !
215 IF (htest/='OK') THEN
216  CALL abor1_sfx('INIT_TEBN: FATAL ERROR DURING ARGUMENT TRANSFER')
217 END IF
218 !
219 ! Other little things
220 !
221 pdir_alb = xundef
222 psca_alb = xundef
223 pemis = xundef
224 ptsrad = xundef
225 ptsurf = xundef
226 !
227 td%MTO%LSURF_EVAP_BUDGET = .false.
228 !
229 IF (lnam_read) THEN
230  !
231  !* 0. Defaults
232  ! --------
233  !
234  ! 0.1. Hard defaults
235  !
236  CALL default_teb(top%CZ0H, top%XTSTEP, top%XOUT_TSTEP, top%CCH_BEM, &
237  nt%AL(1)%XDT_RES, nt%AL(1)%XDT_OFF)
238  CALL default_ch_dep(cht%CCH_DRY_DEP)
239  CALL default_diag_teb(td%O%N2M, td%O%LSURF_BUDGET, td%O%L2M_MIN_ZS, td%O%LRAD_BUDGET,&
240  td%O%LCOEF, td%O%LSURF_VARS, td%MTO%LSURF_MISC_BUDGET, &
241  td%MTO%LSURF_DIAG_ALBEDO, td%DUT%LUTCI, td%O%LPGD, &
242  td%O%XDIAG_TSTEP)
243 !
244 ENDIF
245 !
246 ! 0.2. Defaults from file header
247 !
248  CALL read_default_teb_n(cht, td%MTO, td%O, td%DUT, grm%O, nt%AL(1), top, hprogram)
249 !
250 !* 1. Reading of configuration:
251 ! -------------------------
252 !
253  CALL read_teb_conf_n(cht, td%MTO, td%O, td%DUT, nt%AL(1), top, hprogram)
254 !
255 !* initialization of snow scheme
256 !
257 IF (hinit=='PRE') THEN
258  CALL read_prep_teb_snow(hprogram, nt%AL(1)%TSNOW_ROOF%SCHEME, nt%AL(1)%TSNOW_ROOF%NLAYER, &
259  nt%AL(1)%TSNOW_ROAD%SCHEME, nt%AL(1)%TSNOW_ROAD%NLAYER)
260 ENDIF
261 !
262 !* 2. Cover fields and grid:
263 ! ---------------------
264 !* date
265 !
266 SELECT CASE (hinit)
267  CASE ('PGD')
268  top%TTIME%TDATE%YEAR = nundef
269  top%TTIME%TDATE%MONTH= nundef
270  top%TTIME%TDATE%DAY = nundef
271  top%TTIME%TIME = xundef
272 
273  CASE ('PRE')
274  CALL prep_ctrl_teb(td%O, td%MTO%LSURF_EVAP_BUDGET, td%MTO%LSURF_MISC_BUDGET, td%DUT%LUTCI,iluout )
275  IF (lnam_read) CALL read_nam_prep_teb_n(hprogram)
276  CALL read_teb_date(hprogram,hinit,iluout,hatmfile,hatmfiletype,kyear,kmonth,kday,ptime,top%TTIME)
277 
278  CASE DEFAULT
279  CALL init_io_surf_n(dtco, u, hprogram,'FULL ','SURF ','READ ')
280  CALL read_surf(hprogram,'DTCUR',top%TTIME,iresp)
281  CALL end_io_surf_n(hprogram)
282 END SELECT
283 !
284 !-----------------------------------------------------------------------------------------------------
285 ! READ PGD FILE
286 !-----------------------------------------------------------------------------------------------------
287 !
288 ! Initialisation for IO
289 !
290  CALL set_surfex_filein(hprogram,'PGD ') ! change input file name to pgd name
291  CALL init_io_surf_n(dtco, u, hprogram,'TOWN ','TEB ','READ ')
292 !
293  CALL read_surf(hprogram,'VERSION',iversion,iresp)
294  CALL read_surf(hprogram,'BUG',ibugfix,iresp)
295 !
296 ! Reading of the fields
297 !
298  CALL read_cover_garden(hprogram,top%LGARDEN)
299 !
300  CALL read_pgd_teb_n(dtco, u, ug, gcp, top, tg, bop, bdd, dtb, dtt, hprogram)
301 !
302  CALL end_io_surf_n(hprogram)
303 !
304 !* Fraction of each patch in the grid mesh
305 !
306 ilu = SIZE(top%XCOVER,1)
307 !
308 ALLOCATE(top%XTEB_PATCH(ilu,top%NTEB_PATCH))
309  CALL convert_teb(top%NTEB_PATCH, top%XCOVER,top%XTEB_PATCH)
310 !
311 !
312 !* reads what is the option defined for road orientations & walls
313 !
314 IF (hinit=='ALL') THEN
315  !
316  CALL set_surfex_filein(hprogram,'PREP') ! restore input file name
317  CALL init_io_surf_n(dtco, u, hprogram,'TOWN ','TEB ','READ ')
318 !
319  CALL read_surf(hprogram,'VERSION',iversion,iresp)
320  CALL read_surf(hprogram,'BUG',ibugfix,iresp)
321 !
322  top%CROAD_DIR='UNIF'
323  top%CWALL_OPT='UNIF'
324  IF (iversion>7 .OR. (iversion==7 .AND. ibugfix>=3)) THEN
325  CALL read_surf(hprogram,'ROAD_DIR',top%CROAD_DIR,iresp)
326  CALL read_surf(hprogram,'WALL_OPT',top%CWALL_OPT,iresp)
327  END IF
328  CALL end_io_surf_n(hprogram)
329  !
330 ELSE
331  !
332  top%CROAD_DIR = croad_dir
333  top%CWALL_OPT = cwall_opt
334  !
335 ENDIF
336 !
337 !-----------------------------------------------------------------------------------
338 !
339 !* LOOP ON TEB PATCHES
340 ! -------------------
341 !
342 DO jp=1,top%NTEB_PATCH
343  !
344  !-----------------------------------------------------------------------------------
345  !
346  !* 3. Physiographic data fields from land cover:
347  ! -----------------------------------------
348  !
349  ALLOCATE(nt%AL(jp)%XZ0_TOWN (ilu))
350  ALLOCATE(nt%AL(jp)%XALB_ROOF (ilu))
351  ALLOCATE(nt%AL(jp)%XEMIS_ROOF (ilu))
352  ALLOCATE(nt%AL(jp)%XALB_ROAD (ilu))
353  ALLOCATE(nt%AL(jp)%XEMIS_ROAD (ilu))
354  ALLOCATE(nt%AL(jp)%XALB_WALL (ilu))
355  ALLOCATE(nt%AL(jp)%XEMIS_WALL (ilu))
356  ALLOCATE(nt%AL(jp)%XBLD (ilu))
357  ALLOCATE(nt%AL(jp)%XROAD_DIR (ilu))
358  ALLOCATE(nt%AL(jp)%XROAD (ilu))
359  ALLOCATE(nt%AL(jp)%XBLD_HEIGHT (ilu))
360  ALLOCATE(nt%AL(jp)%XWALL_O_HOR (ilu))
361  ALLOCATE(nt%AL(jp)%XCAN_HW_RATIO(ilu))
362  ALLOCATE(nt%AL(jp)%XROAD_O_GRND (ilu))
363  ALLOCATE(nt%AL(jp)%XGARDEN_O_GRND(ilu))
364  ALLOCATE(nt%AL(jp)%XWALL_O_GRND (ilu))
365  ALLOCATE(nt%AL(jp)%XWALL_O_BLD( ilu))
366  ALLOCATE(nt%AL(jp)%XH_TRAFFIC (ilu))
367  ALLOCATE(nt%AL(jp)%XLE_TRAFFIC (ilu))
368  ALLOCATE(nt%AL(jp)%XH_INDUSTRY (ilu))
369  ALLOCATE(nt%AL(jp)%XLE_INDUSTRY (ilu))
370  ALLOCATE(nt%AL(jp)%XHC_ROOF (ilu,top%NROOF_LAYER))
371  ALLOCATE(nt%AL(jp)%XTC_ROOF (ilu,top%NROOF_LAYER))
372  ALLOCATE(nt%AL(jp)%XD_ROOF (ilu,top%NROOF_LAYER))
373  ALLOCATE(nt%AL(jp)%XHC_ROAD (ilu,top%NROAD_LAYER))
374  ALLOCATE(nt%AL(jp)%XTC_ROAD (ilu,top%NROAD_LAYER))
375  ALLOCATE(nt%AL(jp)%XD_ROAD (ilu,top%NROAD_LAYER))
376  ALLOCATE(nt%AL(jp)%XHC_WALL (ilu,top%NWALL_LAYER))
377  ALLOCATE(nt%AL(jp)%XTC_WALL (ilu,top%NWALL_LAYER))
378  ALLOCATE(nt%AL(jp)%XD_WALL (ilu,top%NWALL_LAYER))
379  ALLOCATE(nt%AL(jp)%XROUGH_ROOF (ilu))
380  ALLOCATE(nt%AL(jp)%XROUGH_WALL (ilu))
381  ALLOCATE(nt%AL(jp)%XRESIDENTIAL (ilu))
382  ALLOCATE(nt%AL(jp)%XGREENROOF (ilu))
383  ALLOCATE(nt%AL(jp)%XGARDEN (ilu))
384  ALLOCATE(tpn%XEMIS_PANEL (ilu))
385  ALLOCATE(tpn%XALB_PANEL (ilu))
386  ALLOCATE(tpn%XEFF_PANEL (ilu))
387  ALLOCATE(tpn%XFRAC_PANEL (ilu))
388  !
389  nt%AL(jp)%XROAD_DIR(:) = 0.
390  nt%AL(jp)%XROAD (:) = 0.
391  !
392  zdef_road_dir = 0.
393  IF (top%CROAD_DIR/='UNIF') THEN
394  !* road direction if not specified by the user depends on patch number
395  ! First patch has a Notrh-South road. Other patches have roads spaced by
396  ! regular angles
397  zdef_road_dir = 180. * float(jp-1) / float(top%NTEB_PATCH)
398  END IF
399  !
400  CALL convert_patch_teb(bdd, dtb, dtco, dtt, top, zdef_road_dir, t=nt%AL(jp), tpn=tpn )
401  !
402  IF (.NOT. top%LGREENROOF .AND. maxval(nt%AL(jp)%XGREENROOF)>0. ) THEN
403  WRITE(iluout,*) 'You choose NOT to have greenroofs, BUT your greenroof fraction is not zero'
404  WRITE(iluout,*) 'Please activate the greenroof option (and rerun the SURFEX suite from the PGD step)'
405  WRITE(iluout,*) 'Or be sure NOT to have any greenroofs in your area'
406  CALL abor1_sfx('INIT_TEBN: GREENROOF OPTION NOT ACTIVATED WHILE GREENROOFS ARE PRESENT')
407  ENDIF
408  !
409  IF (.NOT. top%LSOLAR_PANEL .AND. maxval(tpn%XFRAC_PANEL)>0. ) THEN
410  WRITE(iluout,*) 'You choose NOT to have solar panels, BUT your solar panel fraction is not zero'
411  WRITE(iluout,*) 'Please activate the solar panel option (and rerun the SURFEX suite from the PGD step)'
412  WRITE(iluout,*) 'Or be sure NOT to have any solar panel in your area'
413  CALL abor1_sfx('INIT_TEBN: SOLAR_PANEL OPTION NOT ACTIVATED WHILE SOLAR PANELS ARE PRESENT')
414  ENDIF
415  !
416  !-------------------------------------------------------------------------------
417  !
418  !* 5. Sky-view-factors:
419  ! ----------------
420  !
421  ALLOCATE(nt%AL(jp)%XSVF_ROAD (ilu))
422  ALLOCATE(nt%AL(jp)%XSVF_GARDEN(ilu))
423  ALLOCATE(nt%AL(jp)%XSVF_WALL (ilu))
424  !
425  ALLOCATE(nb%AL(jp)%XGR (ilu))
426  ALLOCATE(nb%AL(jp)%XALB_WIN (ilu))
427  ALLOCATE(nb%AL(jp)%XF_WASTE_CAN (ilu))
428  !
429  !
430  CALL teb_morpho(hprogram, nt%AL(jp) )
431  !
432  !-------------------------------------------------------------------------------
433  !
434  !* 6. Building Energy Model
435  ! ---------------------
436  !
437  CALL init_bem_n(dtco, top, bop, dtt, dtb, bdd, tg, nt%AL(jp), nb%AL(jp), iluout)
438  !
439  !-------------------------------------------------------------------------------
440  !
441  !* 7. Case of urban green areas
442  ! -------------------------
443  !
444  IF (top%LGARDEN) THEN
445  !
446  CALL set_surfex_filein(hprogram,'PGD ') ! change input file name to pgd name
447  CALL init_io_surf_n(dtco, u, hprogram,'TOWN ','TEB ','READ ')
448  IF (jp==1) CALL init_teb_veg_options_n(cht, td%MTO%LSURF_DIAG_ALBEDO, top%LGREENROOF, gdm%O, grm%O, hprogram)
449  CALL init_teb_garden_pgd_n(dtco, u, cht%LCH_BIO_FLUX, tg, nt%AL(jp)%XGARDEN, top, &
450  gdm%O, gdm%S, gdm%K, gdm%P, gdm%NPE%AL(jp), gdm%DTV, gdm%GB, &
451  hprogram,hinit,(jp==1),ki,iversion,ibugfix,pco2,prhoa)
452  ! Case of urban green roofs
453  IF (top%LGREENROOF) THEN
454  CALL init_teb_greenroof_pgd_n(dtco, u, cht%LCH_BIO_FLUX, tg, nt%AL(jp)%XGREENROOF, top, &
455  grm%O, grm%S, grm%K, grm%P, grm%NPE%AL(jp), grm%DTV, grm%GB, &
456  hprogram,hinit,(jp==1),ki,iversion,pco2,prhoa)
457  ENDIF
458  CALL end_io_surf_n(hprogram)
459  !
460  ENDIF
461 !-------------------------------------------------------------------------------
462 END DO ! end of loop on TEB patches
463 !-------------------------------------------------------------------------------
464 !
465 !* Read irrigation parameters for TEB
466 !
467  CALL set_surfex_filein(hprogram,'PGD ') ! change input file name to pgd name
468  CALL init_io_surf_n(dtco, u, hprogram,'TOWN ','TEB ','READ ')
469  CALL read_pgd_teb_irrig_n(tg, tir, hprogram)
470  CALL end_io_surf_n(hprogram)
471 !
472 !-------------------------------------------------------------------------------
473 !
474 !* if only physiographic fields are to be initialized, stop here.
475 !
476 IF (hinit/='ALL' .AND. hinit/='SOD') THEN
477  IF (lhook) CALL dr_hook('INIT_TEB_N',1,zhook_handle)
478  RETURN
479 END IF
480 !
481 !-------------------------------------------------------------------------------
482 !
483 ! Initialisation for IO
484 !
485  CALL set_surfex_filein(hprogram,'PREP') ! restore input file name
486  CALL init_io_surf_n(dtco, u, hprogram,'TOWN ','TEB ','READ ')
487 !
488 !* 9. Prognostic fields:
489 ! -----------------
490 !
491 !* LOOP ON TEB PATCHES
492 ! -------------------
493 !
494 DO jp=1,top%NTEB_PATCH
495 !
496 !* TEB fields
497  CALL read_teb_n(nb%AL(jp), bop, dtco, u, nt%AL(jp), top, tpn, hprogram,jp)
498 !
499  ALLOCATE(nt%AL(jp)%XAC_ROOF (ilu))
500  ALLOCATE(nt%AL(jp)%XAC_ROAD (ilu))
501  ALLOCATE(nt%AL(jp)%XAC_WALL (ilu))
502  ALLOCATE(nt%AL(jp)%XAC_TOP (ilu))
503  ALLOCATE(nt%AL(jp)%XAC_ROOF_WAT(ilu))
504  ALLOCATE(nt%AL(jp)%XAC_ROAD_WAT(ilu))
505  ALLOCATE(nt%AL(jp)%XQSAT_ROOF (ilu))
506  ALLOCATE(nt%AL(jp)%XQSAT_ROAD (ilu))
507  ALLOCATE(nt%AL(jp)%XDELT_ROOF (ilu))
508  ALLOCATE(nt%AL(jp)%XDELT_ROAD (ilu))
509 !
510 !* Case of urban green areas
511  IF (top%LGARDEN) THEN
512  !
513  CALL init_teb_garden_n(dtco, ug, u, td%MTO, top, gdm%O, gdm%DTV, gdm%K, gdm%P, &
514  gdm%NPE%AL(jp), gdm%VD%ND%AL(jp), gdm%VD%NDE%AL(jp), gdm%VD%NDEC%AL(jp), gdm%VD%NDM%AL(jp), &
515  hprogram, hinit, ki, ksw, psw_bands, jp)
516  ! Case of urban green roofs
517  IF (top%LGREENROOF) CALL init_teb_greenroof_n(dtco, u, td%MTO, top, grm%O, grm%DTV, grm%K, grm%P, &
518  grm%NPE%AL(jp), grm%VD%ND%AL(jp), grm%VD%NDE%AL(jp), grm%VD%NDEC%AL(jp), grm%VD%NDM%AL(jp), &
519  hprogram, hinit, ki, ksv, psw_bands, jp)
520  !
521  ENDIF
522 !-------------------------------------------------------------------------------
523 !
524 !* 10. Infra-red Radiative fields:
525 ! --------------------------
526 !
527 !* snow long-wave properties (not initialized in read_gr_snow)
528 !
529  CALL init_snow_lw(xemissn,nt%AL(jp)%TSNOW_ROOF)
530  CALL init_snow_lw(xemissn,nt%AL(jp)%TSNOW_ROAD)
531 !
532  IF (top%LGARDEN) THEN
533  zdir_sw=0. ! night as first guess for albedo computation
534  zsca_sw=0. !
535  CALL teb_veg_properties(nt%AL(jp)%XGARDEN, gdm%O, gdm%NPE%AL(jp), &
536  zdir_sw, zsca_sw, psw_bands, ksw, &
537  zts_garden, zemis_garden, zalb_garden )
538  ELSE
539  zalb_garden = xundef
540  zemis_garden= xundef
541  zts_garden = xundef
542  END IF
543  !
544  IF (top%LGREENROOF) THEN
545  zdir_sw=0. ! night as first guess for albedo computation
546  zsca_sw=0. !
547  CALL teb_veg_properties(nt%AL(jp)%XGREENROOF, grm%O, grm%NPE%AL(jp), &
548  zdir_sw, zsca_sw, psw_bands, ksw, &
549  zts_greenroof, zemis_greenroof, zalb_greenroof )
550  ELSE
551  zalb_greenroof = xundef
552  zemis_greenroof = xundef
553  zts_greenroof = xundef
554  END IF
555 !
556 !* averaged albedo, emissivity and radiative temperature
557 !
558  CALL averaged_tsrad_teb(nt%AL(jp), nb%AL(jp), zemis_garden, zts_garden, &
559  zemis_greenroof, zts_greenroof, pemis, ptsrad )
560 !
561 !
562 !* 9. Visible and near-infra-red Radiative fields:
563 ! -------------------------------------------
564 !
565  ALLOCATE(zdir_alb(ilu))
566  ALLOCATE(zsca_alb(ilu))
567 !
568  CALL averaged_albedo_teb(top,nt%AL(jp),tpn,nb%AL(jp),pzenith,pazim, &
569  zalb_garden, zalb_greenroof,zdir_alb, zsca_alb)
570 
571  iswb=SIZE(psw_bands)
572  DO jswb=1,iswb
573  pdir_alb(:,jswb) = zdir_alb(:)
574  psca_alb(:,jswb) = zsca_alb(:)
575  END DO
576  !
577  DEALLOCATE(zdir_alb)
578  DEALLOCATE(zsca_alb)
579 !-------------------------------------------------------------------------------
580 !
581 !* 10. Chemistry /dust
582 ! ---------------
583 !
584  CALL init_chemical_n(iluout, ksv, hsv, cht%SVT, &
585  cht%CCH_NAMES, cht%CAER_NAMES, &
586  hdstnames=cht%CDSTNAMES, hsltnames=cht%CSLTNAMES )
587 !
588 !* Initialization of dry deposition scheme (chemistry)
589 !
590  IF (cht%SVT%NBEQ>0 .AND. cht%CCH_DRY_DEP=='WES89') THEN
591  ALLOCATE(cht%XDEP(ilu,cht%SVT%NBEQ))
592  ELSE
593  ALLOCATE(cht%XDEP(0,0))
594  END IF
595 !
596 !-------------------------------------------------------------------------------
597 END DO ! end of loop on patches
598 !
599 IF (hinit/='ALL') THEN
600  CALL end_io_surf_n(hprogram)
601  IF (lhook) CALL dr_hook('INIT_TEB_N',1,zhook_handle)
602  RETURN
603 END IF
604 !-------------------------------------------------------------------------------
605 !
606 !* 7. Canopy air fields:
607 ! ------------------
608 !
609  CALL read_sbl_n(dtco, u, sb, top%LCANOPY, hprogram, "TOWN ")
610 !
611 !-------------------------------------------------------------------------------
612 !
613 !* 11. Diagnostics:
614 ! -----------
615 !
616  CALL diag_teb_init_n(td%O, td%D, td%DUT, hprogram,ilu,iswb)
617 !
618 DO jp=1,top%NTEB_PATCH
619  CALL diag_misc_teb_init_n(td%NDMTC%AL(jp), td%NDMT%AL(jp), td%MTO, top, ilu, iswb)
620 END DO ! end of loop on patches
621 !
622 !-------------------------------------------------------------------------------
623 !
624 ! End of IO
625 !
626  CALL end_io_surf_n(hprogram)
627 IF (lhook) CALL dr_hook('INIT_TEB_N',1,zhook_handle)
628 !
629 !
630 END SUBROUTINE init_teb_n
subroutine init_chemical_n(KLUOUT, KSV, HSV, SV, HCH_NAMES, HAER_NAMES, HDSTNAMES, HSLTNAMES)
subroutine read_cover_garden(HPROGRAM, OGARDEN, HDIR)
integer ndst_mdebeg
subroutine convert_patch_teb(BDD, DTB, DTCO, DTT, TOP, PDEF_ROAD_DIR, T, B, TPN)
subroutine init_teb_n(DTCO, UG, U, GCP, CHT, DTT, SB, TG, TOP, TP
Definition: init_tebn.F90:7
character(len=6) cmask
logical lvarsig_dst
subroutine set_surfex_filein(HPROGRAM, HMASK)
subroutine init_teb_greenroof_pgd_n(DTCO, U, OCH_BIO_FLUX, G, PGREENROOF, TOP, IO, S, K, P, PEK, DTV, GB, HPROGRAM, HINIT, OPATCH1, KI, KVERSION, PCO2, PRHOA)
subroutine diag_teb_init_n(DGO, D, DUT, HPROGRAM, KLU, KSW)
subroutine init_snow_lw(PEMISSN, TPSNOW)
Definition: init_snow_lw.F90:7
subroutine read_teb_date( HPROGRAM, HINIT, KLUOUT, HATMFILE, HATMFILET
subroutine default_teb(HZ0H, PTSTEP, POUT_TSTEP, HCH_BEM, PDT_RES, P
Definition: default_teb.F90:7
subroutine prep_ctrl_teb(DGO, OSURF_EVAP_BUDGET, OSURF_MISC_BUDGET
subroutine read_teb_n(B, BOP, DTCO, U, T, TOP, TPN, HPROGRAM, KPAT
Definition: read_tebn.F90:7
subroutine diag_misc_teb_init_n(DMTC, DMT, DMTO, TOP, KLU, KSW)
subroutine read_sbl_n(DTCO, U, SB, OSBL, HPROGRAM, HSURF)
Definition: read_sbln.F90:7
subroutine abor1_sfx(YTEXT)
Definition: abor1_sfx.F90:7
real, parameter xundef
logical lrgfix_dst
subroutine teb_morpho(HPROGRAM, T)
Definition: teb_morpho.F90:7
subroutine init_teb_veg_options_n(CHT, OSURF_DIAG_ALBEDO, OGREENROOF, GDO, GRO, HPROGRAM)
subroutine init_bem_n(DTCO, TOP, BOP, DTT, DTB, BDD, G, T, B, KLUOUT)
Definition: init_bemn.F90:8
integer, parameter jprb
Definition: parkind1.F90:32
logical lvarsig_slt
subroutine teb_veg_properties(PMASK, IO, PEK, PDIR_SW, PSCA_SW, P
integer, parameter nundef
character(len=4) cwall_opt
subroutine init_teb_garden_n(DTCO, UG, U, DMTO, TOP, IO, DTV, K, P, PEK, DK, DEK, DECK, DMK, HPROGRAM, HINIT, KI, KSW, PSW_BANDS, KPATCH)
subroutine default_ch_dep(HCH_DRY_DEP)
subroutine end_io_surf_n(HPROGRAM)
Definition: end_io_surfn.F90:7
subroutine get_luout(HPROGRAM, KLUOUT)
Definition: get_luout.F90:7
logical lhook
Definition: yomhook.F90:15
subroutine read_pgd_teb_irrig_n(G, TIR, HPROGRAM)
subroutine read_pgd_teb_n(DTCO, U, UG, GCP, TOP, TG, BOP, BDD, DTB, DTT, HPROGRAM)
subroutine read_default_teb_n(CHT, DMTO, DGO, DUT, IO, T, TOP, HP
subroutine default_diag_teb(K2M, OSURF_BUDGET, O2M_MIN_ZS, ORAD_BUDG
subroutine read_prep_teb_snow(HPROGRAM, HSNOW_ROOF, KSNOW_ROOF, HSNOW
subroutine init_teb_greenroof_n(DTCO, U, DMTO, TOP, IO, DTV, K, P, PEK, DK, DEK, DECK, DMK, HPROGRAM, HINIT, KI, KSW, PSW_BANDS, KPATCH)
subroutine convert_teb(KTEB_PATCH, PCOVER, PTEB_PATCH)
Definition: convert_teb.F90:7
subroutine read_nam_prep_teb_n(HPROGRAM)
subroutine averaged_albedo_teb(TOP, T, TPN, B, PZENITH, PAZIM, PALB_GARDEN, PALB_GREENROOF, PDIR_A
subroutine init_teb_garden_pgd_n(DTCO, U, OCH_BIO_FLUX, G, PGARDEN, TOP, IO, S, K, P, PEK, DTV, GB, HPROGRAM, HINIT, OPATCH1, KI, KVERSION, KBUGFIX, PCO2, PRHOA)
subroutine read_teb_conf_n(CHT, DMTO, DGO, DUT, T, TOP, HPROGRAM)
integer nslt_mdebeg
logical lrgfix_slt
subroutine init_io_surf_n(DTCO, U, HPROGRAM, HMASK, HSCHEME, HACTION
subroutine t(CDPREF, CDSUFF, KCODPA, LDNIVA, PMULTI)
Definition: faicor.F90:567
character(len=4) croad_dir
subroutine averaged_tsrad_teb(T, B, PEMIS_GARDEN, PTS_GARDEN, PEMI