diff --git a/src/model/GroundHeatExchangerVertical.cpp b/src/model/GroundHeatExchangerVertical.cpp index 39a03cde3b..bd8f643004 100644 --- a/src/model/GroundHeatExchangerVertical.cpp +++ b/src/model/GroundHeatExchangerVertical.cpp @@ -353,14 +353,10 @@ namespace model { return OS_GroundHeatExchanger_VerticalFields::OutletNodeName; } - // addToNode bool GroundHeatExchangerVertical_Impl::addToNode(Node& node) { - if (boost::optional plant = node.plantLoop()) { - if (plant->supplyComponent(node.handle())) { - if (StraightComponent_Impl::addToNode(node)) { - plant->setFluidType("Water"); - return true; - } + if (auto plant = node.plantLoop()) { + if (!plant->demandComponent(node.handle())) { + return StraightComponent_Impl::addToNode(node); } } diff --git a/src/model/test/GroundHeatExchangerHorizontalTrench_GTest.cpp b/src/model/test/GroundHeatExchangerHorizontalTrench_GTest.cpp index 84de5ebd55..f304b55fab 100644 --- a/src/model/test/GroundHeatExchangerHorizontalTrench_GTest.cpp +++ b/src/model/test/GroundHeatExchangerHorizontalTrench_GTest.cpp @@ -11,6 +11,11 @@ #include "../SiteGroundTemperatureUndisturbedKusudaAchenbach_Impl.hpp" #include "../SiteGroundTemperatureUndisturbedXing.hpp" #include "../SiteGroundTemperatureUndisturbedXing_Impl.hpp" +#include "../AirLoopHVAC.hpp" +#include "../PlantLoop.hpp" +#include "../Node.hpp" +#include "../Node_Impl.hpp" +#include "../AirLoopHVACZoneSplitter.hpp" using namespace openstudio; using namespace openstudio::model; @@ -244,3 +249,41 @@ TEST_F(ModelFixture, GroundHeatExchangerHorizontalTrench_Clone) { EXPECT_EQ(1u, m.getConcreteModelObjects().size()); } } + +TEST_F(ModelFixture, GroundHeatExchangerHorizontalTrench_addToNode) { + Model m; + GroundHeatExchangerHorizontalTrench testObject(m); + + AirLoopHVAC airLoop(m); + + Node supplyOutletNode = airLoop.supplyOutletNode(); + + EXPECT_FALSE(testObject.addToNode(supplyOutletNode)); + EXPECT_EQ((unsigned)2, airLoop.supplyComponents().size()); + + Node inletNode = airLoop.zoneSplitter().lastOutletModelObject()->cast(); + + EXPECT_FALSE(testObject.addToNode(inletNode)); + EXPECT_EQ((unsigned)5, airLoop.demandComponents().size()); + + PlantLoop plantLoop(m); + EXPECT_TRUE(plantLoop.setFluidType("PropyleneGlycol")); + EXPECT_TRUE(plantLoop.setGlycolConcentration(50)); + + supplyOutletNode = plantLoop.supplyOutletNode(); + EXPECT_TRUE(testObject.addToNode(supplyOutletNode)); + EXPECT_EQ((unsigned)7, plantLoop.supplyComponents().size()); + + Node demandOutletNode = plantLoop.demandOutletNode(); + EXPECT_FALSE(testObject.addToNode(demandOutletNode)); + EXPECT_EQ((unsigned)5, plantLoop.demandComponents().size()); + + auto testObjectClone = testObject.clone(m).cast(); + supplyOutletNode = plantLoop.supplyOutletNode(); + + EXPECT_TRUE(testObjectClone.addToNode(supplyOutletNode)); + EXPECT_EQ((unsigned)9, plantLoop.supplyComponents().size()); + + EXPECT_EQ(plantLoop.fluidType(), "PropyleneGlycol"); + EXPECT_EQ(plantLoop.glycolConcentration(), 50); +} diff --git a/src/model/test/GroundHeatExchangerVertical_GTest.cpp b/src/model/test/GroundHeatExchangerVertical_GTest.cpp index 3e659eed41..f9df5be4a4 100644 --- a/src/model/test/GroundHeatExchangerVertical_GTest.cpp +++ b/src/model/test/GroundHeatExchangerVertical_GTest.cpp @@ -243,6 +243,9 @@ TEST_F(ModelFixture, GroundHeatExchangerVertical_addToNode) { EXPECT_EQ((unsigned)5, airLoop.demandComponents().size()); PlantLoop plantLoop(m); + EXPECT_TRUE(plantLoop.setFluidType("PropyleneGlycol")); + EXPECT_TRUE(plantLoop.setGlycolConcentration(50)); + supplyOutletNode = plantLoop.supplyOutletNode(); EXPECT_TRUE(testObject.addToNode(supplyOutletNode)); EXPECT_EQ((unsigned)7, plantLoop.supplyComponents().size()); @@ -256,6 +259,9 @@ TEST_F(ModelFixture, GroundHeatExchangerVertical_addToNode) { EXPECT_TRUE(testObjectClone.addToNode(supplyOutletNode)); EXPECT_EQ((unsigned)9, plantLoop.supplyComponents().size()); + + EXPECT_EQ(plantLoop.fluidType(), "PropyleneGlycol"); + EXPECT_EQ(plantLoop.glycolConcentration(), 50); } TEST_F(ModelFixture, GroundHeatExchangerVertical_AddRemoveSupplyBranchForComponent) {