SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
read_pgd_teb_parn.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 read_pgd_teb_par_n (DTCO, U, &
7  bdd, dtb, dtt, tg, top, &
8  hprogram,kni,hdirin)
9 ! ################################################
10 !
11 !!**** *READ_PGD_TEB_PAR_n* - reads ISBA physiographic fields
12 !!
13 !!
14 !! PURPOSE
15 !! -------
16 !!
17 !!** METHOD
18 !! ------
19 !!
20 !! EXTERNAL
21 !! --------
22 !!
23 !!
24 !! IMPLICIT ARGUMENTS
25 !! ------------------
26 !!
27 !! REFERENCE
28 !! ---------
29 !!
30 !!
31 !! AUTHOR
32 !! ------
33 !! V. Masson *Meteo France*
34 !!
35 !! MODIFICATIONS
36 !! -------------
37 !! Original 05/2005
38 !! V. Masson 08/2013 adds solar panels
39 !-------------------------------------------------------------------------------
40 !
41 !* 0. DECLARATIONS
42 ! ------------
43 !
44 !
45 
46 !
47 !
48 !
49 !
50 !
52 USE modd_surf_atm_n, ONLY : surf_atm_t
53 !
55 USE modd_data_bem_n, ONLY : data_bem_t
56 USE modd_data_teb_n, ONLY : data_teb_t
57 USE modd_teb_grid_n, ONLY : teb_grid_t
59 !
61 USE modi_read_bld_description_n
62 USE modi_get_luout
63 USE modi_bldcode
64 USE modi_abor1_sfx
65 !
66 USE yomhook ,ONLY : lhook, dr_hook
67 USE parkind1 ,ONLY : jprb
68 !
69 IMPLICIT NONE
70 !
71 !* 0.1 Declarations of arguments
72 ! -------------------------
73 !
74 !
75 !
76 TYPE(data_cover_t), INTENT(INOUT) :: dtco
77 TYPE(surf_atm_t), INTENT(INOUT) :: u
78 !
79 TYPE(bld_desc_t), INTENT(INOUT) :: bdd
80 TYPE(data_bem_t), INTENT(INOUT) :: dtb
81 TYPE(data_teb_t), INTENT(INOUT) :: dtt
82 TYPE(teb_grid_t), INTENT(INOUT) :: tg
83 TYPE(teb_options_t), INTENT(INOUT) :: top
84 !
85  CHARACTER(LEN=6), INTENT(IN) :: hprogram ! program calling
86 INTEGER, INTENT(IN) :: kni ! size of the new domain
87  CHARACTER(LEN=1), INTENT(IN) :: hdirin
88 !
89 !* 0.2 Declarations of local variables
90 ! -------------------------------
91 !
92 INTEGER :: iluout ! output listing logical unit
93 INTEGER :: iresp ! IRESP : return-code if a problem appears
94  CHARACTER(LEN=12) :: yrecfm ! Name of the article to be read
95 INTEGER :: jlayer ! loop index
96 !
97 INTEGER :: iversion ! surface version
98 INTEGER :: ibugfix ! surface bugfix version
99 REAL, DIMENSION(TG%NDIM) :: zwork ! work array
100 REAL(KIND=JPRB) :: zhook_handle
101 !
102 !-------------------------------------------------------------------------------
103 IF (lhook) CALL dr_hook('READ_PGD_TEB_PAR_N',0,zhook_handle)
104 !
105  CALL get_luout(hprogram,iluout)
106 !
107 yrecfm='VERSION'
108  CALL read_surf(&
109  hprogram,yrecfm,iversion,iresp)
110 yrecfm='BUG'
111  CALL read_surf(&
112  hprogram,yrecfm,ibugfix,iresp)
113 !
114 IF (iversion<7 .AND. .NOT.top%LECOCLIMAP) THEN
115  !
116  dtt%LDATA_BLDTYPE = .false.
117  dtt%LDATA_BLD_AGE = .false.
118  dtt%LDATA_USETYPE = .false.
119  dtt%LDATA_Z0_TOWN = .true.
120  dtt%LDATA_BLD = .true.
121  dtt%LDATA_GARDEN = .true.
122  dtt%LDATA_GREENROOF = .true.
123  dtt%LDATA_ROAD_DIR = .false.
124  dtt%LDATA_ALB_ROOF = .true.
125  dtt%LDATA_EMIS_ROOF = .true.
126  dtt%LDATA_HC_ROOF = .true.
127  dtt%LDATA_TC_ROOF = .true.
128  dtt%LDATA_D_ROOF = .true.
129  dtt%LDATA_ALB_ROAD = .true.
130  dtt%LDATA_EMIS_ROAD = .true.
131  dtt%LDATA_HC_ROAD = .true.
132  dtt%LDATA_TC_ROAD = .true.
133  dtt%LDATA_D_ROAD = .true.
134  dtt%LDATA_ALB_WALL = .true.
135  dtt%LDATA_EMIS_WALL = .true.
136  dtt%LDATA_HC_WALL = .true.
137  dtt%LDATA_TC_WALL = .true.
138  dtt%LDATA_D_WALL = .true.
139  dtt%LDATA_BLD_HEIGHT = .true.
140  dtt%LDATA_WALL_O_HOR = .true.
141  dtt%LDATA_H_TRAFFIC = .true.
142  dtt%LDATA_LE_TRAFFIC = .true.
143  dtt%LDATA_H_INDUSTRY = .true.
144  dtt%LDATA_LE_INDUSTRY = .true.
145  dtt%LDATA_ROUGH_ROOF = .false.
146  dtt%LDATA_ROUGH_WALL = .false.
147  dtt%LDATA_RESIDENTIAL = .false.
148  !
149 ELSEIF (iversion>=7) THEN
150  !
151  IF (iversion>7 .OR. ibugfix>=3) THEN
152  yrecfm='L_BLDTYPE'
153  CALL read_surf(&
154  hprogram,yrecfm,dtt%LDATA_BLDTYPE,iresp)
155  yrecfm='L_BLD_AGE'
156  CALL read_surf(&
157  hprogram,yrecfm,dtt%LDATA_BLD_AGE,iresp)
158  yrecfm='L_USETYPE'
159  CALL read_surf(&
160  hprogram,yrecfm,dtt%LDATA_USETYPE,iresp)
161  IF (dtt%LDATA_BLDTYPE .OR. dtt%LDATA_BLD_AGE .OR. dtt%LDATA_USETYPE) CALL read_bld_description_n(&
162  bdd, &
163  hprogram)
164  ENDIF
165  yrecfm='L_Z0_TOWN'
166  CALL read_surf(&
167  hprogram,yrecfm,dtt%LDATA_Z0_TOWN,iresp)
168  yrecfm='L_BLD'
169  CALL read_surf(&
170  hprogram,yrecfm,dtt%LDATA_BLD,iresp)
171  IF (iversion>=6) THEN
172  yrecfm='L_GARDEN'
173  CALL read_surf(&
174  hprogram,yrecfm,dtt%LDATA_GARDEN,iresp)
175  ENDIF
176  IF (iversion==7 .AND. ibugfix<=2) THEN
177  dtt%LDATA_ROAD_DIR = .false.
178  dtt%LDATA_GREENROOF= .false.
179  ELSE
180  yrecfm='L_ROAD_DIR'
181  CALL read_surf(&
182  hprogram,yrecfm,dtt%LDATA_ROAD_DIR,iresp)
183  yrecfm='L_GREENROOF'
184  CALL read_surf(&
185  hprogram,yrecfm,dtt%LDATA_GREENROOF,iresp)
186  END IF
187  IF (iversion==7 .AND. ibugfix<=3) THEN
188  dtt%LDATA_EMIS_PANEL = .false.
189  dtt%LDATA_ALB_PANEL = .false.
190  dtt%LDATA_EFF_PANEL = .false.
191  dtt%LDATA_FRAC_PANEL = .false.
192  ELSE
193  yrecfm='L_EMIS_PANEL'
194  CALL read_surf(&
195  hprogram,yrecfm,dtt%LDATA_EMIS_PANEL,iresp)
196  yrecfm='L_ALB_PANEL'
197  CALL read_surf(&
198  hprogram,yrecfm,dtt%LDATA_ALB_PANEL,iresp)
199  yrecfm='L_EFF_PANEL'
200  CALL read_surf(&
201  hprogram,yrecfm,dtt%LDATA_EFF_PANEL,iresp)
202  yrecfm='L_FRAC_PANEL'
203  CALL read_surf(&
204  hprogram,yrecfm,dtt%LDATA_FRAC_PANEL,iresp)
205  END IF
206  yrecfm='L_ALB_ROOF'
207  CALL read_surf(&
208  hprogram,yrecfm,dtt%LDATA_ALB_ROOF,iresp)
209  yrecfm='L_EMIS_ROOF'
210  CALL read_surf(&
211  hprogram,yrecfm,dtt%LDATA_EMIS_ROOF,iresp)
212  yrecfm='L_HC_ROOF'
213  CALL read_surf(&
214  hprogram,yrecfm,dtt%LDATA_HC_ROOF,iresp)
215  yrecfm='L_TC_ROOF'
216  CALL read_surf(&
217  hprogram,yrecfm,dtt%LDATA_TC_ROOF,iresp)
218  yrecfm='L_D_ROOF'
219  CALL read_surf(&
220  hprogram,yrecfm,dtt%LDATA_D_ROOF,iresp)
221  yrecfm='L_ALB_ROAD'
222  CALL read_surf(&
223  hprogram,yrecfm,dtt%LDATA_ALB_ROAD,iresp)
224  yrecfm='L_EMIS_ROAD'
225  CALL read_surf(&
226  hprogram,yrecfm,dtt%LDATA_EMIS_ROAD,iresp)
227  yrecfm='L_HC_ROAD'
228  CALL read_surf(&
229  hprogram,yrecfm,dtt%LDATA_HC_ROAD,iresp)
230  yrecfm='L_TC_ROAD'
231  CALL read_surf(&
232  hprogram,yrecfm,dtt%LDATA_TC_ROAD,iresp)
233  yrecfm='L_D_ROAD'
234  CALL read_surf(&
235  hprogram,yrecfm,dtt%LDATA_D_ROAD,iresp)
236  yrecfm='L_ALB_WALL'
237  CALL read_surf(&
238  hprogram,yrecfm,dtt%LDATA_ALB_WALL,iresp)
239  yrecfm='L_EMIS_WALL'
240  CALL read_surf(&
241  hprogram,yrecfm,dtt%LDATA_EMIS_WALL,iresp)
242  yrecfm='L_HC_WALL'
243  CALL read_surf(&
244  hprogram,yrecfm,dtt%LDATA_HC_WALL,iresp)
245  yrecfm='L_TC_WALL'
246  CALL read_surf(&
247  hprogram,yrecfm,dtt%LDATA_TC_WALL,iresp)
248  yrecfm='L_D_WALL'
249  CALL read_surf(&
250  hprogram,yrecfm,dtt%LDATA_D_WALL,iresp)
251  yrecfm='L_BLD_HEIGHT'
252  CALL read_surf(&
253  hprogram,yrecfm,dtt%LDATA_BLD_HEIGHT,iresp)
254  yrecfm='L_WALL_O_HOR'
255  CALL read_surf(&
256  hprogram,yrecfm,dtt%LDATA_WALL_O_HOR,iresp)
257  yrecfm='L_H_TRAF'
258  CALL read_surf(&
259  hprogram,yrecfm,dtt%LDATA_H_TRAFFIC,iresp)
260  yrecfm='L_LE_TRAF'
261  CALL read_surf(&
262  hprogram,yrecfm,dtt%LDATA_LE_TRAFFIC,iresp)
263  yrecfm='L_H_IND'
264  CALL read_surf(&
265  hprogram,yrecfm,dtt%LDATA_H_INDUSTRY,iresp)
266  yrecfm='L_LE_IND'
267  CALL read_surf(&
268  hprogram,yrecfm,dtt%LDATA_LE_INDUSTRY,iresp)
269  IF (iversion>7 .OR. ibugfix>=3) THEN
270  yrecfm='L_ROUGH_ROOF'
271  CALL read_surf(&
272  hprogram,yrecfm,dtt%LDATA_ROUGH_ROOF,iresp)
273  yrecfm='L_ROUGH_WALL'
274  CALL read_surf(&
275  hprogram,yrecfm,dtt%LDATA_ROUGH_WALL,iresp)
276  ENDIF
277  IF (iversion>7) THEN
278  yrecfm='L_F_RESIDENT'
279  CALL read_surf(&
280  hprogram,yrecfm,dtt%LDATA_RESIDENTIAL,iresp)
281  ENDIF
282  !
283  IF (top%CBEM=='BEM') THEN
284  yrecfm='L_HC_FLOOR'
285  CALL read_surf(&
286  hprogram,yrecfm,dtb%LDATA_HC_FLOOR,iresp)
287  yrecfm='L_TC_FLOOR'
288  CALL read_surf(&
289  hprogram,yrecfm,dtb%LDATA_TC_FLOOR,iresp)
290  yrecfm='L_D_FLOOR'
291  CALL read_surf(&
292  hprogram,yrecfm,dtb%LDATA_D_FLOOR,iresp)
293  yrecfm='L_TCOOL_TARG'
294  CALL read_surf(&
295  hprogram,yrecfm,dtb%LDATA_TCOOL_TARGET,iresp)
296  yrecfm='L_THEAT_TARG'
297  CALL read_surf(&
298  hprogram,yrecfm,dtb%LDATA_THEAT_TARGET,iresp)
299  yrecfm='L_F_WAST_CAN'
300  CALL read_surf(&
301  hprogram,yrecfm,dtb%LDATA_F_WASTE_CAN,iresp)
302  yrecfm='L_EFF_HEAT'
303  CALL read_surf(&
304  hprogram,yrecfm,dtb%LDATA_EFF_HEAT,iresp)
305  yrecfm='L_QIN'
306  CALL read_surf(&
307  hprogram,yrecfm,dtb%LDATA_QIN,iresp)
308  yrecfm='L_QIN_FRAD'
309  CALL read_surf(&
310  hprogram,yrecfm,dtb%LDATA_QIN_FRAD,iresp)
311  yrecfm='L_SHGC'
312  CALL read_surf(&
313  hprogram,yrecfm,dtb%LDATA_SHGC,iresp)
314  yrecfm='L_U_WIN'
315  CALL read_surf(&
316  hprogram,yrecfm,dtb%LDATA_U_WIN,iresp)
317  yrecfm='L_GR'
318  CALL read_surf(&
319  hprogram,yrecfm,dtb%LDATA_GR,iresp)
320  yrecfm='L_SHGC_SH'
321  CALL read_surf(&
322  hprogram,yrecfm,dtb%LDATA_SHGC_SH,iresp)
323  yrecfm='L_FLOOR_HEIG'
324  CALL read_surf(&
325  hprogram,yrecfm,dtb%LDATA_FLOOR_HEIGHT,iresp)
326  yrecfm='L_INF'
327  CALL read_surf(&
328  hprogram,yrecfm,dtb%LDATA_INF,iresp)
329  yrecfm='L_FWAT_COND'
330  CALL read_surf(&
331  hprogram,yrecfm,dtb%LDATA_F_WATER_COND,iresp)
332  yrecfm='L_SHADE'
333  CALL read_surf(&
334  hprogram,yrecfm,dtb%LDATA_SHADE,iresp)
335  yrecfm='L_NATVENT'
336  CALL read_surf(&
337  hprogram,yrecfm,dtb%LDATA_NATVENT,iresp)
338  yrecfm='L_V_VENT'
339  CALL read_surf(&
340  hprogram,yrecfm,dtb%LDATA_V_VENT,iresp)
341  yrecfm='L_QIN_FLAT'
342  CALL read_surf(&
343  hprogram,yrecfm,dtb%LDATA_QIN_FLAT,iresp)
344  yrecfm='L_HR_TARGET'
345  CALL read_surf(&
346  hprogram,yrecfm,dtb%LDATA_HR_TARGET,iresp)
347  yrecfm='L_CAP_SYS_HE'
348  CALL read_surf(&
349  hprogram,yrecfm,dtb%LDATA_CAP_SYS_HEAT,iresp)
350  yrecfm='L_CAP_SYS_RA'
351  CALL read_surf(&
352  hprogram,yrecfm,dtb%LDATA_CAP_SYS_RAT,iresp)
353  yrecfm='L_T_ADP'
354  CALL read_surf(&
355  hprogram,yrecfm,dtb%LDATA_T_ADP,iresp)
356  yrecfm='L_M_SYS_RAT'
357  CALL read_surf(&
358  hprogram,yrecfm,dtb%LDATA_M_SYS_RAT,iresp)
359  yrecfm='L_COP_RAT'
360  CALL read_surf(&
361  hprogram,yrecfm,dtb%LDATA_COP_RAT,iresp)
362  yrecfm='L_T_SIZE_MAX'
363  CALL read_surf(&
364  hprogram,yrecfm,dtb%LDATA_T_SIZE_MAX,iresp)
365  yrecfm='L_T_SIZE_MIN'
366  CALL read_surf(&
367  hprogram,yrecfm,dtb%LDATA_T_SIZE_MIN,iresp)
368  ENDIF
369  !
370 ENDIF
371 !
372 !* read number of layers if thermal properties are specified
373 !
374 IF (dtt%LDATA_HC_ROOF) THEN
375  yrecfm='PAR_RF_LAYER'
376  IF (iversion<7 .OR. (iversion==7 .AND. ibugfix<=2)) yrecfm='ROOF_LAYER'
377  CALL read_surf(&
378  hprogram,yrecfm,dtt%NPAR_ROOF_LAYER,iresp)
379 END IF
380 !
381 IF (dtt%LDATA_HC_ROAD) THEN
382  yrecfm='PAR_RD_LAYER'
383  IF (iversion<7 .OR. (iversion==7 .AND. ibugfix<=2)) yrecfm='ROAD_LAYER'
384  CALL read_surf(&
385  hprogram,yrecfm,dtt%NPAR_ROAD_LAYER,iresp)
386 END IF
387 !
388 IF (dtt%LDATA_HC_WALL) THEN
389  yrecfm='PAR_WL_LAYER'
390  IF (iversion<7 .OR. (iversion==7 .AND. ibugfix<=2)) yrecfm='WALL_LAYER'
391  CALL read_surf(&
392  hprogram,yrecfm,dtt%NPAR_WALL_LAYER,iresp)
393 END IF
394 !
395 IF (dtb%LDATA_HC_FLOOR) THEN
396  yrecfm='PAR_FL_LAYER'
397  IF (iversion<7 .OR. (iversion==7 .AND. ibugfix<=2)) yrecfm='FLOOR_LAYER'
398  CALL read_surf(&
399  hprogram,yrecfm,dtb%NPAR_FLOOR_LAYER,iresp)
400 END IF
401 !
402 !* read specified fields
403 !
404 IF (dtt%LDATA_BLDTYPE .AND. .NOT. dtt%LDATA_BLDTYPE) THEN
405  CALL abor1_sfx('FATAL ERROR: Building type is prescribed but not the building age')
406 END IF
407 !
408 IF (dtt%LDATA_BLDTYPE) THEN
409  ALLOCATE(dtt%NPAR_BLDTYPE (tg%NDIM))
410  yrecfm='D_BLDTYPE'
411  CALL read_field(yrecfm,zwork,hdirin)
412  dtt%NPAR_BLDTYPE(:) = nint(zwork)
413 ENDIF
414 !
415 IF (dtt%LDATA_BLD_AGE) THEN
416  ALLOCATE(dtt%NPAR_BLD_AGE (tg%NDIM))
417  yrecfm='D_BLD_AGE'
418  CALL read_field(yrecfm,zwork,hdirin)
419  dtt%NPAR_BLD_AGE(:) = nint(zwork)
420 ENDIF
421 !
422 IF (dtt%LDATA_BLDTYPE .AND. dtt%LDATA_BLDTYPE) THEN
423  ALLOCATE(dtt%NPAR_BLDCODE(tg%NDIM))
424  dtt%NPAR_BLDCODE=bldcode(bdd, dtt%NPAR_BLDTYPE,dtt%NPAR_BLD_AGE)
425 END IF
426 !
427 IF (dtt%LDATA_USETYPE) THEN
428  ALLOCATE(dtt%NPAR_USETYPE (tg%NDIM))
429  yrecfm='D_USETYPE'
430  CALL read_field(yrecfm,zwork,hdirin)
431  dtt%NPAR_USETYPE(:) = nint(zwork)
432 ENDIF
433 !
434 IF (dtt%LDATA_Z0_TOWN) THEN
435  ALLOCATE(dtt%XPAR_Z0_TOWN (tg%NDIM))
436  yrecfm='D_Z0_TOWN'
437  CALL read_field(yrecfm,dtt%XPAR_Z0_TOWN,hdirin)
438 ENDIF
439 !
440 IF (dtt%LDATA_BLD) THEN
441  ALLOCATE(dtt%XPAR_BLD (tg%NDIM))
442  yrecfm='D_BLD'
443  CALL read_field(yrecfm,dtt%XPAR_BLD,hdirin)
444 ENDIF
445 !
446 IF (iversion>=6) THEN
447  IF (dtt%LDATA_GARDEN) THEN
448  ALLOCATE(dtt%XPAR_GARDEN (tg%NDIM))
449  yrecfm='D_GARDEN'
450  CALL read_field(yrecfm,dtt%XPAR_GARDEN,hdirin)
451  ENDIF
452 !
453 ENDIF
454 !
455 IF (dtt%LDATA_GREENROOF) THEN
456  ALLOCATE(dtt%XPAR_GREENROOF (tg%NDIM))
457  yrecfm='D_GREENROOF'
458  CALL read_field(yrecfm,dtt%XPAR_GREENROOF,hdirin)
459 ENDIF
460 !
461 IF (dtt%LDATA_ROAD_DIR) THEN
462  ALLOCATE(dtt%XPAR_ROAD_DIR (tg%NDIM))
463  yrecfm='D_ROAD_DIR'
464  CALL read_field(yrecfm,dtt%XPAR_ROAD_DIR,hdirin)
465 ENDIF
466 !
467 IF (dtt%LDATA_ALB_ROOF) THEN
468  ALLOCATE(dtt%XPAR_ALB_ROOF (tg%NDIM))
469  yrecfm='D_ALB_ROOF'
470  CALL read_field(yrecfm,dtt%XPAR_ALB_ROOF,hdirin)
471 ENDIF
472 !
473 IF (dtt%LDATA_EMIS_ROOF) THEN
474  ALLOCATE(dtt%XPAR_EMIS_ROOF (tg%NDIM))
475  yrecfm='D_EMI_ROOF'
476  CALL read_field(yrecfm,dtt%XPAR_EMIS_ROOF,hdirin)
477 ENDIF
478 !
479 IF (dtt%LDATA_HC_ROOF) THEN
480  ALLOCATE(dtt%XPAR_HC_ROOF (tg%NDIM,dtt%NPAR_ROOF_LAYER))
481  DO jlayer=1,dtt%NPAR_ROOF_LAYER
482  WRITE(yrecfm,fmt='(A9,I1.1)') 'D_HC_ROOF',jlayer
483  CALL read_field(yrecfm,dtt%XPAR_HC_ROOF(:,jlayer),hdirin)
484  END DO
485 ENDIF
486 !
487 IF (dtt%LDATA_TC_ROOF) THEN
488  ALLOCATE(dtt%XPAR_TC_ROOF (tg%NDIM,dtt%NPAR_ROOF_LAYER))
489  DO jlayer=1,dtt%NPAR_ROOF_LAYER
490  WRITE(yrecfm,fmt='(A9,I1.1)') 'D_TC_ROOF',jlayer
491  CALL read_field(yrecfm,dtt%XPAR_TC_ROOF(:,jlayer),hdirin)
492  END DO
493 ENDIF
494 !
495 IF (dtt%LDATA_D_ROOF) THEN
496  ALLOCATE(dtt%XPAR_D_ROOF (tg%NDIM,dtt%NPAR_ROOF_LAYER))
497  DO jlayer=1,dtt%NPAR_ROOF_LAYER
498  WRITE(yrecfm,fmt='(A8,I1.1)') 'D_D_ROOF',jlayer
499  CALL read_field(yrecfm,dtt%XPAR_D_ROOF(:,jlayer),hdirin)
500  END DO
501 ENDIF
502 !
503 IF (dtt%LDATA_ALB_ROAD) THEN
504  ALLOCATE(dtt%XPAR_ALB_ROAD (tg%NDIM))
505  yrecfm='D_ALB_ROAD'
506  CALL read_field(yrecfm,dtt%XPAR_ALB_ROAD,hdirin)
507 ENDIF
508 !
509 IF (dtt%LDATA_EMIS_ROAD) THEN
510  ALLOCATE(dtt%XPAR_EMIS_ROAD (tg%NDIM))
511  yrecfm='D_EMI_ROAD'
512  CALL read_field(yrecfm,dtt%XPAR_EMIS_ROAD,hdirin)
513 ENDIF
514 !
515 IF (dtt%LDATA_HC_ROAD) THEN
516  ALLOCATE(dtt%XPAR_HC_ROAD (tg%NDIM,dtt%NPAR_ROAD_LAYER))
517  DO jlayer=1,dtt%NPAR_ROAD_LAYER
518  WRITE(yrecfm,fmt='(A9,I1.1)') 'D_HC_ROAD',jlayer
519  CALL read_field(yrecfm,dtt%XPAR_HC_ROAD(:,jlayer),hdirin)
520  END DO
521 ENDIF
522 !
523 IF (dtt%LDATA_TC_ROAD) THEN
524  ALLOCATE(dtt%XPAR_TC_ROAD (tg%NDIM,dtt%NPAR_ROAD_LAYER))
525  DO jlayer=1,dtt%NPAR_ROAD_LAYER
526  WRITE(yrecfm,fmt='(A9,I1.1)') 'D_TC_ROAD',jlayer
527  CALL read_field(yrecfm,dtt%XPAR_TC_ROAD(:,jlayer),hdirin)
528  END DO
529 ENDIF
530 !
531 IF (dtt%LDATA_D_ROAD) THEN
532  ALLOCATE(dtt%XPAR_D_ROAD (tg%NDIM,dtt%NPAR_ROAD_LAYER))
533  DO jlayer=1,dtt%NPAR_ROAD_LAYER
534  WRITE(yrecfm,fmt='(A8,I1.1)') 'D_D_ROAD',jlayer
535  CALL read_field(yrecfm,dtt%XPAR_D_ROAD(:,jlayer),hdirin)
536  END DO
537 ENDIF
538 !
539 IF (dtt%LDATA_ALB_WALL) THEN
540  ALLOCATE(dtt%XPAR_ALB_WALL (tg%NDIM))
541  yrecfm='D_ALB_WALL'
542  CALL read_field(yrecfm,dtt%XPAR_ALB_WALL,hdirin)
543 ENDIF
544 !
545 IF (dtt%LDATA_EMIS_WALL) THEN
546  ALLOCATE(dtt%XPAR_EMIS_WALL (tg%NDIM))
547  yrecfm='D_EMI_WALL'
548  CALL read_field(yrecfm,dtt%XPAR_EMIS_WALL,hdirin)
549 ENDIF
550 !
551 IF (dtt%LDATA_HC_WALL) THEN
552  ALLOCATE(dtt%XPAR_HC_WALL (tg%NDIM,dtt%NPAR_WALL_LAYER))
553  DO jlayer=1,dtt%NPAR_WALL_LAYER
554  WRITE(yrecfm,fmt='(A9,I1.1)') 'D_HC_WALL',jlayer
555  CALL read_field(yrecfm,dtt%XPAR_HC_WALL(:,jlayer),hdirin)
556  END DO
557 ENDIF
558 !
559 IF (dtt%LDATA_TC_WALL) THEN
560  ALLOCATE(dtt%XPAR_TC_WALL (tg%NDIM,dtt%NPAR_WALL_LAYER))
561  DO jlayer=1,dtt%NPAR_WALL_LAYER
562  WRITE(yrecfm,fmt='(A9,I1.1)') 'D_TC_WALL',jlayer
563  CALL read_field(yrecfm,dtt%XPAR_TC_WALL(:,jlayer),hdirin)
564  END DO
565 ENDIF
566 !
567 IF (dtt%LDATA_D_WALL) THEN
568  ALLOCATE(dtt%XPAR_D_WALL (tg%NDIM,dtt%NPAR_WALL_LAYER))
569  DO jlayer=1,dtt%NPAR_WALL_LAYER
570  WRITE(yrecfm,fmt='(A8,I1.1)') 'D_D_WALL',jlayer
571  CALL read_field(yrecfm,dtt%XPAR_D_WALL(:,jlayer),hdirin)
572  END DO
573 ENDIF
574 !
575 IF (dtt%LDATA_BLD_HEIGHT) THEN
576  ALLOCATE(dtt%XPAR_BLD_HEIGHT (tg%NDIM))
577  yrecfm='D_BLD_HEIG'
578  CALL read_field(yrecfm,dtt%XPAR_BLD_HEIGHT,hdirin)
579 ENDIF
580 !
581 IF (dtt%LDATA_WALL_O_HOR) THEN
582  ALLOCATE(dtt%XPAR_WALL_O_HOR (tg%NDIM))
583  yrecfm='D_WALL_O_H'
584  CALL read_field(yrecfm,dtt%XPAR_WALL_O_HOR,hdirin)
585 ENDIF
586 !
587 IF (dtt%LDATA_H_TRAFFIC) THEN
588  ALLOCATE(dtt%XPAR_H_TRAFFIC (tg%NDIM))
589  yrecfm='D_H_TRAF'
590  CALL read_field(yrecfm,dtt%XPAR_H_TRAFFIC,hdirin)
591 ENDIF
592 !
593 IF (dtt%LDATA_LE_TRAFFIC) THEN
594  ALLOCATE(dtt%XPAR_LE_TRAFFIC (tg%NDIM))
595  yrecfm='D_LE_TRAF'
596  CALL read_field(yrecfm,dtt%XPAR_LE_TRAFFIC,hdirin)
597 ENDIF
598 !
599 IF (dtt%LDATA_H_INDUSTRY) THEN
600  ALLOCATE(dtt%XPAR_H_INDUSTRY (tg%NDIM))
601  yrecfm='D_H_IND'
602  CALL read_field(yrecfm,dtt%XPAR_H_INDUSTRY,hdirin)
603 ENDIF
604 !
605 IF (dtt%LDATA_LE_INDUSTRY) THEN
606  ALLOCATE(dtt%XPAR_LE_INDUSTRY (tg%NDIM))
607  yrecfm='D_LE_IND'
608  CALL read_field(yrecfm,dtt%XPAR_LE_INDUSTRY,hdirin)
609 ENDIF
610 !
611 IF (dtt%LDATA_ROUGH_ROOF) THEN
612  ALLOCATE(dtt%XPAR_ROUGH_ROOF (tg%NDIM))
613  yrecfm='D_ROUGH_ROOF'
614  CALL read_field(yrecfm,dtt%XPAR_ROUGH_ROOF,hdirin)
615 ENDIF
616 !
617 IF (dtt%LDATA_ROUGH_WALL) THEN
618  ALLOCATE(dtt%XPAR_ROUGH_WALL (tg%NDIM))
619  yrecfm='D_ROUGH_WALL'
620  CALL read_field(yrecfm,dtt%XPAR_ROUGH_WALL,hdirin)
621 ENDIF
622 !
623 IF (dtt%LDATA_RESIDENTIAL) THEN
624  ALLOCATE(dtt%XPAR_RESIDENTIAL (tg%NDIM))
625  yrecfm='D_F_RESIDENT'
626  CALL read_field(yrecfm,dtt%XPAR_RESIDENTIAL,hdirin)
627 ENDIF
628 !
629 ! solar panels
630 !
631 IF (dtt%LDATA_EMIS_PANEL) THEN
632  ALLOCATE(dtt%XPAR_EMIS_PANEL (tg%NDIM))
633  yrecfm='D_EMIS_PANEL'
634  CALL read_field(yrecfm,dtt%XPAR_EMIS_PANEL,hdirin)
635 ENDIF
636 !
637 IF (dtt%LDATA_ALB_PANEL) THEN
638  ALLOCATE(dtt%XPAR_ALB_PANEL (tg%NDIM))
639  yrecfm='D_ALB_PANEL'
640  CALL read_field(yrecfm,dtt%XPAR_ALB_PANEL,hdirin)
641 ENDIF
642 !
643 IF (dtt%LDATA_EFF_PANEL) THEN
644  ALLOCATE(dtt%XPAR_EFF_PANEL (tg%NDIM))
645  yrecfm='D_EFF_PANEL'
646  CALL read_field(yrecfm,dtt%XPAR_EFF_PANEL,hdirin)
647 ENDIF
648 !
649 IF (dtt%LDATA_FRAC_PANEL) THEN
650  ALLOCATE(dtt%XPAR_FRAC_PANEL (tg%NDIM))
651  yrecfm='D_FRAC_PANEL'
652  CALL read_field(yrecfm,dtt%XPAR_FRAC_PANEL,hdirin)
653 ENDIF
654 !
655 !* Building Energy Model
656 !
657 IF (top%CBEM=='BEM') THEN
658  !
659 
660  IF (dtb%LDATA_HC_FLOOR) THEN
661  ALLOCATE(dtb%XPAR_HC_FLOOR (tg%NDIM,dtb%NPAR_FLOOR_LAYER))
662  DO jlayer=1,dtb%NPAR_FLOOR_LAYER
663  WRITE(yrecfm,fmt='(A10,I1.1)') 'D_HC_FLOOR',jlayer
664  CALL read_field(yrecfm,dtb%XPAR_HC_FLOOR(:,jlayer),hdirin)
665  END DO
666  ENDIF
667  !
668  IF (dtb%LDATA_TC_FLOOR) THEN
669  ALLOCATE(dtb%XPAR_TC_FLOOR (tg%NDIM,dtb%NPAR_FLOOR_LAYER))
670  DO jlayer=1,dtb%NPAR_FLOOR_LAYER
671  WRITE(yrecfm,fmt='(A10,I1.1)') 'D_TC_FLOOR',jlayer
672  CALL read_field(yrecfm,dtb%XPAR_TC_FLOOR(:,jlayer),hdirin)
673  END DO
674  ENDIF
675  !
676  IF (dtb%LDATA_D_FLOOR) THEN
677  ALLOCATE(dtb%XPAR_D_FLOOR (tg%NDIM,dtb%NPAR_FLOOR_LAYER))
678  DO jlayer=1,dtb%NPAR_FLOOR_LAYER
679  WRITE(yrecfm,fmt='(A9,I1.1)') 'D_D_FLOOR',jlayer
680  CALL read_field(yrecfm,dtb%XPAR_D_FLOOR(:,jlayer),hdirin)
681  END DO
682  ENDIF
683  !
684  IF (dtb%LDATA_TCOOL_TARGET) THEN
685  ALLOCATE(dtb%XPAR_TCOOL_TARGET (tg%NDIM))
686  yrecfm='D_TCOOL_TARG'
687  CALL read_field(yrecfm,dtb%XPAR_TCOOL_TARGET,hdirin)
688  ENDIF
689  !
690  IF (dtb%LDATA_THEAT_TARGET) THEN
691  ALLOCATE(dtb%XPAR_THEAT_TARGET (tg%NDIM))
692  yrecfm='D_THEAT_TARG'
693  CALL read_field(yrecfm,dtb%XPAR_THEAT_TARGET,hdirin)
694  ENDIF
695  !
696  IF (dtb%LDATA_F_WASTE_CAN) THEN
697  ALLOCATE(dtb%XPAR_F_WASTE_CAN (tg%NDIM))
698  yrecfm='D_F_WAST_CAN'
699  CALL read_field(yrecfm,dtb%XPAR_F_WASTE_CAN,hdirin)
700  ENDIF
701  !
702  IF (dtb%LDATA_EFF_HEAT) THEN
703  ALLOCATE(dtb%XPAR_EFF_HEAT (tg%NDIM))
704  yrecfm='D_EFF_HEAT'
705  CALL read_field(yrecfm,dtb%XPAR_EFF_HEAT,hdirin)
706  ENDIF
707  !
708  IF (dtb%LDATA_QIN) THEN
709  ALLOCATE(dtb%XPAR_QIN (tg%NDIM))
710  yrecfm='D_QIN'
711  CALL read_field(yrecfm,dtb%XPAR_QIN,hdirin)
712  ENDIF
713  !
714  IF (dtb%LDATA_QIN_FRAD) THEN
715  ALLOCATE(dtb%XPAR_QIN_FRAD (tg%NDIM))
716  yrecfm='D_QIN_FRAD'
717  CALL read_field(yrecfm,dtb%XPAR_QIN_FRAD,hdirin)
718  ENDIF
719  !
720  IF (dtb%LDATA_SHGC) THEN
721  ALLOCATE(dtb%XPAR_SHGC (tg%NDIM))
722  yrecfm='D_SHGC'
723  CALL read_field(yrecfm,dtb%XPAR_SHGC,hdirin)
724  ENDIF
725  !
726  IF (dtb%LDATA_U_WIN) THEN
727  ALLOCATE(dtb%XPAR_U_WIN (tg%NDIM))
728  yrecfm='D_U_WIN'
729  CALL read_field(yrecfm,dtb%XPAR_U_WIN,hdirin)
730  ENDIF
731  !
732  IF (dtb%LDATA_GR) THEN
733  ALLOCATE(dtb%XPAR_GR (tg%NDIM))
734  yrecfm='D_GR'
735  CALL read_field(yrecfm,dtb%XPAR_GR,hdirin)
736  ENDIF
737  !
738  IF (dtb%LDATA_SHGC_SH) THEN
739  ALLOCATE(dtb%XPAR_SHGC_SH (tg%NDIM))
740  yrecfm='D_SHGC_SH'
741  CALL read_field(yrecfm,dtb%XPAR_SHGC_SH,hdirin)
742  ENDIF
743  !
744  IF (dtb%LDATA_FLOOR_HEIGHT) THEN
745  ALLOCATE(dtb%XPAR_FLOOR_HEIGHT (tg%NDIM))
746  yrecfm='D_FLOOR_HEIG'
747  CALL read_field(yrecfm,dtb%XPAR_FLOOR_HEIGHT,hdirin)
748  ENDIF
749  !
750  IF (dtb%LDATA_INF) THEN
751  ALLOCATE(dtb%XPAR_INF (tg%NDIM))
752  yrecfm='D_INF'
753  CALL read_field(yrecfm,dtb%XPAR_INF,hdirin)
754  ENDIF
755  !
756  IF (dtb%LDATA_F_WATER_COND) THEN
757  ALLOCATE(dtb%XPAR_F_WATER_COND (tg%NDIM))
758  yrecfm='D_FWAT_COND'
759  CALL read_field(yrecfm,dtb%XPAR_F_WATER_COND,hdirin)
760  ENDIF
761  !
762  IF (dtb%LDATA_SHADE) THEN
763  ALLOCATE(dtb%XPAR_SHADE (tg%NDIM))
764  yrecfm='D_SHADE'
765  CALL read_field(yrecfm,dtb%XPAR_SHADE,hdirin)
766  dtb%XPAR_SHADE=float(nint(dtb%XPAR_SHADE))
767  ENDIF
768  !
769  IF (dtb%LDATA_NATVENT) THEN
770  ALLOCATE(dtb%XPAR_NATVENT (tg%NDIM))
771  yrecfm='D_NATVENT'
772  CALL read_field(yrecfm,dtb%XPAR_NATVENT,hdirin)
773  dtb%XPAR_NATVENT=float(nint(dtb%XPAR_NATVENT))
774  ENDIF
775  !
776  IF (dtb%LDATA_QIN_FLAT) THEN
777  ALLOCATE(dtb%XPAR_QIN_FLAT (tg%NDIM))
778  yrecfm='D_QIN_FLAT'
779  CALL read_field(yrecfm,dtb%XPAR_QIN_FLAT,hdirin)
780  ENDIF
781  !
782  IF (dtb%LDATA_HR_TARGET) THEN
783  ALLOCATE(dtb%XPAR_HR_TARGET (tg%NDIM))
784  yrecfm='D_HR_TARGET'
785  CALL read_field(yrecfm,dtb%XPAR_HR_TARGET,hdirin)
786  ENDIF
787  !
788  IF (dtb%LDATA_V_VENT) THEN
789  ALLOCATE(dtb%XPAR_V_VENT (tg%NDIM))
790  yrecfm='D_V_VENT'
791  CALL read_field(yrecfm,dtb%XPAR_V_VENT,hdirin)
792  ENDIF
793  !
794  IF (dtb%LDATA_CAP_SYS_HEAT) THEN
795  ALLOCATE(dtb%XPAR_CAP_SYS_HEAT (tg%NDIM))
796  yrecfm='D_CAP_SYS_HE'
797  CALL read_field(yrecfm,dtb%XPAR_CAP_SYS_HEAT,hdirin)
798  ENDIF
799  !
800  IF (dtb%LDATA_CAP_SYS_RAT) THEN
801  ALLOCATE(dtb%XPAR_CAP_SYS_RAT (tg%NDIM))
802  yrecfm='D_CAP_SYS_RA'
803  CALL read_field(yrecfm,dtb%XPAR_CAP_SYS_RAT,hdirin)
804  ENDIF
805  !
806  IF (dtb%LDATA_T_ADP) THEN
807  ALLOCATE(dtb%XPAR_T_ADP (tg%NDIM))
808  yrecfm='D_T_ADP'
809  CALL read_field(yrecfm,dtb%XPAR_T_ADP,hdirin)
810  ENDIF
811  !
812  IF (dtb%LDATA_M_SYS_RAT) THEN
813  ALLOCATE(dtb%XPAR_M_SYS_RAT (tg%NDIM))
814  yrecfm='D_M_SYS_RAT'
815  CALL read_field(yrecfm,dtb%XPAR_M_SYS_RAT,hdirin)
816  ENDIF
817  !
818  IF (dtb%LDATA_COP_RAT) THEN
819  ALLOCATE(dtb%XPAR_COP_RAT (tg%NDIM))
820  yrecfm='D_COP_RAT'
821  CALL read_field(yrecfm,dtb%XPAR_COP_RAT,hdirin)
822  ENDIF
823  !
824  IF (dtb%LDATA_T_SIZE_MAX) THEN
825  ALLOCATE(dtb%XPAR_T_SIZE_MAX (tg%NDIM))
826  yrecfm='D_T_SIZE_MAX'
827  CALL read_field(yrecfm,dtb%XPAR_T_SIZE_MAX,hdirin)
828  ENDIF
829  !
830  IF (dtb%LDATA_T_SIZE_MIN) THEN
831  ALLOCATE(dtb%XPAR_T_SIZE_MIN (tg%NDIM))
832  yrecfm='D_T_SIZE_MIN'
833  CALL read_field(yrecfm,dtb%XPAR_T_SIZE_MIN,hdirin)
834  ENDIF
835  !
836 ENDIF
837 !
838 IF (lhook) CALL dr_hook('READ_PGD_TEB_PAR_N',1,zhook_handle)
839 !
840 !-------------------------------------------------------------------------------
841  CONTAINS
842 !-------------------------------------------------------------------------------
843 !
844 SUBROUTINE read_field(HRECFM,PFIELD,YDIR)
845 !
846 USE modi_hor_interpol
847 !
848 IMPLICIT NONE
849 !
850  CHARACTER(LEN=*), INTENT(IN) :: hrecfm ! name of record in the file
851 REAL, DIMENSION(TG%NDIM), INTENT(OUT) :: pfield
852  CHARACTER(LEN=1), INTENT(IN) :: ydir
853 !
854 REAL, DIMENSION(KNI) :: zf
855 REAL, DIMENSION(:,:), POINTER :: zin
856 REAL, DIMENSION(TG%NDIM,1) :: zout
857 REAL(KIND=JPRB) :: zhook_handle
858 !
859 IF (lhook) CALL dr_hook('READ_PGD_TEB_PAR_N:READ_FIELD',0,zhook_handle)
860 !
861 IF (ydir=='A') THEN
862  !
863  CALL read_surf(&
864  hprogram,hrecfm,zf,iresp,hdir='A')
865  ALLOCATE(zin(kni,1))
866  zin(:,1) = zf(:)
867  CALL hor_interpol(dtco, u, &
868  iluout,zin,zout)
869  DEALLOCATE(zin)
870  pfield(:) = zout(:,1)
871  !
872 ELSE
873  CALL read_surf(&
874  hprogram,hrecfm,pfield,iresp)
875 ENDIF
876 !
877 IF (lhook) CALL dr_hook('READ_PGD_TEB_PAR_N:READ_FIELD',1,zhook_handle)
878 !
879 END SUBROUTINE read_field
880 !_______________________________
881 !
882 END SUBROUTINE read_pgd_teb_par_n
subroutine read_field(HRECFM, PFIELD, YDIR)
integer function, dimension(size(ktype)) bldcode(BDD, KTYPE, KAGE)
Definition: bldcode.F90:5
subroutine abor1_sfx(YTEXT)
Definition: abor1_sfx.F90:6
subroutine hor_interpol(DTCO, U, KLUOUT, PFIELDIN, PFIELDOUT)
Definition: hor_interpol.F90:6
subroutine get_luout(HPROGRAM, KLUOUT)
Definition: get_luout.F90:6
subroutine read_pgd_teb_par_n(DTCO, U, BDD, DTB, DTT, TG, TOP, HPROGRAM, KNI, HDIRIN)
subroutine read_bld_description_n(BDD, HPROGRAM)