| 259 | } |
| 260 | |
| 261 | std::vector<IdfObject> AirLoopHVACOutdoorAirSystem_Impl::remove() { |
| 262 | // Handle h = this->handle(); |
| 263 | |
| 264 | ModelObjectVector modelObjects; |
| 265 | ModelObjectVector::iterator it; |
| 266 | modelObjects = this->components(); |
| 267 | for (it = modelObjects.begin(); it != modelObjects.end(); ++it) { |
| 268 | if (OptionalHVACComponent comp = it->optionalCast<HVACComponent>()) { |
| 269 | if (!it->handle().isNull()) { |
| 270 | comp->disconnect(); |
| 271 | comp->remove(); |
| 272 | } |
| 273 | } |
| 274 | } |
| 275 | |
| 276 | //reliefAirModelObject()->remove(); |
| 277 | //outdoorAirModelObject()->remove(); |
| 278 | model().disconnect(getObject<ModelObject>(), outdoorAirPort()); |
| 279 | model().disconnect(getObject<ModelObject>(), reliefAirPort()); |
| 280 | |
| 281 | if (auto airLoop_ = this->airLoopHVAC()) { |
| 282 | OptionalNode targetModelObject; |
| 283 | OptionalNode sourceModelObject; |
| 284 | targetModelObject = this->mixedAirModelObject()->optionalCast<Node>(); |
| 285 | sourceModelObject = this->returnAirModelObject()->optionalCast<Node>(); |
| 286 | // OptionalUnsigned targetPort = this->connectedObjectPort(openstudio::OS_AirLoopHVAC_OutdoorAirSystemFields::MixedAirNodeName); |
| 287 | OptionalUnsigned sourcePort = this->connectedObjectPort(openstudio::OS_AirLoopHVAC_OutdoorAirSystemFields::ReturnAirStreamNodeName); |
| 288 | |
| 289 | OptionalModelObject target2ModelObject = targetModelObject->outletModelObject(); |
| 290 | OptionalModelObject source2ModelObject = sourceModelObject->inletModelObject(); |
| 291 | OptionalUnsigned target2Port = targetModelObject->connectedObjectPort(targetModelObject->outletPort()); |
| 292 | OptionalUnsigned source2Port = sourceModelObject->connectedObjectPort(sourceModelObject->inletPort()); |
| 293 | |
| 294 | OptionalNode supplyInletNode = airLoop_->supplyInletNode(); |
| 295 | OptionalNode supplyOutletNode = OptionalNode(airLoop_->supplyOutletNodes().front()); |
| 296 | |
| 297 | model().disconnect(getObject<ModelObject>(), returnAirPort()); |
| 298 | model().disconnect(getObject<ModelObject>(), mixedAirPort()); |
| 299 | |
| 300 | // If the component is stuck directly between the inlet and outlet node. |
| 301 | if (supplyInletNode->handle() == sourceModelObject->handle() && supplyOutletNode->handle() == targetModelObject->handle()) { |
| 302 | this->model().connect(supplyInletNode.get(), supplyInletNode->outletPort(), supplyOutletNode.get(), supplyOutletNode->inletPort()); |
| 303 | } |
| 304 | // If the component is at the very end of the supply path, but there is another component |
| 305 | // preceding this one. |
| 306 | else if (supplyOutletNode->handle() == targetModelObject->handle()) { |
| 307 | sourceModelObject->remove(); |
| 308 | this->model().connect(source2ModelObject.get(), source2Port.get(), supplyOutletNode.get(), supplyOutletNode->inletPort()); |
| 309 | } |
| 310 | // else remove the component and the outlet node |
| 311 | else { |
| 312 | targetModelObject->remove(); |
| 313 | this->model().connect(sourceModelObject.get(), sourcePort.get(), target2ModelObject.get(), target2Port.get()); |
| 314 | } |
| 315 | } |
| 316 | |
| 317 | getControllerOutdoorAir().remove(); |
| 318 |
nothing calls this directly
no test coverage detected