6 SUBROUTINE pgd_bem_par (DTCO, UG, U, USS, DTB, KDIM, &
58 USE modi_open_namelist
59 USE modi_close_namelist
76 TYPE(
sso_t),
INTENT(INOUT) :: USS
79 INTEGER,
INTENT(IN) :: KDIM
81 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
82 LOGICAL,
INTENT(IN) :: OAUTOSIZE
100 INTEGER,
PARAMETER :: NFLOOR_MAX = 9
101 INTEGER :: NPAR_FLOOR_LAYER
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
112 REAL,
DIMENSION(NFLOOR_MAX) :: XUNIF_HC_FLOOR
113 REAL,
DIMENSION(NFLOOR_MAX) :: XUNIF_TC_FLOOR
114 REAL,
DIMENSION(NFLOOR_MAX) :: XUNIF_D_FLOOR
115 REAL :: XUNIF_FLOOR_HEIGHT
116 CHARACTER(LEN=28),
DIMENSION(NFLOOR_MAX):: CFNAM_HC_FLOOR
117 CHARACTER(LEN=28),
DIMENSION(NFLOOR_MAX):: CFNAM_TC_FLOOR
118 CHARACTER(LEN=28),
DIMENSION(NFLOOR_MAX):: CFNAM_D_FLOOR
119 CHARACTER(LEN=28) :: CFNAM_FLOOR_HEIGHT
120 CHARACTER(LEN=6),
DIMENSION(NFLOOR_MAX):: CFTYP_HC_FLOOR
121 CHARACTER(LEN=6),
DIMENSION(NFLOOR_MAX):: CFTYP_TC_FLOOR
122 CHARACTER(LEN=6),
DIMENSION(NFLOOR_MAX):: CFTYP_D_FLOOR
123 CHARACTER(LEN=6) :: CFTYP_FLOOR_HEIGHT
127 REAL :: XUNIF_TCOOL_TARGET
128 REAL :: XUNIF_THEAT_TARGET
129 REAL :: XUNIF_F_WASTE_CAN
130 REAL :: XUNIF_EFF_HEAT
131 REAL :: XUNIF_HR_TARGET
132 REAL :: XUNIF_CAP_SYS_HEAT
133 REAL :: XUNIF_CAP_SYS_RAT
135 REAL :: XUNIF_M_SYS_RAT
136 REAL :: XUNIF_COP_RAT
137 REAL :: XUNIF_F_WATER_COND
138 CHARACTER(LEN=28) :: CFNAM_TCOOL_TARGET
139 CHARACTER(LEN=28) :: CFNAM_THEAT_TARGET
140 CHARACTER(LEN=28) :: CFNAM_F_WASTE_CAN
141 CHARACTER(LEN=28) :: CFNAM_EFF_HEAT
142 CHARACTER(LEN=28) :: CFNAM_HR_TARGET
143 CHARACTER(LEN=28) :: CFNAM_CAP_SYS_HEAT
144 CHARACTER(LEN=28) :: CFNAM_CAP_SYS_RAT
145 CHARACTER(LEN=28) :: CFNAM_T_ADP
146 CHARACTER(LEN=28) :: CFNAM_M_SYS_RAT
147 CHARACTER(LEN=28) :: CFNAM_COP_RAT
148 CHARACTER(LEN=28) :: CFNAM_F_WATER_COND
149 CHARACTER(LEN=6) :: CFTYP_TCOOL_TARGET
150 CHARACTER(LEN=6) :: CFTYP_THEAT_TARGET
151 CHARACTER(LEN=6) :: CFTYP_F_WASTE_CAN
152 CHARACTER(LEN=6) :: CFTYP_EFF_HEAT
153 CHARACTER(LEN=6) :: CFTYP_HR_TARGET
154 CHARACTER(LEN=6) :: CFTYP_CAP_SYS_HEAT
155 CHARACTER(LEN=6) :: CFTYP_CAP_SYS_RAT
156 CHARACTER(LEN=6) :: CFTYP_T_ADP
157 CHARACTER(LEN=6) :: CFTYP_M_SYS_RAT
158 CHARACTER(LEN=6) :: CFTYP_COP_RAT
159 CHARACTER(LEN=6) :: CFTYP_F_WATER_COND
163 REAL :: XUNIF_QIN_FRAD
164 REAL :: XUNIF_QIN_FLAT
165 CHARACTER(LEN=28) :: CFNAM_QIN
166 CHARACTER(LEN=28) :: CFNAM_QIN_FRAD
167 CHARACTER(LEN=28) :: CFNAM_QIN_FLAT
168 CHARACTER(LEN=6) :: CFTYP_QIN
169 CHARACTER(LEN=6) :: CFTYP_QIN_FRAD
170 CHARACTER(LEN=6) :: CFTYP_QIN_FLAT
175 REAL :: XUNIF_SHGC_SH
177 CHARACTER(LEN=28) :: CFNAM_GR
178 CHARACTER(LEN=28) :: CFNAM_SHGC
179 CHARACTER(LEN=28) :: CFNAM_SHGC_SH
180 CHARACTER(LEN=28) :: CFNAM_U_WIN
181 CHARACTER(LEN=6) :: CFTYP_GR
182 CHARACTER(LEN=6) :: CFTYP_SHGC
183 CHARACTER(LEN=6) :: CFTYP_SHGC_SH
184 CHARACTER(LEN=6) :: CFTYP_U_WIN
189 CHARACTER(LEN=28) :: CFNAM_INF
190 CHARACTER(LEN=28) :: CFNAM_V_VENT
191 CHARACTER(LEN=6) :: CFTYP_INF
192 CHARACTER(LEN=6) :: CFTYP_V_VENT
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
202 REAL,
DIMENSION(KDIM) :: ZWORK
203 REAL(KIND=JPRB) :: ZHOOK_HANDLE
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, &
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, &
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, &
256 xunif_tcool_target =
xundef 257 xunif_theat_target =
xundef 258 xunif_f_waste_can =
xundef 266 xunif_floor_height =
xundef 268 xunif_f_water_cond =
xundef 272 xunif_cap_sys_heat =
xundef 273 xunif_cap_sys_rat =
xundef 346 CALL posnam(ilunam,
'NAM_DATA_BEM',gfound,iluout)
347 IF (gfound)
READ(unit=ilunam,nml=nam_data_bem)
353 dtb%NPAR_FLOOR_LAYER = npar_floor_layer
359 IF (( any(xunif_hc_floor/=
xundef) .OR. any(len_trim(cfnam_hc_floor)>
363 CALL abor1_sfx(
'In order to initialize FLOOR thermal quantities, please specify NPAR_FLOOR_LAYER in namelist NAM_DATA_BEM' 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' 382 ALLOCATE(dtb%XPAR_SHADE (kdim))
384 hprogram,
'MAJ',
'SHADE ',
'TWN', cfnam_shade
386 IF (.NOT.dtb%LDATA_SHADE)
DEALLOCATE(dtb%XPAR_SHADE)
388 ALLOCATE(dtb%XPAR_NATVENT (kdim))
390 hprogram,
'MAJ',
'NATVENT ',
'TWN', cfnam_natvent
392 IF (.NOT.dtb%LDATA_NATVENT)
DEALLOCATE(dtb%XPAR_NATVENT)
394 ALLOCATE(dtb%XPAR_HC_FLOOR (kdim,npar_floor_layer))
396 hprogram,
'INV',
'HC_FLOOR ',
'TWN',cfnam_hc_floor
398 IF (.NOT.dtb%LDATA_HC_FLOOR)
DEALLOCATE(dtb%XPAR_HC_FLOOR)
400 ALLOCATE(dtb%XPAR_TC_FLOOR (kdim,npar_floor_layer))
402 hprogram,
'ARI',
'TC_FLOOR ',
'TWN',cfnam_tc_floor
404 IF (.NOT.dtb%LDATA_TC_FLOOR)
DEALLOCATE(dtb%XPAR_TC_FLOOR)
406 ALLOCATE(dtb%XPAR_D_FLOOR (kdim,npar_floor_layer))
408 hprogram,
'ARI',
'D_FLOOR ',
'TWN',cfnam_d_floor,cftyp_d_floor
410 IF (.NOT.dtb%LDATA_D_FLOOR)
DEALLOCATE(dtb%XPAR_D_FLOOR)
414 ALLOCATE(dtb%XPAR_TCOOL_TARGET (kdim))
416 hprogram,
'ARI',
'TCOOL_TARGET',
'TWN',cfnam_tcool_target
418 IF (.NOT.dtb%LDATA_TCOOL_TARGET)
DEALLOCATE(dtb%XPAR_TCOOL_TARGET)
420 ALLOCATE(dtb%XPAR_THEAT_TARGET (kdim))
422 hprogram,
'ARI',
'THEAT_TARGET',
'TWN',cfnam_theat_target
424 IF (.NOT.dtb%LDATA_THEAT_TARGET)
DEALLOCATE(dtb%XPAR_THEAT_TARGET)
426 ALLOCATE(dtb%XPAR_F_WASTE_CAN (kdim))
428 hprogram,
'ARI',
'F_WASTE_CAN',
'TWN',cfnam_f_waste_can
430 IF (.NOT.dtb%LDATA_F_WASTE_CAN)
DEALLOCATE(dtb%XPAR_F_WASTE_CAN)
432 ALLOCATE(dtb%XPAR_EFF_HEAT (kdim))
434 hprogram,
'ARI',
'EFF_HEAT',
'TWN',cfnam_eff_heat
436 IF (.NOT.dtb%LDATA_EFF_HEAT)
DEALLOCATE(dtb%XPAR_EFF_HEAT)
438 ALLOCATE(dtb%XPAR_QIN (kdim))
440 hprogram,
'ARI',
'QIN',
'TWN',cfnam_qin, cftyp_qin
441 IF (.NOT.dtb%LDATA_QIN)
DEALLOCATE(dtb%XPAR_QIN)
443 ALLOCATE(dtb%XPAR_QIN_FRAD (kdim))
445 hprogram,
'ARI',
'QIN_FRAD',
'TWN',cfnam_qin_frad
447 IF (.NOT.dtb%LDATA_QIN_FRAD)
DEALLOCATE(dtb%XPAR_QIN_FRAD)
449 ALLOCATE(dtb%XPAR_SHGC (kdim))
451 hprogram,
'ARI',
'SHGC',
'TWN',cfnam_shgc, cftyp_shgc
452 IF (.NOT.dtb%LDATA_SHGC)
DEALLOCATE(dtb%XPAR_SHGC)
454 ALLOCATE(dtb%XPAR_U_WIN (kdim))
456 hprogram,
'ARI',
'U_WIN',
'TWN',cfnam_u_win, cftyp_u_win
457 IF (.NOT.dtb%LDATA_U_WIN)
DEALLOCATE(dtb%XPAR_U_WIN)
459 ALLOCATE(dtb%XPAR_GR (kdim))
461 hprogram,
'ARI',
'GR',
'TWN',cfnam_gr, cftyp_gr,
462 IF (.NOT.dtb%LDATA_GR)
DEALLOCATE(dtb%XPAR_GR)
464 ALLOCATE(dtb%XPAR_SHGC_SH (kdim))
466 hprogram,
'ARI',
'SHGC_SH',
'TWN',cfnam_shgc_sh,
468 IF (.NOT.dtb%LDATA_SHGC_SH)
DEALLOCATE(dtb%XPAR_SHGC_SH)
470 ALLOCATE(dtb%XPAR_FLOOR_HEIGHT (kdim))
472 hprogram,
'ARI',
'FLOOR_HEIGHT',
'TWN',cfnam_floor_height
474 IF (.NOT.dtb%LDATA_FLOOR_HEIGHT)
DEALLOCATE(dtb%XPAR_FLOOR_HEIGHT)
476 ALLOCATE(dtb%XPAR_INF (kdim))
478 hprogram,
'ARI',
'INF',
'TWN',cfnam_inf, cftyp_inf
479 IF (.NOT.dtb%LDATA_INF)
DEALLOCATE(dtb%XPAR_INF)
481 ALLOCATE(dtb%XPAR_F_WATER_COND (kdim))
483 hprogram,
'ARI',
'F_WATER_COND',
'TWN',cfnam_f_water_cond
485 IF (.NOT.dtb%LDATA_F_WATER_COND)
DEALLOCATE(dtb%XPAR_F_WATER_COND)
487 ALLOCATE(dtb%XPAR_QIN_FLAT (kdim))
489 hprogram,
'ARI',
'QIN_FLAT',
'TWN',cfnam_qin_flat
491 IF (.NOT.dtb%LDATA_QIN_FLAT)
DEALLOCATE(dtb%XPAR_QIN_FLAT)
493 ALLOCATE(dtb%XPAR_HR_TARGET (kdim))
495 hprogram,
'ARI',
'HR_TARGET',
'TWN',cfnam_hr_target
497 IF (.NOT.dtb%LDATA_HR_TARGET)
DEALLOCATE(dtb%XPAR_HR_TARGET)
499 ALLOCATE(dtb%XPAR_V_VENT (kdim))
501 hprogram,
'ARI',
'V_VENT',
'TWN',cfnam_v_vent, cftyp_v_vent
503 IF (.NOT.dtb%LDATA_V_VENT)
DEALLOCATE(dtb%XPAR_V_VENT)
505 ALLOCATE(dtb%XPAR_T_SIZE_MAX (kdim))
507 hprogram,
'ARI',
'T_SIZE_MAX',
'TWN',cfnam_t_size_max
509 IF (.NOT.dtb%LDATA_T_SIZE_MAX)
DEALLOCATE(dtb%XPAR_T_SIZE_MAX)
511 ALLOCATE(dtb%XPAR_T_SIZE_MIN (kdim))
513 hprogram,
'ARI',
'T_SIZE_MIN',
'TWN',cfnam_t_size_min
515 IF (.NOT.dtb%LDATA_T_SIZE_MIN)
DEALLOCATE(dtb%XPAR_T_SIZE_MIN)
517 ALLOCATE(dtb%XPAR_CAP_SYS_HEAT (kdim))
519 hprogram,
'ARI',
'CAP_SYS_HEAT',
'TWN',cfnam_cap_sys_heat
521 IF (.NOT.dtb%LDATA_CAP_SYS_HEAT)
DEALLOCATE(dtb%XPAR_CAP_SYS_HEAT)
523 ALLOCATE(dtb%XPAR_CAP_SYS_RAT (kdim))
525 hprogram,
'ARI',
'CAP_SYS_RAT',
'TWN',cfnam_cap_sys_rat
527 IF (.NOT.dtb%LDATA_CAP_SYS_RAT)
DEALLOCATE(dtb%XPAR_CAP_SYS_RAT)
529 ALLOCATE(dtb%XPAR_M_SYS_RAT (kdim))
531 hprogram,
'ARI',
'M_SYS_RAT',
'TWN',cfnam_m_sys_rat
533 IF (.NOT.dtb%LDATA_M_SYS_RAT)
DEALLOCATE(dtb%XPAR_M_SYS_RAT)
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)
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)
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)
552 dtb%LDATA_CAP_SYS_HEAT = .false.
553 dtb%LDATA_CAP_SYS_RAT = .false.
554 dtb%LDATA_M_SYS_RAT = .false.
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)
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)
570 dtb%LDATA_T_SIZE_MAX = .false.
571 dtb%LDATA_T_SIZE_MIN = .false.
574 ALLOCATE(dtb%XPAR_T_ADP (kdim))
576 hprogram,
'ARI',
'T_ADP',
'TWN',cfnam_t_adp, cftyp_t_adp
577 IF (.NOT.dtb%LDATA_T_ADP)
DEALLOCATE(dtb%XPAR_T_ADP)
579 ALLOCATE(dtb%XPAR_COP_RAT (kdim))
581 hprogram,
'ARI',
'COP_RAT',
'TWN',cfnam_cop_rat,
583 IF (.NOT.dtb%LDATA_COP_RAT)
DEALLOCATE(dtb%XPAR_COP_RAT)
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
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' 608 WRITE(iluout,*)
'In your case :' 610 WRITE(iluout,*)
'Heat capacity is defined' 612 WRITE(iluout,*)
'Heat capacity is NOT defined' 615 WRITE(iluout,*)
'Thermal conductivity is defined' 617 WRITE(iluout,*)
'Thermal conductivity is NOT defined' 620 WRITE(iluout,*)
'Depths of layers are defined' 622 WRITE(iluout,*)
'Depths of layers are NOT defined' 624 WRITE(iluout,*)
'*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*' 625 CALL abor1_sfx(
'Heat capacity, Thermal conductivity and depths of layers MUST all be defined for ' static const char * trim(const char *name, int *n)
subroutine posnam(KULNAM, HDNAML, OFOUND, KLUOUT)
subroutine pgd_bem_par(DTCO, UG, U, USS, DTB, KDIM, HPROGRAM, OAUTOSIZE)
subroutine abor1_sfx(YTEXT)
subroutine close_namelist(HPROGRAM, KLUNAM)
subroutine get_luout(HPROGRAM, KLUOUT)
subroutine coherence_thermal_data_fl(HTYPE, ODATA_HC, ODATA_TC, ODATA_D)
subroutine open_namelist(HPROGRAM, KLUNAM, HFILE)