void TemperingValve_Impl::setControlNodes() { auto plant = plantLoop(); if( ! plant ) return; if( ! pumpOutletNode() ) { std::vector<ModelObject> allpumps; auto pumps = plant->supplyComponents(PumpVariableSpeed::iddObjectType()); allpumps.insert(allpumps.end(),pumps.begin(),pumps.end()); pumps = plant->supplyComponents(PumpConstantSpeed::iddObjectType()); allpumps.insert(allpumps.end(),pumps.begin(),pumps.end()); pumps = plant->supplyComponents(HeaderedPumpsConstantSpeed::iddObjectType()); allpumps.insert(allpumps.end(),pumps.begin(),pumps.end()); pumps = plant->supplyComponents(HeaderedPumpsVariableSpeed::iddObjectType()); allpumps.insert(allpumps.end(),pumps.begin(),pumps.end()); if( ! allpumps.empty() ) { if( auto mo = allpumps.back().cast<StraightComponent>().outletModelObject() ) { if( auto node = mo->optionalCast<Node>() ) { setPumpOutletNode(node); } } } } if( ! temperatureSetpointNode() ) { auto node = plant->supplyOutletNode(); setTemperatureSetpointNode(node); } auto mixer = plant->supplyMixer(); if( ! stream2SourceNode() ) { TemperingValve thisObject = getObject<TemperingValve>(); auto inletObjects = mixer.inletModelObjects(); for( auto & inletObject : inletObjects ) { if( auto node = inletObject.optionalCast<Node>() ) { if( plant->supplyComponents(thisObject,node.get()).empty() ) { setStream2SourceNode(node.get()); } } } } }
bool CoilHeatingElectric_Impl::addToNode(Node & node) { if( boost::optional<AirLoopHVAC> airLoop = node.airLoopHVAC() ) { if( ! airLoop->demandComponent(node.handle()) ) { if( StraightComponent_Impl::addToNode( node ) ) { if( boost::optional<Node> node = outletModelObject()->optionalCast<Node>() ) { setTemperatureSetpointNode(node.get()); } return true; } } } return false; }