boost::optional<IdfObject> ForwardTranslator::createAirLoopHVACSupplyPath( AirLoopHVAC & airLoopHVAC ) { std::string s; IdfObject supplyPathIdf(openstudio::IddObjectType::AirLoopHVAC_SupplyPath); m_idfObjects.push_back(supplyPathIdf); supplyPathIdf.setName(airLoopHVAC.name().get() + " Supply Path"); model::Node node = airLoopHVAC.demandInletNode(); supplyPathIdf.setString(openstudio::AirLoopHVAC_SupplyPathFields::SupplyAirPathInletNodeName,node.name().get()); model::AirLoopHVACZoneSplitter zoneSplitter = airLoopHVAC.zoneSplitter(); boost::optional<IdfObject> _zoneSplitter = translateAndMapModelObject(zoneSplitter); OS_ASSERT(_zoneSplitter); IdfExtensibleGroup eg = supplyPathIdf.pushExtensibleGroup(); eg.setString(AirLoopHVAC_SupplyPathExtensibleFields::ComponentObjectType,_zoneSplitter->iddObject().name()); eg.setString(AirLoopHVAC_SupplyPathExtensibleFields::ComponentName,_zoneSplitter->name().get()); std::vector<ModelObject> supplyPlenums = airLoopHVAC.demandComponents(AirLoopHVACSupplyPlenum::iddObjectType()); for( std::vector<ModelObject>::iterator it = supplyPlenums.begin(); it != supplyPlenums.end(); it++ ) { eg = supplyPathIdf.pushExtensibleGroup(); boost::optional<IdfObject> _supplyPlenum = translateAndMapModelObject(*it); OS_ASSERT(_supplyPlenum); eg.setString(AirLoopHVAC_SupplyPathExtensibleFields::ComponentObjectType,_supplyPlenum->iddObject().name()); eg.setString(AirLoopHVAC_SupplyPathExtensibleFields::ComponentName,_supplyPlenum->name().get()); } return boost::optional<IdfObject>(supplyPathIdf); }
boost::optional<IdfObject> ForwardTranslator::createAirLoopHVACSupplyPath( const Node & demandInletNode ) { boost::optional<IdfObject> supplyPathIdf; if( auto t_airLoopHVAC = demandInletNode.airLoopHVAC() ) { IdfObject supplyPathIdf(openstudio::IddObjectType::AirLoopHVAC_SupplyPath); m_idfObjects.push_back(supplyPathIdf); supplyPathIdf.setName(t_airLoopHVAC->name().get() + " " + demandInletNode.name().get() + " Supply Path"); supplyPathIdf.setString(openstudio::AirLoopHVAC_SupplyPathFields::SupplyAirPathInletNodeName,demandInletNode.name().get()); auto t_comps = t_airLoopHVAC->demandComponents(demandInletNode,t_airLoopHVAC->demandOutletNode()); auto splitters = subsetCastVector<model::AirLoopHVACZoneSplitter>(t_comps); OS_ASSERT(splitters.size() == 1u); boost::optional<IdfObject> _zoneSplitter = translateAndMapModelObject(splitters.front()); OS_ASSERT(_zoneSplitter); IdfExtensibleGroup eg = supplyPathIdf.pushExtensibleGroup(); eg.setString(AirLoopHVAC_SupplyPathExtensibleFields::ComponentObjectType,_zoneSplitter->iddObject().name()); eg.setString(AirLoopHVAC_SupplyPathExtensibleFields::ComponentName,_zoneSplitter->name().get()); std::vector<ModelObject> supplyPlenums = t_airLoopHVAC->demandComponents(demandInletNode,t_airLoopHVAC->demandOutletNode(),AirLoopHVACSupplyPlenum::iddObjectType()); for( auto & supplyPlenum : supplyPlenums ) { eg = supplyPathIdf.pushExtensibleGroup(); boost::optional<IdfObject> _supplyPlenum = translateAndMapModelObject(supplyPlenum); OS_ASSERT(_supplyPlenum); eg.setString(AirLoopHVAC_SupplyPathExtensibleFields::ComponentObjectType,_supplyPlenum->iddObject().name()); eg.setString(AirLoopHVAC_SupplyPathExtensibleFields::ComponentName,_supplyPlenum->name().get()); } } return supplyPathIdf; }
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); }