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

Method addDemandBranchForComponent

src/model/PlantLoop.cpp:555–617  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

553 }
554
555 bool PlantLoop_Impl::addDemandBranchForComponent(HVACComponent component, bool tertiary) {
556 Model _model = this->model();
557
558 if (component.model() != _model) {
559 return false;
560 }
561
562 Splitter splitter = this->demandSplitter();
563 Mixer mixer = this->demandMixer();
564
565 if (splitter.outletModelObjects().size() == 1u) {
566 if (boost::optional<ModelObject> mo = splitter.lastOutletModelObject()) {
567 if (boost::optional<Node> node = mo->optionalCast<Node>()) {
568 if ((node->outletModelObject().get() == mixer) && (node->inletModelObject().get() == splitter)) {
569 if (auto waterToWater = component.optionalCast<WaterToWaterComponent>()) {
570 if (tertiary) {
571 return waterToWater->addToTertiaryNode(node.get());
572 } else {
573 return waterToWater->addToNode(node.get());
574 }
575 } else {
576 return component.addToNode(node.get());
577 }
578 }
579 }
580 }
581 }
582
583 int nextOutletPort;
584 int nextInletPort;
585
586 nextOutletPort = splitter.nextOutletPort();
587 nextInletPort = mixer.nextInletPort();
588
589 Node node(_model);
590
591 _model.connect(splitter, nextOutletPort, node, node.inletPort());
592 _model.connect(node, node.outletPort(), mixer, nextInletPort);
593
594 bool result = false;
595
596 if (auto waterToWater = component.optionalCast<WaterToWaterComponent>()) {
597 if (tertiary) {
598 result = waterToWater->addToTertiaryNode(node);
599 } else {
600 result = waterToWater->addToNode(node);
601 }
602 } else {
603 result = component.addToNode(node);
604 }
605
606 if (result) {
607 return true;
608 } else {
609 _model.disconnect(node, node.outletPort());
610 _model.disconnect(node, node.inletPort());
611 node.remove();
612

Callers 15

translateCoilHeatingMethod · 0.80
translateCoilCoolingMethod · 0.80
translateFluidSysMethod · 0.80
translateHXMethod · 0.80
translateChillerMethod · 0.80
translateZnSysMethod · 0.80
translateSpaceMethod · 0.80
cloneMethod · 0.80
addBranchForZoneImplMethod · 0.80
cloneMethod · 0.80
cloneMethod · 0.80

Calls 15

demandSplitterMethod · 0.95
demandMixerMethod · 0.95
outletModelObjectsMethod · 0.80
lastOutletModelObjectMethod · 0.80
modelMethod · 0.45
sizeMethod · 0.45
getMethod · 0.45
outletModelObjectMethod · 0.45
inletModelObjectMethod · 0.45
addToTertiaryNodeMethod · 0.45
addToNodeMethod · 0.45
nextOutletPortMethod · 0.45

Tested by 15

TEST_FFunction · 0.64
TEST_FFunction · 0.64
TEST_FFunction · 0.64
TEST_FFunction · 0.64
TEST_FFunction · 0.64
TEST_FFunction · 0.64
TEST_FFunction · 0.64
TEST_FFunction · 0.64
TEST_FFunction · 0.64
TEST_FFunction · 0.64
TEST_FFunction · 0.64
TEST_FFunction · 0.64