boost::optional<IdfObject> ForwardTranslator::createAirLoopHVACSupplyPath( AirLoopHVAC & airLoopHVAC ) { std::string s; IdfObject supplyPathIdf(openstudio::IddObjectType::AirLoopHVAC_SupplyPath); m_idfObjects.push_back(supplyPathIdf); supplyPathIdf.createName(); s = airLoopHVAC.demandInletNodes().front().name().get(); supplyPathIdf.setString(openstudio::AirLoopHVAC_SupplyPathFields::SupplyAirPathInletNodeName,s); ModelObjectVector modelObjects; modelObjects = airLoopHVAC.demandComponents( airLoopHVAC.demandInletNodes().front(), airLoopHVAC.demandOutletNode(), openstudio::IddObjectType::OS_AirLoopHVAC_ZoneSplitter ); if( modelObjects.size() == 1 ) { ModelObject modelObject = modelObjects.front(); OptionalAirLoopHVACZoneSplitter zoneSplitter = modelObject.optionalCast<AirLoopHVACZoneSplitter>(); translateAndMapModelObject(*zoneSplitter); s = stripOS2(zoneSplitter->iddObject().name()); supplyPathIdf.setString(2,s); s = zoneSplitter->name().get(); supplyPathIdf.setString(3,s); } return boost::optional<IdfObject>(supplyPathIdf); }
TEST_F(ModelFixture,AirLoopHVAC_AirLoopHVAC) { Model model = Model(); OptionalModelObject modelObject; AirLoopHVAC airLoopHVAC = AirLoopHVAC(model); ASSERT_EQ(airLoopHVAC.iddObject().name(),"OS:AirLoopHVAC"); OptionalNode supplyInletNode = airLoopHVAC.supplyInletNode(); OptionalNode demandOutletNode = airLoopHVAC.demandOutletNode(); std::vector<Node> supplyOutletNodes = airLoopHVAC.supplyOutletNodes(); std::vector<Node> demandInletNodes = airLoopHVAC.demandInletNodes(); ASSERT_TRUE( supplyInletNode ); ASSERT_TRUE( demandOutletNode ); ASSERT_EQ( unsigned(1), supplyOutletNodes.size() ); ASSERT_EQ( unsigned(1), demandInletNodes.size() ); OptionalNode supplyOutletNode = OptionalNode(supplyOutletNodes.front()); OptionalNode demandInletNode = OptionalNode(demandInletNodes.front()); modelObject = demandInletNode->outletModelObject(); ASSERT_TRUE( modelObject ); OptionalAirLoopHVACZoneSplitter splitter; splitter = modelObject->optionalCast<AirLoopHVACZoneSplitter>(); ASSERT_TRUE( splitter ); modelObject = splitter->lastOutletModelObject(); ASSERT_TRUE( modelObject ); OptionalNode splitterNode; splitterNode = modelObject->optionalCast<Node>(); ASSERT_TRUE( splitterNode ); modelObject = splitterNode->outletModelObject(); ASSERT_TRUE(modelObject); OptionalAirLoopHVACZoneMixer mixer; mixer = modelObject->optionalCast<AirLoopHVACZoneMixer>(); ASSERT_TRUE( mixer ); modelObject = mixer->outletModelObject(); ASSERT_TRUE( modelObject ); OptionalNode _demandOutletNode; _demandOutletNode = modelObject->optionalCast<Node>(); ASSERT_TRUE( _demandOutletNode ); modelObject = _demandOutletNode->outletModelObject(); ASSERT_TRUE( modelObject ); OptionalAirLoopHVAC _airLoopHVAC; _airLoopHVAC = modelObject->optionalCast<AirLoopHVAC>(); ASSERT_TRUE( _airLoopHVAC ); ASSERT_EQ("StayOff",_airLoopHVAC->nightCycleControlType()); ASSERT_TRUE(_airLoopHVAC->setNightCycleControlType("CycleOnAny")); ASSERT_TRUE(_airLoopHVAC->setNightCycleControlType("CycleOnAnyZoneFansOnly")); ::testing::FLAGS_gtest_death_test_style = "threadsafe"; ASSERT_EXIT ( { Model m; AirLoopHVAC airLoopHVAC(m); airLoopHVAC.availabilitySchedule(); exit(0); } ,