6 SUBROUTINE bem(PTSTEP, PSUNTIME, HCOOL_COIL, HHEAT_COIL, &
7 oautosize, kday, hnatvent, &
8 pps, prhoa, pt_canyon, pq_canyon, pu_canyon, &
9 pt_roof, pt_wall_a, pt_wall_b, pbld, pbld_height, pwall_o_hor,&
10 phc_floor, ptc_floor, pd_floor, &
11 pt_win2, pgr, pqin, pqin_frad, pqin_flat, &
12 peff_heat, pinf, ptcool_target, ptheat_target, phr_target, &
13 pf_water_cond, pv_vent, pcap_sys_heat, pt_adp, pcop_rat, &
14 paux_max, pt_floor, pt_mass, pti_bld, pqi_bld, &
15 pcap_sys_rat, pm_sys_rat, onatvent_night, &
16 ph_bld_cool, ph_bld_heat, ple_bld_cool, ple_bld_heat, &
17 pt_bld_cool, phvac_cool, pt_sys, pq_sys, ph_waste, ple_waste, &
18 pfan_power, phvac_heat, pm_sys, pcop, pcap_sys, phu_bld, &
19 ptr_sw_win, pt_rad_ind, pflx_bld_floor, pflx_bld_mass, &
20 pf_floor_mass, pf_floor_wall, pf_floor_win, &
21 pradht_in, pn_floor, pwall_o_bld, pglaz_o_bld, pmass_o_bld, &
22 pfloor_hw_ratio, pf_floor_roof, pf_mass_floor, pf_mass_wall, &
23 pf_mass_win, prad_roof_mass, prad_roof_floor, prad_wall_mass, &
24 prad_wall_floor, prad_win_mass, prad_win_floor, &
25 pconv_roof_bld, pconv_wall_bld, pconv_win_bld, &
26 pload_in_floor, pload_in_mass )
167 USE modd_csts,ONLY : xcpd,xstefan,xlvtt,xg, xrv, xrd
171 USE modi_dx_air_cooling_coil_cv
172 USE modi_floor_layer_e_budget
173 USE modi_mass_layer_e_budget
176 USE yomhook
,ONLY : lhook, dr_hook
177 USE parkind1
,ONLY : jprb
184 REAL,
INTENT(IN) :: ptstep
185 REAL,
DIMENSION(:),
INTENT(IN) :: psuntime
186 CHARACTER(LEN=6),
INTENT(IN) :: hcool_coil
187 CHARACTER(LEN=6),
INTENT(IN) :: hheat_coil
188 LOGICAL,
INTENT(IN) :: oautosize
189 INTEGER,
INTENT(IN) :: kday
191 CHARACTER(LEN=4),
DIMENSION(:),
INTENT(IN) :: hnatvent
193 REAL,
DIMENSION(:),
INTENT(IN) :: pps
194 REAL,
DIMENSION(:),
INTENT(IN) :: prhoa
195 REAL,
DIMENSION(:),
INTENT(IN) :: pt_canyon
196 REAL,
DIMENSION(:),
INTENT(IN) :: pq_canyon
197 REAL,
DIMENSION(:),
INTENT(IN) :: pu_canyon
198 REAL,
DIMENSION(:,:),
INTENT(IN) :: pt_roof
199 REAL,
DIMENSION(:,:),
INTENT(IN) :: pt_wall_a
200 REAL,
DIMENSION(:,:),
INTENT(IN) :: pt_wall_b
202 REAL,
DIMENSION(:),
INTENT(IN) :: pbld
203 REAL,
DIMENSION(:),
INTENT(IN) :: pbld_height
204 REAL,
DIMENSION(:),
INTENT(IN) :: pwall_o_hor
206 REAL,
DIMENSION(:,:),
INTENT(IN) :: phc_floor
207 REAL,
DIMENSION(:,:),
INTENT(IN) :: ptc_floor
209 REAL,
DIMENSION(:,:),
INTENT(IN) :: pd_floor
211 REAL,
DIMENSION(:),
INTENT(IN) :: pt_win2
212 REAL,
DIMENSION(:),
INTENT(IN) :: pgr
213 REAL,
DIMENSION(:),
INTENT(IN) :: pqin
214 REAL,
DIMENSION(:),
INTENT(IN) :: pqin_frad
215 REAL,
DIMENSION(:),
INTENT(IN) :: pqin_flat
216 REAL,
DIMENSION(:),
INTENT(IN) :: peff_heat
217 REAL,
DIMENSION(:),
INTENT(IN) :: pinf
218 REAL,
DIMENSION(:),
INTENT(IN) :: ptcool_target
219 REAL,
DIMENSION(:),
INTENT(IN) :: ptheat_target
220 REAL,
DIMENSION(:),
INTENT(IN) :: phr_target
221 REAL,
DIMENSION(:),
INTENT(IN) :: pf_water_cond
222 REAL,
DIMENSION(:),
INTENT(IN) :: pv_vent
223 REAL,
DIMENSION(:),
INTENT(IN) :: pcap_sys_heat
225 REAL,
DIMENSION(:),
INTENT(IN) :: pt_adp
227 REAL,
DIMENSION(:),
INTENT(IN) :: pcop_rat
229 REAL,
DIMENSION(:),
INTENT(INOUT):: paux_max
230 REAL,
DIMENSION(:,:),
INTENT(INOUT):: pt_floor
231 REAL,
DIMENSION(:,:),
INTENT(INOUT):: pt_mass
232 REAL,
DIMENSION(:),
INTENT(INOUT):: pti_bld
233 REAL,
DIMENSION(:),
INTENT(INOUT):: pqi_bld
235 REAL,
DIMENSION(:),
INTENT(INOUT):: pcap_sys_rat
237 REAL,
DIMENSION(:),
INTENT(INOUT):: pm_sys_rat
239 LOGICAL,
DIMENSION(:),
INTENT(INOUT):: onatvent_night
242 REAL,
DIMENSION(:),
INTENT(OUT) :: ph_bld_cool
244 REAL,
DIMENSION(:),
INTENT(OUT) :: ph_bld_heat
246 REAL,
DIMENSION(:),
INTENT(OUT) :: ple_bld_cool
248 REAL,
DIMENSION(:),
INTENT(OUT) :: ple_bld_heat
250 REAL,
DIMENSION(:),
INTENT(OUT) :: pt_bld_cool
252 REAL,
DIMENSION(:),
INTENT(OUT) :: phvac_cool
254 REAL,
DIMENSION(:),
INTENT(OUT) :: pt_sys
255 REAL,
DIMENSION(:),
INTENT(OUT) :: pq_sys
256 REAL,
DIMENSION(:),
INTENT(OUT) :: ph_waste
258 REAL,
DIMENSION(:),
INTENT(OUT) :: ple_waste
260 REAL,
DIMENSION(:),
INTENT(OUT) :: pfan_power
261 REAL,
DIMENSION(:),
INTENT(OUT) :: phvac_heat
264 REAL,
DIMENSION(:),
INTENT(OUT) :: pm_sys
266 REAL,
DIMENSION(:),
INTENT(OUT) :: pcop
267 REAL,
DIMENSION(:),
INTENT(OUT) :: pcap_sys
270 REAL,
DIMENSION(:),
INTENT(OUT) :: phu_bld
271 REAL,
DIMENSION(:),
INTENT(IN) :: ptr_sw_win
273 REAL,
DIMENSION(:),
INTENT(IN) :: pt_rad_ind
275 REAL,
DIMENSION(:),
INTENT(OUT) :: pflx_bld_floor
277 REAL,
DIMENSION(:),
INTENT(OUT) :: pflx_bld_mass
279 REAL,
DIMENSION(:),
INTENT(IN) :: pf_floor_mass
280 REAL,
DIMENSION(:),
INTENT(IN) :: pf_floor_wall
281 REAL,
DIMENSION(:),
INTENT(IN) :: pf_floor_win
282 REAL,
DIMENSION(:),
INTENT(IN) :: pradht_in
284 REAL,
DIMENSION(:) ,
INTENT(IN) :: pn_floor
285 REAL,
DIMENSION(:) ,
INTENT(IN) :: pwall_o_bld
286 REAL,
DIMENSION(:) ,
INTENT(IN) :: pglaz_o_bld
287 REAL,
DIMENSION(:) ,
INTENT(IN) :: pmass_o_bld
288 REAL,
DIMENSION(:) ,
INTENT(IN) :: pfloor_hw_ratio
289 REAL,
DIMENSION(:) ,
INTENT(IN) :: pf_floor_roof
290 REAL,
DIMENSION(:) ,
INTENT(IN) :: pf_mass_floor
291 REAL,
DIMENSION(:) ,
INTENT(IN) :: pf_mass_wall
292 REAL,
DIMENSION(:) ,
INTENT(IN) :: pf_mass_win
293 REAL,
DIMENSION(:) ,
INTENT(IN) :: prad_roof_mass
294 REAL,
DIMENSION(:) ,
INTENT(IN) :: prad_roof_floor
295 REAL,
DIMENSION(:) ,
INTENT(IN) :: prad_wall_mass
296 REAL,
DIMENSION(:) ,
INTENT(IN) :: prad_wall_floor
297 REAL,
DIMENSION(:) ,
INTENT(IN) :: prad_win_mass
298 REAL,
DIMENSION(:) ,
INTENT(IN) :: prad_win_floor
299 REAL,
DIMENSION(:) ,
INTENT(IN) :: pconv_roof_bld
300 REAL,
DIMENSION(:) ,
INTENT(IN) :: pconv_wall_bld
301 REAL,
DIMENSION(:) ,
INTENT(IN) :: pconv_win_bld
302 REAL,
DIMENSION(:) ,
INTENT(IN) :: pload_in_floor
303 REAL,
DIMENSION(:) ,
INTENT(IN) :: pload_in_mass
311 REAL,
DIMENSION(SIZE(PTI_BLD)) :: zfan_ap
312 REAL,
DIMENSION(SIZE(PTI_BLD)) :: zfan_eff
314 LOGICAL,
DIMENSION(SIZE(PTI_BLD)):: gsched
317 REAL,
DIMENSION(SIZE(PTI_BLD)) :: zf_night
318 REAL,
DIMENSION(SIZE(PTI_BLD)) :: zf_day
320 REAL,
DIMENSION(SIZE(PTI_BLD)):: zac_in_mass_cool, zac_in_floor_cool, &
321 zac_in_roof_cool, zac_in_wall_a_cool, &
322 zac_in_wall_b_cool, zac_in_win_cool
323 REAL,
DIMENSION(SIZE(PTI_BLD)):: zac_in_mass_heat, zac_in_floor_heat, &
324 zac_in_roof_heat, zac_in_wall_a_heat, &
325 zac_in_wall_b_heat, zac_in_win_heat
327 REAL,
DIMENSION(SIZE(PTI_BLD)):: zqin
329 REAL,
DIMENSION(SIZE(PTI_BLD)):: zv_vent
330 REAL,
DIMENSION(SIZE(PTI_BLD)):: zinf
332 LOGICAL,
DIMENSION(SIZE(PTI_BLD)):: gnat_vent
333 REAL,
DIMENSION(SIZE(PTI_BLD)):: znat_vent
334 REAL,
DIMENSION(SIZE(PTI_BLD)) :: zti_bld
335 REAL,
DIMENSION(SIZE(PTI_BLD)) :: zti_bld_open
336 REAL,
DIMENSION(SIZE(PTI_BLD)) :: zti_bld_closed
338 REAL,
DIMENSION(SIZE(PTI_BLD)):: zqcool_target
339 REAL,
DIMENSION(SIZE(PTI_BLD)):: zqheat_target
341 REAL,
DIMENSION(SIZE(PTI_BLD)):: zshr
342 REAL,
DIMENSION(SIZE(PTI_BLD)):: zm_sys_rat
344 REAL,
DIMENSION(SIZE(PTI_BLD)):: zxmix
345 REAL,
DIMENSION(SIZE(PTI_BLD)):: zt_mix
346 REAL,
DIMENSION(SIZE(PTI_BLD)):: zq_mix
348 REAL,
DIMENSION(SIZE(PTI_BLD)) :: zqi_bld
349 REAL,
DIMENSION(SIZE(PTI_BLD)):: zwaste
351 REAL,
DIMENSION(SIZE(PTI_BLD)):: zdqs_floor
352 REAL,
DIMENSION(SIZE(PTI_BLD)):: zimb_floor
353 REAL,
DIMENSION(SIZE(PTI_BLD)):: zdqs_mass
354 REAL,
DIMENSION(SIZE(PTI_BLD)):: zimb_mass
355 REAL,
DIMENSION(SIZE(PTI_BLD)):: zload_floor
356 REAL,
DIMENSION(SIZE(PTI_BLD)):: zload_mass
357 REAL,
DIMENSION(SIZE(PTI_BLD)):: zrad_floor_mass
358 REAL,
DIMENSION(SIZE(PTI_BLD)):: zconv_floor_bld
359 REAL,
DIMENSION(SIZE(PTI_BLD)):: zconv_mass_bld
360 REAL,
DIMENSION(SIZE(PTI_BLD)):: zrhoi
363 REAL(KIND=JPRB) :: zhook_handle
369 IF (lhook) CALL dr_hook(
'BEM',0,zhook_handle)
374 zrhoi(:) = pps(:) / (xrd * pti_bld(:) * ( 1.+((xrv/xrd)-1.)*pqi_bld(:) ) )
383 iroof =
SIZE(pt_roof,2)
384 iwall =
SIZE(pt_wall_a,2)
388 IF (any(pqi_bld(:) <= 1e-6)) pqi_bld = 0.5 *
qsat(pti_bld, pps)
402 zqin = pqin * pn_floor
403 WHERE (psuntime(:) > 0. .AND. psuntime(:) < 25200.)
404 zqin(:) = zqin(:) * zf_night(:)
406 zqin(:) = zqin(:) * zf_day(:)
410 zv_vent(:) = pv_vent(:) * pbld_height(:) / 3600.
411 zinf(:) = pinf(:) * pbld_height(:) / 3600.
417 zload_floor(:) = (zqin(:) * pqin_frad(:) * (1.-pqin_flat(:)) + ptr_sw_win(:)) / (pmass_o_bld(:)+1.)
418 WHERE (pn_floor(:) > 1.)
419 zload_mass(:) = zload_floor(:)
427 phc_floor, ptc_floor, pd_floor, &
428 pflx_bld_floor, zdqs_floor, zimb_floor,&
429 pf_floor_mass, pf_floor_wall, pf_floor_win,&
430 pf_floor_roof, pradht_in, &
431 pt_mass(:,1), prad_wall_floor, prad_roof_floor, &
432 prad_win_floor, pload_in_floor, pti_bld, zrad_floor_mass, zconv_floor_bld)
437 phc_floor, ptc_floor, pd_floor/2., &
438 pflx_bld_mass, zdqs_mass, zimb_mass,&
439 pf_mass_wall, pf_mass_win,&
440 pf_mass_floor, pradht_in, &
441 prad_wall_mass, prad_roof_mass, &
442 prad_win_mass, pload_in_mass, pti_bld, &
443 zrad_floor_mass, zconv_mass_bld )
446 zac_in_wall_a_cool =
chtc_vert_doe(pt_wall_a(:,iwall), ptcool_target)
447 zac_in_wall_b_cool =
chtc_vert_doe(pt_wall_b(:,iwall), ptcool_target)
449 zac_in_mass_cool =
chtc_vert_doe(pt_mass(:,1), ptcool_target)
450 zac_in_roof_cool =
chtc_down_doe(pt_roof(:,iroof),ptcool_target)
451 zac_in_floor_cool =
chtc_up_doe(pt_floor(:,1),ptcool_target)
453 zac_in_wall_a_heat =
chtc_vert_doe(pt_wall_a(:,iwall), ptheat_target)
454 zac_in_wall_b_heat =
chtc_vert_doe(pt_wall_b(:,iwall), ptheat_target)
456 zac_in_mass_heat =
chtc_vert_doe(pt_mass(:,1), ptheat_target)
457 zac_in_roof_heat =
chtc_down_doe(pt_roof(:,iroof),ptheat_target)
458 zac_in_floor_heat =
chtc_up_doe(pt_floor(:,1),ptheat_target)
460 DO jj=1,
SIZE(zac_in_win_cool)
461 zac_in_wall_a_cool(jj) = max(1.,zac_in_wall_a_cool(jj))
462 zac_in_wall_b_cool(jj) = max(1., zac_in_wall_b_cool(jj))
463 zac_in_win_cool(jj) = max(1., zac_in_win_cool(jj))
464 zac_in_mass_cool(jj) = max(1., zac_in_mass_cool(jj))
465 zac_in_roof_cool(jj) = max(1., zac_in_roof_cool(jj))
466 zac_in_floor_cool(jj) = max(1., zac_in_floor_cool(jj))
468 zac_in_wall_a_heat(jj) = max(1.,zac_in_wall_a_heat(jj))
469 zac_in_wall_b_heat(jj) = max(1., zac_in_wall_b_heat(jj))
470 zac_in_win_heat(jj) = max(1., zac_in_win_heat(jj))
471 zac_in_mass_heat(jj) = max(1., zac_in_mass_heat(jj))
472 zac_in_roof_heat(jj) = max(1., zac_in_roof_heat(jj))
473 zac_in_floor_heat(jj) = max(1., zac_in_floor_heat(jj))
479 DO jj=1,
SIZE(pt_canyon)
482 zti_bld(jj) = pti_bld(jj) &
483 + ptstep/(zrhoi(jj) * xcpd * pbld_height(jj)) &
484 * ( pwall_o_bld(jj) * pconv_wall_bld(jj) &
485 + pglaz_o_bld(jj) * pconv_win_bld(jj) &
486 + pmass_o_bld(jj) * zconv_mass_bld(jj) &
487 + pconv_roof_bld(jj) &
488 + zconv_floor_bld(jj) &
489 + zqin(jj) * (1 - pqin_frad(jj)) * (1 - pqin_flat(jj)) )
497 IF (hnatvent(jj)==
'NONE')
THEN
499 gnat_vent(jj) = .false.
502 ELSEIF (hnatvent(jj)==
'AUTO' .OR. hnatvent(jj)==
'MECH')
THEN
504 IF (mod(psuntime(jj), 3600.) .LT. ptstep)
THEN
506 IF ( pti_bld(jj).GT. pt_canyon(jj) + 1 )
THEN
507 IF (hnatvent(jj)==
'AUTO')
THEN
509 CALL
get_nat_vent(pti_bld(jj), pt_canyon(jj), pu_canyon(jj), pgr(jj), &
510 pfloor_hw_ratio(jj), pbld_height(jj), znat_vent(jj))
511 ELSE IF (hnatvent(jj)==
'MECH')
THEN
513 znat_vent(jj) = 5.0*pbld_height(jj)/3600.
516 zti_bld_open(jj) = zti_bld(jj) &
517 + znat_vent(jj) * ptstep/pbld_height(jj) * (pt_canyon(jj) - pti_bld(jj))
518 zti_bld_closed(jj) = zti_bld(jj) &
519 + (zinf(jj) + zv_vent(jj)) * ptstep/pbld_height(jj) * (pt_canyon(jj) - pti_bld(jj))
521 gnat_vent(jj) = (zti_bld_open(jj) <= ptcool_target(jj) .AND. &
522 zti_bld_open(jj) < zti_bld_closed(jj) .AND. &
523 zti_bld_open(jj) > ptheat_target(jj) + 4.)
526 gnat_vent(jj) = .false.
528 onatvent_night(jj) = gnat_vent(jj)
530 gnat_vent(jj) = onatvent_night(jj)
534 ELSEIF (hnatvent(jj)==
'MANU')
THEN
536 onatvent_night(jj) = onatvent_night(jj) .AND. &
537 .NOT. ( psuntime(jj) > 5.*3600 .AND. psuntime(jj) < 18.*3600 )
539 gnat_vent(jj) = ( psuntime(jj) > 18.*3600. .AND. psuntime(jj) < 21.*3600. &
540 .AND. pt_canyon(jj) < pti_bld(jj)+2. &
541 .AND. pt_canyon(jj) > ptheat_target(jj) &
542 .AND. ( pti_bld(jj) > ptheat_target(jj)+5. &
543 .OR. pti_bld(jj) == ptcool_target(jj) ) )
544 gnat_vent(jj) = gnat_vent(jj) .OR. onatvent_night(jj)
557 IF (gnat_vent(jj))
THEN
559 CALL
get_nat_vent(pti_bld(jj), pt_canyon(jj), pu_canyon(jj), pgr(jj), &
560 pfloor_hw_ratio(jj), pbld_height(jj), znat_vent(jj) )
565 ph_bld_cool(jj) = 0.0
566 ph_bld_heat(jj) = 0.0
567 ple_bld_cool(jj) = 0.0
568 ple_bld_heat(jj) = 0.0
570 pt_bld_cool(jj) = 0.0
572 pt_sys(jj) = pti_bld(jj)
573 pq_sys(jj) = pqi_bld(jj)
592 ph_bld_cool(jj) = pwall_o_bld(jj)/2. * (zac_in_wall_a_cool(jj) * (pt_wall_a(jj,iwall) - ptcool_target(jj)) &
593 + zac_in_wall_b_cool(jj) * (pt_wall_b(jj,iwall) - ptcool_target(jj))) &
594 + pglaz_o_bld(jj) * zac_in_win_cool(jj) * (pt_win2(jj) - ptcool_target(jj)) &
595 + zac_in_mass_cool(jj)* pmass_o_bld(jj) * (pt_mass(jj,1) - ptcool_target(jj)) &
596 + zac_in_roof_cool(jj) * (pt_roof(jj,iroof) - ptcool_target(jj)) &
597 + zac_in_floor_cool(jj) * (pt_floor(jj,1) - ptcool_target(jj)) &
598 + zqin(jj) * (1 - pqin_frad(jj)) * (1 - pqin_flat(jj)) &
599 + (zinf(jj) + zv_vent(jj)) * zrhoi(jj) * xcpd * (pt_canyon(jj) - ptcool_target(jj))
601 ph_bld_heat(jj) = - ( pwall_o_bld(jj)/2. * (zac_in_wall_a_heat(jj) * (pt_wall_a(jj,iwall) - ptheat_target(jj)) &
602 +zac_in_wall_b_heat(jj) * (pt_wall_b(jj,iwall) - ptheat_target(jj))) &
603 + pglaz_o_bld(jj) * zac_in_win_heat(jj) * (pt_win2(jj) - ptheat_target(jj)) &
604 + zac_in_mass_heat(jj)* pmass_o_bld(jj) * (pt_mass(jj,1) - ptheat_target(jj)) &
605 + zac_in_roof_heat(jj) * (pt_roof(jj,iroof) - ptheat_target(jj)) &
606 + zac_in_floor_heat(jj) * (pt_floor(jj,1) - ptheat_target(jj)) &
607 + zqin(jj) * (1 - pqin_frad(jj))* (1 - pqin_flat(jj)) &
608 + (zinf(jj) + zv_vent(jj)) * zrhoi(jj) * xcpd * (pt_canyon(jj) - ptheat_target(jj)))
611 zqcool_target(jj) = 0.62198 * phr_target(jj) *
psat(ptcool_target(jj)) / &
612 (pps(jj)- phr_target(jj) *
psat(ptcool_target(jj)))
614 ple_bld_cool(jj) = zqin(jj) * pqin_flat(jj) &
615 + (zinf(jj) + zv_vent(jj)) * zrhoi(jj) * xlvtt * (pq_canyon(jj) - zqcool_target(jj))
618 zqheat_target(jj) = 0.62198 * phr_target(jj) *
psat(ptheat_target(jj)) / &
619 (pps(jj)- phr_target(jj) *
psat(ptheat_target(jj)))
621 ple_bld_heat(jj) = zqin(jj) * pqin_flat(jj) &
622 + (zinf(jj) + zv_vent(jj)) * zrhoi(jj) * xlvtt * (pq_canyon(jj) - zqheat_target(jj))
626 IF (oautosize .AND. kday==15)
THEN
628 IF (ph_bld_cool(jj) > paux_max(jj))
THEN
630 paux_max(jj) = ph_bld_cool(jj)
633 zshr(jj) = min(xcpd * (ptcool_target(jj) - pt_adp(jj)) / &
634 (
enth_fn_t_q(ptcool_target(jj),zqcool_target(jj)) - &
637 pcap_sys_rat(jj) = ph_bld_cool(jj) / zshr(jj)
640 zm_sys_rat(jj) = ph_bld_cool(jj) / xcpd / (ptcool_target(jj)-(14.0+273.16))
641 IF (zm_sys_rat(jj) > pm_sys_rat(jj)) pm_sys_rat(jj) = zm_sys_rat(jj)
644 IF (pm_sys_rat(jj)/zrhoi(jj)/pcap_sys_rat(jj) < 0.00004027)
THEN
645 pcap_sys_rat(jj) = pm_sys_rat(jj)/zrhoi(jj)/0.00004027
646 ELSE IF (pm_sys_rat(jj)/zrhoi(jj)/pcap_sys_rat(jj) > 0.00006041)
THEN
647 pcap_sys_rat(jj) = pm_sys_rat(jj)/zrhoi(jj)/0.00006041
659 pm_sys(jj) = pm_sys_rat(jj)
660 pcop(jj) = pcop_rat(jj)
661 pcap_sys(jj) = pcap_sys_rat(jj)
666 zxmix(jj) = zv_vent(jj) * zrhoi(jj) / pm_sys(jj)
667 zt_mix(jj) = zxmix(jj) * pt_canyon(jj) + (1.-zxmix(jj)) * pti_bld(jj)
668 zq_mix(jj) = zxmix(jj) * pq_canyon(jj) + (1.-zxmix(jj)) * pqi_bld(jj)
674 IF (ph_bld_cool(jj) >= 0.0)
THEN
677 IF (hcool_coil==
'IDEAL')
THEN
679 pt_bld_cool(jj) = ph_bld_cool(jj) + ple_bld_cool(jj)
684 phvac_cool(jj) = ph_bld_cool(jj) / pcop_rat(jj)
685 IF (phvac_cool(jj) < 0.0) phvac_cool(jj) = 0.0
687 pt_sys(jj) = zt_mix(jj) - ph_bld_cool(jj) /pm_sys(jj) / xcpd
691 pq_sys(jj) = zq_mix(jj)
693 ph_waste(jj) = phvac_cool(jj) * (1.+pcop_rat(jj)) * (1. - pf_water_cond(jj))
694 ple_waste(jj) = phvac_cool(jj) * (1.+pcop_rat(jj)) * pf_water_cond(jj)
697 ELSEIF (hcool_coil==
'DXCOIL')
THEN
700 zrhoi(jj), zt_mix(jj), zq_mix(jj), pcop_rat(jj), &
701 pcap_sys_rat(jj), pt_adp(jj), pf_water_cond(jj), &
702 pm_sys(jj), ph_bld_cool(jj), ph_waste(jj), ple_waste(jj), &
703 pcop(jj), pcap_sys(jj), pt_sys(jj), pq_sys(jj), &
704 phvac_cool(jj), pt_bld_cool(jj) )
709 IF (pf_water_cond(jj) < 0)
THEN
716 pfan_power(jj) = pm_sys(jj) * zfan_ap(jj) * zfan_eff(jj) * zrhoi(jj)
718 ph_bld_heat(jj) = 0.0
719 ple_bld_heat(jj) = 0.0
726 ELSE IF (ph_bld_heat(jj) > 0.0)
THEN
729 IF (hheat_coil .EQ.
'FINCAP')
THEN
730 IF (ph_bld_heat(jj) > pcap_sys_heat(jj)) ph_bld_heat(jj) = pcap_sys_heat(jj)
733 pt_sys(jj) = zt_mix(jj) + ph_bld_heat(jj) / pm_sys(jj) / xcpd
734 pq_sys(jj) = zq_mix(jj)
736 phvac_heat(jj) = ph_bld_heat(jj) / peff_heat(jj)
737 ph_waste(jj) = phvac_heat(jj) - ph_bld_heat(jj)
739 ph_bld_cool(jj) = 0.0
740 ple_bld_cool(jj) = 0.0
741 pt_bld_cool(jj) = 0.0
744 pfan_power(jj) = pm_sys(jj)*zfan_ap(jj)*(zfan_eff(jj)*zrhoi(jj))
752 ph_bld_cool(jj) = 0.0
753 ph_bld_heat(jj) = 0.0
754 ple_bld_cool(jj) = 0.0
755 ple_bld_heat(jj) = 0.0
757 pt_bld_cool(jj) = 0.0
759 pt_sys(jj) = zt_mix(jj)
760 pq_sys(jj) = zq_mix(jj)
779 zti_bld(:) = ( zti_bld(:) + ptstep/pbld_height(:) * &
780 ((zinf(:) + znat_vent(:)) * (pt_canyon(:) ) &
781 + pm_sys(:) / zrhoi(:) * (pt_sys(:) ) ))&
782 / (1. + ptstep/pbld_height(:)* &
783 (zinf(:) + znat_vent(:) + pm_sys(:) / zrhoi(:)) )
784 zqi_bld(:) = ( pqi_bld(:) + ptstep/pbld_height(:) * &
785 ( zqin(:) * pqin_flat(:) / ( zrhoi(:) * xlvtt) &
786 + (zinf(:) + znat_vent(:)) * (pq_canyon(:) ) &
787 + pm_sys(:) / zrhoi(:) * (pq_sys(:) ) ))&
788 / (1. + ptstep/pbld_height(:)* &
789 (zinf(:) + znat_vent(:) + pm_sys(:) / zrhoi(:)) )
793 pti_bld(:) = zti_bld(:)
794 pqi_bld(:) = zqi_bld(:)
799 zwaste(:) = (zinf(:)+zv_vent(:)+znat_vent(:)) * zrhoi(:)
800 ph_waste(:) = ph_waste(:) + zwaste(:) * xcpd * (pti_bld(:) - pt_canyon(:))
801 ple_waste(:) = ple_waste(:) + zwaste(:) * xlvtt * (pqi_bld(:) - pq_canyon(:))
804 IF (lhook) CALL dr_hook(
'BEM',1,zhook_handle)
809 pf_aux, ppbld_height, pnat_vent)
813 REAL,
INTENT(IN) :: ppti_bld
814 REAL,
INTENT(IN) :: ppt_canyon
815 REAL,
INTENT(IN) :: ppu_canyon
816 REAL,
INTENT(IN) :: ppgr
817 REAL,
INTENT(IN) :: pf_aux
818 REAL,
INTENT(IN) :: ppbld_height
819 REAL,
INTENT(OUT) :: pnat_vent
820 REAL(KIND=JPRB) :: zhook_handle
822 IF (lhook) CALL dr_hook(
'BEM:GET_NAT_VENT',0,zhook_handle)
824 pnat_vent = xg * (ppti_bld - ppt_canyon)
825 IF (pnat_vent .LT. 0.)
THEN
826 pnat_vent= ppbld_height/3600.
828 pnat_vent = 1./3. * (pnat_vent/ppt_canyon)**(1./2.) &
829 * (1.5 + ppti_bld/pnat_vent * 1./2. * ppu_canyon**2*0.1)**(3./2.) &
830 * ppgr * pf_aux / 1.5 / 2.
831 pnat_vent = min(pnat_vent, 5.0*ppbld_height/3600.)
834 IF (lhook) CALL dr_hook(
'BEM:GET_NAT_VENT',1,zhook_handle)
real function, dimension(size(pts)) chtc_down_doe(PTS, PTA)
subroutine bem(PTSTEP, PSUNTIME, HCOOL_COIL, HHEAT_COIL, OAUTOSIZE, KDAY, HNATVENT, PPS, PRHOA, PT_CANYON, PQ_CANYON, PU_CANYON, PT_ROOF, PT_WALL_A, PT_WALL_B, PBLD, PBLD_HEIGHT, PWALL_O_HOR, PHC_FLOOR, PTC_FLOOR, PD_FLOOR, PT_WIN2, PGR, PQIN, PQIN_FRAD, PQIN_FLAT, PEFF_HEAT, PINF, PTCOOL_TARGET, PTHEAT_TARGET, PHR_TARGET, PF_WATER_COND, PV_VENT, PCAP_SYS_HEAT, PT_ADP, PCOP_RAT, PAUX_MAX, PT_FLOOR, PT_MASS, PTI_BLD, PQI_BLD, PCAP_SYS_RAT, PM_SYS_RAT, ONATVENT_NIGHT, PH_BLD_COOL, PH_BLD_HEAT, PLE_BLD_COOL, PLE_BLD_HEAT, PT_BLD_COOL, PHVAC_COOL, PT_SYS, PQ_SYS, PH_WASTE, PLE_WASTE, PFAN_POWER, PHVAC_HEAT, PM_SYS, PCOP, PCAP_SYS, PHU_BLD, PTR_SW_WIN, PT_RAD_IND, PFLX_BLD_FLOOR, PFLX_BLD_MASS, PF_FLOOR_MASS, PF_FLOOR_WALL, PF_FLOOR_WIN, PRADHT_IN, PN_FLOOR, PWALL_O_BLD, PGLAZ_O_BLD, PMASS_O_BLD, PFLOOR_HW_RATIO, PF_FLOOR_ROOF, PF_MASS_FLOOR, PF_MASS_WALL, PF_MASS_WIN, PRAD_ROOF_MASS, PRAD_ROOF_FLOOR, PRAD_WALL_MASS, PRAD_WALL_FLOOR, PRAD_WIN_MASS, PRAD_WIN_FLOOR, PCONV_ROOF_BLD, PCONV_WALL_BLD, PCONV_WIN_BLD, PLOAD_IN_FLOOR, PLOAD_IN_MASS)
subroutine get_nat_vent(PPTI_BLD, PPT_CANYON, PPU_CANYON, PPGR, PF_AUX, PPBLD_HEIGHT, PNAT_VENT)
subroutine mass_layer_e_budget(PT_MASS, PTSTEP, PHC_MASS, PTC_MASS, PD_MASS, PFLX_BLD_MASS, PDQS_MASS, PIMB_MASS, PF_MASS_WALL, PF_MASS_WIN, PF_MASS_FLOOR, PRADHT_IN, PRAD_WALL_MASS, PRAD_ROOF_MASS, PRAD_WIN_MASS, PLOAD_MASS, PTI_BLD, PRAD_FLOOR_MASS, PCONV_MASS_BLD)
subroutine dx_air_cooling_coil_cv(PT_CANYON, PQ_CANYON, PPS, PRHOA, PT_IN, PQ_IN, PCOP_RAT, PCAP_SYS_RAT, PT_ADP, PF_WATER_COND, PM_SYS, PH_BLD_COOL, PH_WASTE, PLE_WASTE, PCOP, PCAP_SYS, PT_OUT, PQ_OUT, PDX_POWER, PT_BLD_COOL)
subroutine floor_layer_e_budget(PT_FLOOR, PTSTEP, PHC_FLOOR, PTC_FLOOR, PD_FLOOR, PFLX_BLD_FLOOR, PDQS_FLOOR, PIMB_FLOOR, PF_FLOOR_MASS, PF_FLOOR_WALL, PF_FLOOR_WIN, PF_FLOOR_ROOF, PRADHT_IN, PTS_MASS, PRAD_WALL_FLOOR, PRAD_ROOF_FLOOR, PRAD_WIN_FLOOR, PLOAD_FLOOR, PTI_BLD, PRAD_FLOOR_MASS, PCONV_FLOOR_BLD)