Skip to content

Commit 9646be1

Browse files
Fix DOAS system sizing and add reporting
1 parent 566decb commit 9646be1

File tree

1 file changed

+32
-13
lines changed

1 file changed

+32
-13
lines changed

src/EnergyPlus/AirLoopHVACDOAS.cc

Lines changed: 32 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050

5151
// EnergyPlus Headers
5252
#include <EnergyPlus/AirLoopHVACDOAS.hh>
53+
#include <EnergyPlus/Autosizing/Base.hh>
5354
#include <EnergyPlus/BranchNodeConnections.hh>
5455
#include <EnergyPlus/Data/EnergyPlusData.hh>
5556
#include <EnergyPlus/DataAirLoop.hh>
@@ -980,32 +981,35 @@ namespace AirLoopHVACDOAS {
980981

981982
void AirLoopDOAS::SizingAirLoopDOAS(EnergyPlusData &state)
982983
{
983-
Real64 sizingMassFlow = 0;
984+
Real64 sizingVolumeFlow = 0;
984985

985986
for (int AirLoop = 1; AirLoop <= this->NumOfAirLoops; AirLoop++) {
986987
int AirLoopNum = this->m_AirLoopNum[AirLoop - 1];
987988
this->m_OACtrlNum.push_back(state.dataAirLoop->AirLoopControlInfo(AirLoopNum).OACtrlNum);
988989

989990
if (this->m_OACtrlNum[AirLoop - 1] > 0) {
990-
sizingMassFlow += state.dataMixedAir->OAController(this->m_OACtrlNum[AirLoop - 1]).MaxOA;
991+
sizingVolumeFlow +=
992+
state.dataMixedAir->OAController(this->m_OACtrlNum[AirLoop - 1]).MaxOA; // this is a volume flow rate not a mass flow rate
991993
}
992994
}
993-
this->SizingMassFlow = sizingMassFlow;
995+
this->SizingMassFlow = sizingVolumeFlow * state.dataEnvrn->StdRhoAir;
996+
997+
BaseSizer::reportSizerOutput(state, "AirLoopHVAC:DedicatedOutdoorAirSystem", this->Name, "Design Volume Flow Rate [m3/s]", sizingVolumeFlow);
994998
this->GetDesignDayConditions(state);
995999

996-
if (this->m_FanIndex > 0 && this->m_FanTypeNum == SimAirServingZones::CompType::Fan_System_Object) {
997-
state.dataFans->fans(this->m_FanIndex)->maxAirFlowRate = sizingMassFlow / state.dataEnvrn->StdRhoAir;
998-
state.dataLoopNodes->Node(this->m_FanInletNodeNum).MassFlowRateMaxAvail = sizingMassFlow;
999-
state.dataLoopNodes->Node(this->m_FanOutletNodeNum).MassFlowRateMaxAvail = sizingMassFlow;
1000-
state.dataLoopNodes->Node(this->m_FanOutletNodeNum).MassFlowRateMax = sizingMassFlow;
1000+
if (this->m_FanIndex > -1 && this->m_FanTypeNum == SimAirServingZones::CompType::Fan_System_Object) {
1001+
state.dataFans->fans(this->m_FanIndex)->maxAirFlowRate = sizingVolumeFlow;
1002+
state.dataLoopNodes->Node(this->m_FanInletNodeNum).MassFlowRateMaxAvail = this->SizingMassFlow;
1003+
state.dataLoopNodes->Node(this->m_FanOutletNodeNum).MassFlowRateMaxAvail = this->SizingMassFlow;
1004+
state.dataLoopNodes->Node(this->m_FanOutletNodeNum).MassFlowRateMax = this->SizingMassFlow;
10011005
}
10021006
if (this->m_FanIndex > 0 && this->m_FanTypeNum == SimAirServingZones::CompType::Fan_ComponentModel) {
1003-
state.dataFans->fans(this->m_FanIndex)->maxAirFlowRate = sizingMassFlow / state.dataEnvrn->StdRhoAir;
1007+
state.dataFans->fans(this->m_FanIndex)->maxAirFlowRate = sizingVolumeFlow;
10041008
state.dataFans->fans(this->m_FanIndex)->minAirFlowRate = 0.0;
1005-
state.dataFans->fans(this->m_FanIndex)->maxAirMassFlowRate = sizingMassFlow;
1006-
state.dataLoopNodes->Node(this->m_FanInletNodeNum).MassFlowRateMaxAvail = sizingMassFlow;
1007-
state.dataLoopNodes->Node(this->m_FanOutletNodeNum).MassFlowRateMaxAvail = sizingMassFlow;
1008-
state.dataLoopNodes->Node(this->m_FanOutletNodeNum).MassFlowRateMax = sizingMassFlow;
1009+
state.dataFans->fans(this->m_FanIndex)->maxAirMassFlowRate = this->SizingMassFlow;
1010+
state.dataLoopNodes->Node(this->m_FanInletNodeNum).MassFlowRateMaxAvail = this->SizingMassFlow;
1011+
state.dataLoopNodes->Node(this->m_FanOutletNodeNum).MassFlowRateMaxAvail = this->SizingMassFlow;
1012+
state.dataLoopNodes->Node(this->m_FanOutletNodeNum).MassFlowRateMax = this->SizingMassFlow;
10091013
}
10101014

10111015
state.dataSize->CurSysNum = state.dataHVACGlobal->NumPrimaryAirSys + this->m_AirLoopDOASNum + 1;
@@ -1044,6 +1048,21 @@ namespace AirLoopHVACDOAS {
10441048
}
10451049
}
10461050
}
1051+
1052+
BaseSizer::reportSizerOutput(
1053+
state, "AirLoopHVAC:DedicatedOutdoorAirSystem", this->Name, "Design Cooling Outdoor Air Temperature [C]", this->SizingCoolOATemp);
1054+
BaseSizer::reportSizerOutput(state,
1055+
"AirLoopHVAC:DedicatedOutdoorAirSystem",
1056+
this->Name,
1057+
"Design Cooling Outdoor Air Humidity Ratio [kgWater/kgDryAir]",
1058+
this->SizingCoolOAHumRat);
1059+
BaseSizer::reportSizerOutput(
1060+
state, "AirLoopHVAC:DedicatedOutdoorAirSystem", this->Name, "Design Heating Outdoor Air Temperature [C]", this->HeatOutTemp);
1061+
BaseSizer::reportSizerOutput(state,
1062+
"AirLoopHVAC:DedicatedOutdoorAirSystem",
1063+
this->Name,
1064+
"Design Heating Outdoor Air Humidity Ratio [kgWater/kgDryAir]",
1065+
this->HeatOutHumRat);
10471066
}
10481067

10491068
void CheckConvergence(EnergyPlusData &state)

0 commit comments

Comments
 (0)