Skip to content

Commit 73fcfff

Browse files
committed
Revised based on using DesHeatVolFlowMax as limit
1 parent 90f2846 commit 73fcfff

File tree

2 files changed

+35
-5
lines changed

2 files changed

+35
-5
lines changed

src/EnergyPlus/SingleDuct.cc

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2877,9 +2877,14 @@ void SingleDuctAirTerminal::SizeSys(EnergyPlusData &state)
28772877

28782878
CheckZoneSizing(state, this->sysType, this->SysName);
28792879

2880-
Real64 heatingMaxFlow = (this->DamperHeatingAction == Action::ReverseWithLimits)
2881-
? state.dataSize->TermUnitFinalZoneSizing(state.dataSize->CurTermUnitSizingNum).DesHeatVolFlowMax
2882-
: state.dataSize->TermUnitFinalZoneSizing(state.dataSize->CurTermUnitSizingNum).DesHeatVolFlow;
2880+
Real64 heatingMaxFlow;
2881+
if (this->DamperHeatingAction == Action::ReverseWithLimits &&
2882+
state.dataSize->TermUnitFinalZoneSizing(state.dataSize->CurTermUnitSizingNum).DesHeatVolFlow >
2883+
state.dataSize->TermUnitFinalZoneSizing(state.dataSize->CurTermUnitSizingNum).DesHeatVolFlowMax) {
2884+
heatingMaxFlow = state.dataSize->TermUnitFinalZoneSizing(state.dataSize->CurTermUnitSizingNum).DesHeatVolFlowMax;
2885+
} else {
2886+
heatingMaxFlow = state.dataSize->TermUnitFinalZoneSizing(state.dataSize->CurTermUnitSizingNum).DesHeatVolFlow;
2887+
}
28832888
MaxAirVolFlowRateDes = max(state.dataSize->TermUnitFinalZoneSizing(state.dataSize->CurTermUnitSizingNum).DesCoolVolFlow, heatingMaxFlow);
28842889

