6 SUBROUTINE bem(BOP, T, B, DMT, PTSTEP, PSUNTIME, KDAY, PPS, PRHOA, PT_CAN, &
7 PQ_CAN, PU_CAN, PHU_BLD, PT_RAD_IND, PFLX_BLD_FL, PFLX_BLD_MA,&
8 PRADHT_IN, PRAD_RF_MA, PRAD_RF_FL, PRAD_WL_MA, PRAD_WL_FL,&
9 PRAD_WIN_MA, PRAD_WIN_FL, PCONV_RF_BLD, PCONV_WL_BLD, &
10 PCONV_WIN_BLD, PLOAD_IN_FL, PLOAD_IN_MA )
160 USE modi_dx_air_cooling_coil_cv
161 USE modi_floor_layer_e_budget
162 USE modi_mass_layer_e_budget
173 TYPE(
teb_t),
INTENT(INOUT) :: T
174 TYPE(
bem_t),
INTENT(INOUT) :: B
177 REAL,
INTENT(IN) :: PTSTEP
178 REAL,
DIMENSION(:),
INTENT(IN) :: PSUNTIME
179 INTEGER,
INTENT(IN) :: KDAY
181 REAL,
DIMENSION(:),
INTENT(IN) :: PPS
182 REAL,
DIMENSION(:),
INTENT(IN) :: PRHOA
183 REAL,
DIMENSION(:),
INTENT(IN) :: PT_CAN
184 REAL,
DIMENSION(:),
INTENT(IN) :: PQ_CAN
185 REAL,
DIMENSION(:),
INTENT(IN) :: PU_CAN
187 REAL,
DIMENSION(:),
INTENT(OUT) :: PHU_BLD
188 REAL,
DIMENSION(:),
INTENT(IN) :: PT_RAD_IND
190 REAL,
DIMENSION(:),
INTENT(OUT) :: PFLX_BLD_FL
192 REAL,
DIMENSION(:),
INTENT(OUT) :: PFLX_BLD_MA
194 REAL,
DIMENSION(:),
INTENT(IN) :: PRADHT_IN
196 REAL,
DIMENSION(:) ,
INTENT(IN) :: PRAD_RF_MA
197 REAL,
DIMENSION(:) ,
INTENT(IN) :: PRAD_RF_FL
198 REAL,
DIMENSION(:) ,
INTENT(IN) :: PRAD_WL_MA
199 REAL,
DIMENSION(:) ,
INTENT(IN) :: PRAD_WL_FL
200 REAL,
DIMENSION(:) ,
INTENT(IN) :: PRAD_WIN_MA
201 REAL,
DIMENSION(:) ,
INTENT(IN) :: PRAD_WIN_FL
202 REAL,
DIMENSION(:) ,
INTENT(IN) :: PCONV_RF_BLD
203 REAL,
DIMENSION(:) ,
INTENT(IN) :: PCONV_WL_BLD
204 REAL,
DIMENSION(:) ,
INTENT(IN) :: PCONV_WIN_BLD
205 REAL,
DIMENSION(:) ,
INTENT(IN) :: PLOAD_IN_FL
206 REAL,
DIMENSION(:) ,
INTENT(IN) :: PLOAD_IN_MA
214 REAL,
DIMENSION(SIZE(B%XTI_BLD)) :: ZFAN_AP
215 REAL,
DIMENSION(SIZE(B%XTI_BLD)) :: ZFAN_EFF
217 LOGICAL,
DIMENSION(SIZE(B%XTI_BLD)):: GSCHED
220 REAL,
DIMENSION(SIZE(B%XTI_BLD)) :: ZF_NIGHT
221 REAL,
DIMENSION(SIZE(B%XTI_BLD)) :: ZF_DAY
223 REAL,
DIMENSION(SIZE(B%XTI_BLD)):: ZAC_IN_MA_COOL, ZAC_IN_FL_COOL, &
224 ZAC_IN_RF_COOL, ZAC_IN_WL_A_COOL, &
225 ZAC_IN_WL_B_COOL, ZAC_IN_WIN_COOL
226 REAL,
DIMENSION(SIZE(B%XTI_BLD)):: ZAC_IN_MA_HEAT, ZAC_IN_FL_HEAT, &
227 ZAC_IN_RF_HEAT, ZAC_IN_WL_A_HEAT, &
228 ZAC_IN_WL_B_HEAT, ZAC_IN_WIN_HEAT
230 REAL,
DIMENSION(SIZE(B%XTI_BLD)):: ZQIN
232 REAL,
DIMENSION(SIZE(B%XTI_BLD)):: ZV_VENT
233 REAL,
DIMENSION(SIZE(B%XTI_BLD)):: ZINF
235 LOGICAL,
DIMENSION(SIZE(B%XTI_BLD)):: GNAT_VENT
236 REAL,
DIMENSION(SIZE(B%XTI_BLD)):: ZNAT_VENT
237 REAL,
DIMENSION(SIZE(B%XTI_BLD)) :: ZTI_BLD
238 REAL,
DIMENSION(SIZE(B%XTI_BLD)) :: ZTI_BLD_OPEN
239 REAL,
DIMENSION(SIZE(B%XTI_BLD)) :: ZTI_BLD_CLOSED
241 REAL,
DIMENSION(SIZE(B%XTI_BLD)):: ZQCOOL_TRGT
242 REAL,
DIMENSION(SIZE(B%XTI_BLD)):: ZQHEAT_TRGT
244 REAL,
DIMENSION(SIZE(B%XTI_BLD)):: ZSHR
245 REAL,
DIMENSION(SIZE(B%XTI_BLD)):: ZM_SYS_RAT
247 REAL,
DIMENSION(SIZE(B%XTI_BLD)):: ZXMIX
248 REAL,
DIMENSION(SIZE(B%XTI_BLD)):: ZT_MIX
249 REAL,
DIMENSION(SIZE(B%XTI_BLD)):: ZQ_MIX
251 REAL,
DIMENSION(SIZE(B%XTI_BLD)) :: ZQI_BLD
252 REAL,
DIMENSION(SIZE(B%XTI_BLD)):: ZWASTE
254 REAL,
DIMENSION(SIZE(B%XTI_BLD)):: ZDQS_FL
255 REAL,
DIMENSION(SIZE(B%XTI_BLD)):: ZIMB_FL
256 REAL,
DIMENSION(SIZE(B%XTI_BLD)):: ZDQS_MA
257 REAL,
DIMENSION(SIZE(B%XTI_BLD)):: ZIMB_MA
258 REAL,
DIMENSION(SIZE(B%XTI_BLD)):: ZLOAD_FL
259 REAL,
DIMENSION(SIZE(B%XTI_BLD)):: ZLOAD_MA
260 REAL,
DIMENSION(SIZE(B%XTI_BLD)):: ZRAD_FL_MA
261 REAL,
DIMENSION(SIZE(B%XTI_BLD)):: ZCONV_FL_BLD
262 REAL,
DIMENSION(SIZE(B%XTI_BLD)):: ZCONV_MA_BLD
263 REAL,
DIMENSION(SIZE(B%XTI_BLD)):: ZRHOI
266 REAL(KIND=JPRB) :: ZHOOK_HANDLE
277 zrhoi(:) = pps(:) / (
xrd * b%XTI_BLD(:) * ( 1.+((
xrv/
xrd)-1.)*b%XQI_BLD(:) ) )
286 irf =
SIZE(t%XT_ROOF,2)
287 iwl =
SIZE(t%XT_WALL_A,2)
291 IF (any(b%XQI_BLD(:) <= 1e-6)) b%XQI_BLD = 0.5 *
qsat(b%XTI_BLD, pps)
305 zqin = dmt%XQIN * b%XN_FLOOR
306 WHERE (psuntime(:) > 0. .AND. psuntime(:) < 25200.)
307 zqin(:) = zqin(:) * zf_night(:)
309 zqin(:) = zqin(:) * zf_day(:)
313 zv_vent(:) = b%XV_VENT(:) * t%XBLD_HEIGHT(:) / 3600.
314 zinf(:) = b%XINF (:) * t%XBLD_HEIGHT(:) / 3600.
320 zload_fl(:) = (zqin(:) * b%XQIN_FRAD(:) * (1.-b%XQIN_FLAT(:)) + dmt%XTR_SW_WIN(:)) / (b%XMASS_O_BLD(:)+1.)
321 WHERE (b%XN_FLOOR(:) > 1.)
322 zload_ma(:) = zload_fl(:)
330 prad_wl_fl, prad_rf_fl, prad_win_fl, pload_in_fl, &
331 zrad_fl_ma, zconv_fl_bld)
336 prad_wl_ma, prad_rf_ma, prad_win_ma, pload_in_ma, &
337 zrad_fl_ma, zconv_ma_bld )
340 zac_in_wl_a_cool =
chtc_vert_doe(t%XT_WALL_A(:,iwl), dmt%XTCOOL_TARGET)
341 zac_in_wl_b_cool =
chtc_vert_doe(t%XT_WALL_B(:,iwl), dmt%XTCOOL_TARGET)
342 zac_in_win_cool =
chtc_vert_doe(b%XT_WIN2 , dmt%XTCOOL_TARGET)
343 zac_in_ma_cool =
chtc_vert_doe(b%XT_MASS(:,1) , dmt%XTCOOL_TARGET)
344 zac_in_rf_cool =
chtc_down_doe(t%XT_ROOF(:,irf) , dmt%XTCOOL_TARGET)
345 zac_in_fl_cool =
chtc_up_doe(b%XT_FLOOR(:,1) , dmt%XTCOOL_TARGET)
347 zac_in_wl_a_heat =
chtc_vert_doe(t%XT_WALL_A(:,iwl), dmt%XTHEAT_TARGET)
348 zac_in_wl_b_heat =
chtc_vert_doe(t%XT_WALL_B(:,iwl), dmt%XTHEAT_TARGET)
349 zac_in_win_heat =
chtc_vert_doe(b%XT_WIN2 , dmt%XTHEAT_TARGET)
350 zac_in_ma_heat =
chtc_vert_doe(b%XT_MASS(:,1) , dmt%XTHEAT_TARGET)
351 zac_in_rf_heat =
chtc_down_doe(t%XT_ROOF(:,irf) , dmt%XTHEAT_TARGET)
352 zac_in_fl_heat =
chtc_up_doe(b%XT_FLOOR(:,1) , dmt%XTHEAT_TARGET)
354 DO jj=1,
SIZE(zac_in_win_cool)
355 zac_in_wl_a_cool(jj) = max(1., zac_in_wl_a_cool(jj))
356 zac_in_wl_b_cool(jj) = max(1., zac_in_wl_b_cool(jj))
357 zac_in_win_cool(jj) = max(1., zac_in_win_cool(jj))
358 zac_in_ma_cool(jj) = max(1., zac_in_ma_cool(jj))
359 zac_in_rf_cool(jj) = max(1., zac_in_rf_cool(jj))
360 zac_in_fl_cool(jj) = max(1., zac_in_fl_cool(jj))
362 zac_in_wl_a_heat(jj) = max(1., zac_in_wl_a_heat(jj))
363 zac_in_wl_b_heat(jj) = max(1., zac_in_wl_b_heat(jj))
364 zac_in_win_heat(jj) = max(1., zac_in_win_heat(jj))
365 zac_in_ma_heat(jj) = max(1., zac_in_ma_heat(jj))
366 zac_in_rf_heat(jj) = max(1., zac_in_rf_heat(jj))
367 zac_in_fl_heat(jj) = max(1., zac_in_fl_heat(jj))
376 zti_bld(jj) = b%XTI_BLD(jj) + ptstep/(zrhoi(jj) *
xcpd * t%XBLD_HEIGHT(jj)) &
377 * ( t%XWALL_O_BLD(jj) * pconv_wl_bld(jj) + b%XGLAZ_O_BLD (jj) * pconv_win_bld(jj) &
378 + b%XMASS_O_BLD(jj) * zconv_ma_bld(jj) + pconv_rf_bld(jj) + zconv_fl_bld(jj) &
379 + zqin(jj) * (1 - b%XQIN_FRAD(jj)) * (1 - b%XQIN_FLAT(jj)) )
387 IF (b%CNATVENT(jj)==
'NONE')
THEN 389 gnat_vent(jj) = .false.
392 ELSEIF (b%CNATVENT(jj)==
'AUTO' .OR. b%CNATVENT(jj)==
'MECH')
THEN 394 IF (mod(psuntime(jj), 3600.) .LT. ptstep)
THEN 396 IF ( b%XTI_BLD(jj).GT. pt_can(jj) + 1 )
THEN 397 IF (b%CNATVENT(jj)==
'AUTO')
THEN 399 CALL get_nat_vent(b%XTI_BLD(jj), pt_can(jj), pu_can(jj), b%XGR(jj), &
400 b%XFLOOR_HW_RATIO(jj), t%XBLD_HEIGHT(jj), znat_vent(jj))
401 ELSE IF (b%CNATVENT(jj)==
'MECH')
THEN 403 znat_vent(jj) = 5.0*t%XBLD_HEIGHT(jj)/3600.
406 zti_bld_open(jj) = zti_bld(jj) &
407 + znat_vent(jj) * ptstep/t%XBLD_HEIGHT(jj) * (pt_can(jj) - b%XTI_BLD(jj))
408 zti_bld_closed(jj) = zti_bld(jj) &
409 + (zinf(jj) + zv_vent(jj)) * ptstep/t%XBLD_HEIGHT(jj) * (pt_can(jj) - b%XTI_BLD(jj))
411 gnat_vent(jj) = (zti_bld_open(jj) <= dmt%XTCOOL_TARGET (jj) .AND. &
412 zti_bld_open(jj) < zti_bld_closed(jj) .AND. &
413 zti_bld_open(jj) > dmt%XTHEAT_TARGET (jj) + 4.)
416 gnat_vent(jj) = .false.
418 b%LNATVENT_NIGHT(jj) = gnat_vent(jj)
420 gnat_vent(jj) = b%LNATVENT_NIGHT(jj)
424 ELSEIF (b%CNATVENT(jj)==
'MANU')
THEN 426 b%LNATVENT_NIGHT(jj) = b%LNATVENT_NIGHT(jj) .AND. &
427 .NOT. ( psuntime(jj) > 5.*3600 .AND. psuntime(jj) < 18.*3600 )
429 gnat_vent(jj) = ( psuntime(jj) > 18.*3600. .AND. psuntime(jj) < 21.*3600. &
430 .AND. pt_can(jj) < b%XTI_BLD(jj)+2. &
431 .AND. pt_can(jj) > dmt%XTHEAT_TARGET(jj) &
432 .AND. ( b%XTI_BLD(jj) > dmt%XTHEAT_TARGET(jj)+5. &
433 .OR. b%XTI_BLD(jj) == dmt%XTCOOL_TARGET(jj) ) )
434 gnat_vent(jj) = gnat_vent(jj) .OR. b%LNATVENT_NIGHT(jj)
447 IF (gnat_vent(jj))
THEN 449 CALL get_nat_vent(b%XTI_BLD(jj), pt_can(jj), pu_can(jj), b%XGR(jj), &
450 b%XFLOOR_HW_RATIO(jj), t%XBLD_HEIGHT(jj), znat_vent(jj) )
455 dmt%XH_BLD_COOL (jj) = 0.0
456 dmt%XH_BLD_HEAT (jj) = 0.0
457 dmt%XLE_BLD_COOL(jj) = 0.0
458 dmt%XLE_BLD_HEAT(jj) = 0.0
460 dmt%XT_BLD_COOL (jj) = 0.0
461 dmt%XHVAC_COOL (jj) = 0.0
462 dmt%XT_SYS (jj) = b%XTI_BLD(jj)
463 dmt%XQ_SYS (jj) = b%XQI_BLD(jj)
464 dmt%XH_WASTE (jj) = 0.0
465 dmt%XLE_WASTE (jj) = 0.0
466 dmt%XFAN_POWER (jj) = 0.0
467 dmt%XHVAC_HEAT (jj) = 0.0
469 dmt%XM_SYS (jj) = 0.0
471 dmt%XCAP_SYS(jj) = 0.0
482 dmt%XH_BLD_COOL(jj) = t%XWALL_O_BLD(jj)/2. * (zac_in_wl_a_cool(jj) * (t%XT_WALL_A(jj,iwl) - dmt%XTCOOL_TARGET(jj)) &
483 + zac_in_wl_b_cool(jj) * (t%XT_WALL_B(jj,iwl) - dmt%XTCOOL_TARGET(jj))) &
484 + b%XGLAZ_O_BLD(jj) * zac_in_win_cool(jj) * (b%XT_WIN2(jj) - dmt%XTCOOL_TARGET(jj)) &
485 + zac_in_ma_cool(jj)* b%XMASS_O_BLD(jj) * (b%XT_MASS(jj,1) - dmt%XTCOOL_TARGET(jj)) &
486 + zac_in_rf_cool(jj) * (t%XT_ROOF(jj,irf) - dmt%XTCOOL_TARGET(jj)) &
487 + zac_in_fl_cool(jj) * (b%XT_FLOOR(jj,1) - dmt%XTCOOL_TARGET(jj)) &
488 + zqin(jj) * (1 - b%XQIN_FRAD(jj)) * (1 - b%XQIN_FLAT(jj)) &
489 + (zinf(jj) + zv_vent(jj)) * zrhoi(jj) *
xcpd * (pt_can(jj) - dmt%XTCOOL_TARGET(jj))
491 dmt%XH_BLD_HEAT(jj) = - ( t%XWALL_O_BLD(jj)/2. * (zac_in_wl_a_heat(jj) * (t%XT_WALL_A(jj,iwl) - dmt%XTHEAT_TARGET(jj)) &
492 + zac_in_wl_b_heat(jj) * (t%XT_WALL_B(jj,iwl) - dmt%XTHEAT_TARGET(jj))) &
493 + b%XGLAZ_O_BLD(jj) * zac_in_win_heat(jj) * (b%XT_WIN2(jj) - dmt%XTHEAT_TARGET(jj)) &
494 + zac_in_ma_heat(jj)* b%XMASS_O_BLD(jj) * (b%XT_MASS(jj,1) - dmt%XTHEAT_TARGET(jj)) &
495 + zac_in_rf_heat(jj) * (t%XT_ROOF(jj,irf) - dmt%XTHEAT_TARGET(jj)) &
496 + zac_in_fl_heat(jj) * (b%XT_FLOOR(jj,1) - dmt%XTHEAT_TARGET(jj)) &
497 + zqin(jj) * (1 - b%XQIN_FRAD(jj))* (1 - b%XQIN_FLAT(jj)) &
498 + (zinf(jj) + zv_vent(jj)) * zrhoi(jj) *
xcpd * (pt_can(jj) - dmt%XTHEAT_TARGET(jj)))
500 zqcool_trgt(jj) = 0.62198 * b%XHR_TARGET(jj) *
psat(dmt%XTCOOL_TARGET(jj)) / &
501 (pps(jj)- b%XHR_TARGET(jj) *
psat(dmt%XTCOOL_TARGET(jj)))
503 dmt%XLE_BLD_COOL(jj) = zqin(jj) * b%XQIN_FLAT(jj) &
504 + (zinf(jj) + zv_vent(jj)) * zrhoi(jj) *
xlvtt * (pq_can(jj) - zqcool_trgt(jj))
506 zqheat_trgt(jj) = 0.62198 * b%XHR_TARGET(jj) *
psat(dmt%XTHEAT_TARGET(jj)) / &
507 (pps(jj)- b%XHR_TARGET(jj) *
psat(dmt%XTHEAT_TARGET(jj)))
509 dmt%XLE_BLD_HEAT(jj) = zqin(jj) * b%XQIN_FLAT(jj) &
510 + (zinf(jj) + zv_vent(jj)) * zrhoi(jj) *
xlvtt * (pq_can(jj) - zqheat_trgt(jj))
514 IF (bop%LAUTOSIZE .AND. kday==15)
THEN 516 IF (dmt%XH_BLD_COOL(jj) > b%XAUX_MAX(jj))
THEN 518 b%XAUX_MAX (jj) = dmt%XH_BLD_COOL(jj)
521 zshr(jj) = min(
xcpd * (dmt%XTCOOL_TARGET(jj) - b%XT_ADP(jj)) / &
522 (
enth_fn_t_q(dmt%XTCOOL_TARGET(jj),zqcool_trgt(jj)) - &
525 b%XCAP_SYS_RAT(jj) = dmt%XH_BLD_COOL(jj) / zshr(jj)
528 zm_sys_rat(jj) = dmt%XH_BLD_COOL(jj) /
xcpd / (dmt%XTCOOL_TARGET(jj)-(14.0+273.16))
529 IF (zm_sys_rat(jj) > b%XM_SYS_RAT(jj)) b%XM_SYS_RAT(jj) = zm_sys_rat(jj)
532 IF (b%XM_SYS_RAT(jj)/zrhoi(jj)/b%XCAP_SYS_RAT(jj) < 0.00004027)
THEN 533 b%XCAP_SYS_RAT(jj) = b%XM_SYS_RAT(jj)/zrhoi(jj)/0.00004027
534 ELSE IF (b%XM_SYS_RAT(jj)/zrhoi(jj)/b%XCAP_SYS_RAT(jj) > 0.00006041)
THEN 535 b%XCAP_SYS_RAT(jj) = b%XM_SYS_RAT(jj)/zrhoi(jj)/0.00006041
547 dmt%XM_SYS (jj) = b%XM_SYS_RAT (jj)
548 dmt%XCOP (jj) = b%XCOP_RAT (jj)
549 dmt%XCAP_SYS(jj) = b%XCAP_SYS_RAT(jj)
554 zxmix(jj) = zv_vent(jj) * zrhoi(jj) / dmt%XM_SYS(jj)
555 zt_mix(jj) = zxmix(jj) * pt_can(jj) + (1.-zxmix(jj)) * b%XTI_BLD(jj)
556 zq_mix(jj) = zxmix(jj) * pq_can(jj) + (1.-zxmix(jj)) * b%XQI_BLD(jj)
562 IF (dmt%XH_BLD_COOL(jj) >= 0.0)
THEN 565 IF (bop%CCOOL_COIL==
'IDEAL')
THEN 567 dmt%XT_BLD_COOL(jj) = dmt%XH_BLD_COOL(jj) + dmt%XLE_BLD_COOL(jj)
572 dmt%XHVAC_COOL (jj) = dmt%XH_BLD_COOL(jj) / b%XCOP_RAT(jj)
573 IF (dmt%XHVAC_COOL(jj) < 0.0) dmt%XHVAC_COOL(jj) = 0.0
575 dmt%XT_SYS(jj) = zt_mix(jj) - dmt%XH_BLD_COOL (jj) /dmt%XM_SYS(jj) /
xcpd 579 dmt%XQ_SYS(jj) = zq_mix(jj)
581 dmt%XH_WASTE(jj) = dmt%XHVAC_COOL(jj) * (1.+b%XCOP_RAT(jj)) * (1. - b%XF_WATER_COND(jj))
582 dmt%XLE_WASTE(jj) = dmt%XHVAC_COOL(jj) * (1.+b%XCOP_RAT(jj)) * b%XF_WATER_COND(jj)
585 ELSEIF (bop%CCOOL_COIL==
'DXCOIL')
THEN 588 zq_mix(jj), b%XCOP_RAT(jj), b%XCAP_SYS_RAT(jj), &
589 b%XT_ADP(jj), b%XF_WATER_COND(jj), dmt%XM_SYS(jj), &
590 dmt%XH_BLD_COOL(jj), dmt%XH_WASTE(jj), dmt%XLE_WASTE(jj), &
591 dmt%XCOP(jj), dmt%XCAP_SYS(jj), dmt%XT_SYS(jj), &
592 dmt%XQ_SYS(jj), dmt%XHVAC_COOL(jj), dmt%XT_BLD_COOL(jj) )
597 IF (b%XF_WATER_COND(jj) < 0)
THEN 598 dmt%XH_WASTE(jj) = 0.
599 dmt%XLE_WASTE(jj) = 0.
604 dmt%XFAN_POWER(jj) = dmt%XM_SYS(jj) * zfan_ap(jj) * zfan_eff(jj) * zrhoi(jj)
606 dmt%XH_BLD_HEAT (jj) = 0.0
607 dmt%XLE_BLD_HEAT(jj) = 0.0
608 dmt%XHVAC_HEAT (jj) = 0.0
614 ELSE IF (dmt%XH_BLD_HEAT(jj) > 0.0)
THEN 617 IF (bop%CHEAT_COIL .EQ.
'FINCAP')
THEN 618 IF (dmt%XH_BLD_HEAT(jj) > b%XCAP_SYS_HEAT(jj)) dmt%XH_BLD_HEAT(jj) = b%XCAP_SYS_HEAT(jj)
621 dmt%XT_SYS(jj) = zt_mix(jj) + dmt%XH_BLD_HEAT(jj) / dmt%XM_SYS(jj) /
xcpd 622 dmt%XQ_SYS(jj) = zq_mix(jj)
624 dmt%XHVAC_HEAT (jj) = dmt%XH_BLD_HEAT(jj) / b%XEFF_HEAT(jj)
625 dmt%XH_WASTE (jj) = dmt%XHVAC_HEAT(jj) - dmt%XH_BLD_HEAT(jj)
626 dmt%XLE_WASTE (jj) = 0.0
627 dmt%XH_BLD_COOL (jj) = 0.0
628 dmt%XLE_BLD_COOL(jj) = 0.0
629 dmt%XT_BLD_COOL (jj) = 0.0
630 dmt%XHVAC_COOL (jj) = 0.0
632 dmt%XFAN_POWER(jj) = dmt%XM_SYS(jj)*zfan_ap(jj)*(zfan_eff(jj)*zrhoi(jj))
640 dmt%XH_BLD_COOL (jj) = 0.0
641 dmt%XH_BLD_HEAT (jj) = 0.0
642 dmt%XLE_BLD_COOL(jj) = 0.0
643 dmt%XLE_BLD_HEAT(jj) = 0.0
645 dmt%XT_BLD_COOL (jj) = 0.0
646 dmt%XHVAC_COOL (jj) = 0.0
647 dmt%XT_SYS (jj) = zt_mix(jj)
648 dmt%XQ_SYS (jj) = zq_mix(jj)
649 dmt%XH_WASTE (jj) = 0.0
650 dmt%XLE_WASTE (jj) = 0.0
651 dmt%XFAN_POWER (jj) = 0.0
652 dmt%XHVAC_HEAT (jj) = 0.0
667 zti_bld(:) = ( zti_bld(:) + ptstep/t%XBLD_HEIGHT(:) * &
668 ((zinf(:) + znat_vent(:)) * pt_can(:) + dmt%XM_SYS(:) / zrhoi(:) * (dmt%XT_SYS(:) ) )) &
669 / (1. + ptstep/t%XBLD_HEIGHT(:)*(zinf(:) + znat_vent(:) + dmt%XM_SYS(:) / zrhoi(:)) )
670 zqi_bld(:) = ( b%XQI_BLD(:) + ptstep/t%XBLD_HEIGHT(:) * &
671 (zqin(:) * b%XQIN_FLAT(:) / (zrhoi(:) *
xlvtt) + (zinf(:) + znat_vent(:)) * (pq_can(:)) &
672 + dmt%XM_SYS(:) / zrhoi(:) * (dmt%XQ_SYS(:) ) ))&
673 / (1. + ptstep/t%XBLD_HEIGHT(:)* (zinf(:) + znat_vent(:) + dmt%XM_SYS(:) / zrhoi(:)) )
676 b%XTI_BLD(:) = zti_bld(:)
677 b%XQI_BLD(:) = zqi_bld(:)
680 zwaste(:) = (zinf(:)+zv_vent(:)+znat_vent(:)) * zrhoi(:)
681 dmt%XH_WASTE (:) = dmt%XH_WASTE (:) + zwaste(:) *
xcpd * (b%XTI_BLD(:) - pt_can(:))
682 dmt%XLE_WASTE(:) = dmt%XLE_WASTE(:) + zwaste(:) *
xlvtt * (b%XQI_BLD(:) - pq_can(:))
689 SUBROUTINE get_nat_vent(PTI_BLD, PPT_CAN, PPU_CAN, PGR, PF_AUX, PPBLD_HEIGHT, PNAT_VENT)
693 REAL,
INTENT(IN) :: PTI_BLD
694 REAL,
INTENT(IN) :: PPT_CAN
695 REAL,
INTENT(IN) :: PPU_CAN
696 REAL,
INTENT(IN) :: PGR
697 REAL,
INTENT(IN) :: PF_AUX
698 REAL,
INTENT(IN) :: PPBLD_HEIGHT
699 REAL,
INTENT(OUT) :: PNAT_VENT
700 REAL(KIND=JPRB) :: ZHOOK_HANDLE
702 IF (
lhook)
CALL dr_hook(
'BEM:GET_NAT_VENT',0,zhook_handle)
704 pnat_vent =
xg * (pti_bld - ppt_can)
705 IF (pnat_vent .LT. 0.)
THEN 706 pnat_vent= ppbld_height/3600.
708 pnat_vent = 1./3. * (pnat_vent/ppt_can)**(1./2.) &
709 * (1.5 + pti_bld/pnat_vent * 1./2. * ppu_can**2*0.1)**(3./2.) &
710 * pgr * pf_aux / 1.5 / 2.
711 pnat_vent = min(pnat_vent, 5.0*ppbld_height/3600.)
714 IF (
lhook)
CALL dr_hook(
'BEM:GET_NAT_VENT',1,zhook_handle)
subroutine mass_layer_e_budget(B, PTSTEP, PFLX_BLD_MA, PDQS_MA, PIMB_MA, PRADHT_IN, PRAD_WL_MA, PRAD_RF_MA, PRAD_WIN_MA, PLOAD_MA, PRAD_FL_MA, PCONV_MA_BLD)
real function, dimension(size(pts)) chtc_down_doe(PTS, PTA)
subroutine bem(BOP, T, B, DMT, PTSTEP, PSUNTIME, KDAY, PPS, PRHOA, PT_CAN, PQ_CAN, PU_CAN, PHU_BLD, PT_RAD_IND, PFLX_BLD_FL, PFLX_BLD_MA, PRADHT_IN, PRAD_RF_MA, PRAD_RF_FL, PRAD_WL_MA, PRAD_WL_FL, PRAD_WIN_MA, PRAD_WIN_FL, PCONV_RF_BLD, PCONV_WL_BLD, PCONV_WIN_BLD, PLOAD_IN_FL, PLOAD_IN_MA)
subroutine get_nat_vent(PTI_BLD, PPT_CAN, PPU_CAN, PGR, PF_AUX, PPBLD_HEIGHT, PNAT_VENT)
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(B, PTSTEP, PFLX_BLD_FL, PDQS_FL, PIMB_FL, PRADHT_IN, PRAD_WL_FL, PRAD_RF_FL, PRAD_WIN_FL, PLOAD_FL, PRAD_FL_MA, PCONV_FL_BLD)