diff --git a/src/EnergyPlus/Furnaces.cc b/src/EnergyPlus/Furnaces.cc index 486318ce585..f4fa92c9150 100644 --- a/src/EnergyPlus/Furnaces.cc +++ b/src/EnergyPlus/Furnaces.cc @@ -10951,8 +10951,9 @@ namespace Furnaces { if (thisFurnace.NumOfSpeedCooling > 0) { state.dataFurnaces->CompOnMassFlow = thisFurnace.CoolMassFlowRate(thisFurnace.NumOfSpeedCooling); state.dataFurnaces->CompOnFlowRatio = thisFurnace.MSCoolingSpeedRatio(thisFurnace.NumOfSpeedCooling); - state.dataHVACGlobal->MSHPMassFlowRateLow = thisFurnace.CoolMassFlowRate(thisFurnace.NumOfSpeedCooling); - state.dataHVACGlobal->MSHPMassFlowRateHigh = thisFurnace.CoolMassFlowRate(thisFurnace.NumOfSpeedCooling); + state.dataFurnaces->CompOnMassFlow = min(state.dataFurnaces->CompOnMassFlow, thisFurnace.MaxCoolAirMassFlow); + state.dataHVACGlobal->MSHPMassFlowRateLow = state.dataFurnaces->CompOnMassFlow; + state.dataHVACGlobal->MSHPMassFlowRateHigh = state.dataFurnaces->CompOnMassFlow; } else { state.dataFurnaces->CompOnMassFlow = thisFurnace.MaxCoolAirMassFlow; state.dataFurnaces->CompOnFlowRatio = thisFurnace.CoolingSpeedRatio; @@ -10968,8 +10969,9 @@ namespace Furnaces { if (thisFurnace.NumOfSpeedHeating > 0) { state.dataFurnaces->CompOnMassFlow = thisFurnace.HeatMassFlowRate(thisFurnace.NumOfSpeedHeating); state.dataFurnaces->CompOnFlowRatio = thisFurnace.MSHeatingSpeedRatio(thisFurnace.NumOfSpeedHeating); - state.dataHVACGlobal->MSHPMassFlowRateLow = thisFurnace.HeatMassFlowRate(thisFurnace.NumOfSpeedHeating); - state.dataHVACGlobal->MSHPMassFlowRateHigh = thisFurnace.HeatMassFlowRate(thisFurnace.NumOfSpeedHeating); + state.dataFurnaces->CompOnMassFlow = min(state.dataFurnaces->CompOnMassFlow, thisFurnace.MaxHeatAirMassFlow); + state.dataHVACGlobal->MSHPMassFlowRateLow = state.dataFurnaces->CompOnMassFlow; + state.dataHVACGlobal->MSHPMassFlowRateHigh = state.dataFurnaces->CompOnMassFlow; } else { state.dataFurnaces->CompOnMassFlow = thisFurnace.MaxHeatAirMassFlow; state.dataFurnaces->CompOnFlowRatio = thisFurnace.HeatingSpeedRatio; diff --git a/tst/EnergyPlus/unit/Furnaces.unit.cc b/tst/EnergyPlus/unit/Furnaces.unit.cc index 299650825bf..076cc6c8b2a 100644 --- a/tst/EnergyPlus/unit/Furnaces.unit.cc +++ b/tst/EnergyPlus/unit/Furnaces.unit.cc @@ -182,21 +182,21 @@ TEST_F(EnergyPlusFixture, SetVSHPAirFlowTest_VSFurnaceFlowTest) state->dataFurnaces->HeatingLoad = true; state->dataFurnaces->CoolingLoad = false; SetVSHPAirFlow(*state, FurnaceNum, PartLoadRatio, OnOffAirFlowRatio); - EXPECT_DOUBLE_EQ(1.0, state->dataHVACGlobal->MSHPMassFlowRateLow); - EXPECT_DOUBLE_EQ(1.0, state->dataHVACGlobal->MSHPMassFlowRateHigh); + EXPECT_DOUBLE_EQ(0.5, state->dataHVACGlobal->MSHPMassFlowRateLow); + EXPECT_DOUBLE_EQ(0.5, state->dataHVACGlobal->MSHPMassFlowRateHigh); EXPECT_DOUBLE_EQ(0.0, state->dataFurnaces->CompOffMassFlow); - EXPECT_DOUBLE_EQ(1.0, state->dataFurnaces->CompOnMassFlow); + EXPECT_DOUBLE_EQ(0.5, state->dataFurnaces->CompOnMassFlow); EXPECT_DOUBLE_EQ(1.0, OnOffAirFlowRatio); - EXPECT_DOUBLE_EQ(1.0, state->dataLoopNodes->Node(state->dataFurnaces->Furnace(FurnaceNum).FurnaceInletNodeNum).MassFlowRate); + EXPECT_DOUBLE_EQ(0.5, state->dataLoopNodes->Node(state->dataFurnaces->Furnace(FurnaceNum).FurnaceInletNodeNum).MassFlowRate); // Test availability manager signal state->dataHVACGlobal->TurnFansOff = true; state->dataHVACGlobal->TurnFansOn = false; SetVSHPAirFlow(*state, FurnaceNum, PartLoadRatio, OnOffAirFlowRatio); - EXPECT_DOUBLE_EQ(1.0, state->dataHVACGlobal->MSHPMassFlowRateLow); - EXPECT_DOUBLE_EQ(1.0, state->dataHVACGlobal->MSHPMassFlowRateHigh); + EXPECT_DOUBLE_EQ(0.5, state->dataHVACGlobal->MSHPMassFlowRateLow); + EXPECT_DOUBLE_EQ(0.5, state->dataHVACGlobal->MSHPMassFlowRateHigh); EXPECT_DOUBLE_EQ(0.0, state->dataFurnaces->CompOffMassFlow); - EXPECT_DOUBLE_EQ(1.0, state->dataFurnaces->CompOnMassFlow); + EXPECT_DOUBLE_EQ(0.5, state->dataFurnaces->CompOnMassFlow); EXPECT_DOUBLE_EQ(0.0, OnOffAirFlowRatio); EXPECT_DOUBLE_EQ(0.0, state->dataLoopNodes->Node(state->dataFurnaces->Furnace(FurnaceNum).FurnaceInletNodeNum).MassFlowRate); state->dataHVACGlobal->TurnFansOff = false; @@ -230,12 +230,12 @@ TEST_F(EnergyPlusFixture, SetVSHPAirFlowTest_VSFurnaceFlowTest) state->dataFurnaces->HeatingLoad = false; state->dataFurnaces->CoolingLoad = true; SetVSHPAirFlow(*state, FurnaceNum, PartLoadRatio, OnOffAirFlowRatio); - EXPECT_DOUBLE_EQ(1.2, state->dataHVACGlobal->MSHPMassFlowRateLow); - EXPECT_DOUBLE_EQ(1.2, state->dataHVACGlobal->MSHPMassFlowRateHigh); + EXPECT_DOUBLE_EQ(0.75, state->dataHVACGlobal->MSHPMassFlowRateLow); + EXPECT_DOUBLE_EQ(0.75, state->dataHVACGlobal->MSHPMassFlowRateHigh); EXPECT_DOUBLE_EQ(0.0, state->dataFurnaces->CompOffMassFlow); - EXPECT_DOUBLE_EQ(1.2, state->dataFurnaces->CompOnMassFlow); + EXPECT_DOUBLE_EQ(0.75, state->dataFurnaces->CompOnMassFlow); EXPECT_DOUBLE_EQ(1.0, OnOffAirFlowRatio); - EXPECT_DOUBLE_EQ(1.2, state->dataLoopNodes->Node(state->dataFurnaces->Furnace(FurnaceNum).FurnaceInletNodeNum).MassFlowRate); + EXPECT_DOUBLE_EQ(0.75, state->dataLoopNodes->Node(state->dataFurnaces->Furnace(FurnaceNum).FurnaceInletNodeNum).MassFlowRate); // constant fan mode should drop to idle flow rate state->dataFurnaces->Furnace(FurnaceNum).fanOp = HVAC::FanOp::Continuous;