28852890
if (MaxAirVolFlowRateDes < SmallAirVolFlow) {
@@ -2929,7 +2934,9 @@ void SingleDuctAirTerminal::SizeSys(EnergyPlusData &state)
29292934
}
29302935
} else {
29312936
CheckZoneSizing(state, this->sysType, this->SysName);
2932-
if (this->DamperHeatingAction == Action::ReverseWithLimits) {
2937+
if (this->DamperHeatingAction == Action::ReverseWithLimits &&
2938+
state.dataSize->TermUnitFinalZoneSizing(state.dataSize->CurTermUnitSizingNum).DesHeatVolFlow >
2939+
state.dataSize->TermUnitFinalZoneSizing(state.dataSize->CurTermUnitSizingNum).DesHeatVolFlowMax) {
29332940
MaxHeatAirVolFlowRateDes = state.dataSize->TermUnitFinalZoneSizing(state.dataSize->CurTermUnitSizingNum).DesHeatVolFlowMax;
29342941
} else {
29352942
MaxHeatAirVolFlowRateDes = state.dataSize->TermUnitFinalZoneSizing(state.dataSize->CurTermUnitSizingNum).DesHeatVolFlow;
@@ -3221,7 +3228,13 @@ void SingleDuctAirTerminal::SizeSys(EnergyPlusData &state)
32213228
if (state.dataSize->ZoneSizingRunDone) {
32223229
if (state.dataSize->CurTermUnitSizingNum > 0) {
32233230
// if zone sizing run done, set the design max reheat air flow to the value from the design calcs
3224-
MaxAirVolFlowRateDuringReheatDes = state.dataSize->TermUnitFinalZoneSizing(state.dataSize->CurTermUnitSizingNum).DesHeatVolFlowMax;
3231+
if (state.dataSize->TermUnitFinalZoneSizing(state.dataSize->CurTermUnitSizingNum).DesHeatVolFlow >
3232+
state.dataSize->TermUnitFinalZoneSizing(state.dataSize->CurTermUnitSizingNum).DesHeatVolFlowMax) {
3233+
MaxAirVolFlowRateDuringReheatDes =
3234+
state.dataSize->TermUnitFinalZoneSizing(state.dataSize->CurTermUnitSizingNum).DesHeatVolFlowMax;
3235+
} else {
3236+
MaxAirVolFlowRateDuringReheatDes = state.dataSize->TermUnitFinalZoneSizing(state.dataSize->CurTermUnitSizingNum).DesHeatVolFlow;
3237+
}
32253238
}
32263239
} else {
32273240
// if no design calc use 0.002032 [m3/s-m2] times floor area. That's .40 cfm/ft2

tst/EnergyPlus/unit/SingleDuct.unit.cc

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2765,11 +2765,27 @@ TEST_F(EnergyPlusFixture, VAVReheatTerminal_SizeMinFrac)
27652765
state->dataSize->TermUnitFinalZoneSizing(1).DesHeatVolFlowMax = 1.6;
27662766
thisSys.SizeSys(*state);
27672767
Real64 expectedZoneMinAirFracDes = std::min(1.0, state->dataSize->TermUnitFinalZoneSizing(1).DesCoolVolFlowMin / thisSys.MaxAirVolFlowRate);
2768+
// DesHeatVolFlowMax is limiting flow rate
27682769
Real64 expectedMaxAirVolFractionDuringReheat = state->dataSize->TermUnitFinalZoneSizing(1).DesHeatVolFlowMax / thisSys.MaxAirVolFlowRate;
27692770
EXPECT_EQ(expectedZoneMinAirFracDes, thisSys.ZoneMinAirFracDes);
27702771
EXPECT_EQ(1.0, thisSys.MaxAirVolFractionDuringReheat);
27712772
EXPECT_EQ(expectedMaxAirVolFractionDuringReheat, thisSys.MaxAirVolFractionDuringReheat);
27722773

2774+
// switch magnitude of DesHeatVolFlow and DesHeatVolFlowMax, still heating dominated
2775+
thisSys.MaxAirVolFlowRate = DataSizing::AutoSize;
2776+
thisSys.ZoneMinAirFracDes = DataSizing::AutoSize;
2777+
thisSys.MaxAirVolFlowRateDuringReheat = DataSizing::AutoSize;
2778+
thisSys.MaxAirVolFractionDuringReheat = DataSizing::AutoSize;
2779+
state->dataSize->TermUnitFinalZoneSizing(1).DesHeatVolFlow = 1.6;
2780+
state->dataSize->TermUnitFinalZoneSizing(1).DesHeatVolFlowMax = 1.7;
2781+
thisSys.SizeSys(*state);
2782+
expectedZoneMinAirFracDes = std::min(1.0, state->dataSize->TermUnitFinalZoneSizing(1).DesCoolVolFlowMin / thisSys.MaxAirVolFlowRate);
2783+
// DesHeatVolFlowMax is NOT limiting flow rate
2784+
expectedMaxAirVolFractionDuringReheat = state->dataSize->TermUnitFinalZoneSizing(1).DesHeatVolFlow / thisSys.MaxAirVolFlowRate;
2785+
EXPECT_EQ(expectedZoneMinAirFracDes, thisSys.ZoneMinAirFracDes);
2786+
EXPECT_EQ(1.0, thisSys.MaxAirVolFractionDuringReheat);
2787+
EXPECT_EQ(expectedMaxAirVolFractionDuringReheat, thisSys.MaxAirVolFractionDuringReheat);
2788+
27732789
// test Maximum Flow Fraction During Reheat for cooling dominated
27742790
thisSys.MaxAirVolFlowRate = DataSizing::AutoSize;
27752791
thisSys.ZoneMinAirFracDes = DataSizing::AutoSize;
@@ -2779,6 +2795,7 @@ TEST_F(EnergyPlusFixture, VAVReheatTerminal_SizeMinFrac)
27792795
state->dataSize->TermUnitFinalZoneSizing(1).DesHeatVolFlowMax = 1.3;
27802796
thisSys.SizeSys(*state);
27812797
expectedZoneMinAirFracDes = std::min(1.0, state->dataSize->TermUnitFinalZoneSizing(1).DesCoolVolFlowMin / thisSys.MaxAirVolFlowRate);
2798+
// DesHeatVolFlowMax is limiting flow rate
27822799
expectedMaxAirVolFractionDuringReheat = state->dataSize->TermUnitFinalZoneSizing(1).DesHeatVolFlowMax / thisSys.MaxAirVolFlowRate;
27832800
EXPECT_EQ(expectedZoneMinAirFracDes, thisSys.ZoneMinAirFracDes);
27842801
EXPECT_EQ(1.0, thisSys.MaxAirVolFractionDuringReheat);

0 commit comments

Comments
 (0)