Skip to content

Commit 87b71ca

Browse files
authored
Merge 4fb0cf9 into d1725fe
2 parents d1725fe + 4fb0cf9 commit 87b71ca

File tree

4 files changed

+33
-3
lines changed

4 files changed

+33
-3
lines changed

src/EnergyPlus/UnitarySystem.cc

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1569,6 +1569,13 @@ namespace UnitarySystems {
15691569
std::string CompType = this->UnitType;
15701570
int CoolingSAFlowMethod = this->m_CoolingSAFMethod;
15711571
int HeatingSAFlowMethod = this->m_HeatingSAFMethod;
1572+
if (state.dataSize->CurZoneEqNum > 0) {
1573+
EqSizing.SizingMethod = 0;
1574+
EqSizing.SizingMethod(HVAC::CoolingAirflowSizing) = CoolingSAFlowMethod;
1575+
if (this->m_HeatPump) {
1576+
EqSizing.SizingMethod(HVAC::HeatingAirflowSizing) = HeatingSAFlowMethod;
1577+
}
1578+
}
15721579
// can't reset this to 0 for systems where DX heating coil is in downstream unit and DX cooling coil is in upstream unit
15731580
// DXCoolCap = 0.0;
15741581
state.dataSize->UnitaryHeatCap = 0.0;
@@ -1683,6 +1690,8 @@ namespace UnitarySystems {
16831690
this->m_MaxCoolAirVolFlow = DataSizing::AutoSize;
16841691
} else if (CoolingSAFlowMethod == DataSizing::FlowPerCoolingCapacity) {
16851692
if (this->m_DesignCoolingCapacity == DataSizing::AutoSize) {
1693+
// switch to normal airflow sizing to get capacity
1694+
EqSizing.SizingMethod(HVAC::CoolingAirflowSizing) = DataSizing::SupplyAirFlowRate;
16861695
TempSize = DataSizing::AutoSize;
16871696
CoolingAirFlowSizer sizingCoolingAirFlow;
16881697
sizingCoolingAirFlow.initializeWithinEP(state, CompType, CompName, PrintFlag, RoutineName);
@@ -1705,6 +1714,10 @@ namespace UnitarySystems {
17051714
CoolCapAtPeak = sizerCoolingCapacity.size(state, TempSize, errorsFound);
17061715
SysCoolingFlow = CoolCapAtPeak * this->m_MaxCoolAirVolFlow;
17071716
state.dataSize->DataTotCapCurveIndex = 0;
1717+
state.dataSize->DataFlowPerCoolingCapacity = this->m_MaxCoolAirVolFlow;
1718+
state.dataSize->DataAutosizedCoolingCapacity = CoolCapAtPeak;
1719+
// now switch back to original user input
1720+
EqSizing.SizingMethod(HVAC::CoolingAirflowSizing) = DataSizing::FlowPerCoolingCapacity;
17081721
EqSizing.CoolingCapacity = true;
17091722
EqSizing.DesCoolingLoad = CoolCapAtPeak;
17101723
} else {
@@ -1851,6 +1864,8 @@ namespace UnitarySystems {
18511864
SysHeatingFlow *= this->m_MaxHeatAirVolFlow;
18521865
this->m_MaxHeatAirVolFlow = DataSizing::AutoSize;
18531866
} else if (HeatingSAFlowMethod == DataSizing::FlowPerHeatingCapacity) {
1867+
// switch to normal airflow sizing to get capacity
1868+
EqSizing.SizingMethod(HVAC::HeatingAirflowSizing) = DataSizing::SupplyAirFlowRate;
18541869
TempSize = DataSizing::AutoSize;
18551870
bool errorsFound = false;
18561871
HeatingAirFlowSizer sizingHeatingAirFlow;
@@ -1876,6 +1891,10 @@ namespace UnitarySystems {
18761891
state.dataAirLoop->AirLoopControlInfo(AirLoopNum).UnitarySysSimulating = true;
18771892
}
18781893
SysHeatingFlow = HeatCapAtPeak * this->m_MaxHeatAirVolFlow;
1894+
state.dataSize->DataFlowPerHeatingCapacity = this->m_MaxHeatAirVolFlow;
1895+
state.dataSize->DataAutosizedHeatingCapacity = HeatCapAtPeak;
1896+
// now switch back to original user input
1897+
EqSizing.SizingMethod(HVAC::HeatingAirflowSizing) = DataSizing::FlowPerHeatingCapacity;
18791898
this->m_MaxHeatAirVolFlow = DataSizing::AutoSize;
18801899
EqSizing.HeatingCapacity = true;
18811900
EqSizing.DesHeatingLoad = HeatCapAtPeak;

tst/EnergyPlus/unit/HVACHXAssistedCoolingCoil.unit.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -442,6 +442,7 @@ TEST_F(EnergyPlusFixture, HXAssistCCUnitarySystem_VStest1)
442442
DataZoneEquipment::GetZoneEquipmentData(*state); // read zone equipment configuration and list objects
443443

444444
state->dataSize->ZoneEqSizing.allocate(1);
445+
state->dataSize->ZoneEqSizing(1).SizingMethod.allocate(25);
445446
state->dataZoneEquip->ZoneEquipList(1).EquipIndex.allocate(1);
446447
state->dataZoneEquip->ZoneEquipList(1).EquipIndex(1) = 1; // initialize equipment index for ZoneHVAC
447448

tst/EnergyPlus/unit/PackagedTerminalHeatPump.unit.cc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1274,6 +1274,7 @@ TEST_F(EnergyPlusFixture, SimPTAC_SZVAVTest)
12741274
// simulate PTAC zoneHVAC equipment
12751275
state->dataSize->CurZoneEqNum = 1;
12761276
state->dataSize->ZoneEqSizing.allocate(1);
1277+
state->dataSize->ZoneEqSizing(1).SizingMethod.allocate(25);
12771278
bool HeatActive = false;
12781279
bool CoolActive = false;
12791280
Real64 latOut = 0.0;
@@ -4971,6 +4972,7 @@ TEST_F(EnergyPlusFixture, PTAC_AvailabilityManagerTest)
49714972
state->dataZoneEnergyDemand->ZoneSysMoistureDemand(1).SequencedOutputRequiredToHumidSP.allocate(1);
49724973
state->dataZoneEnergyDemand->ZoneSysMoistureDemand(1).SequencedOutputRequiredToDehumidSP.allocate(1);
49734974
state->dataSize->ZoneEqSizing.allocate(1);
4975+
state->dataSize->ZoneEqSizing(1).SizingMethod.allocate(25);
49744976
state->dataHeatBal->MassConservation.allocate(state->dataGlobal->NumOfZones);
49754977
state->dataHeatBalFanSys->ZoneMassBalanceFlag.allocate(state->dataGlobal->NumOfZones);
49764978
state->dataHeatBal->spaceIntGainDevices.allocate(1);

tst/EnergyPlus/unit/UnitarySystem.unit.cc

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1692,6 +1692,10 @@ TEST_F(ZoneUnitarySysTest, UnitarySystemModel_MultiSpeedDXCoolCoil_Only_NoFan)
16921692

16931693
// Test System behavior with no supply fan
16941694
EXPECT_FALSE(thisSys->m_FanExists);
1695+
EXPECT_NEAR(1.8, thisSys->m_MaxCoolAirVolFlow, 0.001);
1696+
EXPECT_NEAR(1.8, thisSys->m_MaxHeatAirVolFlow, 0.001);
1697+
EXPECT_NEAR(37248.572, thisSys->m_DesignCoolingCapacity, 0.001);
1698+
EXPECT_NEAR(0.0, thisSys->m_DesignHeatingCapacity, 0.001);
16951699

16961700
// set up node conditions to test UnitarySystem set point based control
16971701
// Unitary system air inlet node = 1
@@ -1730,7 +1734,7 @@ TEST_F(ZoneUnitarySysTest, UnitarySystemModel_MultiSpeedDXCoolCoil_Only_NoFan)
17301734
EXPECT_NEAR(state->dataLoopNodes->Node(thisSys->AirOutNode).Temp, state->dataLoopNodes->Node(thisSys->AirOutNode).TempSetPoint, 0.1);
17311735
// cooling coil air inlet node temp is greater than cooling coil air outlet node temp
17321736
EXPECT_GT(state->dataLoopNodes->Node(thisSys->AirInNode).Temp, state->dataLoopNodes->Node(thisSys->AirOutNode).Temp);
1733-
EXPECT_NEAR(thisSys->m_CoolingCycRatio, 0.36056, 0.001);
1737+
EXPECT_NEAR(thisSys->m_CoolingCycRatio, 0.37971, 0.001);
17341738
EXPECT_EQ(thisSys->m_CoolingSpeedRatio, 0);
17351739
EXPECT_EQ(thisSys->m_CoolingSpeedNum, 1);
17361740
EXPECT_EQ(state->dataLoopNodes->Node(thisSys->AirInNode).MassFlowRate, 1.2);
@@ -9823,6 +9827,7 @@ Curve:Biquadratic,
98239827
DataZoneEquipment::GetZoneEquipmentData(*state); // read zone equipment configuration and list objects
98249828

98259829
state->dataSize->ZoneEqSizing.allocate(1);
9830+
state->dataSize->ZoneEqSizing(1).SizingMethod.allocate(25);
98269831
state->dataZoneEquip->ZoneEquipList(1).EquipIndex.allocate(1);
98279832
state->dataZoneEquip->ZoneEquipList(1).EquipIndex(1) = 1; // initialize equipment index for ZoneHVAC
98289833

@@ -10322,6 +10327,7 @@ Curve:Biquadratic,
1032210327
DataZoneEquipment::GetZoneEquipmentData(*state); // read zone equipment configuration and list objects
1032310328

1032410329
state->dataSize->ZoneEqSizing.allocate(1);
10330+
state->dataSize->ZoneEqSizing(1).SizingMethod.allocate(25);
1032510331
state->dataZoneEquip->ZoneEquipList(1).EquipIndex.allocate(1);
1032610332
state->dataZoneEquip->ZoneEquipList(1).EquipIndex(1) = 1; // initialize equipment index for ZoneHVAC
1032710333

@@ -12517,6 +12523,7 @@ Curve:QuadLinear,
1251712523
DataZoneEquipment::GetZoneEquipmentData(*state); // read zone equipment configuration and list objects
1251812524

1251912525
state->dataSize->ZoneEqSizing.allocate(1);
12526+
state->dataSize->ZoneEqSizing(1).SizingMethod.allocate(25);
1252012527
state->dataZoneEquip->ZoneEquipList(1).EquipIndex.allocate(1);
1252112528
state->dataZoneEquip->ZoneEquipList(1).EquipIndex(1) = 1; // initialize equipment index for ZoneHVAC
1252212529

@@ -12858,6 +12865,7 @@ Schedule:Compact,
1285812865

1285912866
state->dataSize->CurZoneEqNum = 1;
1286012867
state->dataSize->ZoneEqSizing.allocate(1);
12868+
state->dataSize->ZoneEqSizing(1).SizingMethod.allocate(25);
1286112869
state->dataZoneEquip->ZoneEquipList(1).EquipIndex.allocate(1);
1286212870
state->dataZoneEquip->ZoneEquipList(1).EquipIndex(1) = 1; // initialize equipment index for ZoneHVAC
1286312871

@@ -26739,7 +26747,7 @@ TEST_F(EnergyPlusFixture, UnitarySystemModel_MultiSpeedFanWSHP_Test)
2673926747
latOut);
2674026748
// First speed heating
2674126749
EXPECT_NEAR(thisSys1.m_SpeedRatio, 0.0, 0.0001);
26742-
EXPECT_NEAR(thisSys1.m_CycRatio, 0.244995, 0.0001);
26750+
EXPECT_NEAR(thisSys1.m_CycRatio, 0.242557, 0.0001);
2674326751
EXPECT_EQ(thisSys1.m_SpeedNum, 1);
2674426752
EXPECT_NEAR(sensOut, 100.0, 2);
2674526753
state->dataZoneEnergyDemand->ZoneSysEnergyDemand[1].RemainingOutputRequired = 500.0;
@@ -26758,7 +26766,7 @@ TEST_F(EnergyPlusFixture, UnitarySystemModel_MultiSpeedFanWSHP_Test)
2675826766
sensOut,
2675926767
latOut);
2676026768
// Second speed heating
26761-
EXPECT_NEAR(thisSys1.m_SpeedRatio, 0.933306, 0.0001);
26769+
EXPECT_NEAR(thisSys1.m_SpeedRatio, 0.8921246, 0.0001);
2676226770
EXPECT_NEAR(thisSys1.m_CycRatio, 1.0, 0.0001);
2676326771
EXPECT_EQ(thisSys1.m_SpeedNum, 2);
2676426772
EXPECT_NEAR(sensOut, 500.0, 2);

0 commit comments

Comments
 (0)