| 2344 | } |
| 2345 | |
| 2346 | void ThermalZone_Impl::removeSupplyPlenum(const AirLoopHVAC& airloop, unsigned branchIndex) { |
| 2347 | Model m = model(); |
| 2348 | |
| 2349 | auto zoneSplitters = airloop.zoneSplitters(); |
| 2350 | if (branchIndex < zoneSplitters.size()) { |
| 2351 | auto zoneSplitter = zoneSplitters[branchIndex]; |
| 2352 | |
| 2353 | auto modelObjects = airloop.demandComponents(zoneSplitter, getObject<ThermalZone>()); |
| 2354 | auto plenums = subsetCastVector<AirLoopHVACSupplyPlenum>(modelObjects); |
| 2355 | boost::optional<AirLoopHVACSupplyPlenum> plenum; |
| 2356 | |
| 2357 | if (!plenums.empty()) { |
| 2358 | auto plenum = plenums.front(); |
| 2359 | |
| 2360 | if (plenum.outletModelObjects().size() == 1u) { |
| 2361 | plenum.remove(); |
| 2362 | } else { |
| 2363 | auto it = std::find(modelObjects.begin(), modelObjects.end(), plenum); |
| 2364 | ModelObject plenumOutletModelObject = *(it + 1); |
| 2365 | unsigned branchIndex = plenum.branchIndexForOutletModelObject(plenumOutletModelObject); |
| 2366 | unsigned port = plenum.connectedObjectPort(plenum.outletPort(branchIndex)).get(); |
| 2367 | plenum.removePortForBranch(branchIndex); |
| 2368 | m.connect(zoneSplitter, zoneSplitter.nextOutletPort(), plenumOutletModelObject, port); |
| 2369 | } |
| 2370 | } |
| 2371 | } |
| 2372 | } |
| 2373 | |
| 2374 | void ThermalZone_Impl::removeSupplyPlenum(unsigned branchIndex) { |
| 2375 | auto airloop = airLoopHVAC(); |