SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
ini_data_param_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 ini_data_param_teb (BDD, &
7  ktype, &
8  pz0_town, palb_roof, palb_road, palb_wall, &
9  pemis_roof, pemis_road, pemis_wall, phc_roof, &
10  phc_road, phc_wall, ptc_roof, ptc_road, ptc_wall, &
11  pd_roof, pd_road, pd_wall, pbld_height, &
12  pwall_o_hor, pbld, pcan_hw_ratio, ph_traffic, &
13  ple_traffic, ph_industry, ple_industry, &
14  pgarden, ogarden, phc_floor, &
15  ptc_floor, pd_floor, ptcool_target, ptheat_target, &
16  pf_waste_can, peff_heat, pqin, pqin_frad, pshgc, &
17  pu_win, pgr, pshgc_sh, pfloor_height, pinf, &
18  pf_water_cond, pqin_flat, phr_target, pv_vent, &
19  pcap_sys_heat, pcap_sys_rat, pt_adp, pm_sys_rat, &
20  pcop_rat, pt_size_max, pt_size_min, pshade, &
21  pnatvent, prough_roof, prough_wall, pgreenroof, &
22  presidential, &
23  pemis_panel, palb_panel, peff_panel, pfrac_panel )
24 
25 ! #########################
26 !
27 !!
28 !! PURPOSE
29 !! -------
30 !!
31 !! METHOD
32 !! ------
33 !!
34 !!
35 !! EXTERNAL
36 !! --------
37 !!
38 !! IMPLICIT ARGUMENTS
39 !! ------------------
40 !!
41 !! REFERENCE
42 !! ---------
43 !!
44 !! AUTHOR
45 !! ------
46 !!
47 !! S. Faroux & V. Masson Meteo-France
48 !!
49 !! MODIFICATION
50 !! ------------
51 !!
52 !! Original 05/2012 from INI_DATA_PARAM_TEB, separates urban parameters
53 !! modified 08/2012 add PROUGH_ROOF, PROUGH_WALL
54 !! V. Masson 08/2013 add solar panels
55 !! V. Masson 10/2013 add residential use fraction
56 !----------------------------------------------------------------------------
57 !
58 !* 0. DECLARATION
59 ! -----------
60 !
61 !
62 !
64 !
65 USE modi_abor1_sfx
66 !
67 !
68 USE yomhook ,ONLY : lhook, dr_hook
69 USE parkind1 ,ONLY : jprb
70 !
71 IMPLICIT NONE
72 !
73 !* 0.1 Declaration of arguments
74 ! ------------------------
75 !
76 !
77 TYPE(bld_desc_t), INTENT(INOUT) :: bdd
78 !
79 INTEGER, DIMENSION(:), INTENT(IN) :: ktype
80 !
81 ! town parameters
82 ! ---------------
83 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: pz0_town
84 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: palb_roof
85 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: palb_road
86 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: palb_wall
87 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: pemis_roof
88 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: pemis_road
89 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: pemis_wall
90 REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: phc_roof
91 REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: phc_road
92 REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: phc_wall
93 REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: ptc_roof
94 REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: ptc_road
95 REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: ptc_wall
96 REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: pd_roof
97 REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: pd_road
98 REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: pd_wall
99 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: pbld_height
100 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: pwall_o_hor
101 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: pbld
102 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: pcan_hw_ratio
103 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: ph_traffic
104 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: ple_traffic
105 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: ph_industry
106 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: ple_industry
107 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: pgarden
108 LOGICAL, INTENT(IN), OPTIONAL :: ogarden
109 !
110 REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: phc_floor
111 REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: ptc_floor
112 REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: pd_floor
113 !
114 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: ptcool_target
115 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: ptheat_target
116 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: pf_waste_can
117 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: peff_heat
118 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: pqin
119 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: pqin_frad
120 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: pshgc
121 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: pu_win
122 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: pgr
123 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: pshgc_sh
124 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: pfloor_height
125 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: pinf
126 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: pf_water_cond
127 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: pqin_flat
128 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: phr_target
129 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: pv_vent
130 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: pcap_sys_heat
131 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: pcap_sys_rat
132 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: pt_adp
133 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: pm_sys_rat
134 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: pcop_rat
135 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: pt_size_max
136 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: pt_size_min
137 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: pshade
138 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: pnatvent
139 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: prough_roof
140 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: prough_wall
141 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: presidential
142 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: pgreenroof
143 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: pemis_panel
144 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: palb_panel
145 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: peff_panel
146 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: pfrac_panel
147 !
148 !* 0.2 Declaration of local variables
149 ! ------------------------------
150 !
151 INTEGER, DIMENSION(:), ALLOCATABLE :: ilist ! link between urban types and indices
152 REAL, DIMENSION(SIZE(KTYPE)) :: zgarden
153 INTEGER :: jloop ! spatial loop counter
154 INTEGER :: jlist ! loop counter on urban types
155 INTEGER :: iindex ! index of type for each point
156 !
157 REAL(KIND=JPRB) :: zhook_handle
158 !
159 !-------------------------------------------------------------------------------
160 !-------------------------------------------------------------------------------
161 !
162 IF (lhook) CALL dr_hook('INI_DATA_PARAM_TEB',0,zhook_handle)
163 !
164 !-------------------------------------------------------------------------------
165 !
166 !* 1. Builds the list of indices corresponding to the "type" field
167 ! ------------------------------------------------------------------
168 !
169 !
170 ALLOCATE(ilist(maxval(bdd%NDESC_CODE_LIST)))
171 ilist(:) = 0
172 DO jlist=1,bdd%NDESC_CODE
173  ilist(bdd%NDESC_CODE_LIST(jlist)) = jlist
174 END DO
175 !
176 iindex = 0
177 !
178 !-------------------------------------------------------------------------------
179 DO jloop=1,SIZE(ktype)
180 !-------------------------------------------------------------------------------
181 !
182 !* 1. town parameters depending on urban characteristics
183 ! --------------------------------------------------------
184 !
185  IF (ktype(jloop)<=SIZE(ilist) .AND. ktype(jloop)>0) iindex = ilist(ktype(jloop))
186 
187  IF (present(pz0_town)) THEN
188  pz0_town(jloop)=1.
189  ENDIF
190  IF (present(pbld_height)) THEN
191  pbld_height(jloop)=10.
192  ENDIF
193 
194  zgarden(jloop)=0.
195  IF (present(ogarden)) THEN
196  IF (.NOT. ogarden) zgarden(jloop) = 0.
197  ENDIF
198  IF (present(pgarden)) THEN
199  pgarden(jloop)=zgarden(jloop)
200  ENDIF
201 
202  IF (present(pbld)) THEN
203  pbld(jloop)=0.5
204  pbld(jloop) = pbld(jloop) / (1. - zgarden(jloop))
205  ENDIF
206 
207  IF (present(pwall_o_hor)) THEN
208  pwall_o_hor(jloop)=0.5
209  pwall_o_hor(jloop) = pwall_o_hor(jloop) / (1. - zgarden(jloop))
210  ENDIF
211 
212  IF (present(pcan_hw_ratio) .AND. present(pbld) .AND. present(pwall_o_hor)) THEN
213  pcan_hw_ratio(jloop)= 0.5 * pwall_o_hor(jloop) / (1.-pbld(jloop))
214  ELSEIF (present(pcan_hw_ratio) .AND. &
215  (.NOT.present(pbld) .OR. .NOT.present(pwall_o_hor)) ) THEN
216  CALL abor1_sfx("INI_DATA_PARAM_TEB: WHEN CALLING WITH CAN_HW_RATIO, BLD AND "// &
217  "WALL_O_HOR MUST ALSO BE IN ARGUMENTS")
218  ENDIF
219 
220  IF (present(ph_traffic)) THEN
221  ph_traffic(jloop)= 10.
222  ENDIF
223 
224  IF (present(ple_traffic)) THEN
225  ple_traffic(jloop)= 0.
226  ENDIF
227 
228  IF (present(ph_industry)) THEN
229  ph_industry(jloop)= 5.
230  ENDIF
231 
232  IF (present(ple_industry)) THEN
233  ple_industry(jloop)= 0.
234  ENDIF
235 
236  IF (present(palb_road)) THEN
237  palb_road(jloop)=bdd%XDESC_ALB_ROAD(iindex)
238  ENDIF
239  IF (present(pemis_road)) THEN
240  pemis_road(jloop)=bdd%XDESC_EMIS_ROAD(iindex)
241  ENDIF
242  IF (present(phc_road)) THEN
243  phc_road(jloop,:)= bdd%XDESC_HC_ROAD(iindex,:)
244  ENDIF
245  IF (present(ptc_road)) THEN
246  ptc_road(jloop,:)= bdd%XDESC_TC_ROAD(iindex,:)
247  ENDIF
248  IF (present(pd_road)) THEN
249  pd_road(jloop,:)= bdd%XDESC_D_ROAD(iindex,:)
250  ENDIF
251 !
252 !-------------------------------------------------------------------------------
253 !
254 !* 2. town parameters depending on building descriptions
255 ! --------------------------------------------------------
256 !
257  IF (ktype(jloop)<=SIZE(ilist) .AND. ktype(jloop)>0) iindex = ilist(ktype(jloop))
258 !
259  IF (present(palb_roof)) THEN
260  palb_roof(jloop)=bdd%XDESC_ALB_ROOF(iindex)
261  ENDIF
262  IF (present(palb_wall)) THEN
263  palb_wall(jloop)=bdd%XDESC_ALB_WALL(iindex)
264  ENDIF
265 
266  IF (present(pemis_roof)) THEN
267  pemis_roof(jloop)=bdd%XDESC_EMIS_ROOF(iindex)
268  ENDIF
269  IF (present(pemis_wall)) THEN
270  pemis_wall(jloop)=bdd%XDESC_EMIS_WALL(iindex)
271  ENDIF
272 
273  IF (present(phc_roof)) THEN
274  phc_roof(jloop,:)= bdd%XDESC_HC_ROOF(iindex,:)
275  ENDIF
276  IF (present(phc_wall)) THEN
277  phc_wall(jloop,:)= bdd%XDESC_HC_WALL(iindex,:)
278  ENDIF
279 
280  IF (present(ptc_roof)) THEN
281  ptc_roof(jloop,:)= bdd%XDESC_TC_ROOF(iindex,:)
282  ENDIF
283  IF (present(ptc_wall)) THEN
284  ptc_wall(jloop,:)= bdd%XDESC_TC_WALL(iindex,:)
285  ENDIF
286 
287  IF (present(pd_roof)) THEN
288  pd_roof(jloop,:)= bdd%XDESC_D_ROOF(iindex,:)
289  ENDIF
290  IF (present(pd_wall)) THEN
291  pd_wall(jloop,:)= bdd%XDESC_D_WALL(iindex,:)
292  ENDIF
293 
294 
295  IF (present(phc_floor)) THEN
296  phc_floor(jloop,:)= bdd%XDESC_HC_FLOOR(iindex,:)
297  ENDIF
298 
299  IF (present(ptc_floor)) THEN
300  ptc_floor(jloop,:)= bdd%XDESC_TC_FLOOR(iindex,:)
301  ENDIF
302 
303  IF (present(pd_floor)) THEN
304  pd_floor(jloop,:)= bdd%XDESC_D_FLOOR(iindex,:)
305  ENDIF
306 !
307  IF (present(peff_heat)) THEN
308  peff_heat(jloop) = bdd%XDESC_EFF_HEAT(iindex)
309  ENDIF
310 !
311  IF (present(pshgc)) THEN
312  pshgc(jloop) = bdd%XDESC_SHGC(iindex)
313  ENDIF
314 !
315  IF (present(pu_win)) THEN
316  pu_win(jloop) = bdd%XDESC_U_WIN(iindex)
317  ENDIF
318 !
319  IF (present(pgr)) THEN
320  pgr(jloop) = bdd%XDESC_GR(iindex)
321  ENDIF
322 
323  IF (present(pcop_rat)) THEN
324  pcop_rat(jloop) = bdd%XDESC_COP_RAT(iindex)
325  ENDIF
326 !
327  IF (present(pf_water_cond)) THEN
328  pf_water_cond(jloop) = bdd%XDESC_F_WATER_COND(iindex)
329  ENDIF
330 !
331  IF (present(pf_waste_can)) THEN
332  pf_waste_can(jloop) = bdd%XDESC_F_WASTE_CAN(iindex)
333  ENDIF
334 !
335  IF (present(pinf)) THEN
336  pinf(jloop) = bdd%XDESC_INF(iindex)
337  ENDIF
338 !
339  IF (present(pv_vent)) THEN
340  pv_vent(jloop) = bdd%XDESC_V_VENT(iindex)
341  ENDIF
342  !
343  IF (present(pgreenroof)) THEN
344  pgreenroof(jloop) = bdd%XDESC_GREENROOF(iindex)
345  ENDIF
346  !
347  IF (present(pemis_panel)) THEN
348  pemis_panel(jloop) = bdd%XDESC_EMIS_PANEL(iindex)
349  ENDIF
350  !
351  IF (present(palb_panel)) THEN
352  palb_panel(jloop) = bdd%XDESC_ALB_PANEL(iindex)
353  ENDIF
354  !
355  IF (present(peff_panel)) THEN
356  peff_panel(jloop) = bdd%XDESC_EFF_PANEL(iindex)
357  ENDIF
358  !
359  IF (present(pfrac_panel)) THEN
360  pfrac_panel(jloop) = bdd%XDESC_FRAC_PANEL(iindex)
361  ENDIF
362 !
363 !
364 !-------------------------------------------------------------------------------
365 !
366 !* 3. town parameters depending on building use
367 ! -----------------------------------------------
368 !
369  IF (ktype(jloop)<=SIZE(bdd%NDESC_USE_LIST) .AND. ktype(jloop)>0) &
370  iindex = bdd%NDESC_USE_LIST(ktype(jloop))
371 !
372  IF (present(ptcool_target)) THEN
373  ptcool_target(jloop) = bdd%XDESC_TCOOL_TARGET(iindex)
374  ENDIF
375 !
376  IF (present(ptheat_target)) THEN
377  ptheat_target(jloop) = bdd%XDESC_THEAT_TARGET(iindex)
378  ENDIF
379 !
380  IF (present(pqin)) THEN
381  pqin(jloop) = bdd%XDESC_QIN(iindex)
382  ENDIF
383 !
384  IF (present(pqin_flat)) THEN
385  pqin_flat(jloop) = bdd%XDESC_QIN_FLAT(iindex)
386  ENDIF
387 !
388  IF (present(pshgc_sh)) THEN
389  pshgc_sh(jloop) = bdd%XDESC_SHGC_SH(iindex)
390  ENDIF
391  !
392  IF (present(pshade)) THEN
393  pshade(jloop) = bdd%XDESC_SHADE(iindex)
394  ENDIF
395 !
396  IF (present(pnatvent)) THEN
397  pnatvent(jloop) = bdd%XDESC_NATVENT(iindex)
398  ENDIF
399 !
400  IF (present(presidential)) THEN
401  presidential(jloop) = bdd%XDESC_RESIDENTIAL(iindex)
402  ENDIF
403 
404 !
405 !-------------------------------------------------------------------------------
406 !
407 !* 4. town parameters not depending on anything yet
408 ! ---------------------------------------------------
409 !
410  IF (present(pcap_sys_heat)) THEN
411  pcap_sys_heat(jloop) = 100.
412  ENDIF
413 !
414  IF (present(pcap_sys_rat)) THEN
415  pcap_sys_rat(jloop) = 90.
416  ENDIF
417 !
418  IF (present(pt_adp)) THEN
419  pt_adp(jloop) = 285.66
420  ENDIF
421 !
422  IF (present(pm_sys_rat)) THEN
423  pm_sys_rat(jloop) = 0.0067
424  ENDIF
425 !
426  IF (present(pt_size_max)) THEN
427  pt_size_max(jloop) = 301.95
428  ENDIF
429 !
430  IF (present(pt_size_min)) THEN
431  pt_size_min(jloop) = 268.96
432  ENDIF
433 !
434  IF (present(pfloor_height)) THEN
435  pfloor_height(jloop) = 2.9
436  ENDIF
437 !
438  IF (present(pqin_frad)) THEN
439  pqin_frad(jloop) = 0.2
440  ENDIF
441 !
442  IF (present(phr_target)) THEN
443  phr_target(jloop) = 0.5
444  ENDIF
445 !
446  IF (present(prough_roof)) THEN
447  prough_roof(jloop) = 1.52
448  ENDIF
449 !
450  IF (present(prough_wall)) THEN
451  prough_wall(jloop) = 1.52
452  ENDIF
453 
454 !
455 END DO
456 !
457 DEALLOCATE(ilist)
458 !
459 IF (lhook) CALL dr_hook('INI_DATA_PARAM_TEB',1,zhook_handle)
460 !-------------------------------------------------------------------------------
461 !
462 END SUBROUTINE ini_data_param_teb
subroutine abor1_sfx(YTEXT)
Definition: abor1_sfx.F90:6
subroutine ini_data_param_teb(BDD, KTYPE, PZ0_TOWN, PALB_ROOF, PALB_ROAD, PALB_WALL, PEMIS_ROOF, PEMIS_ROAD, PEMIS_WALL, PHC_ROOF, PHC_ROAD, PHC_WALL, PTC_ROOF, PTC_ROAD, PTC_WALL, PD_ROOF, PD_ROAD, PD_WALL, PBLD_HEIGHT, PWALL_O_HOR, PBLD, PCAN_HW_RATIO, PH_TRAFFIC, PLE_TRAFFIC, PH_INDUSTRY, PLE_INDUSTRY, PGARDEN, OGARDEN, PHC_FLOOR, PTC_FLOOR, PD_FLOOR, PTCOOL_TARGET, PTHEAT_TARGET, PF_WASTE_CAN, PEFF_HEAT, PQIN, PQIN_FRAD, PSHGC, PU_WIN, PGR, PSHGC_SH, PFLOOR_HEIGHT, PINF, PF_WATER_COND, PQIN_FLAT, PHR_TARGET, PV_VENT, PCAP_SYS_HEAT, PCAP_SYS_RAT, PT_ADP, PM_SYS_RAT, PCOP_RAT, PT_SIZE_MAX, PT_SIZE_MIN, PSHADE, PNATVENT, PROUGH_ROOF, PROUGH_WALL, PGREENROOF, PRESIDENTIAL, PEMIS_PANEL, PALB_PANEL, PEFF_PANEL, PFRAC_PANEL)