SURFEX v8.1
General documentation of Surfex
pgd_teb_par.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 pgd_teb_par (DTCO, UG, U, USS, BDD, DTT, KDIM, &
7  HPROGRAM,OGARDEN,OGREENROOF,HBLD_ATYPE)
8 ! ##############################################################
9 !
10 !!**** *PGD_TEB_PAR* monitor for averaging and interpolations of cover fractions
11 !!
12 !! PURPOSE
13 !! -------
14 !!
15 !! METHOD
16 !! ------
17 !!
18 !
19 !! EXTERNAL
20 !! --------
21 !!
22 !! IMPLICIT ARGUMENTS
23 !! ------------------
24 !!
25 !! REFERENCE
26 !! ---------
27 !!
28 !! AUTHOR
29 !! ------
30 !!
31 !! V. Masson Meteo-France
32 !!
33 !! MODIFICATION
34 !! ------------
35 !!
36 !! Original 10/12/97
37 !!
38 !! Modified 08/12/05, P. Le Moigne: user defined fields
39 !! G. Pigeon 09/2012: add ROUGH_WALL/ROUGH_ROOF for outdoor convection
40 !! V. Masson 08/2013: adds solar panels
41 !! V. Masson 10/2013: adds residential fraction
42 !!
43 !----------------------------------------------------------------------------
44 !
45 !* 0. DECLARATION
46 ! -----------
47 !
48 !
49 !
52 USE modd_surf_atm_n, ONLY : surf_atm_t
53 USE modd_sso_n, ONLY : sso_t
55 USE modd_data_teb_n, ONLY : data_teb_t
56 !
57 USE modd_surf_par, ONLY : xundef, nundef
58 !
59 USE modi_get_luout
60 USE modi_open_namelist
61 USE modi_close_namelist
65 USE modi_read_csvdata_teb
66 USE modi_bldcode
67 !
68 USE mode_pos_surf
69 !
70 !
71 USE yomhook ,ONLY : lhook, dr_hook
72 USE parkind1 ,ONLY : jprb
73 !
74 USE modi_abor1_sfx
75 !
76 IMPLICIT NONE
77 !
78 !* 0.1 Declaration of arguments
79 ! ------------------------
80 !
81 !
82 TYPE(data_cover_t), INTENT(INOUT) :: DTCO
83 TYPE(surf_atm_grid_t), INTENT(INOUT) :: UG
84 TYPE(surf_atm_t), INTENT(INOUT) :: U
85 TYPE(sso_t), INTENT(INOUT) :: USS
86 TYPE(bld_desc_t), INTENT(INOUT) :: BDD
87 TYPE(data_teb_t), INTENT(INOUT) :: DTT
88 !
89 INTEGER, INTENT(IN) :: KDIM
90 !
91  CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! Type of program
92 LOGICAL, INTENT(IN) :: OGARDEN ! T if urban green areas
93 LOGICAL, INTENT(IN) :: OGREENROOF ! T if greenroofs option is activated
94  CHARACTER(LEN=3), INTENT(OUT) :: HBLD_ATYPE ! Type of building averaging
95 !
96 !
97 !* 0.2 Declaration of local variables
98 ! ------------------------------
99 !
100 INTEGER :: ILUOUT ! output listing logical unit
101 INTEGER :: ILUNAM ! namelist file logical unit
102 LOGICAL :: GFOUND ! true if namelist is found
103 !
104 REAL, DIMENSION(KDIM) :: ZWORK
105 REAL :: ZUNIF ! temporary variable
106 !
107 !* 0.3 Declaration of namelists
108 ! ------------------------
109 !
110 INTEGER, PARAMETER :: NROOF_MAX = 9
111 INTEGER, PARAMETER :: NROAD_MAX = 9
112 INTEGER, PARAMETER :: NWALL_MAX = 9
113 INTEGER :: NPAR_ROAD_LAYER ! number of road layers
114 INTEGER :: NPAR_ROOF_LAYER ! number of roof layers
115 INTEGER :: NPAR_WALL_LAYER ! number of wall layers
116 !
117 ! Geometric Parameters:
118 !
119 INTEGER :: NUNIF_BLDTYPE
120  CHARACTER(LEN=28) :: CFNAM_BLDTYPE
121  CHARACTER(LEN=6) :: CFTYP_BLDTYPE
122 INTEGER :: NUNIF_BLD_AGE
123  CHARACTER(LEN=28) :: CFNAM_BLD_AGE
124  CHARACTER(LEN=6) :: CFTYP_BLD_AGE
125  CHARACTER(LEN=28) :: CCSVDATAFILE
126 INTEGER :: NUNIF_USETYPE
127  CHARACTER(LEN=28) :: CFNAM_USETYPE
128  CHARACTER(LEN=6) :: CFTYP_USETYPE
129  CHARACTER(LEN=3) :: CBLD_ATYPE ! type of averaging for buildings
130 
131 !
132 REAL :: XUNIF_BLD ! fraction of buildings (-)
133 REAL :: XUNIF_BLD_HEIGHT ! buildings height 'h' (m)
134 REAL :: XUNIF_WALL_O_HOR ! wall surf. / hor. surf. (-)
135 REAL :: XUNIF_Z0_TOWN ! roughness length for momentum (m)
136 REAL :: XUNIF_GARDEN ! fraction of veg in the streets (-)
137 REAL :: XUNIF_GREENROOF ! fraction of greenroofs on roofs (-)
138 REAL :: XUNIF_ROAD_DIR ! road direction (deg from North, clockwise)
139  CHARACTER(LEN=28) :: CFNAM_BLD ! file name for BLD
140  CHARACTER(LEN=28) :: CFNAM_BLD_HEIGHT ! file name for BLD_HEIGHT
141  CHARACTER(LEN=28) :: CFNAM_WALL_O_HOR ! file name for WALL_O_HOR
142  CHARACTER(LEN=28) :: CFNAM_Z0_TOWN ! file name for Z0_TOWN
143  CHARACTER(LEN=28) :: CFNAM_GARDEN ! file name for GARDEN
144  CHARACTER(LEN=28) :: CFNAM_GREENROOF ! file name for GREENROOF
145  CHARACTER(LEN=28) :: CFNAM_ROAD_DIR ! file name for ROAD_DIR
146  CHARACTER(LEN=6) :: CFTYP_BLD ! file type for BLD
147  CHARACTER(LEN=6) :: CFTYP_BLD_HEIGHT ! file type for BLD_HEIGHT
148  CHARACTER(LEN=6) :: CFTYP_WALL_O_HOR ! file type for WALL_O_HOR
149  CHARACTER(LEN=6) :: CFTYP_Z0_TOWN ! file type for Z0_TOWN
150  CHARACTER(LEN=6) :: CFTYP_GARDEN ! file type for GARDEN
151  CHARACTER(LEN=6) :: CFTYP_GREENROOF ! file type for GREENROOF
152  CHARACTER(LEN=6) :: CFTYP_ROAD_DIR ! file type for ROAD_DIR
153 !
154 ! Roof parameters
155 !
156 REAL :: XUNIF_ALB_ROOF ! roof albedo (-)
157 REAL :: XUNIF_EMIS_ROOF ! roof emissivity (-)
158  CHARACTER(LEN=28) :: CFNAM_ALB_ROOF ! file name for ALB_ROOF
159  CHARACTER(LEN=28) :: CFNAM_EMIS_ROOF ! file name for EMIS_ROOF
160  CHARACTER(LEN=6) :: CFTYP_ALB_ROOF ! file name for ALB_ROOF
161  CHARACTER(LEN=6) :: CFTYP_EMIS_ROOF ! file name for EMIS_ROOF
162 REAL, DIMENSION(NROOF_MAX) :: XUNIF_HC_ROOF ! roof layers heat capacity (J/K/m3)
163 REAL, DIMENSION(NROOF_MAX) :: XUNIF_TC_ROOF ! roof layers thermal conductivity (W/K/m)
164 REAL, DIMENSION(NROOF_MAX) :: XUNIF_D_ROOF ! depth of roof layers (m)
165  CHARACTER(LEN=28), DIMENSION(NROOF_MAX) :: CFNAM_HC_ROOF ! file name for HC_ROOF
166  CHARACTER(LEN=28), DIMENSION(NROOF_MAX) :: CFNAM_TC_ROOF ! file name for TC_ROOF
167  CHARACTER(LEN=28), DIMENSION(NROOF_MAX) :: CFNAM_D_ROOF ! file name for D_ROOF
168  CHARACTER(LEN=6), DIMENSION(NROOF_MAX) :: CFTYP_HC_ROOF ! file type for HC_ROOF
169  CHARACTER(LEN=6), DIMENSION(NROOF_MAX) :: CFTYP_TC_ROOF ! file type for TC_ROOF
170  CHARACTER(LEN=6), DIMENSION(NROOF_MAX) :: CFTYP_D_ROOF ! file type for D_ROOF
171 REAL :: XUNIF_ROUGH_ROOF ! roof roughness coef
172  CHARACTER(LEN=28) :: CFNAM_ROUGH_ROOF ! file name for ROUGH_ROOF
173  CHARACTER(LEN=6) :: CFTYP_ROUGH_ROOF ! file type for ROUGH_ROOF
174 !
175 !
176 ! Road parameters
177 !
178 REAL :: XUNIF_ALB_ROAD ! road albedo (-)
179 REAL :: XUNIF_EMIS_ROAD ! road emissivity (-)
180  CHARACTER(LEN=28) :: CFNAM_ALB_ROAD ! file name for ALB_ROAD
181  CHARACTER(LEN=28) :: CFNAM_EMIS_ROAD ! file name for EMIS_ROAD
182  CHARACTER(LEN=6) :: CFTYP_ALB_ROAD ! file type for ALB_ROAD
183  CHARACTER(LEN=6) :: CFTYP_EMIS_ROAD ! file type for EMIS_ROAD
184 REAL, DIMENSION(NROAD_MAX) :: XUNIF_HC_ROAD ! road layers heat capacity (J/K/m3)
185 REAL, DIMENSION(NROAD_MAX) :: XUNIF_TC_ROAD ! road layers thermal conductivity (W/K/m)
186 REAL, DIMENSION(NROAD_MAX) :: XUNIF_D_ROAD ! depth of road layers (m)
187  CHARACTER(LEN=28), DIMENSION(NROAD_MAX) :: CFNAM_HC_ROAD ! file name for HC_ROAD
188  CHARACTER(LEN=28), DIMENSION(NROAD_MAX) :: CFNAM_TC_ROAD ! file name for TC_ROAD
189  CHARACTER(LEN=28), DIMENSION(NROAD_MAX) :: CFNAM_D_ROAD ! file name for D_ROAD
190  CHARACTER(LEN=6), DIMENSION(NROAD_MAX) :: CFTYP_HC_ROAD ! file type for HC_ROAD
191  CHARACTER(LEN=6), DIMENSION(NROAD_MAX) :: CFTYP_TC_ROAD ! file type for TC_ROAD
192  CHARACTER(LEN=6), DIMENSION(NROAD_MAX) :: CFTYP_D_ROAD ! file type for D_ROAD
193 !
194 ! Wall parameters
195 !
196 REAL :: XUNIF_ALB_WALL ! wall albedo (-)
197 REAL :: XUNIF_EMIS_WALL ! wall emissivity (-)
198  CHARACTER(LEN=28) :: CFNAM_ALB_WALL ! file name for ALB_WALL
199  CHARACTER(LEN=28) :: CFNAM_EMIS_WALL ! file name for EMIS_WALL
200  CHARACTER(LEN=6) :: CFTYP_ALB_WALL ! file type for ALB_WALL
201  CHARACTER(LEN=6) :: CFTYP_EMIS_WALL ! file type for EMIS_WALL
202 REAL, DIMENSION(NWALL_MAX) :: XUNIF_HC_WALL ! wall layers heat capacity (J/K/m3)
203 REAL, DIMENSION(NWALL_MAX) :: XUNIF_TC_WALL ! wall layers thermal conductivity (W/K/m)
204 REAL, DIMENSION(NWALL_MAX) :: XUNIF_D_WALL ! depth of wall layers (m)
205  CHARACTER(LEN=28), DIMENSION(NWALL_MAX) :: CFNAM_HC_WALL ! file name for HC_WALL
206  CHARACTER(LEN=28), DIMENSION(NWALL_MAX) :: CFNAM_TC_WALL ! file name for TC_WALL
207  CHARACTER(LEN=28), DIMENSION(NWALL_MAX) :: CFNAM_D_WALL ! file name for D_WALL
208  CHARACTER(LEN=6), DIMENSION(NWALL_MAX) :: CFTYP_HC_WALL ! file type for HC_WALL
209  CHARACTER(LEN=6), DIMENSION(NWALL_MAX) :: CFTYP_TC_WALL ! file type for TC_WALL
210  CHARACTER(LEN=6), DIMENSION(NWALL_MAX) :: CFTYP_D_WALL ! file type for D_WALL
211 REAL :: XUNIF_ROUGH_WALL ! wall roughness coef
212  CHARACTER(LEN=28) :: CFNAM_ROUGH_WALL ! file name for ROUGH_WALL
213  CHARACTER(LEN=6) :: CFTYP_ROUGH_WALL ! file type for ROUGH_WALL
214 REAL :: XUNIF_RESIDENTIAL ! residential fraction
215  CHARACTER(LEN=28) :: CFNAM_RESIDENTIAL ! file name for RESIDENTIAL
216  CHARACTER(LEN=6) :: CFTYP_RESIDENTIAL ! file type for RESIDENTIAL
217 !
218 ! anthropogenic fluxes
219 !
220 REAL :: XUNIF_H_TRAFFIC ! anthropogenic sensible
221 ! ! heat fluxes due to traffic (W/m2)
222 REAL :: XUNIF_LE_TRAFFIC ! anthropogenic latent
223 ! ! heat fluxes due to traffic (W/m2)
224 REAL :: XUNIF_H_INDUSTRY ! anthropogenic sensible
225 ! ! heat fluxes due to factories (W/m2)
226 REAL :: XUNIF_LE_INDUSTRY ! anthropogenic latent
227 ! ! heat fluxes due to factories (W/m2)
228  CHARACTER(LEN=28) :: CFNAM_H_TRAFFIC ! file name for H_TRAFFIC
229  CHARACTER(LEN=28) :: CFNAM_LE_TRAFFIC ! file name for LE_TRAFFIC
230  CHARACTER(LEN=28) :: CFNAM_H_INDUSTRY ! file name for H_INDUSTRY
231  CHARACTER(LEN=28) :: CFNAM_LE_INDUSTRY ! file name for LE_INDUSTRY
232  CHARACTER(LEN=6) :: CFTYP_H_TRAFFIC ! file type for H_TRAFFIC
233  CHARACTER(LEN=6) :: CFTYP_LE_TRAFFIC ! file type for LE_TRAFFIC
234  CHARACTER(LEN=6) :: CFTYP_H_INDUSTRY ! file type for H_INDUSTRY
235  CHARACTER(LEN=6) :: CFTYP_LE_INDUSTRY ! file type for LE_INDUSTRY
236 !
237 ! Solar panels parameters
238 !
239 REAL :: XUNIF_EMIS_PANEL ! emissivity of solar panel (-)
240 REAL :: XUNIF_ALB_PANEL ! albedo of solar panel (-)
241 REAL :: XUNIF_EFF_PANEL ! efficiency of solar panel (-)
242 REAL :: XUNIF_FRAC_PANEL ! fraction of solar panel (-)
243  CHARACTER(LEN=28) :: CFNAM_EMIS_PANEL ! file name for EMIS_PANEL
244  CHARACTER(LEN=28) :: CFNAM_ALB_PANEL ! file name for ALB_PANEL
245  CHARACTER(LEN=28) :: CFNAM_EFF_PANEL ! file name for EFF_PANEL
246  CHARACTER(LEN=28) :: CFNAM_FRAC_PANEL ! file name for FRAC_PANEL
247  CHARACTER(LEN=6) :: CFTYP_EMIS_PANEL ! file type for EMIS_PANEL
248  CHARACTER(LEN=6) :: CFTYP_ALB_PANEL ! file type for ALB_PANEL
249  CHARACTER(LEN=6) :: CFTYP_EFF_PANEL ! file type for EFF_PANEL
250  CHARACTER(LEN=6) :: CFTYP_FRAC_PANEL ! file type for FRAC_PANEL
251 
252 REAL(KIND=JPRB) :: ZHOOK_HANDLE
253 !
254 
255 NAMELIST/nam_data_teb/ npar_roof_layer, npar_road_layer, npar_wall_layer,&
256  cbld_atype, &
257  nunif_bldtype, cfnam_bldtype, cftyp_bldtype, &
258  nunif_bld_age, cfnam_bld_age, cftyp_bld_age, &
259  ccsvdatafile, &
260  nunif_usetype, cfnam_usetype, cftyp_usetype, &
261  xunif_alb_roof, &
262  xunif_emis_roof, xunif_hc_roof, xunif_tc_roof, &
263  xunif_d_roof, xunif_alb_road, xunif_emis_road, &
264  xunif_hc_road, xunif_tc_road, xunif_d_road, &
265  xunif_alb_wall, xunif_emis_wall, xunif_hc_wall, &
266  xunif_tc_wall, xunif_d_wall, &
267  xunif_z0_town, xunif_bld, xunif_bld_height, &
268  xunif_wall_o_hor, &
269  xunif_h_traffic, xunif_le_traffic, &
270  xunif_h_industry, xunif_le_industry, &
271  xunif_garden, xunif_greenroof, &
272  xunif_road_dir, &
273  cfnam_alb_roof, &
274  cfnam_emis_roof, cfnam_hc_roof, cfnam_tc_roof, &
275  cfnam_d_roof, cfnam_alb_road, cfnam_emis_road, &
276  cfnam_hc_road, cfnam_tc_road, cfnam_d_road, &
277  cfnam_alb_wall, cfnam_emis_wall, cfnam_hc_wall, &
278  cfnam_tc_wall, cfnam_d_wall, &
279  cfnam_z0_town, cfnam_bld, cfnam_bld_height, &
280  cfnam_wall_o_hor, &
281  cfnam_h_traffic, cfnam_le_traffic, &
282  cfnam_h_industry, cfnam_le_industry, &
283  cfnam_garden, cfnam_road_dir, cfnam_greenroof, &
284  cftyp_alb_roof, &
285  cftyp_emis_roof, cftyp_hc_roof, cftyp_tc_roof, &
286  cftyp_d_roof, cftyp_alb_road, cftyp_emis_road, &
287  cftyp_hc_road, cftyp_tc_road, cftyp_d_road, &
288  cftyp_alb_wall, cftyp_emis_wall, cftyp_hc_wall, &
289  cftyp_tc_wall, cftyp_d_wall, &
290  cftyp_z0_town, cftyp_bld, cftyp_bld_height, &
291  cftyp_wall_o_hor, &
292  cftyp_h_traffic, cftyp_le_traffic, &
293  cftyp_h_industry, cftyp_le_industry, &
294  cftyp_garden, cftyp_road_dir, cftyp_greenroof, &
295  xunif_rough_roof, cfnam_rough_roof, cftyp_rough_roof, &
296  xunif_rough_wall, cfnam_rough_wall, cftyp_rough_wall, &
297  xunif_residential,cfnam_residential,cftyp_residential,&
298  xunif_emis_panel, cfnam_emis_panel, cftyp_emis_panel, &
299  xunif_alb_panel, cfnam_alb_panel, cftyp_alb_panel, &
300  xunif_eff_panel, cfnam_eff_panel, cftyp_eff_panel, &
301  xunif_frac_panel, cfnam_frac_panel, cftyp_frac_panel
302 
303 !
304 !-------------------------------------------------------------------------------
305 !
306 !* 1. Initializations
307 ! ---------------
308 !
309 IF (lhook) CALL dr_hook('PGD_TEB_PAR',0,zhook_handle)
310 npar_roof_layer=0
311 npar_road_layer=0
312 npar_wall_layer=0
313 CBLD_ATYPE ='MAJ'
314 nunif_bldtype = nundef
315 nunif_bld_age = nundef
316 nunif_usetype = nundef
317 xunif_bld = xundef
318 xunif_bld_height = xundef
319 xunif_wall_o_hor = xundef
320 xunif_z0_town = xundef
321 xunif_alb_roof = xundef
322 xunif_emis_roof = xundef
323 xunif_hc_roof = xundef
324 xunif_tc_roof = xundef
325 xunif_d_roof = xundef
326 xunif_alb_road = xundef
327 xunif_emis_road = xundef
328 xunif_hc_road = xundef
329 xunif_tc_road = xundef
330 xunif_d_road = xundef
331 xunif_alb_wall = xundef
332 xunif_emis_wall = xundef
333 xunif_hc_wall = xundef
334 xunif_tc_wall = xundef
335 xunif_d_wall = xundef
336 xunif_h_traffic = xundef
337 xunif_le_traffic = xundef
338 xunif_h_industry = xundef
339 xunif_le_industry = xundef
340 xunif_garden = xundef
341 xunif_greenroof = xundef
342 xunif_road_dir = xundef
343 xunif_rough_roof = xundef
344 xunif_rough_wall = xundef
345 xunif_residential = xundef
346 xunif_emis_panel = xundef
347 xunif_alb_panel = xundef
348 xunif_eff_panel = xundef
349 xunif_frac_panel = xundef
350 
351 CFNAM_BLDTYPE = ' '
352 CFNAM_BLD_AGE = ' '
353 CFNAM_USETYPE = ' '
354 CCSVDATAFILE =' '
355 CFNAM_BLD = ' '
356 CFNAM_BLD_HEIGHT = ' '
357 CFNAM_WALL_O_HOR = ' '
358 CFNAM_Z0_TOWN = ' '
359 
360 CFNAM_ALB_ROOF (:) = ' '
361 CFNAM_EMIS_ROOF(:) = ' '
362 CFNAM_HC_ROOF (:) = ' '
363 CFNAM_TC_ROOF (:) = ' '
364 CFNAM_D_ROOF (:) = ' '
365 CFNAM_ROUGH_ROOF(:) = ' '
366 CFNAM_ROUGH_WALL(:) = ' '
367 CFNAM_RESIDENTIAL(:)= ' '
368 CFNAM_ALB_ROAD (:) = ' '
369 CFNAM_EMIS_ROAD(:) = ' '
370 CFNAM_HC_ROAD (:) = ' '
371 CFNAM_TC_ROAD (:) = ' '
372 CFNAM_D_ROAD (:) = ' '
373 CFNAM_ALB_WALL (:) = ' '
374 CFNAM_EMIS_WALL(:) = ' '
375 CFNAM_HC_WALL (:) = ' '
376 CFNAM_TC_WALL (:) = ' '
377 CFNAM_D_WALL (:) = ' '
378 
379 CFNAM_H_TRAFFIC = ' '
380 CFNAM_LE_TRAFFIC = ' '
381 CFNAM_H_INDUSTRY = ' '
382 CFNAM_LE_INDUSTRY = ' '
383 
384 CFNAM_GARDEN = ' '
385 CFNAM_GREENROOF = ' '
386 CFNAM_ROAD_DIR = ' '
387 
388 CFNAM_EMIS_PANEL = ' '
389 CFNAM_ALB_PANEL = ' '
390 CFNAM_EFF_PANEL = ' '
391 CFNAM_FRAC_PANEL = ' '
392 
393 CFTYP_BLDTYPE = ' '
394 CFTYP_BLD_AGE = ' '
395 CFTYP_USETYPE = ' '
396 CFTYP_BLD = ' '
397 CFTYP_BLD_HEIGHT = ' '
398 CFTYP_WALL_O_HOR = ' '
399 CFTYP_Z0_TOWN = ' '
400 CFTYP_ALB_ROOF(:) = ' '
401 CFTYP_EMIS_ROOF(:) = ' '
402 CFTYP_HC_ROOF(:) = ' '
403 CFTYP_TC_ROOF(:) = ' '
404 CFTYP_D_ROOF(:) = ' '
405 CFTYP_ROUGH_ROOF(:) = ' '
406 CFTYP_ROUGH_WALL(:) = ' '
407 CFTYP_RESIDENTIAL(:) = ' '
408 CFTYP_ALB_ROAD(:) = ' '
409 CFTYP_EMIS_ROAD(:) = ' '
410 CFTYP_HC_ROAD(:) = ' '
411 CFTYP_TC_ROAD(:) = ' '
412 CFTYP_D_ROAD(:) = ' '
413 CFTYP_ALB_WALL(:) = ' '
414 CFTYP_EMIS_WALL(:) = ' '
415 CFTYP_HC_WALL(:) = ' '
416 CFTYP_TC_WALL(:) = ' '
417 CFTYP_D_WALL(:) = ' '
418 CFTYP_H_TRAFFIC = ' '
419 CFTYP_LE_TRAFFIC = ' '
420 CFTYP_H_INDUSTRY = ' '
421 CFTYP_LE_INDUSTRY = ' '
422 CFTYP_GARDEN = ' '
423 CFTYP_GREENROOF = ' '
424 CFTYP_ROAD_DIR = ' '
425 !
426 CFTYP_EMIS_PANEL = ' '
427 CFTYP_ALB_PANEL = ' '
428 CFTYP_EFF_PANEL = ' '
429 CFTYP_FRAC_PANEL = ' '
430 !
431 !-------------------------------------------------------------------------------
432 !
433 !* 2. Input file for cover types
434 ! --------------------------
435 !
436  CALL get_luout(hprogram,iluout)
437  CALL open_namelist(hprogram,ilunam)
438 !
439  CALL posnam(ilunam,'NAM_DATA_TEB',gfound,iluout)
440 IF (gfound) READ(unit=ilunam,nml=nam_data_teb)
441 !
442  CALL close_namelist(hprogram,ilunam)
443 !
444  CALL test_nam_var_surf(iluout,'CBLD_ATYPE',cbld_atype,'ARI','MAJ')
445 !
446 dtt%NPAR_ROOF_LAYER = npar_roof_layer
447 dtt%NPAR_ROAD_LAYER = npar_road_layer
448 dtt%NPAR_WALL_LAYER = npar_wall_layer
449 !
450 hbld_atype = cbld_atype
451 !-------------------------------------------------------------------------------
452 !
453 !* coherence check
454 !
455 IF (( any(xunif_hc_road/=xundef) .OR. any(len_trim(cfnam_hc_road)>0) &
456  .OR. any(xunif_tc_road/=xundef) .OR. any(len_trim(cfnam_tc_road)>0) &
457  .OR. any(xunif_d_road /=xundef) .OR. any(len_trim(cfnam_d_road )>0) &
458  ) .AND. npar_road_layer<1 ) THEN
459  CALL abor1_sfx('In order to initialize road thermal quantities, please specify NPAR_ROAD_LAYER in namelist NAM_DATA_TEB')
460 END IF
461 !
462 IF (( any(xunif_hc_roof/=xundef) .OR. any(len_trim(cfnam_hc_roof)>0) &
463  .OR. any(xunif_tc_roof/=xundef) .OR. any(len_trim(cfnam_tc_roof)>0) &
464  .OR. any(xunif_d_roof /=xundef) .OR. any(len_trim(cfnam_d_roof )>0) &
465  ) .AND. npar_roof_layer<1 ) THEN
466  CALL abor1_sfx('In order to initialize ROOF thermal quantities, please specify NPAR_ROOF_LAYER in namelist NAM_DATA_TEB')
467 END IF
468 !
469 IF (( any(xunif_hc_wall/=xundef) .OR. any(len_trim(cfnam_hc_wall)>0) &
470  .OR. any(xunif_tc_wall/=xundef) .OR. any(len_trim(cfnam_tc_wall)>0) &
471  .OR. any(xunif_d_wall /=xundef) .OR. any(len_trim(cfnam_d_wall )>0) &
472  ) .AND. npar_wall_layer<1 ) THEN
473  CALL abor1_sfx('In order to initialize WALL thermal quantities, please specify NPAR_WALL_LAYER in namelist NAM_DATA_TEB')
474 END IF
475 !-------------------------------------------------------------------------------
476 IF (nroof_max < npar_roof_layer) THEN
477  WRITE(iluout,*) '---------------------------------------------'
478  WRITE(iluout,*) 'Please update pgd_teb_par.f90 routine : '
479  WRITE(iluout,*) 'The maximum number of ROOF LAYER '
480  WRITE(iluout,*) 'in the declaration of the namelist variables '
481  WRITE(iluout,*) 'must be increased to : ', npar_roof_layer
482  WRITE(iluout,*) '---------------------------------------------'
483  CALL abor1_sfx('PGD_TEB_PAR: MAXIMUM NUMBER OF NROOF_LAYER MUST BE INCREASED')
484 ENDIF
485 !-------------------------------------------------------------------------------
486 IF (nroad_max < npar_road_layer) THEN
487  WRITE(iluout,*) '---------------------------------------------'
488  WRITE(iluout,*) 'Please update pgd_teb_par.f90 routine : '
489  WRITE(iluout,*) 'The maximum number of ROAD LAYER '
490  WRITE(iluout,*) 'in the declaration of the namelist variables '
491  WRITE(iluout,*) 'must be increased to : ', npar_road_layer
492  WRITE(iluout,*) '---------------------------------------------'
493  CALL abor1_sfx('PGD_TEB_PAR: MAXIMUM NUMBER OF NROAD_LAYER MUST BE INCREASED')
494 ENDIF
495 !-------------------------------------------------------------------------------
496 IF (nwall_max < npar_wall_layer) THEN
497  WRITE(iluout,*) '---------------------------------------------'
498  WRITE(iluout,*) 'Please update pgd_teb_par.f90 routine : '
499  WRITE(iluout,*) 'The maximum number of WALL LAYER '
500  WRITE(iluout,*) 'in the declaration of the namelist variables '
501  WRITE(iluout,*) 'must be increased to : ', npar_wall_layer
502  WRITE(iluout,*) '---------------------------------------------'
503  CALL abor1_sfx('PGD_TEB_PAR: MAXIMUM NUMBER OF NWALL_LAYER MUST BE INCREASED')
504 ENDIF
505 
506 !-------------------------------------------------------------------------------
507 !
508 !* 3. user defined fields are prescribed
509 ! ----------------------------------
510 !
511 !* building's type
512 zunif = xundef
513 IF (nunif_bldtype/=nundef) zunif=float(nunif_bldtype)
514 ALLOCATE(dtt%NPAR_BLDTYPE (kdim))
515  CALL ini_var_from_data_0d(dtco, ug, u, uss, hprogram,'MAJ','BLDTYPE ','TWN', &
516  cfnam_bldtype,cftyp_bldtype,zunif,zwork(:),dtt%LDATA_BLDTYPE )
517 IF (.NOT. dtt%LDATA_BLDTYPE) THEN
518  DEALLOCATE(dtt%NPAR_BLDTYPE)
519 ELSE
520  dtt%NPAR_BLDTYPE = nint(zwork)
521 END IF
522 !
523 !* building's age
524 zunif = xundef
525 IF (nunif_bld_age/=nundef) zunif=float(nunif_bld_age)
526 ALLOCATE(dtt%NPAR_BLD_AGE (kdim))
527  CALL ini_var_from_data_0d(dtco, ug, u, uss, hprogram,'ARI','BLD_AGE ','TWN', &
528  cfnam_bld_age,cftyp_bld_age,zunif,zwork(:),dtt%LDATA_BLD_AGE )
529 IF (.NOT. dtt%LDATA_BLD_AGE) THEN
530  DEALLOCATE(dtt%NPAR_BLD_AGE)
531 ELSE
532  dtt%NPAR_BLD_AGE = nint(zwork)
533 END IF
534 !
535 IF (dtt%LDATA_BLDTYPE .AND. .NOT. dtt%LDATA_BLD_AGE) THEN
536  WRITE(iluout,*) '---------------------------------------------'
537  WRITE(iluout,*) ' You chose to define building types : '
538  IF (nunif_bldtype/=nundef) THEN
539  WRITE(iluout,*) ' NUNIF_BLDTYPE=', nunif_bldtype
540  ELSE
541  WRITE(iluout,*) ' CFNAM_BLDTYPE =',cfnam_bldtype
542  WRITE(iluout,*) ' CFTYP_BLDTYPE =',cftyp_bldtype
543  END IF
544  WRITE(iluout,*) ' But '
545  WRITE(iluout,*) " You did not chose to define building's age"
546  WRITE(iluout,*) '- - - - - - - - - - - - - - - - - - - - - - -'
547  WRITE(iluout,*) ' Please define the construction date of the buildings. '
548  WRITE(iluout,*) ' To do so, use either :'
549  WRITE(iluout,*) ' NUNIF_BLD_AGE (to have a uniform construction date for all buildings'
550  WRITE(iluout,*) ' or CFNAM_BLD_AGE and CFTYP_BLD_AGE (to incorporate spatial data ) '
551  WRITE(iluout,*) '---------------------------------------------'
552  CALL abor1_sfx("PGD_TEB_PAR: Building's age data is missing")
553 END IF
554 !
555 !* building's use
556 zunif = xundef
557 IF (nunif_usetype/=nundef) zunif=float(nunif_usetype)
558 ALLOCATE(dtt%NPAR_USETYPE (kdim))
559  CALL ini_var_from_data_0d(dtco, ug, u, uss, hprogram,'MAJ','USETYPE ','TWN', &
560  cfnam_usetype,cftyp_usetype,zunif,zwork(:),dtt%LDATA_USETYPE )
561 IF (.NOT. dtt%LDATA_USETYPE) THEN
562  DEALLOCATE(dtt%NPAR_USETYPE)
563 ELSE
564  dtt%NPAR_USETYPE = nint(zwork)
565 END IF
566 !
567 IF (dtt%LDATA_BLDTYPE .OR. dtt%LDATA_BLD_AGE .OR. dtt%LDATA_USETYPE) &
568  CALL read_csvdata_teb(bdd, hprogram,ccsvdatafile)
569 !
570 !* building's code
571 IF (ASSOCIATED(dtt%NPAR_BLDTYPE)) THEN
572  ALLOCATE(dtt%NPAR_BLDCODE (kdim))
573  dtt%NPAR_BLDCODE(:) = bldcode(bdd, dtt%NPAR_BLDTYPE,dtt%NPAR_BLD_AGE)
574 ENDIF
575 !
576 !
577 !* other building parameters
578 ALLOCATE(dtt%XPAR_BLD (kdim))
579  CALL ini_var_from_data_0d(dtco, ug, u, uss, hprogram,'ARI','BLD ','TWN', &
580  cfnam_bld,cftyp_bld,xunif_bld,dtt%XPAR_BLD,dtt%LDATA_BLD )
581 IF (.NOT.dtt%LDATA_BLD) DEALLOCATE(dtt%XPAR_BLD)
582 !
583 ALLOCATE(dtt%XPAR_BLD_HEIGHT (kdim))
584  CALL ini_var_from_data_0d(dtco, ug, u, uss, hprogram,'ARI','BLD_HEIGHT ','TWN',&
585  cfnam_bld_height,cftyp_bld_height,xunif_bld_height,&
586  dtt%XPAR_BLD_HEIGHT,dtt%LDATA_BLD_HEIGHT)
587 IF (.NOT.dtt%LDATA_BLD_HEIGHT) DEALLOCATE(dtt%XPAR_BLD_HEIGHT)
588 !
589 ALLOCATE(dtt%XPAR_WALL_O_HOR (kdim))
590  CALL ini_var_from_data_0d(dtco, ug, u, uss, hprogram,'ARI','WALL_O_HOR ','TWN',&
591  cfnam_wall_o_hor,cftyp_wall_o_hor,xunif_wall_o_hor,dtt%XPAR_WALL_O_HOR,dtt%LDATA_WALL_O_HOR)
592 IF (.NOT.dtt%LDATA_WALL_O_HOR) DEALLOCATE(dtt%XPAR_WALL_O_HOR)
593 !
594 ALLOCATE(dtt%XPAR_Z0_TOWN (kdim))
595  CALL ini_var_from_data_0d(dtco, ug, u, uss, hprogram,'CDN','Z0_TOWN ','TWN',&
596  cfnam_z0_town,cftyp_z0_town,xunif_z0_town,dtt%XPAR_Z0_TOWN,dtt%LDATA_Z0_TOWN)
597 IF (.NOT.dtt%LDATA_Z0_TOWN) DEALLOCATE(dtt%XPAR_Z0_TOWN)
598 !
599 ALLOCATE(dtt%XPAR_ALB_ROOF (kdim))
600  CALL ini_var_from_data_0d(dtco, ug, u, uss, hprogram,cbld_atype,'ALB_ROOF ','TWN',&
601  cfnam_alb_roof,cftyp_alb_roof,xunif_alb_roof ,dtt%XPAR_ALB_ROOF,dtt%LDATA_ALB_ROOF)
602 IF (.NOT.dtt%LDATA_ALB_ROOF) DEALLOCATE(dtt%XPAR_ALB_ROOF)
603 !
604 ALLOCATE(dtt%XPAR_EMIS_ROOF (kdim))
605  CALL ini_var_from_data_0d(dtco, ug, u, uss, hprogram,cbld_atype,'EMIS_ROOF ','TWN',&
606  cfnam_emis_roof,cftyp_emis_roof,xunif_emis_roof ,dtt%XPAR_EMIS_ROOF,dtt%LDATA_EMIS_ROOF)
607 IF (.NOT.dtt%LDATA_EMIS_ROOF) DEALLOCATE(dtt%XPAR_EMIS_ROOF)
608 !
609 ALLOCATE(dtt%XPAR_HC_ROOF (kdim,npar_roof_layer))
610  CALL ini_var_from_data(dtco, ug, u, uss, hprogram,cbld_atype,'HC_ROOF ','TWN',&
611  cfnam_hc_roof,cftyp_hc_roof, xunif_hc_roof,dtt%XPAR_HC_ROOF,dtt%LDATA_HC_ROOF )
612 IF (.NOT.dtt%LDATA_HC_ROOF) DEALLOCATE(dtt%XPAR_HC_ROOF)
613 !
614 ALLOCATE(dtt%XPAR_TC_ROOF (kdim,npar_roof_layer))
615  CALL ini_var_from_data(dtco, ug, u, uss, hprogram,cbld_atype,'TC_ROOF ','TWN',&
616  cfnam_tc_roof,cftyp_tc_roof, xunif_tc_roof ,dtt%XPAR_TC_ROOF, dtt%LDATA_TC_ROOF )
617 IF (.NOT.dtt%LDATA_TC_ROOF) DEALLOCATE(dtt%XPAR_TC_ROOF)
618 !
619 ALLOCATE(dtt%XPAR_D_ROOF (kdim,npar_roof_layer))
620  CALL ini_var_from_data(dtco, ug, u, uss, hprogram,cbld_atype,'D_ROOF ','TWN',&
621  cfnam_d_roof,cftyp_d_roof, xunif_d_roof ,dtt%XPAR_D_ROOF , dtt%LDATA_D_ROOF )
622 IF (.NOT.dtt%LDATA_D_ROOF) DEALLOCATE(dtt%XPAR_D_ROOF)
623 !
624 ALLOCATE(dtt%XPAR_ALB_ROAD (kdim))
625  CALL ini_var_from_data_0d(dtco, ug, u, uss, hprogram,'ARI','ALB_ROAD ','TWN',&
626  cfnam_alb_road ,cftyp_alb_road ,xunif_alb_road ,dtt%XPAR_ALB_ROAD, dtt%LDATA_ALB_ROAD )
627 IF (.NOT.dtt%LDATA_ALB_ROAD) DEALLOCATE(dtt%XPAR_ALB_ROAD)
628 !
629 ALLOCATE(dtt%XPAR_EMIS_ROAD (kdim))
630  CALL ini_var_from_data_0d(dtco, ug, u, uss, hprogram,'ARI','EMIS_ROAD ','TWN',&
631  cfnam_emis_road ,cftyp_emis_road ,xunif_emis_road ,dtt%XPAR_EMIS_ROAD, dtt%LDATA_EMIS_ROAD )
632 IF (.NOT.dtt%LDATA_EMIS_ROAD) DEALLOCATE(dtt%XPAR_EMIS_ROAD)
633 !
634 ALLOCATE(dtt%XPAR_HC_ROAD (kdim,npar_road_layer))
635  CALL ini_var_from_data(dtco, ug, u, uss, &
636  hprogram,cbld_atype,'HC_ROAD ','TWN',cfnam_hc_road ,cftyp_hc_road , &
637  xunif_hc_road ,dtt%XPAR_HC_ROAD, dtt%LDATA_HC_ROAD )
638 IF (.NOT.dtt%LDATA_HC_ROAD) DEALLOCATE(dtt%XPAR_HC_ROAD)
639 !
640 ALLOCATE(dtt%XPAR_TC_ROAD (kdim,npar_road_layer))
641  CALL ini_var_from_data(dtco, ug, u, uss, &
642  hprogram,cbld_atype,'TC_ROAD ','TWN',cfnam_tc_road ,cftyp_tc_road , &
643  xunif_tc_road ,dtt%XPAR_TC_ROAD, dtt%LDATA_TC_ROAD )
644 IF (.NOT.dtt%LDATA_TC_ROAD) DEALLOCATE(dtt%XPAR_TC_ROAD)
645 !
646 ALLOCATE(dtt%XPAR_D_ROAD (kdim,npar_road_layer))
647  CALL ini_var_from_data(dtco, ug, u, uss, &
648  hprogram,'ARI','D_ROAD ','TWN',cfnam_d_road ,cftyp_d_road , &
649  xunif_d_road ,dtt%XPAR_D_ROAD , dtt%LDATA_D_ROAD )
650 IF (.NOT.dtt%LDATA_D_ROAD) DEALLOCATE(dtt%XPAR_D_ROAD)
651 !
652 ALLOCATE(dtt%XPAR_ALB_WALL (kdim))
653  CALL ini_var_from_data_0d(dtco, ug, u, uss, &
654  hprogram,cbld_atype,'ALB_WALL ','TWN',cfnam_alb_wall ,cftyp_alb_wall ,xunif_alb_wall ,&
655  dtt%XPAR_ALB_WALL, dtt%LDATA_ALB_WALL )
656 IF (.NOT.dtt%LDATA_ALB_WALL) DEALLOCATE(dtt%XPAR_ALB_WALL)
657 !
658 ALLOCATE(dtt%XPAR_EMIS_WALL (kdim))
659  CALL ini_var_from_data_0d(dtco, ug, u, uss, &
660  hprogram,cbld_atype,'EMIS_WALL ','TWN',cfnam_emis_wall ,cftyp_emis_wall ,xunif_emis_wall ,&
661  dtt%XPAR_EMIS_WALL, dtt%LDATA_EMIS_WALL )
662 IF (.NOT.dtt%LDATA_EMIS_WALL) DEALLOCATE(dtt%XPAR_EMIS_WALL)
663 !
664 ALLOCATE(dtt%XPAR_HC_WALL (kdim,npar_wall_layer))
665  CALL ini_var_from_data(dtco, ug, u, uss, &
666  hprogram,cbld_atype,'HC_WALL ','TWN',cfnam_hc_wall ,cftyp_hc_wall , &
667  xunif_hc_wall ,dtt%XPAR_HC_WALL, dtt%LDATA_HC_WALL )
668 IF (.NOT.dtt%LDATA_HC_WALL) DEALLOCATE(dtt%XPAR_HC_WALL)
669 !
670 ALLOCATE(dtt%XPAR_TC_WALL (kdim,npar_wall_layer))
671  CALL ini_var_from_data(dtco, ug, u, uss, &
672  hprogram,cbld_atype,'TC_WALL ','TWN',cfnam_tc_wall ,cftyp_tc_wall , &
673  xunif_tc_wall ,dtt%XPAR_TC_WALL, dtt%LDATA_TC_WALL )
674 IF (.NOT.dtt%LDATA_TC_WALL) DEALLOCATE(dtt%XPAR_TC_WALL)
675 !
676 ALLOCATE(dtt%XPAR_D_WALL (kdim,npar_wall_layer))
677  CALL ini_var_from_data(dtco, ug, u, uss, &
678  hprogram,cbld_atype,'D_WALL ','TWN',cfnam_d_wall ,cftyp_d_wall , &
679  xunif_d_wall ,dtt%XPAR_D_WALL , dtt%LDATA_D_WALL )
680 IF (.NOT.dtt%LDATA_D_WALL) DEALLOCATE(dtt%XPAR_D_WALL)
681 !
682 ALLOCATE(dtt%XPAR_H_TRAFFIC (kdim))
683  CALL ini_var_from_data_0d(dtco, ug, u, uss, &
684  hprogram,'ARI','H_TRAFFIC ','TWN',cfnam_h_traffic ,cftyp_h_traffic ,xunif_h_traffic ,&
685  dtt%XPAR_H_TRAFFIC, dtt%LDATA_H_TRAFFIC )
686 IF (.NOT.dtt%LDATA_H_TRAFFIC) DEALLOCATE(dtt%XPAR_H_TRAFFIC)
687 !
688 ALLOCATE(dtt%XPAR_LE_TRAFFIC (kdim))
689  CALL ini_var_from_data_0d(dtco, ug, u, uss, &
690  hprogram,'ARI','LE_TRAFFIC ','TWN',cfnam_le_traffic ,cftyp_le_traffic ,xunif_le_traffic ,&
691  dtt%XPAR_LE_TRAFFIC, dtt%LDATA_LE_TRAFFIC )
692 IF (.NOT.dtt%LDATA_LE_TRAFFIC) DEALLOCATE(dtt%XPAR_LE_TRAFFIC)
693 !
694 ALLOCATE(dtt%XPAR_H_INDUSTRY (kdim))
695  CALL ini_var_from_data_0d(dtco, ug, u, uss, &
696  hprogram,'ARI','H_INDUSTRY ','TWN',cfnam_h_industry ,cftyp_h_industry ,xunif_h_industry ,&
697  dtt%XPAR_H_INDUSTRY, dtt%LDATA_H_INDUSTRY )
698 IF (.NOT.dtt%LDATA_H_INDUSTRY) DEALLOCATE(dtt%XPAR_H_INDUSTRY)
699 !
700 ALLOCATE(dtt%XPAR_LE_INDUSTRY (kdim))
701  CALL ini_var_from_data_0d(dtco, ug, u, uss, &
702  hprogram,'ARI','LE_INDUSTRY','TWN',cfnam_le_industry,cftyp_le_industry,xunif_le_industry,&
703  dtt%XPAR_LE_INDUSTRY, dtt%LDATA_LE_INDUSTRY )
704 IF (.NOT.dtt%LDATA_LE_INDUSTRY) DEALLOCATE(dtt%XPAR_LE_INDUSTRY)
705 !
706 ALLOCATE(dtt%XPAR_ROUGH_ROOF (kdim))
707  CALL ini_var_from_data_0d(dtco, ug, u, uss, &
708  hprogram,cbld_atype,'ROUGH_ROOF','TWN',cfnam_rough_roof,cftyp_rough_roof,xunif_rough_roof ,&
709  dtt%XPAR_ROUGH_ROOF,dtt%LDATA_ROUGH_ROOF)
710 IF (.NOT.dtt%LDATA_ROUGH_ROOF) DEALLOCATE(dtt%XPAR_ROUGH_ROOF)
711 !
712 ALLOCATE(dtt%XPAR_ROUGH_WALL (kdim))
713  CALL ini_var_from_data_0d(dtco, ug, u, uss, &
714  hprogram,cbld_atype,'ROUGH_WALL','TWN',cfnam_rough_wall,cftyp_rough_wall,xunif_rough_wall ,&
715  dtt%XPAR_ROUGH_WALL,dtt%LDATA_ROUGH_WALL)
716 IF (.NOT.dtt%LDATA_ROUGH_WALL) DEALLOCATE(dtt%XPAR_ROUGH_WALL)
717 !
718 ALLOCATE(dtt%XPAR_RESIDENTIAL (kdim))
719  CALL ini_var_from_data_0d(dtco, ug, u, uss, &
720  hprogram,cbld_atype,'RESIDENTIAL','TWN',cfnam_residential,cftyp_residential,xunif_residential ,&
721  dtt%XPAR_RESIDENTIAL,dtt%LDATA_RESIDENTIAL)
722 IF (.NOT.dtt%LDATA_RESIDENTIAL) DEALLOCATE(dtt%XPAR_RESIDENTIAL)
723 !-------------------------------------------------------------------------------
724 !
725 !* coherence checks
726 !
727  CALL coherence_thermal_data('ROAD',dtt%LDATA_HC_ROAD,dtt%LDATA_TC_ROAD,dtt%LDATA_D_ROAD)
728  CALL coherence_thermal_data('ROOF',dtt%LDATA_HC_ROOF,dtt%LDATA_TC_ROOF,dtt%LDATA_D_ROOF)
729  CALL coherence_thermal_data('WALL',dtt%LDATA_HC_WALL,dtt%LDATA_TC_WALL,dtt%LDATA_D_WALL)
730 
731 !-------------------------------------------------------------------------------
732 !
733 !* road directions
734 !
735 ALLOCATE(dtt%XPAR_ROAD_DIR (kdim))
736  CALL ini_var_from_data_0d(dtco, ug, u, uss, &
737  hprogram,'ARI','ROAD_DIR ','TWN',cfnam_road_dir ,cftyp_road_dir ,xunif_road_dir ,&
738  dtt%XPAR_ROAD_DIR, dtt%LDATA_ROAD_DIR )
739 IF (.NOT.dtt%LDATA_ROAD_DIR) DEALLOCATE(dtt%XPAR_ROAD_DIR)
740 !
741 !-------------------------------------------------------------------------------
742 !
743 !* solar panels
744 !
745 ALLOCATE(dtt%XPAR_EMIS_PANEL (kdim))
746  CALL ini_var_from_data_0d(dtco, ug, u, uss, &
747  hprogram,'ARI','EMIS_PANEL ','BLD',cfnam_emis_panel,cftyp_emis_panel,xunif_emis_panel,&
748  dtt%XPAR_EMIS_PANEL, dtt%LDATA_EMIS_PANEL )
749 IF (.NOT.dtt%LDATA_EMIS_PANEL) DEALLOCATE(dtt%XPAR_EMIS_PANEL)
750 ALLOCATE(dtt%XPAR_ALB_PANEL (kdim))
751  CALL ini_var_from_data_0d(dtco, ug, u, uss, &
752  hprogram,'ARI','ALB_PANEL ','BLD',cfnam_alb_panel ,cftyp_alb_panel ,xunif_alb_panel ,&
753  dtt%XPAR_ALB_PANEL , dtt%LDATA_ALB_PANEL )
754 IF (.NOT.dtt%LDATA_ALB_PANEL ) DEALLOCATE(dtt%XPAR_ALB_PANEL )
755 ALLOCATE(dtt%XPAR_EFF_PANEL (kdim))
756  CALL ini_var_from_data_0d(dtco, ug, u, uss, &
757  hprogram,'ARI','EFF_PANEL ','BLD',cfnam_eff_panel ,cftyp_eff_panel ,xunif_eff_panel ,&
758  dtt%XPAR_EFF_PANEL , dtt%LDATA_EFF_PANEL )
759 IF (.NOT.dtt%LDATA_EFF_PANEL ) DEALLOCATE(dtt%XPAR_EFF_PANEL )
760 ALLOCATE(dtt%XPAR_FRAC_PANEL (kdim))
761  CALL ini_var_from_data_0d(dtco, ug, u, uss, &
762  hprogram,'ARI','FRAC_PANEL ','BLD',cfnam_frac_panel,cftyp_frac_panel,xunif_frac_panel,&
763  dtt%XPAR_FRAC_PANEL, dtt%LDATA_FRAC_PANEL )
764 IF (.NOT.dtt%LDATA_FRAC_PANEL) DEALLOCATE(dtt%XPAR_FRAC_PANEL)
765 !
766 !-------------------------------------------------------------------------------
767 !
768 !* greenroof fraction
769 !
770 IF (ogreenroof) THEN
771  ALLOCATE(dtt%XPAR_GREENROOF (kdim))
772  CALL ini_var_from_data_0d(dtco, ug, u, uss, &
773  hprogram,cbld_atype,'GREENROOF','BLD',cfnam_greenroof,cftyp_greenroof,xunif_greenroof ,&
774  dtt%XPAR_GREENROOF,dtt%LDATA_GREENROOF)
775  IF (.NOT.dtt%LDATA_GREENROOF) DEALLOCATE(dtt%XPAR_GREENROOF)
776 ELSE IF ( (xunif_greenroof/=0. .AND. xunif_greenroof/=xundef) .OR. len_trim(cfnam_greenroof)/=0) THEN
777  WRITE(iluout,*) '---------------------------------------------'
778  WRITE(iluout,*) ' You chose not to include greenroofs in urban areas : LGREENROOF=.FALSE. '
779  WRITE(iluout,*) ' But '
780  IF (xunif_greenroof/=0. .AND. xunif_greenroof/=xundef) THEN
781  WRITE(iluout,*) ' You also chose a greenroof fraction that is not zero : XUNIF_GREENROOF=',xunif_greenroof
782  ELSE
783  WRITE(iluout,*) ' You also chose a greenroof fraction that is not zero : CFNAM_GREENROOF=',cfnam_greenroof
784  END IF
785  WRITE(iluout,*) '- - - - - - - - - - - - - - - - - - - - - - -'
786  WRITE(iluout,*) ' Please choose either:'
787  WRITE(iluout,*) ' LGREENROOF=.TRUE. or set GREENROOF fraction to zero (XUNIF_GREENROOF=0.) in namelist PGD_TEB_PAR'
788  WRITE(iluout,*) '---------------------------------------------'
789  CALL abor1_sfx('PGD_TEB_PAR: GREENROOF flag and GREENROOF fraction not coherent')
790 END IF
791 !
792 !-------------------------------------------------------------------------------
793 !
794 !* gardens
795 !
796 IF (ogarden) THEN
797  ALLOCATE(dtt%XPAR_GARDEN (kdim))
798  CALL ini_var_from_data_0d(dtco, ug, u, uss, &
799  hprogram,'ARI','GARDEN ','TWN',cfnam_garden ,cftyp_garden ,xunif_garden ,&
800  dtt%XPAR_GARDEN, dtt%LDATA_GARDEN )
801  IF (.NOT.dtt%LDATA_GARDEN) DEALLOCATE(dtt%XPAR_GARDEN)
802 ELSE IF ( (xunif_garden/=0. .AND. xunif_garden/=xundef) .OR. len_trim(cfnam_garden)/=0) THEN
803  WRITE(iluout,*) '---------------------------------------------'
804  WRITE(iluout,*) ' You chose not to include gardens in urban areas : LGARDEN=.FALSE. '
805  WRITE(iluout,*) ' But '
806  IF (xunif_garden/=0. .AND. xunif_garden/=xundef) THEN
807  WRITE(iluout,*) ' You also chose a garden fraction that is not zero : XUNIF_GARDEN=',xunif_garden
808  ELSE
809  WRITE(iluout,*) ' You also chose a garden fraction that is not zero : CFNAM_GARDEN=',cfnam_garden
810  END IF
811  WRITE(iluout,*) '- - - - - - - - - - - - - - - - - - - - - - -'
812  WRITE(iluout,*) ' Please choose either:'
813  WRITE(iluout,*) ' LGARDEN=.TRUE. or set GARDEN fraction to zero (XUNIF_GARDEN=0.) in namelist PGD_TEB_PAR'
814  WRITE(iluout,*) '- - - - - - - - - - - - - - - - - - - - - - -'
815  WRITE(iluout,*) ' Beware that in this case, it may be necessary to change the'
816  WRITE(iluout,*) ' road fraction if you want to keep the same canyon aspect ratio'
817  WRITE(iluout,*) '---------------------------------------------'
818  CALL abor1_sfx('PGD_TEB_PAR: GARDEN flag and GARDEN fraction not coherent')
819 END IF
820 !
821 !
822 !-------------------------------------------------------------------------------
823 IF (lhook) CALL dr_hook('PGD_TEB_PAR',1,zhook_handle)
824 !-------------------------------------------------------------------------------
825 CONTAINS
826 SUBROUTINE coherence_thermal_data(HTYPE,ODATA_HC,ODATA_TC,ODATA_D)
827  CHARACTER(LEN=4), INTENT(IN) :: HTYPE
828 LOGICAL, INTENT(IN) :: ODATA_HC
829 LOGICAL, INTENT(IN) :: ODATA_TC
830 LOGICAL, INTENT(IN) :: ODATA_D
831 !
832 IF (odata_hc .OR. odata_tc .OR. odata_d) THEN
833  IF (.NOT. (odata_hc .AND. odata_tc .AND. odata_d)) THEN
834  WRITE(iluout,*) '*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*'
835  WRITE(iluout,*) 'When specifying data for thermal ',trim(htype),' characteristics,'
836  WRITE(iluout,*) 'All three parameters MUST be defined:'
837  WRITE(iluout,*) 'Heat capacity, Thermal conductivity and depths of layers'
838  WRITE(iluout,*) ' '
839  WRITE(iluout,*) 'In your case :'
840  IF (odata_hc) THEN
841  WRITE(iluout,*) 'Heat capacity is defined'
842  ELSE
843  WRITE(iluout,*) 'Heat capacity is NOT defined'
844  END IF
845  IF (odata_tc) THEN
846  WRITE(iluout,*) 'Thermal conductivity is defined'
847  ELSE
848  WRITE(iluout,*) 'Thermal conductivity is NOT defined'
849  END IF
850  IF (odata_d) THEN
851  WRITE(iluout,*) 'Depths of layers are defined'
852  ELSE
853  WRITE(iluout,*) 'Depths of layers are NOT defined'
854  END IF
855  WRITE(iluout,*) '*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*'
856  CALL abor1_sfx('Heat capacity, Thermal conductivity and depths of layers MUST all be defined for '//htype)
857  END IF
858 END IF
859 END SUBROUTINE coherence_thermal_data
860 !-------------------------------------------------------------------------------
861 !
862 END SUBROUTINE pgd_teb_par
static const char * trim(const char *name, int *n)
Definition: drhook.c:2383
subroutine coherence_thermal_data(HTYPE, ODATA_HC, ODATA_TC, ODATA_D)
integer function, dimension(size(ktype)) bldcode(BDD, KTYPE, KAGE)
Definition: bldcode.F90:6
subroutine posnam(KULNAM, HDNAML, OFOUND, KLUOUT)
subroutine abor1_sfx(YTEXT)
Definition: abor1_sfx.F90:7
real, parameter xundef
integer, parameter jprb
Definition: parkind1.F90:32
integer, parameter nundef
subroutine read_csvdata_teb(BDD, HPROGRAM, HFILE)
subroutine close_namelist(HPROGRAM, KLUNAM)
subroutine get_luout(HPROGRAM, KLUOUT)
Definition: get_luout.F90:7
logical lhook
Definition: yomhook.F90:15
subroutine pgd_teb_par(DTCO, UG, U, USS, BDD, DTT, KDIM, HPROGRAM, OGARDEN, OGREENROOF, HBLD_ATYPE)
Definition: pgd_teb_par.F90:8
subroutine open_namelist(HPROGRAM, KLUNAM, HFILE)