SURFEX v8.1
General documentation of Surfex
convert_patch_teb.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 convert_patch_teb (BDD, DTB, DTCO, DTT, TOP, &
7  PDEF_ROAD_DIR, T, B, TPN )
8 ! ##############################################################
9 !
10 !!**** *CONVERT_PATCH_TEB* compilation of conver_cover_isba, pgd_isba_par and
11 !! init_from_data_isba_parn
12 !!
13 !! PURPOSE
14 !! -------
15 !!
16 !! METHOD
17 !! ------
18 !!
19 !
20 !! EXTERNAL
21 !! --------
22 !!
23 !! IMPLICIT ARGUMENTS
24 !! ------------------
25 !!
26 !! REFERENCE
27 !! ---------
28 !!
29 !! AUTHOR
30 !! ------
31 !!
32 !! S. Faroux Meteo-France
33 !!
34 !! MODIFICATION
35 !! ------------
36 !!
37 !! Original 16/11/10
38 !! G. Pigeon /09/12: add ROUGH_ROOF and ROUGH_WALL coef for outdoor conv. coef
39 !! V. Masson 08/13 adds solar panels
40 !!
41 !----------------------------------------------------------------------------
42 !
43 !* 0. DECLARATION
44 ! -----------
45 !
46 !
48 USE modd_data_bem_n, ONLY : data_bem_t
50 USE modd_data_teb_n, ONLY : data_teb_t
52 !
53 USE modd_teb_n, ONLY : teb_t
54 USE modd_bem_n, ONLY : bem_t
55 USE modd_teb_panel_n, ONLY : teb_panel_t
56 !
57 USE modd_surf_par, ONLY : xundef
58 !
59 USE modd_data_cover_par, ONLY : ndata_road_layer, ndata_wall_layer, &
60  ndata_roof_layer, ndata_floor_layer
82 !
83 !
84 USE modi_thermal_layers_conf
85 USE modi_ini_data_param_teb
86 USE modi_av_pgd
87 !
88 USE yomhook ,ONLY : lhook, dr_hook
89 USE parkind1 ,ONLY : jprb
90 !
91 USE modi_abor1_sfx
92 !
93 IMPLICIT NONE
94 !
95 !* 0.1 Declaration of arguments
96 ! ------------------------
97 !
98 !
99 TYPE(bld_desc_t), INTENT(INOUT) :: BDD
100 TYPE(data_bem_t), INTENT(INOUT) :: DTB
101 TYPE(data_cover_t), INTENT(INOUT) :: DTCO
102 TYPE(data_teb_t), INTENT(INOUT) :: DTT
103 TYPE(teb_options_t), INTENT(INOUT) :: TOP
104 !
105 REAL, INTENT(IN) :: PDEF_ROAD_DIR ! default road direction
106 !
107 TYPE(teb_t), INTENT(INOUT), OPTIONAL :: T
108 TYPE(bem_t), INTENT(INOUT), OPTIONAL :: B
109 TYPE(teb_panel_t), INTENT(INOUT), OPTIONAL :: TPN
110 !
111 !* 0.2 Declaration of local variables
112 ! ------------------------------
113 !
114 REAL, DIMENSION(:,:), ALLOCATABLE :: ZTC, ZHC, ZD
115 INTEGER :: JLAYER ! loop counter on layers
116 INTEGER :: IL ! number of points
117 !
118  CHARACTER(LEN=3) :: YAVG ! Type of averaging for buildings
119  CHARACTER(LEN=4) :: YAREA ! Area where parameter is averaged
120 !
121 !* 0.3 Declaration of namelists
122 ! ------------------------
123 !
124 REAL(KIND=JPRB) :: ZHOOK_HANDLE
125 !
126 !-------------------------------------------------------------------------------
127 !
128 !* 1. Initializations
129 ! ---------------
130 !
131 IF (lhook) CALL dr_hook('CONVERT_PATCH_TEB',0,zhook_handle)
132 !
133 IF (top%CBLD_ATYPE=='ARI') THEN
134  yavg=top%CBLD_ATYPE
135  yarea='BLD'
136 ELSE
137  yavg=top%CBLD_ATYPE
138  yarea='BLV'
139 END IF
140 !
141 il = SIZE(top%XCOVER,1)
142 !-------------------------------------------------------------------------------
143 !
144 IF (PRESENT(t)) THEN
145 ! ROAD DIRECTION
146 ! --------------
147  IF (dtt%LDATA_ROAD_DIR) THEN
148  t%XROAD_DIR=dtt%XPAR_ROAD_DIR
149  ELSE
150  t%XROAD_DIR=pdef_road_dir
151  ENDIF
152 !
153 ! GARDEN fraction
154 ! ---------------
155  IF (dtt%LDATA_GARDEN) THEN
156  t%XGARDEN=dtt%XPAR_GARDEN
157  ELSE
158  CALL av_pgd(dtco, t%XGARDEN, top%XCOVER, dtco%XDATA_GARDEN(:),'TWN','ARI',top%LCOVER)
159  ENDIF
160 !
161 ! GREENROOF FRACTION
162 ! ------------------
163  IF (dtt%LDATA_GREENROOF) THEN
164  t%XGREENROOF=dtt%XPAR_GREENROOF
165  ELSEIF (dtt%LDATA_BLDTYPE) THEN
166  CALL ini_data_param_teb(bdd, dtt%NPAR_BLDCODE,pgreenroof=t%XGREENROOF)
167  ELSE
168  CALL av_pgd(dtco, t%XGREENROOF,top%XCOVER ,xdata_frac_gr(:),'BLD','ARI',top%LCOVER)
169  ENDIF
170 !
171 ! BLD fraction
172 ! -------------
173  IF (dtt%LDATA_BLD) THEN
174  t%XBLD=dtt%XPAR_BLD
175  ELSE
176  CALL av_pgd(dtco, t%XBLD, top%XCOVER, dtco%XDATA_BLD(:),'TWN','ARI',top%LCOVER)
177  ENDIF
178 !
179 !
180 ! Z0_TOWN
181 ! ----------
182  IF (dtt%LDATA_Z0_TOWN) THEN
183  t%XZ0_TOWN=dtt%XPAR_Z0_TOWN
184  ELSE
185  CALL av_pgd(dtco, t%XZ0_TOWN ,top%XCOVER ,xdata_z0_town(:),'TWN','CDN',top%LCOVER)
186  ENDIF
187 !
188 ! BLD Height
189 ! ----------
190  IF (dtt%LDATA_BLD_HEIGHT) THEN
191  t%XBLD_HEIGHT=dtt%XPAR_BLD_HEIGHT
192  ELSE
193  CALL av_pgd(dtco, t%XBLD_HEIGHT ,top%XCOVER ,xdata_bld_height(:),'BLD','ARI',top%LCOVER)
194  ENDIF
195 !
196 ! WALL O HOR
197 ! ----------
198  IF (dtt%LDATA_WALL_O_HOR) THEN
199  t%XWALL_O_HOR=dtt%XPAR_WALL_O_HOR
200  ELSE
201  CALL av_pgd(dtco, t%XWALL_O_HOR ,top%XCOVER ,dtco%XDATA_WALL_O_HOR (:),'BLD','ARI',top%LCOVER)
202  ENDIF
203 !
204 ! ALB_ROOF
205 ! ----------
206  IF (dtt%LDATA_ALB_ROOF) THEN
207  t%XALB_ROOF=dtt%XPAR_ALB_ROOF
208  ELSEIF (dtt%LDATA_BLDTYPE) THEN
209  CALL ini_data_param_teb(bdd, dtt%NPAR_BLDCODE,palb_roof=t%XALB_ROOF)
210  ELSE
211  CALL av_pgd(dtco, t%XALB_ROOF ,top%XCOVER ,xdata_alb_roof(:),yarea,yavg,top%LCOVER)
212  ENDIF
213 !
214 ! EMIS_ROOF
215 ! ----------
216  IF (dtt%LDATA_EMIS_ROOF) THEN
217  t%XEMIS_ROOF=dtt%XPAR_EMIS_ROOF
218  ELSEIF (dtt%LDATA_BLDTYPE) THEN
219  CALL ini_data_param_teb(bdd, dtt%NPAR_BLDCODE,pemis_roof=t%XEMIS_ROOF)
220  ELSE
221  CALL av_pgd(dtco, t%XEMIS_ROOF ,top%XCOVER ,xdata_emis_roof(:),yarea,yavg,top%LCOVER)
222  ENDIF
223 !
224 ! HC_ROOF, TC_ROOF, D_ROOF
225 ! ------------------------
226 !
227  IF (dtt%LDATA_HC_ROOF) THEN
228  CALL allocate_thermal_work(dtt%NPAR_ROOF_LAYER)
229  zhc=dtt%XPAR_HC_ROOF
230  ztc=dtt%XPAR_TC_ROOF
231  zd =dtt%XPAR_D_ROOF
232  ELSEIF (dtt%LDATA_BLDTYPE) THEN
233  CALL allocate_thermal_work(bdd%NDESC_ROOF_LAYER)
234  CALL ini_data_param_teb(bdd, dtt%NPAR_BLDCODE,phc_roof=zhc)
235  CALL ini_data_param_teb(bdd, dtt%NPAR_BLDCODE,ptc_roof=ztc)
236  CALL ini_data_param_teb(bdd, dtt%NPAR_BLDCODE,pd_roof =zd )
237  ELSE
238  CALL allocate_thermal_work(ndata_roof_layer)
239  DO jlayer=1,ndata_roof_layer
240  CALL av_pgd(dtco, zhc(:,jlayer), top%XCOVER, xdata_hc_roof(:,jlayer),yarea,yavg,top%LCOVER)
241  CALL av_pgd(dtco, ztc(:,jlayer), top%XCOVER ,xdata_tc_roof(:,jlayer),yarea,yavg,top%LCOVER)
242  CALL av_pgd(dtco, zd(:,jlayer), top%XCOVER ,xdata_d_roof(:,jlayer),yarea,yavg,top%LCOVER)
243  ENDDO
244  ENDIF
245  CALL thermal_layers_conf('ROOF ',zd,t%XD_ROOF,zhc,t%XHC_ROOF,ztc,t%XTC_ROOF)
247 !
248 ! ALB_ROAD
249 ! ----------
250  IF (dtt%LDATA_ALB_ROAD) THEN
251  t%XALB_ROAD=dtt%XPAR_ALB_ROAD
252  ELSEIF (dtt%LDATA_BLDTYPE) THEN
253  CALL ini_data_param_teb(bdd, dtt%NPAR_BLDCODE,palb_road=t%XALB_ROAD)
254  ELSE
255  CALL av_pgd(dtco, &
256  t%XALB_ROAD ,top%XCOVER ,xdata_alb_road(:),'STR','ARI',top%LCOVER)
257  ENDIF
258 !
259 ! EMIS_ROAD
260 ! ----------
261  IF (dtt%LDATA_EMIS_ROAD) THEN
262  t%XEMIS_ROAD=dtt%XPAR_EMIS_ROAD
263  ELSEIF (dtt%LDATA_BLDTYPE) THEN
264  CALL ini_data_param_teb(bdd, dtt%NPAR_BLDCODE,pemis_road=t%XEMIS_ROAD)
265  ELSE
266  CALL av_pgd(dtco, &
267  t%XEMIS_ROAD ,top%XCOVER ,xdata_emis_road(:),'STR','ARI',top%LCOVER)
268  ENDIF
269 !
270 ! HC_ROAD, TC_ROAD, D_ROAD
271 ! ------------------------
272 !
273  IF (dtt%LDATA_HC_ROAD) THEN
274  CALL allocate_thermal_work(dtt%NPAR_ROAD_LAYER)
275  zhc=dtt%XPAR_HC_ROAD
276  ztc=dtt%XPAR_TC_ROAD
277  zd =dtt%XPAR_D_ROAD
278  ELSEIF (dtt%LDATA_BLDTYPE) THEN
279  CALL allocate_thermal_work(bdd%NDESC_ROAD_LAYER)
280  CALL ini_data_param_teb(bdd, dtt%NPAR_BLDCODE,phc_road=zhc)
281  CALL ini_data_param_teb(bdd, dtt%NPAR_BLDCODE,ptc_road=ztc)
282  CALL ini_data_param_teb(bdd, dtt%NPAR_BLDCODE,pd_road =zd )
283  ELSE
284  CALL allocate_thermal_work(ndata_road_layer)
285  DO jlayer=1,ndata_road_layer
286  CALL av_pgd(dtco, zhc(:,jlayer), top%XCOVER, xdata_hc_road(:,jlayer),yarea,yavg,top%LCOVER)
287  CALL av_pgd(dtco, ztc(:,jlayer), top%XCOVER ,xdata_tc_road(:,jlayer),yarea,yavg,top%LCOVER)
288  CALL av_pgd(dtco, zd(:,jlayer), top%XCOVER ,xdata_d_road(:,jlayer),yarea,yavg,top%LCOVER)
289  !CALL AV_PGD (T%XHC_ROAD(:,JLAYER), TOP%XCOVER, XDATA_HC_ROAD (:,JLAYER),YAREA,YAVG)
290  !CALL AV_PGD (T%XTC_ROAD(:,JLAYER), TOP%XCOVER ,XDATA_TC_ROAD (:,JLAYER),YAREA,YAVG)
291  !CALL AV_PGD (T%XD_ROAD(:,JLAYER), TOP%XCOVER ,XDATA_D_ROAD (:,JLAYER),YAREA,YAVG)
292  ENDDO
293  ENDIF
294  CALL thermal_layers_conf('ROAD ',zd,t%XD_ROAD,zhc,t%XHC_ROAD,ztc,t%XTC_ROAD)
296 !
297 ! ALB_WALL
298 ! ----------
299  IF (dtt%LDATA_ALB_WALL) THEN
300  t%XALB_WALL=dtt%XPAR_ALB_WALL
301  ELSEIF (dtt%LDATA_BLDTYPE) THEN
302  CALL ini_data_param_teb(bdd, dtt%NPAR_BLDCODE,palb_wall=t%XALB_WALL)
303  ELSE
304  CALL av_pgd(dtco, t%XALB_WALL ,top%XCOVER ,xdata_alb_wall(:),yarea,yavg,top%LCOVER)
305  ENDIF
306 !
307 ! EMIS_WALL
308 ! ----------
309  IF (dtt%LDATA_EMIS_WALL) THEN
310  t%XEMIS_WALL=dtt%XPAR_EMIS_WALL
311  ELSEIF (dtt%LDATA_BLDTYPE) THEN
312  CALL ini_data_param_teb(bdd, dtt%NPAR_BLDCODE,pemis_wall=t%XEMIS_WALL)
313  ELSE
314  CALL av_pgd(dtco, t%XEMIS_WALL ,top%XCOVER ,xdata_emis_wall(:),yarea,yavg,top%LCOVER)
315  ENDIF
316 !
317 ! HC_WALL, TC_WALL, D_WALL
318 ! ------------------------
319 !
320  IF (dtt%LDATA_HC_WALL) THEN
321  CALL allocate_thermal_work(dtt%NPAR_WALL_LAYER)
322  zhc=dtt%XPAR_HC_WALL
323  ztc=dtt%XPAR_TC_WALL
324  zd =dtt%XPAR_D_WALL
325  ELSEIF (dtt%LDATA_BLDTYPE) THEN
326  CALL allocate_thermal_work(bdd%NDESC_WALL_LAYER)
327  CALL ini_data_param_teb(bdd, dtt%NPAR_BLDCODE,phc_wall=zhc)
328  CALL ini_data_param_teb(bdd, dtt%NPAR_BLDCODE,ptc_wall=ztc)
329  CALL ini_data_param_teb(bdd, dtt%NPAR_BLDCODE,pd_wall =zd )
330  ELSE
331  CALL allocate_thermal_work(ndata_wall_layer)
332  DO jlayer=1,ndata_wall_layer
333  CALL av_pgd(dtco, zhc(:,jlayer), top%XCOVER, xdata_hc_wall(:,jlayer),yarea,yavg,top%LCOVER)
334  CALL av_pgd(dtco, ztc(:,jlayer), top%XCOVER ,xdata_tc_wall(:,jlayer),yarea,yavg,top%LCOVER)
335  CALL av_pgd(dtco, zd(:,jlayer), top%XCOVER ,xdata_d_wall(:,jlayer),yarea,yavg,top%LCOVER)
336  ENDDO
337  ENDIF
338  CALL thermal_layers_conf('WALL ',zd,t%XD_WALL,zhc,t%XHC_WALL,ztc,t%XTC_WALL)
340 !
341 ! H_TRAFFIC
342 ! ---------
343  IF (dtt%LDATA_H_TRAFFIC) THEN
344  t%XH_TRAFFIC=dtt%XPAR_H_TRAFFIC
345  ELSE
346  CALL av_pgd(dtco, t%XH_TRAFFIC ,top%XCOVER ,xdata_h_traffic(:),'TWN','ARI',top%LCOVER)
347  ENDIF
348 !
349 ! LE_TRAFFIC
350 ! ----------
351  IF (dtt%LDATA_LE_TRAFFIC) THEN
352  t%XLE_TRAFFIC=dtt%XPAR_LE_TRAFFIC
353  ELSE
354  CALL av_pgd(dtco, t%XLE_TRAFFIC ,top%XCOVER ,xdata_le_traffic(:),'TWN','ARI',top%LCOVER)
355  ENDIF
356 !
357 ! H_INDUSTRY
358 ! ----------
359  IF (dtt%LDATA_H_INDUSTRY) THEN
360  t%XH_INDUSTRY=dtt%XPAR_H_INDUSTRY
361  ELSE
362  CALL av_pgd(dtco, t%XH_INDUSTRY ,top%XCOVER ,xdata_h_industry(:),'TWN','ARI',top%LCOVER)
363  ENDIF
364 !
365 ! LE_INDUSTRY
366 ! -----------
367  IF (dtt%LDATA_LE_INDUSTRY) THEN
368  t%XLE_INDUSTRY=dtt%XPAR_LE_INDUSTRY
369  ELSE
370  CALL av_pgd(dtco, t%XLE_INDUSTRY ,top%XCOVER ,xdata_le_industry(:),'TWN','ARI',top%LCOVER)
371  ENDIF
372 !
373 !
374 ! ROUGH_ROOF
375 ! ----------
376  IF (dtt%LDATA_ROUGH_ROOF) THEN
377  t%XROUGH_ROOF=dtt%XPAR_ROUGH_ROOF
378  ELSEIF (dtt%LDATA_BLDTYPE) THEN
379  CALL ini_data_param_teb(bdd, dtt%NPAR_BLDCODE,prough_roof=t%XROUGH_ROOF)
380  ELSE
381  CALL av_pgd(dtco, t%XROUGH_ROOF ,top%XCOVER ,xdata_rough_roof(:),yarea,yavg,top%LCOVER)
382  ENDIF
383 !
384 ! ROUGH_WALL
385 ! ----------
386  IF (dtt%LDATA_ROUGH_WALL) THEN
387  t%XROUGH_WALL=dtt%XPAR_ROUGH_WALL
388  ELSEIF (dtt%LDATA_BLDTYPE) THEN
389  CALL ini_data_param_teb(bdd, dtt%NPAR_BLDCODE,prough_wall=t%XROUGH_WALL)
390  ELSE
391  CALL av_pgd(dtco, t%XROUGH_WALL ,top%XCOVER ,xdata_rough_wall(:),yarea,yavg,top%LCOVER)
392  ENDIF
393 !
394 ! RESIDENTIAL use fraction
395 ! ------------------------
396  IF (dtt%LDATA_RESIDENTIAL) THEN
397  t%XRESIDENTIAL=dtt%XPAR_RESIDENTIAL
398  ELSEIF (dtt%LDATA_USETYPE) THEN
399  CALL ini_data_param_teb(bdd, dtt%NPAR_USETYPE,presidential=t%XRESIDENTIAL)
400  ELSE
401  CALL av_pgd(dtco, t%XRESIDENTIAL ,top%XCOVER ,xdata_residential(:),yarea,yavg,top%LCOVER)
402  ENDIF
403 !
404 ENDIF
405 ! HC_FLOOR, TC_FLOOR, D_FLOOR
406 ! ------------------------
407 !
408 IF (PRESENT(b)) THEN
409 
410  IF (dtb%LDATA_HC_FLOOR) THEN
411  CALL allocate_thermal_work(dtb%NPAR_FLOOR_LAYER)
412  zhc=dtb%XPAR_HC_FLOOR
413  ztc=dtb%XPAR_TC_FLOOR
414  zd =dtb%XPAR_D_FLOOR
415  ELSEIF (dtt%LDATA_BLDTYPE) THEN
416  CALL allocate_thermal_work(bdd%NDESC_FLOOR_LAYER)
417  CALL ini_data_param_teb(bdd, dtt%NPAR_BLDCODE,phc_floor=zhc)
418  CALL ini_data_param_teb(bdd, dtt%NPAR_BLDCODE,ptc_floor=ztc)
419  CALL ini_data_param_teb(bdd, dtt%NPAR_BLDCODE,pd_floor =zd )
420  ELSE
421  CALL allocate_thermal_work(ndata_floor_layer)
422  DO jlayer=1,ndata_floor_layer
423  CALL av_pgd(dtco, zhc(:,jlayer), top%XCOVER, xdata_hc_floor(:,jlayer),yarea,yavg,top%LCOVER)
424  CALL av_pgd(dtco, ztc(:,jlayer), top%XCOVER ,xdata_tc_floor(:,jlayer),yarea,yavg,top%LCOVER)
425  CALL av_pgd(dtco, zd(:,jlayer), top%XCOVER ,xdata_d_floor(:,jlayer),yarea,yavg,top%LCOVER)
426  ENDDO
427  ENDIF
428  CALL thermal_layers_conf('FLOOR',zd,b%XD_FLOOR,zhc,b%XHC_FLOOR,ztc,b%XTC_FLOOR)
430 !
431 !
432 ! TCOOL_TARGET
433 ! -----------
434  IF (dtb%LDATA_TCOOL_TARGET) THEN
435  b%XTCOOL_TARGET=dtb%XPAR_TCOOL_TARGET
436  ELSEIF (dtt%LDATA_USETYPE) THEN
437  CALL ini_data_param_teb(bdd, dtt%NPAR_USETYPE,ptcool_target=b%XTCOOL_TARGET)
438  ELSE
439  CALL av_pgd(dtco, b%XTCOOL_TARGET ,top%XCOVER ,xdata_tcool_target(:),'TWN','ARI',top%LCOVER)
440  ENDIF
441 !
442 ! THEAT_TARGET
443 ! -----------
444  IF (dtb%LDATA_THEAT_TARGET) THEN
445  b%XTHEAT_TARGET=dtb%XPAR_THEAT_TARGET
446  ELSEIF (dtt%LDATA_USETYPE) THEN
447  CALL ini_data_param_teb(bdd, dtt%NPAR_USETYPE,ptheat_target=b%XTHEAT_TARGET)
448  ELSE
449  CALL av_pgd(dtco, b%XTHEAT_TARGET ,top%XCOVER ,xdata_theat_target(:),'TWN','ARI',top%LCOVER)
450  ENDIF
451 !
452 ! -----------
453  IF (dtb%LDATA_F_WASTE_CAN) THEN
454  b%XF_WASTE_CAN=dtb%XPAR_F_WASTE_CAN
455  ELSEIF (dtt%LDATA_BLDTYPE) THEN
456  CALL ini_data_param_teb(bdd, dtt%NPAR_BLDCODE,pf_waste_can=b%XF_WASTE_CAN)
457  ELSE
458  CALL av_pgd(dtco, b%XF_WASTE_CAN ,top%XCOVER ,xdata_f_waste_can(:),'TWN','ARI',top%LCOVER)
459  ENDIF
460 !
461 ! EFF_HEAT
462 ! -----------
463  IF (dtb%LDATA_EFF_HEAT) THEN
464  b%XEFF_HEAT=dtb%XPAR_EFF_HEAT
465  ELSEIF (dtt%LDATA_BLDTYPE) THEN
466  CALL ini_data_param_teb(bdd, dtt%NPAR_BLDCODE,peff_heat=b%XEFF_HEAT)
467  ELSE
468  CALL av_pgd(dtco, b%XEFF_HEAT ,top%XCOVER ,xdata_eff_heat(:),'TWN','ARI',top%LCOVER)
469  ENDIF
470 !
471 ! QIN
472 ! -----------
473  IF (dtb%LDATA_QIN) THEN
474  b%XQIN=dtb%XPAR_QIN
475  ELSEIF (dtt%LDATA_USETYPE) THEN
476  CALL ini_data_param_teb(bdd, dtt%NPAR_USETYPE,pqin=b%XQIN)
477  ELSE
478  CALL av_pgd(dtco, b%XQIN ,top%XCOVER ,xdata_qin(:),'TWN','ARI',top%LCOVER)
479  ENDIF
480 !
481 ! QIN_FRAD
482 ! -----------
483  IF (dtb%LDATA_QIN_FRAD) THEN
484  b%XQIN_FRAD=dtb%XPAR_QIN_FRAD
485  ELSEIF (dtt%LDATA_USETYPE) THEN
486  CALL ini_data_param_teb(bdd, dtt%NPAR_USETYPE,pqin_frad=b%XQIN_FRAD)
487  ELSE
488  CALL av_pgd(dtco, b%XQIN_FRAD ,top%XCOVER ,xdata_qin_frad(:),'TWN','ARI',top%LCOVER)
489  ENDIF
490 !
491 ! SHGC
492 ! -----------
493  IF (dtb%LDATA_SHGC) THEN
494  b%XSHGC=dtb%XPAR_SHGC
495  ELSEIF (dtt%LDATA_BLDTYPE) THEN
496  CALL ini_data_param_teb(bdd, dtt%NPAR_BLDCODE,pshgc=b%XSHGC)
497  ELSE
498  CALL av_pgd(dtco, b%XSHGC ,top%XCOVER ,xdata_shgc(:),'TWN','ARI',top%LCOVER)
499  ENDIF
500 !
501 ! U_WIN
502 ! -----------
503  IF (dtb%LDATA_U_WIN) THEN
504  b%XU_WIN=dtb%XPAR_U_WIN
505  ELSEIF (dtt%LDATA_BLDTYPE) THEN
506  CALL ini_data_param_teb(bdd, dtt%NPAR_BLDCODE,pu_win=b%XU_WIN)
507  ELSE
508  CALL av_pgd(dtco, b%XU_WIN ,top%XCOVER ,xdata_u_win(:),'TWN','ARI',top%LCOVER)
509  ENDIF
510 !
511 ! GR
512 ! -----------
513  IF (dtb%LDATA_GR) THEN
514  b%XGR=dtb%XPAR_GR
515  ELSEIF (dtt%LDATA_BLDTYPE) THEN
516  CALL ini_data_param_teb(bdd, dtt%NPAR_BLDCODE,pgr=b%XGR)
517  ELSE
518  CALL av_pgd(dtco, b%XGR ,top%XCOVER ,xdata_gr(:),'TWN','ARI',top%LCOVER)
519  ENDIF
520 !
521 ! SHGC_SH
522 ! -----------
523  IF (dtb%LDATA_SHGC_SH) THEN
524  b%XSHGC_SH=dtb%XPAR_SHGC_SH
525  ELSEIF (dtt%LDATA_USETYPE) THEN
526  CALL ini_data_param_teb(bdd, dtt%NPAR_USETYPE,pshgc_sh=b%XSHGC_SH)
527  ELSE
528  CALL av_pgd(dtco, b%XSHGC_SH ,top%XCOVER ,xdata_shgc_sh(:),'TWN','ARI',top%LCOVER)
529  ENDIF
530 !
531 ! FLOOR_HEIGHT
532 ! -----------
533  IF (dtb%LDATA_FLOOR_HEIGHT) THEN
534  b%XFLOOR_HEIGHT=dtb%XPAR_FLOOR_HEIGHT
535  ELSEIF (dtt%LDATA_BLDTYPE) THEN
536  CALL ini_data_param_teb(bdd, dtt%NPAR_BLDCODE,pfloor_height=b%XFLOOR_HEIGHT)
537  ELSE
538  CALL av_pgd(dtco, b%XFLOOR_HEIGHT ,top%XCOVER ,xdata_floor_height(:),'TWN','ARI',top%LCOVER)
539  ENDIF
540 !
541 ! INF
542 ! -----------
543  IF (dtb%LDATA_INF) THEN
544  b%XINF=dtb%XPAR_INF
545  ELSEIF (dtt%LDATA_BLDTYPE) THEN
546  CALL ini_data_param_teb(bdd, dtt%NPAR_BLDCODE,pinf=b%XINF)
547  ELSE
548  CALL av_pgd(dtco, b%XINF ,top%XCOVER ,xdata_inf(:),'TWN','ARI',top%LCOVER)
549  ENDIF
550 !
551 ! F_WATER_COND
552 ! -----------
553  IF (dtb%LDATA_F_WATER_COND) THEN
554  b%XF_WATER_COND=dtb%XPAR_F_WATER_COND
555  ELSEIF (dtt%LDATA_BLDTYPE) THEN
556  CALL ini_data_param_teb(bdd, dtt%NPAR_BLDCODE,pf_water_cond=b%XF_WATER_COND)
557  ELSE
558  CALL av_pgd(dtco, b%XF_WATER_COND ,top%XCOVER ,xdata_f_water_cond(:),'TWN','ARI',top%LCOVER)
559  ENDIF
560 !
561 ! QIN_FLAT
562 ! -----------
563  IF (dtb%LDATA_QIN_FLAT) THEN
564  b%XQIN_FLAT=dtb%XPAR_QIN_FLAT
565  ELSEIF (dtt%LDATA_USETYPE) THEN
566  CALL ini_data_param_teb(bdd, dtt%NPAR_USETYPE,pqin_flat=b%XQIN_FLAT)
567  ELSE
568  CALL av_pgd(dtco, b%XQIN_FLAT ,top%XCOVER ,xdata_qin_flat(:),'TWN','ARI',top%LCOVER)
569  ENDIF
570 !
571 ! HR_TARGET
572 ! -----------
573  IF (dtb%LDATA_HR_TARGET) THEN
574  b%XHR_TARGET=dtb%XPAR_HR_TARGET
575  ELSEIF (dtt%LDATA_USETYPE) THEN
576  CALL ini_data_param_teb(bdd, dtt%NPAR_USETYPE,phr_target=b%XHR_TARGET)
577  ELSE
578  CALL av_pgd(dtco, b%XHR_TARGET ,top%XCOVER ,xdata_hr_target(:),'TWN','ARI',top%LCOVER)
579  ENDIF
580 !
581 ! V_VENT
582 ! -----------
583  IF (dtb%LDATA_V_VENT) THEN
584  b%XV_VENT=dtb%XPAR_V_VENT
585  ELSEIF (dtt%LDATA_BLDTYPE) THEN
586  CALL ini_data_param_teb(bdd, dtt%NPAR_BLDCODE,pv_vent=b%XV_VENT)
587  ELSE
588  CALL av_pgd(dtco, b%XV_VENT ,top%XCOVER ,xdata_v_vent(:),'TWN','ARI',top%LCOVER)
589  ENDIF
590 !
591 ! CAP_SYS_HEAT
592 ! -----------
593  IF (dtb%LDATA_CAP_SYS_HEAT) THEN
594  b%XCAP_SYS_HEAT=dtb%XPAR_CAP_SYS_HEAT
595  ELSEIF (dtt%LDATA_BLDTYPE) THEN
596  CALL ini_data_param_teb(bdd, dtt%NPAR_BLDCODE,pcap_sys_heat=b%XCAP_SYS_HEAT)
597  ELSE
598  CALL av_pgd(dtco, b%XCAP_SYS_HEAT ,top%XCOVER ,xdata_cap_sys_heat(:),'TWN','ARI',top%LCOVER)
599  ENDIF
600 !
601 ! CAP_SYS_RAT
602 ! -----------
603  IF (dtb%LDATA_CAP_SYS_RAT) THEN
604  b%XCAP_SYS_RAT=dtb%XPAR_CAP_SYS_RAT
605  ELSEIF (dtt%LDATA_BLDTYPE) THEN
606  CALL ini_data_param_teb(bdd, dtt%NPAR_BLDCODE,pcap_sys_rat=b%XCAP_SYS_RAT)
607  ELSE
608  CALL av_pgd(dtco, b%XCAP_SYS_RAT ,top%XCOVER ,xdata_cap_sys_rat(:),'TWN','ARI',top%LCOVER)
609  ENDIF
610 !
611 ! T_ADP
612 ! -----------
613  IF (dtb%LDATA_T_ADP) THEN
614  b%XT_ADP=dtb%XPAR_T_ADP
615  ELSEIF (dtt%LDATA_BLDTYPE) THEN
616  CALL ini_data_param_teb(bdd, dtt%NPAR_BLDCODE,pt_adp=b%XT_ADP)
617  ELSE
618  CALL av_pgd(dtco, b%XT_ADP ,top%XCOVER ,xdata_t_adp(:),'TWN','ARI',top%LCOVER)
619  ENDIF
620 !
621 ! M_SYS_RAT
622 ! -----------
623  IF (dtb%LDATA_M_SYS_RAT) THEN
624  b%XM_SYS_RAT=dtb%XPAR_M_SYS_RAT
625  ELSEIF (dtt%LDATA_BLDTYPE) THEN
626  CALL ini_data_param_teb(bdd, dtt%NPAR_BLDCODE,pm_sys_rat=b%XM_SYS_RAT)
627  ELSE
628  CALL av_pgd(dtco, b%XM_SYS_RAT ,top%XCOVER ,xdata_m_sys_rat(:),'TWN','ARI',top%LCOVER)
629  ENDIF
630 !
631 ! COP_RAT
632 ! -----------
633  IF (dtb%LDATA_COP_RAT) THEN
634  b%XCOP_RAT=dtb%XPAR_COP_RAT
635  ELSEIF (dtt%LDATA_BLDTYPE) THEN
636  CALL ini_data_param_teb(bdd, dtt%NPAR_BLDCODE,pcop_rat=b%XCOP_RAT)
637  ELSE
638  CALL av_pgd(dtco, b%XCOP_RAT ,top%XCOVER ,xdata_cop_rat(:),'TWN','ARI',top%LCOVER)
639  ENDIF
640 !
641 ! T_SIZE_MAX
642 ! -----------
643  IF (dtb%LDATA_T_SIZE_MAX) THEN
644  b%XT_SIZE_MAX=dtb%XPAR_T_SIZE_MAX
645  ELSEIF (dtt%LDATA_BLDTYPE) THEN
646  CALL ini_data_param_teb(bdd, dtt%NPAR_BLDCODE,pt_size_max=b%XT_SIZE_MAX)
647  ELSE
648  CALL av_pgd(dtco, b%XT_SIZE_MAX ,top%XCOVER ,xdata_t_size_max(:),'TWN','ARI',top%LCOVER)
649  ENDIF
650 !
651 ! T_SIZE_MIN
652 ! -----------
653  IF (dtb%LDATA_T_SIZE_MIN) THEN
654  b%XT_SIZE_MIN=dtb%XPAR_T_SIZE_MIN
655  ELSEIF (dtt%LDATA_BLDTYPE) THEN
656  CALL ini_data_param_teb(bdd, dtt%NPAR_BLDCODE,pt_size_min=b%XT_SIZE_MIN)
657  ELSE
658  CALL av_pgd(dtco, b%XT_SIZE_MIN ,top%XCOVER ,xdata_t_size_min(:),'TWN','ARI',top%LCOVER)
659  ENDIF
660 !
661 ! SHADE
662 ! -----
663  IF (dtb%LDATA_SHADE) THEN
664  b%XSHADE(:) = dtb%XPAR_SHADE(:)
665  ELSEIF (dtt%LDATA_USETYPE) THEN
666  CALL ini_data_param_teb(bdd, dtt%NPAR_USETYPE,pshade=b%XSHADE)
667  ELSE
668  CALL av_pgd(dtco, b%XSHADE,top%XCOVER ,xdata_shade(:),'TWN','ARI',top%LCOVER)
669  ENDIF
670 !
671 ! NATVENT
672 ! -------
673  IF (dtb%LDATA_NATVENT) THEN
674  b%XNATVENT(:) = dtb%XPAR_NATVENT(:)
675  ELSEIF (dtt%LDATA_USETYPE) THEN
676  CALL ini_data_param_teb(bdd, dtt%NPAR_USETYPE,pnatvent=b%XNATVENT)
677  ELSE
678  CALL av_pgd(dtco, b%XNATVENT,top%XCOVER,xdata_natvent(:),'TWN','ARI',top%LCOVER)
679  ENDIF
680 !
681 ENDIF
682 !
683 IF (PRESENT(tpn)) THEN
684 !
685 ! SOLAR PANELS
686 ! ------------
687  IF (dtt%LDATA_EMIS_PANEL) THEN
688  tpn%XEMIS_PANEL=dtt%XPAR_EMIS_PANEL
689  ELSEIF (dtt%LDATA_BLDTYPE) THEN
690  CALL ini_data_param_teb(bdd, dtt%NPAR_BLDCODE,pemis_panel=tpn%XEMIS_PANEL)
691  ELSE
692  CALL av_pgd(dtco, tpn%XEMIS_PANEL ,top%XCOVER ,xdata_emis_panel(:),'BLD','ARI',top%LCOVER)
693  ENDIF
694 !
695  IF (dtt%LDATA_ALB_PANEL) THEN
696  tpn%XALB_PANEL=dtt%XPAR_ALB_PANEL
697  ELSEIF (dtt%LDATA_BLDTYPE) THEN
698  CALL ini_data_param_teb(bdd, dtt%NPAR_BLDCODE,palb_panel=tpn%XALB_PANEL)
699  ELSE
700  CALL av_pgd(dtco, tpn%XALB_PANEL ,top%XCOVER ,xdata_alb_panel(:),'BLD','ARI',top%LCOVER)
701  ENDIF
702 !
703  IF (dtt%LDATA_EFF_PANEL) THEN
704  tpn%XEFF_PANEL=dtt%XPAR_EFF_PANEL
705  ELSEIF (dtt%LDATA_BLDTYPE) THEN
706  CALL ini_data_param_teb(bdd, dtt%NPAR_BLDCODE,peff_panel=tpn%XEFF_PANEL)
707  ELSE
708  CALL av_pgd(dtco, tpn%XEFF_PANEL ,top%XCOVER ,xdata_eff_panel(:),'BLD','ARI',top%LCOVER)
709  ENDIF
710 !
711  IF (dtt%LDATA_FRAC_PANEL) THEN
712  tpn%XFRAC_PANEL=dtt%XPAR_FRAC_PANEL
713  ELSEIF (dtt%LDATA_BLDTYPE) THEN
714  CALL ini_data_param_teb(bdd, dtt%NPAR_BLDCODE,pfrac_panel=tpn%XFRAC_PANEL)
715  ELSE
716  CALL av_pgd(dtco, tpn%XFRAC_PANEL ,top%XCOVER ,xdata_frac_panel(:),'BLD','ARI',top%LCOVER)
717  ENDIF
718 !
719 ENDIF
720 !
721 IF (lhook) CALL dr_hook('CONVERT_PATCH_TEB',1,zhook_handle)
722 !
723 !-------------------------------------------------------------------------------
724 CONTAINS
725 !
726 SUBROUTINE allocate_thermal_work(KPAR)
727 INTEGER, INTENT(IN) :: KPAR
728 ALLOCATE(zd(il,kpar))
729 ALLOCATE(zhc(il,kpar))
730 ALLOCATE(ztc(il,kpar))
731 END SUBROUTINE allocate_thermal_work
732 SUBROUTINE deallocate_thermal_work
733 DEALLOCATE(zd)
734 DEALLOCATE(zhc)
735 DEALLOCATE(ztc)
736 END SUBROUTINE deallocate_thermal_work
737 !-------------------------------------------------------------------------------
738 !
739 END SUBROUTINE convert_patch_teb
subroutine ini_data_param_teb(BDD, KTYPE,
real, dimension(:,:), allocatable xdata_hc_roof
real, dimension(:), allocatable xdata_shgc_sh
real, dimension(:), allocatable xdata_alb_road
real, dimension(:), allocatable xdata_v_vent
subroutine convert_patch_teb(BDD, DTB, DTCO, DTT, TOP, PDEF_ROAD_DIR, T, B, TPN)
real, dimension(:), allocatable xdata_residential
real, dimension(:), allocatable xdata_emis_wall
real, dimension(:,:), allocatable xdata_d_roof
real, dimension(:), allocatable xdata_t_adp
real, dimension(:), allocatable xdata_f_waste_can
subroutine allocate_thermal_work(KPAR)
real, dimension(:), allocatable xdata_qin_frad
real, dimension(:), allocatable xdata_le_traffic
real, dimension(:), allocatable xdata_qin_flat
real, dimension(:), allocatable xdata_tcool_target
real, dimension(:,:), allocatable xdata_tc_road
real, dimension(:,:), allocatable xdata_hc_wall
real, parameter xundef
real, dimension(:), allocatable xdata_theat_target
integer, parameter jprb
Definition: parkind1.F90:32
real, dimension(:), allocatable xdata_gr
real, dimension(:), allocatable xdata_u_win
real, dimension(:), allocatable xdata_alb_wall
real, dimension(:,:), allocatable xdata_tc_roof
real, dimension(:,:), allocatable xdata_d_road
real, dimension(:), allocatable xdata_shade
real, dimension(:), allocatable xdata_t_size_max
real, dimension(:), allocatable xdata_emis_panel
subroutine deallocate_thermal_work
real, dimension(:), allocatable xdata_m_sys_rat
real, dimension(:), allocatable xdata_shgc
real, dimension(:,:), allocatable xdata_d_floor
real, dimension(:), allocatable xdata_emis_road
real, dimension(:), allocatable xdata_alb_panel
real, dimension(:), allocatable xdata_eff_panel
real, dimension(:), allocatable xdata_inf
real, dimension(:), allocatable xdata_frac_gr
logical lhook
Definition: yomhook.F90:15
real, dimension(:), allocatable xdata_f_water_cond
real, dimension(:), allocatable xdata_h_traffic
real, dimension(:), allocatable xdata_rough_roof
real, dimension(:,:), allocatable xdata_tc_floor
real, dimension(:), allocatable xdata_hr_target
real, dimension(:), allocatable xdata_le_industry
real, dimension(:), allocatable xdata_qin
real, dimension(:), allocatable xdata_natvent
real, dimension(:,:), allocatable xdata_hc_floor
real, dimension(:), allocatable xdata_bld_height
real, dimension(:,:), allocatable xdata_tc_wall
real, dimension(:), allocatable xdata_h_industry
subroutine thermal_layers_conf(HTYPE, PD, PD_OUT, PHC, PHC_OUT, PTC, PTC
real, dimension(:), allocatable xdata_cop_rat
real, dimension(:), allocatable xdata_z0_town
real, dimension(:), allocatable xdata_cap_sys_heat
real, dimension(:), allocatable xdata_rough_wall
real, dimension(:), allocatable xdata_emis_roof
real, dimension(:), allocatable xdata_alb_roof
real, dimension(:,:), allocatable xdata_hc_road
real, dimension(:), allocatable xdata_cap_sys_rat
real, dimension(:), allocatable xdata_floor_height
real, dimension(:), allocatable xdata_t_size_min
real, dimension(:), allocatable xdata_frac_panel
real, dimension(:,:), allocatable xdata_d_wall
real, dimension(:), allocatable xdata_eff_heat