@@ -198,9 +198,10 @@ namespace CoolTower {
198
198
}
199
199
}
200
200
201
- state.dataCoolTower ->CoolTowerSys (CoolTowerNum).ZoneName = state.dataIPShortCut ->cAlphaArgs (3 ); // Name of zone where cooltower is serving
202
201
state.dataCoolTower ->CoolTowerSys (CoolTowerNum).ZonePtr = Util::FindItemInList (state.dataIPShortCut ->cAlphaArgs (3 ), Zone);
203
- if (state.dataCoolTower ->CoolTowerSys (CoolTowerNum).ZonePtr == 0 ) {
202
+ state.dataCoolTower ->CoolTowerSys (CoolTowerNum).spacePtr =
203
+ Util::FindItemInList (state.dataIPShortCut ->cAlphaArgs (3 ), state.dataHeatBal ->space );
204
+ if ((state.dataCoolTower ->CoolTowerSys (CoolTowerNum).ZonePtr == 0 ) && (state.dataCoolTower ->CoolTowerSys (CoolTowerNum).spacePtr == 0 )) {
204
205
if (lAlphaBlanks (3 )) {
205
206
ShowSevereError (state,
206
207
format (" {}=\" {}\" invalid {} is required but input is blank." ,
@@ -216,6 +217,9 @@ namespace CoolTower {
216
217
state.dataIPShortCut ->cAlphaArgs (3 )));
217
218
}
218
219
ErrorsFound = true ;
220
+ } else if (state.dataCoolTower ->CoolTowerSys (CoolTowerNum).ZonePtr == 0 ) {
221
+ state.dataCoolTower ->CoolTowerSys (CoolTowerNum).ZonePtr =
222
+ state.dataHeatBal ->space (state.dataCoolTower ->CoolTowerSys (CoolTowerNum).spacePtr ).zoneNum ;
219
223
}
220
224
221
225
state.dataCoolTower ->CoolTowerSys (CoolTowerNum).CoolTWaterSupplyName = state.dataIPShortCut ->cAlphaArgs (4 ); // Name of water storage tank
@@ -627,7 +631,12 @@ namespace CoolTower {
627
631
thisZoneHB.MCPTC = 0.0 ;
628
632
thisZoneHB.MCPC = 0.0 ;
629
633
thisZoneHB.CTMFL = 0.0 ;
630
-
634
+ if ((state.dataHeatBal ->doSpaceHeatBalance ) && (state.dataCoolTower ->CoolTowerSys (CoolTowerNum).spacePtr > 0 )) {
635
+ auto &thisSpaceHB = state.dataZoneTempPredictorCorrector ->zoneHeatBalance (state.dataCoolTower ->CoolTowerSys (CoolTowerNum).spacePtr );
636
+ thisSpaceHB.MCPTC = 0.0 ;
637
+ thisSpaceHB.MCPC = 0.0 ;
638
+ thisSpaceHB.CTMFL = 0.0 ;
639
+ }
631
640
if (ScheduleManager::GetCurrentScheduleValue (state, state.dataCoolTower ->CoolTowerSys (CoolTowerNum).SchedPtr ) > 0.0 ) {
632
641
// check component operation
633
642
if (state.dataEnvrn ->WindSpeed < MinWindSpeed || state.dataEnvrn ->WindSpeed > MaxWindSpeed) continue ;
@@ -707,22 +716,35 @@ namespace CoolTower {
707
716
AirDensity = Psychrometrics::PsyRhoAirFnPbTdbW (state, state.dataEnvrn ->OutBaroPress , OutletTemp, OutletHumRat); // Outlet air density
708
717
CVF_ZoneNum = state.dataCoolTower ->CoolTowerSys (CoolTowerNum).ActualAirVolFlowRate *
709
718
ScheduleManager::GetCurrentScheduleValue (state, state.dataCoolTower ->CoolTowerSys (CoolTowerNum).SchedPtr );
710
- thisZoneHB.MCPC = CVF_ZoneNum * AirDensity * AirSpecHeat;
711
- thisZoneHB.MCPTC = thisZoneHB.MCPC * OutletTemp;
712
- thisZoneHB.CTMFL = thisZoneHB.MCPC / AirSpecHeat;
719
+ Real64 thisMCPC = CVF_ZoneNum * AirDensity * AirSpecHeat;
720
+ Real64 thisMCPTC = thisMCPC * OutletTemp;
721
+ Real64 thisCTMFL = thisMCPC / AirSpecHeat;
722
+ Real64 thisZT = thisZoneHB.ZT ;
723
+ Real64 thisAirHumRat = thisZoneHB.airHumRat ;
724
+ thisZoneHB.MCPC = thisMCPC;
725
+ thisZoneHB.MCPTC = thisMCPTC;
726
+ thisZoneHB.CTMFL = thisCTMFL;
727
+ if ((state.dataHeatBal ->doSpaceHeatBalance ) && (state.dataCoolTower ->CoolTowerSys (CoolTowerNum).spacePtr > 0 )) {
728
+ auto &thisSpaceHB =
729
+ state.dataZoneTempPredictorCorrector ->zoneHeatBalance (state.dataCoolTower ->CoolTowerSys (CoolTowerNum).spacePtr );
730
+ thisSpaceHB.MCPC = thisMCPC;
731
+ thisSpaceHB.MCPTC = thisMCPTC;
732
+ thisSpaceHB.CTMFL = thisCTMFL;
733
+ thisZT = thisSpaceHB.ZT ;
734
+ thisAirHumRat = thisSpaceHB.airHumRat ;
735
+ }
713
736
714
- state.dataCoolTower ->CoolTowerSys (CoolTowerNum).SenHeatPower = thisZoneHB. MCPC * std::abs (thisZoneHB. ZT - OutletTemp);
715
- state.dataCoolTower ->CoolTowerSys (CoolTowerNum).LatHeatPower = CVF_ZoneNum * std::abs (thisZoneHB. airHumRat - OutletHumRat);
737
+ state.dataCoolTower ->CoolTowerSys (CoolTowerNum).SenHeatPower = thisMCPC * std::abs (thisZT - OutletTemp);
738
+ state.dataCoolTower ->CoolTowerSys (CoolTowerNum).LatHeatPower = CVF_ZoneNum * std::abs (thisAirHumRat - OutletHumRat);
716
739
state.dataCoolTower ->CoolTowerSys (CoolTowerNum).OutletTemp = OutletTemp;
717
740
state.dataCoolTower ->CoolTowerSys (CoolTowerNum).OutletHumRat = OutletHumRat;
718
741
state.dataCoolTower ->CoolTowerSys (CoolTowerNum).AirVolFlowRate = CVF_ZoneNum;
719
- state.dataCoolTower ->CoolTowerSys (CoolTowerNum).AirMassFlowRate = thisZoneHB. CTMFL ;
720
- state.dataCoolTower ->CoolTowerSys (CoolTowerNum).AirVolFlowRateStd = thisZoneHB. CTMFL / state.dataEnvrn ->StdRhoAir ;
742
+ state.dataCoolTower ->CoolTowerSys (CoolTowerNum).AirMassFlowRate = thisCTMFL ;
743
+ state.dataCoolTower ->CoolTowerSys (CoolTowerNum).AirVolFlowRateStd = thisCTMFL / state.dataEnvrn ->StdRhoAir ;
721
744
state.dataCoolTower ->CoolTowerSys (CoolTowerNum).InletDBTemp = Zone (ZoneNum).OutDryBulbTemp ;
722
745
state.dataCoolTower ->CoolTowerSys (CoolTowerNum).InletWBTemp = Zone (ZoneNum).OutWetBulbTemp ;
723
746
state.dataCoolTower ->CoolTowerSys (CoolTowerNum).InletHumRat = state.dataEnvrn ->OutHumRat ;
724
- state.dataCoolTower ->CoolTowerSys (CoolTowerNum).CoolTWaterConsumpRate =
725
- (std::abs (InletHumRat - OutletHumRat) * thisZoneHB.CTMFL ) / RhoWater;
747
+ state.dataCoolTower ->CoolTowerSys (CoolTowerNum).CoolTWaterConsumpRate = (std::abs (InletHumRat - OutletHumRat) * thisCTMFL) / RhoWater;
726
748
state.dataCoolTower ->CoolTowerSys (CoolTowerNum).CoolTWaterStarvMakeupRate = 0.0 ; // initialize -- calc in update
727
749
state.dataCoolTower ->CoolTowerSys (CoolTowerNum).PumpElecPower =
728
750
state.dataCoolTower ->CoolTowerSys (CoolTowerNum).RatedPumpPower * PumpPartLoadRat;
0 commit comments