| 2442 | } |
| 2443 | |
| 2444 | void ThermalZone_Impl::removeReturnPlenum(AirLoopHVAC& airLoop) { |
| 2445 | Model t_model = model(); |
| 2446 | |
| 2447 | auto zoneMixer = airLoop.zoneMixer(); |
| 2448 | auto modelObjects = airLoop.demandComponents(getObject<ThermalZone>(), zoneMixer); |
| 2449 | auto plenums = subsetCastVector<AirLoopHVACReturnPlenum>(modelObjects); |
| 2450 | boost::optional<AirLoopHVACReturnPlenum> plenum; |
| 2451 | |
| 2452 | if (!plenums.empty()) { |
| 2453 | plenum = plenums.front(); |
| 2454 | } |
| 2455 | |
| 2456 | if (plenum) { |
| 2457 | if (plenum->inletModelObjects().size() == 1u) { |
| 2458 | plenum->remove(); |
| 2459 | } else { |
| 2460 | auto it = std::find(modelObjects.begin(), modelObjects.end(), plenum.get()); |
| 2461 | ModelObject plenumInletModelObject = *(it - 1); |
| 2462 | unsigned branchIndex = plenum->branchIndexForInletModelObject(plenumInletModelObject); |
| 2463 | unsigned port = plenum->connectedObjectPort(plenum->inletPort(branchIndex)).get(); |
| 2464 | plenum->removePortForBranch(branchIndex); |
| 2465 | t_model.connect(plenumInletModelObject, port, zoneMixer, zoneMixer.nextInletPort()); |
| 2466 | } |
| 2467 | } |
| 2468 | } |
| 2469 | |
| 2470 | void ThermalZone_Impl::removeReturnPlenum() { |
| 2471 | auto loop = airLoopHVAC(); |
no test coverage detected