SURFEX v8.1
General documentation of Surfex
pgd_bem_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_bem_par (DTCO, UG, U, USS, DTB, KDIM, &
7  HPROGRAM,OAUTOSIZE)
8 ! ##########################################
9 !
10 !!**** *PGD_BEM_PAR* monitor for averaging and interpolations of BEM input data
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 !! G. Pigeon Meteo-France
32 !!
33 !! MODIFICATION
34 !! ------------
35 !!
36 !! Original 08/2011
37 !! G. Pigeon 09/2012, NPAR_FLOOR_LAYER default to 1
38 !!
39 !!
40 !----------------------------------------------------------------------------
41 !
42 !* 0. DECLARATION
43 ! -----------
44 !
45 !
48 USE modd_surf_atm_n, ONLY : surf_atm_t
49 USE modd_sso_n, ONLY : sso_t
50 USE modd_data_bem_n, ONLY : data_bem_t
51 !
52 USE modd_surf_par, ONLY : xundef
53 !
54 USE yomhook ,ONLY : lhook, dr_hook
55 USE parkind1 ,ONLY : jprb
56 !
57 USE modi_get_luout
58 USE modi_open_namelist
59 USE modi_close_namelist
63 USE modi_abor1_sfx
64 !
65 USE mode_pos_surf
66 !
67 IMPLICIT NONE
68 !
69 !* 0.1 Declaration of arguments
70 ! ------------------------
71 !
72 !
73 TYPE(data_cover_t), INTENT(INOUT) :: DTCO
74 TYPE(surf_atm_grid_t), INTENT(INOUT) :: UG
75 TYPE(surf_atm_t), INTENT(INOUT) :: U
76 TYPE(sso_t), INTENT(INOUT) :: USS
77 TYPE(data_bem_t), INTENT(INOUT) :: DTB
78 !
79 INTEGER, INTENT(IN) :: KDIM
80 !
81  CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! Type of program
82 LOGICAL, INTENT(IN) :: OAUTOSIZE ! T for automatic determination
83 ! ! of HVAC systems charcateristics
84 !
85 !
86 !* 0.2 Declaration of local variables
87 ! ------------------------------
88 !
89 INTEGER :: ILUOUT ! output listing logical unit
90 INTEGER :: ILUNAM ! namelist file logical unit
91 LOGICAL :: GFOUND ! true if namelist is found
92 INTEGER :: JLAYER ! loop counter on layers
93 !
94 !
95 !* 0.3 Declaration of namelists
96 ! ------------------------
97 !
98 ! bem options
99 !
100 INTEGER, PARAMETER :: NFLOOR_MAX = 9
101 INTEGER :: NPAR_FLOOR_LAYER ! number of floor layers
102 !
103 REAL :: XUNIF_SHADE !
104  CHARACTER(LEN=28) :: CFNAM_SHADE !
105  CHARACTER(LEN=6) :: CFTYP_SHADE !
106 REAL :: XUNIF_NATVENT !
107  CHARACTER(LEN=28) :: CFNAM_NATVENT !
108  CHARACTER(LEN=6) :: CFTYP_NATVENT !
109 !
110 ! Floor parameters
111 !
112 REAL, DIMENSION(NFLOOR_MAX) :: XUNIF_HC_FLOOR ! floor layers heat capacity (J/K/m3)
113 REAL, DIMENSION(NFLOOR_MAX) :: XUNIF_TC_FLOOR ! floor layers thermal conduc (W/K/m)
114 REAL, DIMENSION(NFLOOR_MAX) :: XUNIF_D_FLOOR ! depth of floor layers (m)
115 REAL :: XUNIF_FLOOR_HEIGHT ! building floor height [m]
116  CHARACTER(LEN=28), DIMENSION(NFLOOR_MAX):: CFNAM_HC_FLOOR ! file name for HC_FLOOR
117  CHARACTER(LEN=28), DIMENSION(NFLOOR_MAX):: CFNAM_TC_FLOOR ! file name for TC_FLOOR
118  CHARACTER(LEN=28), DIMENSION(NFLOOR_MAX):: CFNAM_D_FLOOR ! file name for D_FLOOR
119  CHARACTER(LEN=28) :: CFNAM_FLOOR_HEIGHT ! file name for FLOOR_HEIGHT
120  CHARACTER(LEN=6), DIMENSION(NFLOOR_MAX):: CFTYP_HC_FLOOR ! file type for HC_FLOOR
121  CHARACTER(LEN=6), DIMENSION(NFLOOR_MAX):: CFTYP_TC_FLOOR ! file type for TC_FLOOR
122  CHARACTER(LEN=6), DIMENSION(NFLOOR_MAX):: CFTYP_D_FLOOR ! file type for D_FLOOR
123  CHARACTER(LEN=6) :: CFTYP_FLOOR_HEIGHT ! file type for FLOOR_HEIGHT
124 !
125 ! AC systems parameters
126 !
127 REAL :: XUNIF_TCOOL_TARGET !cooling setpoint
128 REAL :: XUNIF_THEAT_TARGET !heating setpoint
129 REAL :: XUNIF_F_WASTE_CAN ! fraction of waste heat into the canyon
130 REAL :: XUNIF_EFF_HEAT ! efficiency of the heating system
131 REAL :: XUNIF_HR_TARGET ! Relative humidity setpoint
132 REAL :: XUNIF_CAP_SYS_HEAT ! Capacity of the heating system
133 REAL :: XUNIF_CAP_SYS_RAT ! Rated capacity of the cooling system
134 REAL :: XUNIF_T_ADP ! Apparatus dewpoint temperature of the
135 REAL :: XUNIF_M_SYS_RAT ! Rated HVAC mass flow rate
136 REAL :: XUNIF_COP_RAT ! Rated COP of the cooling system
137 REAL :: XUNIF_F_WATER_COND ! fraction of evaporation of condensers
138  CHARACTER(LEN=28) :: CFNAM_TCOOL_TARGET ! file name for TCOOL_TARGET
139  CHARACTER(LEN=28) :: CFNAM_THEAT_TARGET ! file name for THEAT_TARGET
140  CHARACTER(LEN=28) :: CFNAM_F_WASTE_CAN ! file name for F_WASTE_CAN
141  CHARACTER(LEN=28) :: CFNAM_EFF_HEAT ! file name for EFF_HEAT
142  CHARACTER(LEN=28) :: CFNAM_HR_TARGET ! Relative humidity setpoint
143  CHARACTER(LEN=28) :: CFNAM_CAP_SYS_HEAT ! Capacity of the heating system
144  CHARACTER(LEN=28) :: CFNAM_CAP_SYS_RAT ! Rated capacity of the cooling system
145  CHARACTER(LEN=28) :: CFNAM_T_ADP ! Apparatus dewpoint temperature of the
146  CHARACTER(LEN=28) :: CFNAM_M_SYS_RAT ! Rated HVAC mass flow rate
147  CHARACTER(LEN=28) :: CFNAM_COP_RAT ! Rated COP of the cooling system
148  CHARACTER(LEN=28) :: CFNAM_F_WATER_COND ! fraction of evaporation of condensers
149  CHARACTER(LEN=6) :: CFTYP_TCOOL_TARGET ! file type for TCOOL_TARGET
150  CHARACTER(LEN=6) :: CFTYP_THEAT_TARGET ! file type for THEAT_TARGET
151  CHARACTER(LEN=6) :: CFTYP_F_WASTE_CAN ! file type for F_WASTE_CAN
152  CHARACTER(LEN=6) :: CFTYP_EFF_HEAT ! file type for EFF_HEAT
153  CHARACTER(LEN=6) :: CFTYP_HR_TARGET ! Relative humidity setpoint
154  CHARACTER(LEN=6) :: CFTYP_CAP_SYS_HEAT ! Capacity of the heating system
155  CHARACTER(LEN=6) :: CFTYP_CAP_SYS_RAT ! Rated capacity of the cooling system
156  CHARACTER(LEN=6) :: CFTYP_T_ADP ! Apparatus dewpoint temperature of the
157  CHARACTER(LEN=6) :: CFTYP_M_SYS_RAT ! Rated HVAC mass flow rate
158  CHARACTER(LEN=6) :: CFTYP_COP_RAT ! Rated COP of the cooling system
159  CHARACTER(LEN=6) :: CFTYP_F_WATER_COND ! fraction of evaporation of condensers
160 !
161 ! Internal heat gains
162 REAL :: XUNIF_QIN ! internal heat gains [W m-2(floor)]
163 REAL :: XUNIF_QIN_FRAD ! radiant fraction of int heat gains
164 REAL :: XUNIF_QIN_FLAT ! Latent franction of internal heat gains
165  CHARACTER(LEN=28) :: CFNAM_QIN ! file name for QIN
166  CHARACTER(LEN=28) :: CFNAM_QIN_FRAD ! file name for QIN_FRAD
167  CHARACTER(LEN=28) :: CFNAM_QIN_FLAT ! Latent franction of internal heat gains
168  CHARACTER(LEN=6) :: CFTYP_QIN ! file type for QIN
169  CHARACTER(LEN=6) :: CFTYP_QIN_FRAD ! file type for QIN_FRAD
170  CHARACTER(LEN=6) :: CFTYP_QIN_FLAT ! Latent franction of internal heat gains
171 !
172 ! window parameters
173 REAL :: XUNIF_GR ! glazing ratio
174 REAL :: XUNIF_SHGC ! solar transmitance of windows
175 REAL :: XUNIF_SHGC_SH ! solar transmitance of windows + shading
176 REAL :: XUNIF_U_WIN ! glazing thermal resistance[K m W-2]
177  CHARACTER(LEN=28) :: CFNAM_GR ! file name for GR
178  CHARACTER(LEN=28) :: CFNAM_SHGC ! file name for SHGC
179  CHARACTER(LEN=28) :: CFNAM_SHGC_SH ! file name for SHGC_SH
180  CHARACTER(LEN=28) :: CFNAM_U_WIN ! file name for U_WIN
181  CHARACTER(LEN=6) :: CFTYP_GR ! file type for GR
182  CHARACTER(LEN=6) :: CFTYP_SHGC ! file type for SHGC
183  CHARACTER(LEN=6) :: CFTYP_SHGC_SH ! file type for SHGC
184  CHARACTER(LEN=6) :: CFTYP_U_WIN ! file type for U_WIN
185 !
186 ! air renewal
187 REAL :: XUNIF_INF ! infiltration/ventilation flow rate [AC/H]
188 REAL :: XUNIF_V_VENT ! Ventilation flow rate [AC/H]
189  CHARACTER(LEN=28) :: CFNAM_INF ! file name for INF
190  CHARACTER(LEN=28) :: CFNAM_V_VENT ! Ventilation flow rate [AC/H]
191  CHARACTER(LEN=6) :: CFTYP_INF ! file type for INF
192  CHARACTER(LEN=6) :: CFTYP_V_VENT ! Ventilation flow rate [AC/H]
193 !
194 ! parameters for autosize calculation of the AC systems
195 REAL :: XUNIF_T_SIZE_MAX !
196 REAL :: XUNIF_T_SIZE_MIN !
197  CHARACTER(LEN=28) :: CFNAM_T_SIZE_MAX !
198  CHARACTER(LEN=28) :: CFNAM_T_SIZE_MIN !
199  CHARACTER(LEN=6) :: CFTYP_T_SIZE_MAX !
200  CHARACTER(LEN=6) :: CFTYP_T_SIZE_MIN !
201 !
202 REAL, DIMENSION(KDIM) :: ZWORK
203 REAL(KIND=JPRB) :: ZHOOK_HANDLE
204 !
205 NAMELIST/nam_data_bem/ npar_floor_layer, &
206  xunif_hc_floor, xunif_tc_floor, xunif_d_floor, &
207  xunif_floor_height, &
208  xunif_tcool_target, xunif_theat_target, &
209  xunif_f_waste_can, xunif_eff_heat, &
210  xunif_f_water_cond, xunif_hr_target, &
211  xunif_qin, xunif_qin_frad, xunif_qin_flat, &
212  xunif_shgc, xunif_u_win, xunif_gr,xunif_shgc_sh,&
213  xunif_inf, xunif_v_vent, &
214  xunif_cap_sys_heat, &
215  xunif_cap_sys_rat, xunif_t_adp, xunif_m_sys_rat,&
216  xunif_cop_rat, xunif_t_size_max, &
217  xunif_t_size_min, &
218  xunif_shade, cfnam_shade, cftyp_shade, &
219  xunif_natvent, cfnam_natvent, cftyp_natvent, &
220  cfnam_hc_floor, cfnam_tc_floor, cfnam_d_floor, &
221  cfnam_floor_height, &
222  cfnam_tcool_target, cfnam_theat_target, &
223  cfnam_f_waste_can, cfnam_eff_heat, &
224  cfnam_f_water_cond, cfnam_hr_target, &
225  cfnam_qin, cfnam_qin_frad, cfnam_qin_flat, &
226  cfnam_shgc, cfnam_u_win, cfnam_gr, &
227  cfnam_shgc_sh, cfnam_inf, cfnam_v_vent, &
228  cfnam_cap_sys_heat, &
229  cfnam_cap_sys_rat, cfnam_t_adp, cfnam_m_sys_rat,&
230  cfnam_cop_rat, cfnam_t_size_max, &
231  cfnam_t_size_min, &
232  cftyp_hc_floor, cftyp_tc_floor, cftyp_d_floor, &
233  cftyp_floor_height, &
234  cftyp_tcool_target, cftyp_theat_target, &
235  cftyp_f_waste_can, cftyp_eff_heat, &
236  cftyp_f_water_cond, cftyp_hr_target, &
237  cftyp_qin, cftyp_qin_frad, cftyp_qin_flat, &
238  cftyp_shgc, cftyp_u_win, cftyp_gr, &
239  cftyp_shgc_sh, cftyp_inf, cftyp_v_vent, &
240  cftyp_cap_sys_heat, &
241  cftyp_cap_sys_rat, cftyp_t_adp, cftyp_m_sys_rat,&
242  cftyp_cop_rat, cftyp_t_size_max, &
243  cftyp_t_size_min
244 !-------------------------------------------------------------------------------
245 IF (lhook) CALL dr_hook('PGD_BEM_PAR',0,zhook_handle)
246 !
247 !* 1. Initializations
248 ! ---------------
249 !
250 npar_floor_layer = 1
251 xunif_shade = xundef
252 xunif_natvent = xundef
253 xunif_hc_floor = xundef
254 xunif_tc_floor = xundef
255 xunif_d_floor = xundef
256 xunif_tcool_target = xundef
257 xunif_theat_target = xundef
258 xunif_f_waste_can = xundef
259 xunif_eff_heat = xundef
260 xunif_qin = xundef
261 xunif_qin_frad = xundef
262 xunif_shgc = xundef
263 xunif_u_win = xundef
264 xunif_gr = xundef
265 xunif_shgc_sh = xundef
266 xunif_floor_height = xundef
267 xunif_inf = xundef
268 xunif_f_water_cond = xundef
269 xunif_qin_flat = xundef
270 xunif_hr_target = xundef
271 xunif_v_vent = xundef
272 xunif_cap_sys_heat = xundef
273 xunif_cap_sys_rat = xundef
274 xunif_t_adp = xundef
275 xunif_m_sys_rat = xundef
276 xunif_cop_rat = xundef
277 xunif_t_size_max = xundef
278 xunif_t_size_min = xundef
279 !
280 CFNAM_SHADE = ' '
281 CFNAM_NATVENT = ' '
282 CFNAM_HC_FLOOR (:) = ' '
283 CFNAM_TC_FLOOR (:) = ' '
284 CFNAM_D_FLOOR (:) = ' '
285 CFNAM_TCOOL_TARGET = ' '
286 CFNAM_THEAT_TARGET = ' '
287 CFNAM_F_WASTE_CAN = ' '
288 CFNAM_EFF_HEAT = ' '
289 CFNAM_QIN = ' '
290 CFNAM_QIN_FRAD = ' '
291 CFNAM_SHGC = ' '
292 CFNAM_U_WIN = ' '
293 CFNAM_GR = ' '
294 CFNAM_SHGC_SH = ' '
295 CFNAM_FLOOR_HEIGHT = ' '
296 CFNAM_INF = ' '
297 CFNAM_F_WATER_COND = ' '
298 CFNAM_QIN_FLAT = ' '
299 CFNAM_HR_TARGET = ' '
300 CFNAM_V_VENT = ' '
301 CFNAM_CAP_SYS_HEAT = ' '
302 CFNAM_CAP_SYS_RAT = ' '
303 CFNAM_T_ADP = ' '
304 CFNAM_M_SYS_RAT = ' '
305 CFNAM_COP_RAT = ' '
306 CFNAM_T_SIZE_MAX = ' '
307 CFNAM_T_SIZE_MIN = ' '
308 !
309 CFTYP_SHADE = ' '
310 CFTYP_NATVENT = ' '
311 CFTYP_HC_FLOOR(:) = ' '
312 CFTYP_TC_FLOOR(:) = ' '
313 CFTYP_D_FLOOR(:) = ' '
314 CFTYP_TCOOL_TARGET = ' '
315 CFTYP_THEAT_TARGET = ' '
316 CFTYP_F_WASTE_CAN = ' '
317 CFTYP_EFF_HEAT = ' '
318 CFTYP_QIN = ' '
319 CFTYP_QIN_FRAD = ' '
320 CFTYP_SHGC = ' '
321 CFTYP_U_WIN = ' '
322 CFTYP_GR = ' '
323 CFTYP_SHGC_SH = ' '
324 CFTYP_FLOOR_HEIGHT = ' '
325 CFTYP_INF = ' '
326 CFTYP_F_WATER_COND = ' '
327 CFTYP_QIN_FLAT = ' '
328 CFTYP_HR_TARGET = ' '
329 CFTYP_V_VENT = ' '
330 CFTYP_CAP_SYS_HEAT = ' '
331 CFTYP_CAP_SYS_RAT = ' '
332 CFTYP_T_ADP = ' '
333 CFTYP_M_SYS_RAT = ' '
334 CFTYP_COP_RAT = ' '
335 CFTYP_T_SIZE_MAX = ' '
336 CFTYP_T_SIZE_MIN = ' '
337 !
338 !-------------------------------------------------------------------------------
339 !
340 !* 2. Input file for cover types
341 ! --------------------------
342 !
343  CALL get_luout(hprogram,iluout)
344  CALL open_namelist(hprogram,ilunam)
345 !
346  CALL posnam(ilunam,'NAM_DATA_BEM',gfound,iluout)
347 IF (gfound) READ(unit=ilunam,nml=nam_data_bem)
348 !
349  CALL close_namelist(hprogram,ilunam)
350 !
351 !-------------------------------------------------------------------------------
352 !
353 dtb%NPAR_FLOOR_LAYER = npar_floor_layer
354 !
355 !-------------------------------------------------------------------------------
356 !
357 !* coherence check
358 !
359 IF (( any(xunif_hc_floor/=xundef) .OR. any(len_trim(cfnam_hc_floor)>0) &
360  .OR. any(xunif_tc_floor/=xundef) .OR. any(len_trim(cfnam_tc_floor)>0) &
361  .OR. any(xunif_d_floor /=xundef) .OR. any(len_trim(cfnam_d_floor )>0) &
362  ) .AND. npar_floor_layer<1 ) THEN
363  CALL abor1_sfx('In order to initialize FLOOR thermal quantities, please specify NPAR_FLOOR_LAYER in namelist NAM_DATA_BEM')
364 END IF
365 !
366 !-------------------------------------------------------------------------------
367 IF (nfloor_max < npar_floor_layer) THEN
368  WRITE(iluout,*) '---------------------------------------------'
369  WRITE(iluout,*) 'Please update pgd_bem_par.F90 routine : '
370  WRITE(iluout,*) 'The maximum number of FLOOR LAYER '
371  WRITE(iluout,*) 'in the declaration of the namelist variables '
372  WRITE(iluout,*) 'must be increased to : ', npar_floor_layer
373  WRITE(iluout,*) '---------------------------------------------'
374  CALL abor1_sfx('PGD_BEM_PAR: MAXIMUM NUMBER OF NPAR_FLOOR_LAYER MUST BE INCREASED')
375 END IF
376 !-------------------------------------------------------------------------------
377 !
378 !* 3. user defined fields are prescribed
379 ! ----------------------------------
380 !
381 !
382 ALLOCATE(dtb%XPAR_SHADE (kdim))
383  CALL ini_var_from_data_0d(dtco, ug, u, uss, &
384  hprogram,'MAJ','SHADE ','TWN', cfnam_shade, cftyp_shade, xunif_shade, &
385  dtb%XPAR_SHADE, dtb%LDATA_SHADE )
386 IF (.NOT.dtb%LDATA_SHADE) DEALLOCATE(dtb%XPAR_SHADE)
387 !
388 ALLOCATE(dtb%XPAR_NATVENT (kdim))
389  CALL ini_var_from_data_0d(dtco, ug, u, uss, &
390  hprogram,'MAJ','NATVENT ','TWN', cfnam_natvent, cftyp_natvent, xunif_natvent, &
391  dtb%XPAR_NATVENT, dtb%LDATA_NATVENT )
392 IF (.NOT.dtb%LDATA_NATVENT) DEALLOCATE(dtb%XPAR_NATVENT)
393 !
394 ALLOCATE(dtb%XPAR_HC_FLOOR (kdim,npar_floor_layer))
395  CALL ini_var_from_data(dtco, ug, u, uss, &
396  hprogram,'INV','HC_FLOOR ','TWN',cfnam_hc_floor,cftyp_hc_floor, &
397  xunif_hc_floor,dtb%XPAR_HC_FLOOR,dtb%LDATA_HC_FLOOR )
398 IF (.NOT.dtb%LDATA_HC_FLOOR) DEALLOCATE(dtb%XPAR_HC_FLOOR)
399 !
400 ALLOCATE(dtb%XPAR_TC_FLOOR (kdim,npar_floor_layer))
401  CALL ini_var_from_data(dtco, ug, u, uss, &
402  hprogram,'ARI','TC_FLOOR ','TWN',cfnam_tc_floor,cftyp_tc_floor, &
403  xunif_tc_floor ,dtb%XPAR_TC_FLOOR, dtb%LDATA_TC_FLOOR )
404 IF (.NOT.dtb%LDATA_TC_FLOOR) DEALLOCATE(dtb%XPAR_TC_FLOOR)
405 !
406 ALLOCATE(dtb%XPAR_D_FLOOR (kdim,npar_floor_layer))
407  CALL ini_var_from_data(dtco, ug, u, uss, &
408  hprogram,'ARI','D_FLOOR ','TWN',cfnam_d_floor,cftyp_d_floor, &
409  xunif_d_floor ,dtb%XPAR_D_FLOOR , dtb%LDATA_D_FLOOR )
410 IF (.NOT.dtb%LDATA_D_FLOOR) DEALLOCATE(dtb%XPAR_D_FLOOR)
411 !
412 !-------------------------------------------------------------------------------
413 !
414 ALLOCATE(dtb%XPAR_TCOOL_TARGET (kdim))
415  CALL ini_var_from_data_0d(dtco, ug, u, uss, &
416  hprogram,'ARI','TCOOL_TARGET','TWN',cfnam_tcool_target, cftyp_tcool_target, xunif_tcool_target, &
417  dtb%XPAR_TCOOL_TARGET, dtb%LDATA_TCOOL_TARGET)
418 IF (.NOT.dtb%LDATA_TCOOL_TARGET) DEALLOCATE(dtb%XPAR_TCOOL_TARGET)
419 !
420 ALLOCATE(dtb%XPAR_THEAT_TARGET (kdim))
421  CALL ini_var_from_data_0d(dtco, ug, u, uss, &
422  hprogram,'ARI','THEAT_TARGET','TWN',cfnam_theat_target, cftyp_theat_target, xunif_theat_target, &
423  dtb%XPAR_THEAT_TARGET, dtb%LDATA_THEAT_TARGET)
424 IF (.NOT.dtb%LDATA_THEAT_TARGET) DEALLOCATE(dtb%XPAR_THEAT_TARGET)
425 !
426 ALLOCATE(dtb%XPAR_F_WASTE_CAN (kdim))
427  CALL ini_var_from_data_0d(dtco, ug, u, uss, &
428  hprogram,'ARI','F_WASTE_CAN','TWN',cfnam_f_waste_can, cftyp_f_waste_can, xunif_f_waste_can, &
429  dtb%XPAR_F_WASTE_CAN, dtb%LDATA_F_WASTE_CAN)
430 IF (.NOT.dtb%LDATA_F_WASTE_CAN) DEALLOCATE(dtb%XPAR_F_WASTE_CAN)
431 !
432 ALLOCATE(dtb%XPAR_EFF_HEAT (kdim))
433  CALL ini_var_from_data_0d(dtco, ug, u, uss, &
434  hprogram,'ARI','EFF_HEAT','TWN',cfnam_eff_heat, cftyp_eff_heat, xunif_eff_heat, &
435  dtb%XPAR_EFF_HEAT, dtb%LDATA_EFF_HEAT)
436 IF (.NOT.dtb%LDATA_EFF_HEAT) DEALLOCATE(dtb%XPAR_EFF_HEAT)
437 !
438 ALLOCATE(dtb%XPAR_QIN (kdim))
439  CALL ini_var_from_data_0d(dtco, ug, u, uss, &
440  hprogram,'ARI','QIN','TWN',cfnam_qin, cftyp_qin, xunif_qin, dtb%XPAR_QIN, dtb%LDATA_QIN)
441 IF (.NOT.dtb%LDATA_QIN) DEALLOCATE(dtb%XPAR_QIN)
442 !
443 ALLOCATE(dtb%XPAR_QIN_FRAD (kdim))
444  CALL ini_var_from_data_0d(dtco, ug, u, uss, &
445  hprogram,'ARI','QIN_FRAD','TWN',cfnam_qin_frad, cftyp_qin_frad, xunif_qin_frad, &
446  dtb%XPAR_QIN_FRAD, dtb%LDATA_QIN_FRAD)
447 IF (.NOT.dtb%LDATA_QIN_FRAD) DEALLOCATE(dtb%XPAR_QIN_FRAD)
448 !
449 ALLOCATE(dtb%XPAR_SHGC (kdim))
450  CALL ini_var_from_data_0d(dtco, ug, u, uss, &
451  hprogram,'ARI','SHGC','TWN',cfnam_shgc, cftyp_shgc, xunif_shgc, dtb%XPAR_SHGC, dtb%LDATA_SHGC)
452 IF (.NOT.dtb%LDATA_SHGC) DEALLOCATE(dtb%XPAR_SHGC)
453 !
454 ALLOCATE(dtb%XPAR_U_WIN (kdim))
455  CALL ini_var_from_data_0d(dtco, ug, u, uss, &
456  hprogram,'ARI','U_WIN','TWN',cfnam_u_win, cftyp_u_win, xunif_u_win, dtb%XPAR_U_WIN, dtb%LDATA_U_WIN)
457 IF (.NOT.dtb%LDATA_U_WIN) DEALLOCATE(dtb%XPAR_U_WIN)
458 !
459 ALLOCATE(dtb%XPAR_GR (kdim))
460  CALL ini_var_from_data_0d(dtco, ug, u, uss, &
461  hprogram,'ARI','GR','TWN',cfnam_gr, cftyp_gr, xunif_gr, dtb%XPAR_GR, dtb%LDATA_GR)
462 IF (.NOT.dtb%LDATA_GR) DEALLOCATE(dtb%XPAR_GR)
463 !
464 ALLOCATE(dtb%XPAR_SHGC_SH (kdim))
465  CALL ini_var_from_data_0d(dtco, ug, u, uss, &
466  hprogram,'ARI','SHGC_SH','TWN',cfnam_shgc_sh, cftyp_shgc_sh, xunif_shgc_sh, &
467  dtb%XPAR_SHGC_SH, dtb%LDATA_SHGC_SH)
468 IF (.NOT.dtb%LDATA_SHGC_SH) DEALLOCATE(dtb%XPAR_SHGC_SH)
469 !
470 ALLOCATE(dtb%XPAR_FLOOR_HEIGHT (kdim))
471  CALL ini_var_from_data_0d(dtco, ug, u, uss, &
472  hprogram,'ARI','FLOOR_HEIGHT','TWN',cfnam_floor_height, cftyp_floor_height, xunif_floor_height, &
473  dtb%XPAR_FLOOR_HEIGHT, dtb%LDATA_FLOOR_HEIGHT)
474 IF (.NOT.dtb%LDATA_FLOOR_HEIGHT) DEALLOCATE(dtb%XPAR_FLOOR_HEIGHT)
475 !
476 ALLOCATE(dtb%XPAR_INF (kdim))
477  CALL ini_var_from_data_0d(dtco, ug, u, uss, &
478  hprogram,'ARI','INF','TWN',cfnam_inf, cftyp_inf, xunif_inf, dtb%XPAR_INF, dtb%LDATA_INF)
479 IF (.NOT.dtb%LDATA_INF) DEALLOCATE(dtb%XPAR_INF)
480 !
481 ALLOCATE(dtb%XPAR_F_WATER_COND (kdim))
482  CALL ini_var_from_data_0d(dtco, ug, u, uss, &
483  hprogram,'ARI','F_WATER_COND','TWN',cfnam_f_water_cond, cftyp_f_water_cond, xunif_f_water_cond, &
484  dtb%XPAR_F_WATER_COND, dtb%LDATA_F_WATER_COND)
485 IF (.NOT.dtb%LDATA_F_WATER_COND) DEALLOCATE(dtb%XPAR_F_WATER_COND)
486 !
487 ALLOCATE(dtb%XPAR_QIN_FLAT (kdim))
488  CALL ini_var_from_data_0d(dtco, ug, u, uss, &
489  hprogram,'ARI','QIN_FLAT','TWN',cfnam_qin_flat, cftyp_qin_flat, xunif_qin_flat, &
490  dtb%XPAR_QIN_FLAT, dtb%LDATA_QIN_FLAT)
491 IF (.NOT.dtb%LDATA_QIN_FLAT) DEALLOCATE(dtb%XPAR_QIN_FLAT)
492 !
493 ALLOCATE(dtb%XPAR_HR_TARGET (kdim))
494  CALL ini_var_from_data_0d(dtco, ug, u, uss, &
495  hprogram,'ARI','HR_TARGET','TWN',cfnam_hr_target, cftyp_hr_target, xunif_hr_target, &
496  dtb%XPAR_HR_TARGET, dtb%LDATA_HR_TARGET)
497 IF (.NOT.dtb%LDATA_HR_TARGET) DEALLOCATE(dtb%XPAR_HR_TARGET)
498 !
499 ALLOCATE(dtb%XPAR_V_VENT (kdim))
500  CALL ini_var_from_data_0d(dtco, ug, u, uss, &
501  hprogram,'ARI','V_VENT','TWN',cfnam_v_vent, cftyp_v_vent, &
502  xunif_v_vent, dtb%XPAR_V_VENT, dtb%LDATA_V_VENT)
503 IF (.NOT.dtb%LDATA_V_VENT) DEALLOCATE(dtb%XPAR_V_VENT)
504 !
505 ALLOCATE(dtb%XPAR_T_SIZE_MAX (kdim))
506  CALL ini_var_from_data_0d(dtco, ug, u, uss, &
507  hprogram,'ARI','T_SIZE_MAX','TWN',cfnam_t_size_max, cftyp_t_size_max, xunif_t_size_max, &
508  dtb%XPAR_T_SIZE_MAX, dtb%LDATA_T_SIZE_MAX)
509 IF (.NOT.dtb%LDATA_T_SIZE_MAX) DEALLOCATE(dtb%XPAR_T_SIZE_MAX)
510 !
511 ALLOCATE(dtb%XPAR_T_SIZE_MIN (kdim))
512  CALL ini_var_from_data_0d(dtco, ug, u, uss, &
513  hprogram,'ARI','T_SIZE_MIN','TWN',cfnam_t_size_min, cftyp_t_size_min, xunif_t_size_min, &
514  dtb%XPAR_T_SIZE_MIN, dtb%LDATA_T_SIZE_MIN)
515 IF (.NOT.dtb%LDATA_T_SIZE_MIN) DEALLOCATE(dtb%XPAR_T_SIZE_MIN)
516 !
517 ALLOCATE(dtb%XPAR_CAP_SYS_HEAT (kdim))
518  CALL ini_var_from_data_0d(dtco, ug, u, uss, &
519  hprogram,'ARI','CAP_SYS_HEAT','TWN',cfnam_cap_sys_heat, cftyp_cap_sys_heat, xunif_cap_sys_heat, &
520  dtb%XPAR_CAP_SYS_HEAT, dtb%LDATA_CAP_SYS_HEAT)
521 IF (.NOT.dtb%LDATA_CAP_SYS_HEAT) DEALLOCATE(dtb%XPAR_CAP_SYS_HEAT)
522 !
523 ALLOCATE(dtb%XPAR_CAP_SYS_RAT (kdim))
524  CALL ini_var_from_data_0d(dtco, ug, u, uss, &
525  hprogram,'ARI','CAP_SYS_RAT','TWN',cfnam_cap_sys_rat, cftyp_cap_sys_rat, xunif_cap_sys_rat, &
526  dtb%XPAR_CAP_SYS_RAT, dtb%LDATA_CAP_SYS_RAT)
527 IF (.NOT.dtb%LDATA_CAP_SYS_RAT) DEALLOCATE(dtb%XPAR_CAP_SYS_RAT)
528 !
529 ALLOCATE(dtb%XPAR_M_SYS_RAT (kdim))
530  CALL ini_var_from_data_0d(dtco, ug, u, uss, &
531  hprogram,'ARI','M_SYS_RAT','TWN',cfnam_m_sys_rat, cftyp_m_sys_rat, xunif_m_sys_rat, &
532  dtb%XPAR_M_SYS_RAT, dtb%LDATA_M_SYS_RAT)
533 IF (.NOT.dtb%LDATA_M_SYS_RAT) DEALLOCATE(dtb%XPAR_M_SYS_RAT)
534  !
535 IF (oautosize) THEN
536  IF (dtb%LDATA_CAP_SYS_HEAT .OR. dtb%LDATA_CAP_SYS_RAT .OR. dtb%LDATA_M_SYS_RAT) THEN
537  WRITE(iluout,*) '==> You choose LAUTOSIZE=T <=='
538  WRITE(iluout,*) 'Therefore HVAC systems characteristics will be computed automatically'
539  IF (dtb%LDATA_CAP_SYS_HEAT) THEN
540  WRITE(iluout,*) 'Data you provided for CAP_SYS_HEAT are then discarded.'
541  DEALLOCATE(dtb%XPAR_CAP_SYS_HEAT)
542  END IF
543  IF (dtb%LDATA_CAP_SYS_RAT ) THEN
544  WRITE(iluout,*) 'Data you provided for CAP_SYS_RAT are then discarded.'
545  DEALLOCATE(dtb%XPAR_CAP_SYS_RAT)
546  END IF
547  IF (dtb%LDATA_M_SYS_RAT ) THEN
548  WRITE(iluout,*) 'Data you provided for M_SYS_RAT are then discarded.'
549  DEALLOCATE(dtb%XPAR_M_SYS_RAT)
550  END IF
551  END IF
552  dtb%LDATA_CAP_SYS_HEAT = .false.
553  dtb%LDATA_CAP_SYS_RAT = .false.
554  dtb%LDATA_M_SYS_RAT = .false.
555 ELSE
556  IF (dtb%LDATA_T_SIZE_MAX .OR. dtb%LDATA_T_SIZE_MAX) THEN
557  WRITE(iluout,*) '==> You choose LAUTOSIZE=F <=='
558  WRITE(iluout,*) 'Therefore HVAC systems characteristics are specified'
559  WRITE(iluout,*) 'and you do not need the minimal and maximum temperatures'
560  WRITE(iluout,*) 'that would be used if you have chosen an automatic calibration.'
561  IF (dtb%LDATA_T_SIZE_MAX) THEN
562  WRITE(iluout,*) 'Data you provided for T_SIZE_MAX are then discarded.'
563  DEALLOCATE(dtb%XPAR_T_SIZE_MAX)
564  END IF
565  IF (dtb%LDATA_T_SIZE_MIN) THEN
566  WRITE(iluout,*) 'Data you provided for T_SIZE_MIN are then discarded.'
567  DEALLOCATE(dtb%XPAR_T_SIZE_MIN)
568  END IF
569  END IF
570  dtb%LDATA_T_SIZE_MAX = .false.
571  dtb%LDATA_T_SIZE_MIN = .false.
572 END IF
573 !
574 ALLOCATE(dtb%XPAR_T_ADP (kdim))
575  CALL ini_var_from_data_0d(dtco, ug, u, uss, &
576  hprogram,'ARI','T_ADP','TWN',cfnam_t_adp, cftyp_t_adp, xunif_t_adp, dtb%XPAR_T_ADP, dtb%LDATA_T_ADP)
577 IF (.NOT.dtb%LDATA_T_ADP) DEALLOCATE(dtb%XPAR_T_ADP)
578 !
579 ALLOCATE(dtb%XPAR_COP_RAT (kdim))
580  CALL ini_var_from_data_0d(dtco, ug, u, uss, &
581  hprogram,'ARI','COP_RAT','TWN',cfnam_cop_rat, cftyp_cop_rat, xunif_cop_rat, &
582  dtb%XPAR_COP_RAT, dtb%LDATA_COP_RAT)
583 IF (.NOT.dtb%LDATA_COP_RAT) DEALLOCATE(dtb%XPAR_COP_RAT)
584 
585 !-------------------------------------------------------------------------------
586 !
587 !* coherence checks
588 !
589  CALL coherence_thermal_data_fl('FLOOR',dtb%LDATA_HC_FLOOR,dtb%LDATA_TC_FLOOR,dtb%LDATA_D_FLOOR)
590 !
591 !-------------------------------------------------------------------------------
592 IF (lhook) CALL dr_hook('PGD_BEM_PAR',1,zhook_handle)
593 !-------------------------------------------------------------------------------
594 CONTAINS
595 SUBROUTINE coherence_thermal_data_fl(HTYPE,ODATA_HC,ODATA_TC,ODATA_D)
596  CHARACTER(LEN=5), INTENT(IN) :: HTYPE
597 LOGICAL, INTENT(IN) :: ODATA_HC
598 LOGICAL, INTENT(IN) :: ODATA_TC
599 LOGICAL, INTENT(IN) :: ODATA_D
600 !
601 IF (odata_hc .OR. odata_tc .OR. odata_d) THEN
602  IF (.NOT. (odata_hc .AND. odata_tc .AND. odata_d)) THEN
603  WRITE(iluout,*) '*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*'
604  WRITE(iluout,*) 'When specifying data for thermal ',trim(htype),' characteristics,'
605  WRITE(iluout,*) 'All three parameters MUST be defined:'
606  WRITE(iluout,*) 'Heat capacity, Thermal conductivity and depths of layers'
607  WRITE(iluout,*) ' '
608  WRITE(iluout,*) 'In your case :'
609  IF (odata_hc) THEN
610  WRITE(iluout,*) 'Heat capacity is defined'
611  ELSE
612  WRITE(iluout,*) 'Heat capacity is NOT defined'
613  END IF
614  IF (odata_tc) THEN
615  WRITE(iluout,*) 'Thermal conductivity is defined'
616  ELSE
617  WRITE(iluout,*) 'Thermal conductivity is NOT defined'
618  END IF
619  IF (odata_d) THEN
620  WRITE(iluout,*) 'Depths of layers are defined'
621  ELSE
622  WRITE(iluout,*) 'Depths of layers are NOT defined'
623  END IF
624  WRITE(iluout,*) '*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*'
625  CALL abor1_sfx('Heat capacity, Thermal conductivity and depths of layers MUST all be defined for '//htype)
626  END IF
627 END IF
628 END SUBROUTINE coherence_thermal_data_fl
629 !-------------------------------------------------------------------------------
630 !
631 !-------------------------------------------------------------------------------
632 !
633 END SUBROUTINE pgd_bem_par
static const char * trim(const char *name, int *n)
Definition: drhook.c:2383
subroutine posnam(KULNAM, HDNAML, OFOUND, KLUOUT)
subroutine pgd_bem_par(DTCO, UG, U, USS, DTB, KDIM, HPROGRAM, OAUTOSIZE)
Definition: pgd_bem_par.F90:8
subroutine abor1_sfx(YTEXT)
Definition: abor1_sfx.F90:7
real, parameter xundef
integer, parameter jprb
Definition: parkind1.F90:32
subroutine close_namelist(HPROGRAM, KLUNAM)
subroutine get_luout(HPROGRAM, KLUOUT)
Definition: get_luout.F90:7
logical lhook
Definition: yomhook.F90:15
subroutine coherence_thermal_data_fl(HTYPE, ODATA_HC, ODATA_TC, ODATA_D)
subroutine open_namelist(HPROGRAM, KLUNAM, HFILE)