bool WaterToWaterComponent_Impl::addToNode(Node & node) { auto _model = node.model(); auto thisModelObject = getObject<ModelObject>(); auto t_plantLoop = node.plantLoop(); boost::optional<unsigned> componentInletPort; boost::optional<unsigned> componentOutletPort; boost::optional<HVACComponent> systemStartComponent; boost::optional<HVACComponent> systemEndComponent; if( node.getImpl<Node_Impl>()->isConnected(thisModelObject) ) return false; if( t_plantLoop ) { if( t_plantLoop->supplyComponent(node.handle()) ) { systemStartComponent = t_plantLoop->supplyInletNode(); systemEndComponent = t_plantLoop->supplyOutletNode(); componentInletPort = supplyInletPort(); componentOutletPort = supplyOutletPort(); removeFromPlantLoop(); } else if( t_plantLoop->demandComponent(node.handle()) ) { systemStartComponent = t_plantLoop->demandInletNode(); systemEndComponent = t_plantLoop->demandOutletNode(); componentInletPort = demandInletPort(); componentOutletPort = demandOutletPort(); removeFromSecondaryPlantLoop(); } } if( systemStartComponent && systemEndComponent && componentOutletPort && componentInletPort ) { return HVACComponent_Impl::addToNode(node,systemStartComponent.get(),systemEndComponent.get(),componentInletPort.get(),componentOutletPort.get()); } else { return false; } }
bool WaterToAirComponent_Impl::addToNode(Node & node) { auto _model = node.model(); auto thisModelObject = getObject<ModelObject>(); auto t_airLoop = node.airLoopHVAC(); auto t_plantLoop = node.plantLoop(); auto t_oaSystem = node.airLoopHVACOutdoorAirSystem(); boost::optional<unsigned> componentInletPort; boost::optional<unsigned> componentOutletPort; boost::optional<HVACComponent> systemStartComponent; boost::optional<HVACComponent> systemEndComponent; if( node.getImpl<Node_Impl>()->isConnected(thisModelObject) ) return false; if( t_airLoop && ! t_oaSystem ) { if( t_airLoop->demandComponent( node.handle() ) ) return false; systemStartComponent = t_airLoop->supplyInletNode(); auto nodes = t_airLoop->supplyOutletNodes(); OS_ASSERT( ! nodes.empty() ); if( (nodes.size() == 2u) && (! t_airLoop->supplyComponents(node,nodes[1]).empty()) ) { systemEndComponent = nodes[1]; } else { systemEndComponent = nodes[0]; } OS_ASSERT(systemEndComponent); componentInletPort = airInletPort(); componentOutletPort = airOutletPort(); removeFromAirLoopHVAC(); } else if( t_oaSystem ) { if( t_oaSystem->oaComponent(node.handle()) ) { systemStartComponent = t_oaSystem->outboardOANode(); systemEndComponent = t_oaSystem.get(); componentInletPort = airInletPort(); componentOutletPort = airOutletPort(); } else if( t_oaSystem->reliefComponent(node.handle()) ) { systemStartComponent = t_oaSystem.get(); systemEndComponent = t_oaSystem->outboardReliefNode(); componentInletPort = airInletPort(); componentOutletPort = airOutletPort(); } removeFromAirLoopHVAC(); } else if( t_plantLoop ) { if( ! t_plantLoop->demandComponent( node.handle() ) ) return false; systemStartComponent = t_plantLoop->demandInletNode(); systemEndComponent = t_plantLoop->demandOutletNode(); componentInletPort = waterInletPort(); componentOutletPort = waterOutletPort(); removeFromPlantLoop(); } if( systemStartComponent && systemEndComponent && componentOutletPort && componentInletPort ) { return HVACComponent_Impl::addToNode(node,systemStartComponent.get(),systemEndComponent.get(),componentInletPort.get(),componentOutletPort.get()); } else { return false; } }