From 6c680b41e21e3d606e3c2f550ba1aaeaf2fb9d01 Mon Sep 17 00:00:00 2001 From: rraustad Date: Thu, 13 Oct 2022 15:26:44 -0400 Subject: [PATCH 1/2] Temp location for ADEff for TUs --- src/EnergyPlus/SingleDuct.cc | 5 +++++ src/EnergyPlus/SingleDuct.hh | 1 + 2 files changed, 6 insertions(+) diff --git a/src/EnergyPlus/SingleDuct.cc b/src/EnergyPlus/SingleDuct.cc index 645ece202fb..4f0a5b9dc5c 100644 --- a/src/EnergyPlus/SingleDuct.cc +++ b/src/EnergyPlus/SingleDuct.cc @@ -2858,6 +2858,11 @@ void SingleDuctAirTerminal::SizeSys(EnergyPlusData &state) } if (state.dataSize->CurTermUnitSizingNum > 0) { + + state.dataSingleDuct->sd_airterminal(state.dataSingleDuct->SysNumGSI).ADEff = + std::min(state.dataSize->ZoneSizingInput(state.dataSize->CurTermUnitSizingNum).ZoneADEffCooling, + state.dataSize->ZoneSizingInput(state.dataSize->CurTermUnitSizingNum).ZoneADEffHeating); + if (!IsAutoSize && !state.dataSize->ZoneSizingRunDone) { // simulation continue if (this->MaxAirVolFlowRate > 0.0) { BaseSizer::reportSizerOutput( diff --git a/src/EnergyPlus/SingleDuct.hh b/src/EnergyPlus/SingleDuct.hh index 768b3a48c16..ebab4a913f7 100644 --- a/src/EnergyPlus/SingleDuct.hh +++ b/src/EnergyPlus/SingleDuct.hh @@ -197,6 +197,7 @@ namespace SingleDuct { bool NoOAFlowInputFromUser; // avoids OA calculation if no input specified by user int OARequirementsPtr; // - Index to DesignSpecification:OutdoorAir object int AirLoopNum; + Real64 ADEff = 1.0; // DesignSpecification:AirDistributionEffectiveness PlantLocation HWplantLoc; // plant topology, Component location std::string ZoneHVACUnitType; // type of Zone HVAC unit for air terminal mixer units std::string ZoneHVACUnitName; // name of Zone HVAC unit for air terminal mixer units From 0686106bbd8458d05aa48ace4c5d19808e9e60f0 Mon Sep 17 00:00:00 2001 From: rraustad Date: Thu, 13 Oct 2022 20:47:02 -0400 Subject: [PATCH 2/2] Include ADEff for SingleDuct TUs --- src/EnergyPlus/SingleDuct.cc | 13 +++++++------ src/EnergyPlus/SingleDuct.hh | 2 ++ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/EnergyPlus/SingleDuct.cc b/src/EnergyPlus/SingleDuct.cc index 4f0a5b9dc5c..23664d3d4b6 100644 --- a/src/EnergyPlus/SingleDuct.cc +++ b/src/EnergyPlus/SingleDuct.cc @@ -2853,16 +2853,17 @@ void SingleDuctAirTerminal::SizeSys(EnergyPlusData &state) auto &TermUnitSizing(state.dataSize->TermUnitSizing); + if (state.dataSize->ZoneSizingRunDone && state.dataSize->CurTermUnitSizingNum > 0) { + this->ADEffHeating = state.dataSize->TermUnitFinalZoneSizing(state.dataSize->CurTermUnitSizingNum).ZoneADEffHeating; + this->ADEffCooling = state.dataSize->TermUnitFinalZoneSizing(state.dataSize->CurTermUnitSizingNum).ZoneADEffCooling; + } + if (this->MaxAirVolFlowRate == AutoSize) { IsAutoSize = true; } if (state.dataSize->CurTermUnitSizingNum > 0) { - state.dataSingleDuct->sd_airterminal(state.dataSingleDuct->SysNumGSI).ADEff = - std::min(state.dataSize->ZoneSizingInput(state.dataSize->CurTermUnitSizingNum).ZoneADEffCooling, - state.dataSize->ZoneSizingInput(state.dataSize->CurTermUnitSizingNum).ZoneADEffHeating); - if (!IsAutoSize && !state.dataSize->ZoneSizingRunDone) { // simulation continue if (this->MaxAirVolFlowRate > 0.0) { BaseSizer::reportSizerOutput( @@ -3848,7 +3849,7 @@ void SingleDuctAirTerminal::SimVAV(EnergyPlusData &state, bool const FirstHVACIt // calculate supply air flow rate based on user specified OA requirement this->CalcOAMassFlow(state, MassFlowBasedOnOA, AirLoopOAFrac); - MassFlow = max(MassFlow, MassFlowBasedOnOA); + MassFlow = max(MassFlow, MassFlowBasedOnOA/this->ADEffCooling); // used for normal acting damper state.dataSingleDuct->MinMassAirFlowSDAT = max(state.dataSingleDuct->MinMassAirFlowSDAT, MassFlowBasedOnOA); @@ -3886,7 +3887,7 @@ void SingleDuctAirTerminal::SimVAV(EnergyPlusData &state, bool const FirstHVACIt // calculate supply air flow rate based on user specified OA requirement this->CalcOAMassFlow(state, MassFlowBasedOnOA, AirLoopOAFrac); - MassFlow = max(MassFlow, MassFlowBasedOnOA); + MassFlow = max(MassFlow, MassFlowBasedOnOA/this->ADEffHeating); // Check to see if the flow is < the Min or > the Max air Fraction to the zone; then set to min or max if (MassFlow <= this->sd_airterminalInlet.AirMassFlowRateMinAvail) { diff --git a/src/EnergyPlus/SingleDuct.hh b/src/EnergyPlus/SingleDuct.hh index ebab4a913f7..32c92dff024 100644 --- a/src/EnergyPlus/SingleDuct.hh +++ b/src/EnergyPlus/SingleDuct.hh @@ -198,6 +198,8 @@ namespace SingleDuct { int OARequirementsPtr; // - Index to DesignSpecification:OutdoorAir object int AirLoopNum; Real64 ADEff = 1.0; // DesignSpecification:AirDistributionEffectiveness + Real64 ADEffHeating = 1.0; // DesignSpecification:AirDistributionEffectiveness + Real64 ADEffCooling = 1.0; // DesignSpecification:AirDistributionEffectiveness PlantLocation HWplantLoc; // plant topology, Component location std::string ZoneHVACUnitType; // type of Zone HVAC unit for air terminal mixer units std::string ZoneHVACUnitName; // name of Zone HVAC unit for air terminal mixer units