Plant Builder
The Plant class provides a builder pattern for aggregating and managing DOE-2 plant systems. It groups circulation loops with their associated equipment (pumps, boilers, chillers, heat rejection, etc.) and provides visualization capabilities.
Visualization Example
The Visualize() method generates a Mermaid flowchart diagram showing the plant's structure:
#r "path\MermaidDotNet.dll"
using MermaidDotNet.Models;
string inpPath = @"building.inp";
Model model = Model.OpenFromFile(inpPath);
Plant wlhpPlant = Plant.CreateWlhpPlant(model);
display(new MermaidMarkdown(wlhpPlant.Visualize()));

Key Features
- Loop Aggregation: Groups circulation loops and their equipment
- Automatic Discovery:
Load()method finds all connected equipment - Visualization: Generates Mermaid diagrams of plant topology
- Factory Methods: Static methods for common plant configurations
Plant Collections
The Plant class exposes collections for all equipment types:
CirculationLoops: The loops that make up the plantPumps: All pumps serving the plant loopsBoilers: Heating equipment connected to loopsChillers: Cooling equipment connected to loopsHeatRejections: Cooling towers and heat rejection equipmentDhwHeaters: Domestic hot water heatersEquipmentControls: Control sequences for equipmentLoadManagements: Load management strategies
Factory Methods
Static factory methods create complete plant configurations:
WLHP Plant
Creates a water-loop heat pump plant with cooling tower, backup boiler, and GHX dummy:
Plant wlhpPlant = Plant.CreateWlhpPlant(model, plantCop: 4.5, heatPumpCutoffTempF: 5);
ASHP Plant
Creates an air-source heat pump plant with CHW/HW loops and staged heating:
Plant ashpPlant = Plant.CreateAshpPlant(model, cutOffTempDegreeF: 5);
Staged ASHP Plant
Creates a multi-stage air-source heat pump:
Plant stagedAshpPlant = Plant.CreateStagedAshpPlant(model);
DHW Plants
Creates domestic hot water plants with various configurations:
Plant ashpDhwPlant = Plant.CreateAshpDhwPlant(model);
Plant elecDhwPlant = Plant.CreateElecDhwPlant(model);
Loading Plant Data
The Load() method automatically discovers all equipment connected to the plant's loops:
var plant = new Plant(model)
.AddLoop("Chilled Water Loop")
.AddLoop("Hot Water Loop");
plant.Load(model); // Discovers all connected equipment
This populates all the equipment collections and collects referenced schedules and curves.
See the Plant API documentation for complete details.