Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AirLoopHVACUnitarySystem FT fixes #4864

Merged
merged 10 commits into from
Jun 5, 2023
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@
#include "../../model/AirLoopHVACOutdoorAirSystem_Impl.hpp"
#include "../../model/CoilCoolingDXMultiSpeedStageData.hpp"
#include "../../model/CoilCoolingDXMultiSpeedStageData_Impl.hpp"
#include "../../model/CoilCoolingDXVariableSpeedSpeedData.hpp"
#include "../../model/CoilCoolingDXVariableSpeedSpeedData_Impl.hpp"
#include "../../model/CoilCoolingWaterToAirHeatPumpVariableSpeedEquationFit.hpp"
#include "../../model/CoilCoolingWaterToAirHeatPumpVariableSpeedEquationFit_Impl.hpp"
#include "../../model/CoilCoolingWaterToAirHeatPumpVariableSpeedEquationFitSpeedData.hpp"
Expand All @@ -67,14 +69,16 @@
#include "../../model/CoilHeatingDXMultiSpeed_Impl.hpp"
#include "../../model/CoilHeatingDXVariableSpeed.hpp"
#include "../../model/CoilHeatingDXVariableSpeed_Impl.hpp"
#include "../../model/CoilCoolingDXMultiSpeed.hpp"
#include "../../model/CoilCoolingDXMultiSpeed_Impl.hpp"
#include "../../model/CoilHeatingGasMultiStage.hpp"
#include "../../model/CoilHeatingGasMultiStage_Impl.hpp"
#include "../../model/CoilHeatingGasMultiStageStageData.hpp"
#include "../../model/CoilHeatingGasMultiStageStageData_Impl.hpp"
#include "../../model/CoilCoolingDX.hpp"
#include "../../model/CoilCoolingDX_Impl.hpp"
#include "../../model/CoilCoolingDXMultiSpeed.hpp"
#include "../../model/CoilCoolingDXMultiSpeed_Impl.hpp"
#include "../../model/CoilCoolingDXVariableSpeed.hpp"
#include "../../model/CoilCoolingDXVariableSpeed_Impl.hpp"
#include "../../model/UnitarySystemPerformanceMultispeed.hpp"
#include "../../model/UnitarySystemPerformanceMultispeed_Impl.hpp"
#include <utilities/idd/AirLoopHVAC_UnitarySystem_FieldEnums.hxx>
Expand Down Expand Up @@ -478,13 +482,12 @@ namespace energyplus {
// If it doesn't have one hard set, we check if there's at least one coil that should have speeds
} else if ((coolingCoil
&& ((coolingCoil->iddObjectType() == model::CoilCoolingDXMultiSpeed::iddObjectType())
|| (coolingCoil->iddObjectType() == model::CoilCoolingDXMultiSpeed::iddObjectType())
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This repeated CoilCoolingDXMultiSpeed is likely supposed to be CoilCoolingDXVariableSpeed.

|| (coolingCoil->iddObjectType() == model::CoilCoolingDXVariableSpeed::iddObjectType())
|| (coolingCoil->iddObjectType() == model::CoilCoolingWaterToAirHeatPumpVariableSpeedEquationFit::iddObjectType())))
|| (heatingCoil
&& ((heatingCoil->iddObjectType() == model::CoilHeatingDXMultiSpeed::iddObjectType())
|| (heatingCoil->iddObjectType() == model::CoilHeatingDXVariableSpeed::iddObjectType())
|| (heatingCoil->iddObjectType() == model::CoilHeatingGasMultiStage::iddObjectType())
|| (heatingCoil->iddObjectType() == model::CoilHeatingDXVariableSpeed::iddObjectType())
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is repeated.

|| (heatingCoil->iddObjectType() == model::CoilHeatingWaterToAirHeatPumpVariableSpeedEquationFit::iddObjectType())))) {

// If not user specified, then generate the UnitarySystemPerformance:Multispeed used for multi speed coils
Expand All @@ -498,6 +501,7 @@ namespace energyplus {
boost::optional<model::CoilHeatingGasMultiStage> multistageGasHeating;
boost::optional<model::CoilHeatingWaterToAirHeatPumpVariableSpeedEquationFit> varSpeedWaterToAirHeating;
boost::optional<model::CoilCoolingDXMultiSpeed> multispeedDXCooling;
boost::optional<model::CoilCoolingDXVariableSpeed> varSpeedDXCooling;
boost::optional<model::CoilCoolingWaterToAirHeatPumpVariableSpeedEquationFit> varSpeedWaterToAirCooling;

int maxStages = 0;
Expand All @@ -511,6 +515,7 @@ namespace energyplus {

if (coolingCoil) {
multispeedDXCooling = coolingCoil->optionalCast<model::CoilCoolingDXMultiSpeed>();
varSpeedDXCooling = coolingCoil->optionalCast<model::CoilCoolingDXVariableSpeed>();
varSpeedWaterToAirCooling = coolingCoil->optionalCast<model::CoilCoolingWaterToAirHeatPumpVariableSpeedEquationFit>();
}

Expand All @@ -520,6 +525,7 @@ namespace energyplus {
std::vector<model::CoilHeatingWaterToAirHeatPumpVariableSpeedEquationFitSpeedData> waterToAirHeatingStages;

std::vector<model::CoilCoolingDXMultiSpeedStageData> coolingStages;
std::vector<model::CoilCoolingDXVariableSpeedSpeedData> varCoolingStages;
std::vector<model::CoilCoolingWaterToAirHeatPumpVariableSpeedEquationFitSpeedData> waterToAirCoolingStages;

if (multispeedDXHeating) {
Expand All @@ -544,11 +550,12 @@ namespace energyplus {

if (multispeedDXCooling) {
coolingStages = multispeedDXCooling->stages();
_unitarySystemPerformance.setInt(UnitarySystemPerformance_MultispeedFields::NumberofSpeedsforCooling, coolingStages.size());
int stages = coolingStages.size();
if (stages > maxStages) {
maxStages = stages;
}
Comment on lines -547 to -551
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This stages stuff right in here is super confusing, so I just simplified by making it look like the other blocks.

maxStages = coolingStages.size();
_unitarySystemPerformance.setInt(UnitarySystemPerformance_MultispeedFields::NumberofSpeedsforCooling, maxStages);
} else if (varSpeedDXCooling) {
varCoolingStages = varSpeedDXCooling->speeds();
maxStages = varCoolingStages.size();
_unitarySystemPerformance.setInt(UnitarySystemPerformance_MultispeedFields::NumberofSpeedsforCooling, maxStages);
} else if (varSpeedWaterToAirCooling) {
waterToAirCoolingStages = varSpeedWaterToAirCooling->speeds();
maxStages = waterToAirCoolingStages.size();
Expand Down Expand Up @@ -582,6 +589,14 @@ namespace energyplus {
} else {
extensible.setString(UnitarySystemPerformance_MultispeedExtensibleFields::HeatingSpeedSupplyAirFlowRatio, "Autosize");
}
} else if (static_cast<unsigned>(i) < varHeatingStages.size()) {
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add support for missing CoilHeatingDXVariableSpeedSpeedData.

auto varHeatingStage = varHeatingStages[i];
double stageFlow = varHeatingStage.referenceUnitRatedAirFlowRate();
if (heatingFlow) {
extensible.setDouble(UnitarySystemPerformance_MultispeedExtensibleFields::HeatingSpeedSupplyAirFlowRatio, stageFlow / heatingFlow.get());
} else {
extensible.setString(UnitarySystemPerformance_MultispeedExtensibleFields::HeatingSpeedSupplyAirFlowRatio, "Autosize");
}
} else if (static_cast<unsigned>(i) < gasHeatingStages.size()) {
auto gasHeatingStage = gasHeatingStages[i];
auto stageCap = gasHeatingStage.nominalCapacity();
Expand All @@ -591,6 +606,14 @@ namespace energyplus {
} else {
extensible.setString(UnitarySystemPerformance_MultispeedExtensibleFields::HeatingSpeedSupplyAirFlowRatio, "Autosize");
}
} else if (static_cast<unsigned>(i) < waterToAirHeatingStages.size()) {
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add support for missing CoilHeatingWaterToAirHeatPumpVariableSpeedEquationFitSpeedData.

auto waterToAirHeatingStage = waterToAirHeatingStages[i];
double stageFlow = waterToAirHeatingStage.referenceUnitRatedAirFlow();
if (heatingFlow) {
extensible.setDouble(UnitarySystemPerformance_MultispeedExtensibleFields::HeatingSpeedSupplyAirFlowRatio, stageFlow / heatingFlow.get());
} else {
extensible.setString(UnitarySystemPerformance_MultispeedExtensibleFields::HeatingSpeedSupplyAirFlowRatio, "Autosize");
}
} else if (i < 2) {
extensible.setDouble(UnitarySystemPerformance_MultispeedExtensibleFields::HeatingSpeedSupplyAirFlowRatio, 1.0);
}
Expand All @@ -604,6 +627,22 @@ namespace energyplus {
} else {
extensible.setString(UnitarySystemPerformance_MultispeedExtensibleFields::CoolingSpeedSupplyAirFlowRatio, "Autosize");
}
} else if (static_cast<unsigned>(i) < varCoolingStages.size()) {
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add support for missing CoilCoolingDXVariableSpeedSpeedData.

auto varCoolingStage = varCoolingStages[i];
double stageFlow = varCoolingStage.referenceUnitRatedAirFlowRate();
if (coolingFlow) {
extensible.setDouble(UnitarySystemPerformance_MultispeedExtensibleFields::CoolingSpeedSupplyAirFlowRatio, stageFlow / coolingFlow.get());
} else {
extensible.setString(UnitarySystemPerformance_MultispeedExtensibleFields::CoolingSpeedSupplyAirFlowRatio, "Autosize");
}
} else if (static_cast<unsigned>(i) < waterToAirCoolingStages.size()) {
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add support for missing CoilCoolingWaterToAirHeatPumpVariableSpeedEquationFitSpeedData.

auto waterToAirCoolingStage = waterToAirCoolingStages[i];
double stageFlow = waterToAirCoolingStage.referenceUnitRatedAirFlowRate();
if (coolingFlow) {
extensible.setDouble(UnitarySystemPerformance_MultispeedExtensibleFields::CoolingSpeedSupplyAirFlowRatio, stageFlow / coolingFlow.get());
} else {
extensible.setString(UnitarySystemPerformance_MultispeedExtensibleFields::CoolingSpeedSupplyAirFlowRatio, "Autosize");
}
} else if (i < 2) {
extensible.setDouble(UnitarySystemPerformance_MultispeedExtensibleFields::CoolingSpeedSupplyAirFlowRatio, 1.0);
}
Expand Down
174 changes: 174 additions & 0 deletions src/energyplus/Test/AirLoopHVACUnitarySystem_GTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,11 @@
#include "../../model/CoilHeatingDesuperheater.hpp"
#include "../../model/CoilHeatingGasMultiStage.hpp"
#include "../../model/CoilHeatingElectricMultiStage.hpp"
#include "../../model/CoilCoolingWaterToAirHeatPumpVariableSpeedEquationFit.hpp"
#include "../../model/CoilCoolingWaterToAirHeatPumpVariableSpeedEquationFitSpeedData.hpp"
#include "../../model/CoilHeatingWaterToAirHeatPumpVariableSpeedEquationFit.hpp"
#include "../../model/CoilHeatingWaterToAirHeatPumpVariableSpeedEquationFitSpeedData.hpp"
#include "../../model/FanSystemModel.hpp"

#include "../../utilities/idf/IdfObject.hpp"
#include "../../utilities/idf/IdfExtensibleGroup.hpp"
Expand All @@ -54,6 +59,7 @@
#include <utilities/idd/Coil_Heating_Desuperheater_FieldEnums.hxx>
#include <utilities/idd/Coil_Heating_Gas_MultiStage_FieldEnums.hxx>
#include <utilities/idd/Coil_Heating_Electric_MultiStage_FieldEnums.hxx>
#include <utilities/idd/UnitarySystemPerformance_Multispeed_FieldEnums.hxx>
#include <utilities/idd/IddEnums.hxx>

#include <resources.hxx>
Expand Down Expand Up @@ -711,3 +717,171 @@ TEST_F(EnergyPlusFixture, ForwardTranslator_AirLoopHVACUnitarySystem_CoilHeating
EXPECT_EQ(1u, workspace.getObjectsByType(IddObjectType::AirLoopHVAC_UnitarySystem).size());
EXPECT_EQ(2u, workspace.getObjectsByType(IddObjectType::Coil_Heating_Electric_MultiStage).size());
}

TEST_F(EnergyPlusFixture, ForwardTranslator_AirLoopHVACUnitarySystem_VSCoils) {
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Re-create the scenario brought up in the issue - one in which you'd expect the supply air flow ratios to be "Autosize", and one in which you'd expect them to be doubles.

// Test for #4715 - Creating a VS WSHP using UnitarySystem object generates incorrect air flow ratios for UnitarySystemPerformance:Multispeed object

// autosize the supply air flow rates
{
Model m;

CoilCoolingWaterToAirHeatPumpVariableSpeedEquationFit c(m);
CoilCoolingWaterToAirHeatPumpVariableSpeedEquationFitSpeedData cs1(m);
CoilCoolingWaterToAirHeatPumpVariableSpeedEquationFitSpeedData cs2(m);
CoilCoolingWaterToAirHeatPumpVariableSpeedEquationFitSpeedData cs3(m);
CoilCoolingWaterToAirHeatPumpVariableSpeedEquationFitSpeedData cs4(m);
CoilCoolingWaterToAirHeatPumpVariableSpeedEquationFitSpeedData cs5(m);
c.addSpeed(cs1);
c.addSpeed(cs2);
c.addSpeed(cs3);
c.addSpeed(cs4);
c.addSpeed(cs5);
CoilHeatingWaterToAirHeatPumpVariableSpeedEquationFit h(m);
CoilHeatingWaterToAirHeatPumpVariableSpeedEquationFitSpeedData hs1(m);
CoilHeatingWaterToAirHeatPumpVariableSpeedEquationFitSpeedData hs2(m);
CoilHeatingWaterToAirHeatPumpVariableSpeedEquationFitSpeedData hs3(m);
CoilHeatingWaterToAirHeatPumpVariableSpeedEquationFitSpeedData hs4(m);
CoilHeatingWaterToAirHeatPumpVariableSpeedEquationFitSpeedData hs5(m);
h.addSpeed(hs1);
h.addSpeed(hs2);
h.addSpeed(hs3);
h.addSpeed(hs4);
h.addSpeed(hs5);
FanSystemModel f(m);

AirLoopHVACUnitarySystem unitary(m);
unitary.setCoolingCoil(c);
unitary.setHeatingCoil(h);
unitary.setSupplyFan(f);

AirLoopHVAC airLoop(m);

Node supplyOutletNode = airLoop.supplyOutletNode();
unitary.addToNode(supplyOutletNode);

ForwardTranslator ft;
Workspace workspace = ft.translateModel(m);

EXPECT_EQ(1u, workspace.getObjectsByType(IddObjectType::AirLoopHVAC_UnitarySystem).size());
EXPECT_EQ(1u, workspace.getObjectsByType(IddObjectType::UnitarySystemPerformance_Multispeed).size());

IdfObject idf_perf = workspace.getObjectsByType(IddObjectType::UnitarySystemPerformance_Multispeed)[0];

EXPECT_EQ(5, idf_perf.getInt(UnitarySystemPerformance_MultispeedFields::NumberofSpeedsforHeating).get());
EXPECT_EQ(5, idf_perf.getInt(UnitarySystemPerformance_MultispeedFields::NumberofSpeedsforCooling).get());
EXPECT_EQ("No", idf_perf.getString(UnitarySystemPerformance_MultispeedFields::SingleModeOperation).get());
EXPECT_TRUE(idf_perf.isEmpty(UnitarySystemPerformance_MultispeedFields::NoLoadSupplyAirFlowRateRatio));

ASSERT_EQ(5u, idf_perf.numExtensibleGroups());

auto egs = idf_perf.extensibleGroups();

IdfExtensibleGroup eg1 = egs[0];
EXPECT_FALSE(eg1.getDouble(UnitarySystemPerformance_MultispeedExtensibleFields::HeatingSpeedSupplyAirFlowRatio));
EXPECT_EQ("Autosize", eg1.getString(UnitarySystemPerformance_MultispeedExtensibleFields::HeatingSpeedSupplyAirFlowRatio).get());
EXPECT_FALSE(eg1.getDouble(UnitarySystemPerformance_MultispeedExtensibleFields::CoolingSpeedSupplyAirFlowRatio));
EXPECT_EQ("Autosize", eg1.getString(UnitarySystemPerformance_MultispeedExtensibleFields::CoolingSpeedSupplyAirFlowRatio).get());

IdfExtensibleGroup eg2 = egs[1];
EXPECT_FALSE(eg2.getDouble(UnitarySystemPerformance_MultispeedExtensibleFields::HeatingSpeedSupplyAirFlowRatio));
EXPECT_EQ("Autosize", eg2.getString(UnitarySystemPerformance_MultispeedExtensibleFields::HeatingSpeedSupplyAirFlowRatio).get());
EXPECT_FALSE(eg2.getDouble(UnitarySystemPerformance_MultispeedExtensibleFields::CoolingSpeedSupplyAirFlowRatio));
EXPECT_EQ("Autosize", eg2.getString(UnitarySystemPerformance_MultispeedExtensibleFields::CoolingSpeedSupplyAirFlowRatio).get());

IdfExtensibleGroup eg3 = egs[2];
EXPECT_FALSE(eg3.getDouble(UnitarySystemPerformance_MultispeedExtensibleFields::HeatingSpeedSupplyAirFlowRatio));
EXPECT_EQ("Autosize", eg3.getString(UnitarySystemPerformance_MultispeedExtensibleFields::HeatingSpeedSupplyAirFlowRatio).get());
EXPECT_FALSE(eg3.getDouble(UnitarySystemPerformance_MultispeedExtensibleFields::CoolingSpeedSupplyAirFlowRatio));
EXPECT_EQ("Autosize", eg3.getString(UnitarySystemPerformance_MultispeedExtensibleFields::CoolingSpeedSupplyAirFlowRatio).get());

IdfExtensibleGroup eg4 = egs[3];
EXPECT_FALSE(eg4.getDouble(UnitarySystemPerformance_MultispeedExtensibleFields::HeatingSpeedSupplyAirFlowRatio));
EXPECT_EQ("Autosize", eg4.getString(UnitarySystemPerformance_MultispeedExtensibleFields::HeatingSpeedSupplyAirFlowRatio).get());
EXPECT_FALSE(eg4.getDouble(UnitarySystemPerformance_MultispeedExtensibleFields::CoolingSpeedSupplyAirFlowRatio));
EXPECT_EQ("Autosize", eg4.getString(UnitarySystemPerformance_MultispeedExtensibleFields::CoolingSpeedSupplyAirFlowRatio).get());

IdfExtensibleGroup eg5 = egs[4];
EXPECT_FALSE(eg5.getDouble(UnitarySystemPerformance_MultispeedExtensibleFields::HeatingSpeedSupplyAirFlowRatio));
EXPECT_EQ("Autosize", eg5.getString(UnitarySystemPerformance_MultispeedExtensibleFields::HeatingSpeedSupplyAirFlowRatio).get());
EXPECT_FALSE(eg5.getDouble(UnitarySystemPerformance_MultispeedExtensibleFields::CoolingSpeedSupplyAirFlowRatio));
EXPECT_EQ("Autosize", eg5.getString(UnitarySystemPerformance_MultispeedExtensibleFields::CoolingSpeedSupplyAirFlowRatio).get());
}

// hardsize the supply air flow rates
{
Model m;

CoilCoolingWaterToAirHeatPumpVariableSpeedEquationFit c(m);
CoilCoolingWaterToAirHeatPumpVariableSpeedEquationFitSpeedData cs1(m);
CoilCoolingWaterToAirHeatPumpVariableSpeedEquationFitSpeedData cs2(m);
CoilCoolingWaterToAirHeatPumpVariableSpeedEquationFitSpeedData cs3(m);
CoilCoolingWaterToAirHeatPumpVariableSpeedEquationFitSpeedData cs4(m);
CoilCoolingWaterToAirHeatPumpVariableSpeedEquationFitSpeedData cs5(m);
c.addSpeed(cs1);
c.addSpeed(cs2);
c.addSpeed(cs3);
c.addSpeed(cs4);
c.addSpeed(cs5);
CoilHeatingWaterToAirHeatPumpVariableSpeedEquationFit h(m);
CoilHeatingWaterToAirHeatPumpVariableSpeedEquationFitSpeedData hs1(m);
CoilHeatingWaterToAirHeatPumpVariableSpeedEquationFitSpeedData hs2(m);
CoilHeatingWaterToAirHeatPumpVariableSpeedEquationFitSpeedData hs3(m);
CoilHeatingWaterToAirHeatPumpVariableSpeedEquationFitSpeedData hs4(m);
CoilHeatingWaterToAirHeatPumpVariableSpeedEquationFitSpeedData hs5(m);
h.addSpeed(hs1);
h.addSpeed(hs2);
h.addSpeed(hs3);
h.addSpeed(hs4);
h.addSpeed(hs5);
FanSystemModel f(m);

AirLoopHVACUnitarySystem unitary(m);
unitary.setSupplyAirFlowRateDuringCoolingOperation(10);
unitary.setSupplyAirFlowRateDuringHeatingOperation(10);
unitary.setCoolingCoil(c);
unitary.setHeatingCoil(h);
unitary.setSupplyFan(f);

AirLoopHVAC airLoop(m);

Node supplyOutletNode = airLoop.supplyOutletNode();
unitary.addToNode(supplyOutletNode);

ForwardTranslator ft;
Workspace workspace = ft.translateModel(m);

EXPECT_EQ(1u, workspace.getObjectsByType(IddObjectType::AirLoopHVAC_UnitarySystem).size());
EXPECT_EQ(1u, workspace.getObjectsByType(IddObjectType::UnitarySystemPerformance_Multispeed).size());

IdfObject idf_perf = workspace.getObjectsByType(IddObjectType::UnitarySystemPerformance_Multispeed)[0];

EXPECT_EQ(5, idf_perf.getInt(UnitarySystemPerformance_MultispeedFields::NumberofSpeedsforHeating).get());
EXPECT_EQ(5, idf_perf.getInt(UnitarySystemPerformance_MultispeedFields::NumberofSpeedsforCooling).get());
EXPECT_EQ("No", idf_perf.getString(UnitarySystemPerformance_MultispeedFields::SingleModeOperation).get());
EXPECT_TRUE(idf_perf.isEmpty(UnitarySystemPerformance_MultispeedFields::NoLoadSupplyAirFlowRateRatio));

ASSERT_EQ(5u, idf_perf.numExtensibleGroups());

auto egs = idf_perf.extensibleGroups();

IdfExtensibleGroup eg1 = egs[0];
EXPECT_TRUE(eg1.getDouble(UnitarySystemPerformance_MultispeedExtensibleFields::HeatingSpeedSupplyAirFlowRatio));
EXPECT_TRUE(eg1.getDouble(UnitarySystemPerformance_MultispeedExtensibleFields::CoolingSpeedSupplyAirFlowRatio));

IdfExtensibleGroup eg2 = egs[1];
EXPECT_TRUE(eg2.getDouble(UnitarySystemPerformance_MultispeedExtensibleFields::HeatingSpeedSupplyAirFlowRatio));
EXPECT_TRUE(eg2.getDouble(UnitarySystemPerformance_MultispeedExtensibleFields::CoolingSpeedSupplyAirFlowRatio));

IdfExtensibleGroup eg3 = egs[2];
EXPECT_TRUE(eg3.getDouble(UnitarySystemPerformance_MultispeedExtensibleFields::HeatingSpeedSupplyAirFlowRatio));
EXPECT_TRUE(eg3.getDouble(UnitarySystemPerformance_MultispeedExtensibleFields::CoolingSpeedSupplyAirFlowRatio));

IdfExtensibleGroup eg4 = egs[3];
EXPECT_TRUE(eg4.getDouble(UnitarySystemPerformance_MultispeedExtensibleFields::HeatingSpeedSupplyAirFlowRatio));
EXPECT_TRUE(eg4.getDouble(UnitarySystemPerformance_MultispeedExtensibleFields::CoolingSpeedSupplyAirFlowRatio));

IdfExtensibleGroup eg5 = egs[4];
EXPECT_TRUE(eg5.getDouble(UnitarySystemPerformance_MultispeedExtensibleFields::HeatingSpeedSupplyAirFlowRatio));
EXPECT_TRUE(eg5.getDouble(UnitarySystemPerformance_MultispeedExtensibleFields::CoolingSpeedSupplyAirFlowRatio));
}
}