MCPcopy Create free account
hub / github.com/NatLabRockies/OpenStudio / addToNode

Method addToNode

src/model/AirLoopHVACOutdoorAirSystem.cpp:460–531  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

458 }
459
460 bool AirLoopHVACOutdoorAirSystem_Impl::addToNode(Node& node) {
461
462 auto airLoop_ = node.airLoopHVAC();
463
464 if (!airLoop_) {
465 return false;
466 }
467
468 if (!airLoop_->supplyComponents(this->iddObjectType()).empty()) {
469 LOG(Warn, "AirLoopHVAC " << airLoop_->nameString() << " already has an AirLoopHVACOutdoorAirSystem assigned.");
470 return false;
471 }
472
473 if (!airLoop_->supplyComponent(node.handle())) {
474 return false;
475 }
476
477 Model _model = node.model();
478 auto thisModelObject = getObject<ModelObject>();
479
480 if (node == airLoop_->supplyOutletNodes().front() && node.inletModelObject().get() == airLoop_->supplyInletNode()) {
481 const unsigned oldOutletPort = node.connectedObjectPort(node.inletPort()).get();
482 const unsigned oldInletPort = node.inletPort();
483 ModelObject oldSourceModelObject = node.connectedObject(node.inletPort()).get();
484 ModelObject oldTargetModelObject = node;
485
486 _model.connect(std::move(oldSourceModelObject), oldOutletPort, thisModelObject, returnAirPort());
487 _model.connect(std::move(thisModelObject), mixedAirPort(), std::move(oldTargetModelObject), oldInletPort);
488 return true;
489 }
490
491 if (node == airLoop_->supplyInletNode() && node.outletModelObject().get() == airLoop_->supplyOutletNodes().front()) {
492 const unsigned oldOutletPort = node.outletPort();
493 const unsigned oldInletPort = node.connectedObjectPort(node.outletPort()).get();
494 ModelObject oldSourceModelObject = node;
495 ModelObject oldTargetModelObject = node.outletModelObject().get();
496
497 _model.connect(std::move(oldSourceModelObject), oldOutletPort, thisModelObject, returnAirPort());
498 _model.connect(std::move(thisModelObject), mixedAirPort(), std::move(oldTargetModelObject), oldInletPort);
499 return true;
500 }
501
502 if (node == airLoop_->supplyOutletNodes().front()) {
503 const unsigned oldOutletPort = node.connectedObjectPort(node.inletPort()).get();
504 const unsigned oldInletPort = node.inletPort();
505 ModelObject oldSourceModelObject = node.connectedObject(node.inletPort()).get();
506 ModelObject oldTargetModelObject = node;
507
508 Node newNode(_model);
509 const unsigned newNodeInletPort = newNode.inletPort();
510 const unsigned newNodeOutletPort = newNode.outletPort();
511 _model.connect(std::move(oldSourceModelObject), oldOutletPort, newNode, newNodeInletPort);
512 _model.connect(std::move(newNode), newNodeOutletPort, thisModelObject, returnAirPort());
513 _model.connect(std::move(thisModelObject), mixedAirPort(), std::move(oldTargetModelObject), oldInletPort);
514 return true;
515 }
516
517 {

Callers 1

cloneMethod · 0.45

Calls 15

iddObjectTypeMethod · 0.95
supplyComponentsMethod · 0.80
nameStringMethod · 0.80
supplyComponentMethod · 0.80
connectedObjectPortMethod · 0.80
connectedObjectMethod · 0.80
airLoopHVACMethod · 0.45
emptyMethod · 0.45
handleMethod · 0.45
modelMethod · 0.45
supplyOutletNodesMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected