Line data Source code
1 : // EnergyPlus, Copyright (c) 1996-2025, The Board of Trustees of the University of Illinois,
2 : // The Regents of the University of California, through Lawrence Berkeley National Laboratory
3 : // (subject to receipt of any required approvals from the U.S. Dept. of Energy), Oak Ridge
4 : // National Laboratory, managed by UT-Battelle, Alliance for Sustainable Energy, LLC, and other
5 : // contributors. All rights reserved.
6 : //
7 : // NOTICE: This Software was developed under funding from the U.S. Department of Energy and the
8 : // U.S. Government consequently retains certain rights. As such, the U.S. Government has been
9 : // granted for itself and others acting on its behalf a paid-up, nonexclusive, irrevocable,
10 : // worldwide license in the Software to reproduce, distribute copies to the public, prepare
11 : // derivative works, and perform publicly and display publicly, and to permit others to do so.
12 : //
13 : // Redistribution and use in source and binary forms, with or without modification, are permitted
14 : // provided that the following conditions are met:
15 : //
16 : // (1) Redistributions of source code must retain the above copyright notice, this list of
17 : // conditions and the following disclaimer.
18 : //
19 : // (2) Redistributions in binary form must reproduce the above copyright notice, this list of
20 : // conditions and the following disclaimer in the documentation and/or other materials
21 : // provided with the distribution.
22 : //
23 : // (3) Neither the name of the University of California, Lawrence Berkeley National Laboratory,
24 : // the University of Illinois, U.S. Dept. of Energy nor the names of its contributors may be
25 : // used to endorse or promote products derived from this software without specific prior
26 : // written permission.
27 : //
28 : // (4) Use of EnergyPlus(TM) Name. If Licensee (i) distributes the software in stand-alone form
29 : // without changes from the version obtained under this License, or (ii) Licensee makes a
30 : // reference solely to the software portion of its product, Licensee must refer to the
31 : // software as "EnergyPlus version X" software, where "X" is the version number Licensee
32 : // obtained under this License and may not use a different name for the software. Except as
33 : // specifically required in this Section (4), Licensee shall not use in a company name, a
34 : // product name, in advertising, publicity, or other promotional activities any name, trade
35 : // name, trademark, logo, or other designation of "EnergyPlus", "E+", "e+" or confusingly
36 : // similar designation, without the U.S. Department of Energy's prior written consent.
37 : //
38 : // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
39 : // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
40 : // AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
41 : // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
42 : // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
43 : // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
44 : // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
45 : // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
46 : // POSSIBILITY OF SUCH DAMAGE.
47 :
48 : #ifndef DataPlant_hh_INCLUDED
49 : #define DataPlant_hh_INCLUDED
50 :
51 : // C++ Headers
52 : #include <numeric>
53 :
54 : // ObjexxFCL Headers
55 : #include <ObjexxFCL/Array1D.hh>
56 :
57 : // EnergyPlus Headers
58 : #include <EnergyPlus/Data/BaseData.hh>
59 : #include <EnergyPlus/DataGlobals.hh>
60 : #include <EnergyPlus/DataLoopNode.hh>
61 : #include <EnergyPlus/EnergyPlus.hh>
62 : #include <EnergyPlus/Plant/CallingOrder.hh>
63 : #include <EnergyPlus/Plant/Enums.hh>
64 : #include <EnergyPlus/Plant/Loop.hh>
65 : #include <EnergyPlus/Plant/ReportLoopData.hh>
66 :
67 : namespace EnergyPlus {
68 :
69 : namespace DataPlant {
70 :
71 : // Using/Aliasing
72 : using DataLoopNode::SensedNodeFlagValue;
73 :
74 : // Criteria percentage limits for determining re-simulation of connected loop sides
75 : constexpr Real64 CriteriaDelta_MassFlowRate(0.001);
76 : constexpr Real64 CriteriaDelta_Temperature(0.010);
77 : constexpr Real64 CriteriaDelta_HeatTransferRate(0.100);
78 :
79 : // Parameters for tolerance
80 : constexpr Real64 LoopDemandTol(0.1); // minimum significant loop cooling or heating demand
81 : constexpr Real64 DeltaTempTol(0.0001); // minimum significant loop temperature difference
82 :
83 : // Parameters for Component/Equipment Types (ref: TypeOf in CompData)
84 :
85 : static constexpr std::array<std::string_view, static_cast<int>(PlantEquipmentType::Num)> PlantEquipTypeNames{
86 : "Boiler:HotWater",
87 : "Boiler:Steam",
88 : "Chiller:Absorption",
89 : "Chiller:Absorption:Indirect",
90 : "Chiller:CombustionTurbine",
91 : "Chiller:ConstantCOP",
92 : "ChillerHeater:Absorption:DirectFired",
93 : "Chiller:Electric",
94 : "Chiller:Electric:EIR",
95 : "Chiller:Electric:ReformulatedEIR",
96 : "Chiller:Electric:ASHRAE205",
97 : "Chiller:EngineDriven",
98 : "CoolingTower:SingleSpeed",
99 : "CoolingTower:TwoSpeed",
100 : "CoolingTower:VariableSpeed",
101 : "Generator:Fuelcell:ExhaustGastoWaterHeatExchanger",
102 : "WaterHeater:HeatPump:PumpedCondenser",
103 : "Heatpump:WatertoWater:Equationfit:Cooling",
104 : "Heatpump:WatertoWater:Equationfit:Heating",
105 : "Heatpump:WatertoWater:ParameterEstimation:Cooling",
106 : "Heatpump:WatertoWater:ParameterEstimation:Heating",
107 : "Pipe:Adiabatic",
108 : "Pipe:Adiabatic:Steam",
109 : "Pipe:Outdoor",
110 : "Pipe:Indoor",
111 : "Pipe:Underground",
112 : "DistrictCooling",
113 : "DistrictHeating:Water",
114 : "ThermalStorage:Ice:Detailed",
115 : "ThermalStorage:Ice:Simple",
116 : "TemperingValve",
117 : "WaterHeater:Mixed",
118 : "WaterHeater:Stratified",
119 : "Pump:VariableSpeed",
120 : "Pump:ConstantSpeed",
121 : "Pump:VariableSpeed:Condensate",
122 : "HeaderedPumps:VariableSpeed",
123 : "HeaderedPumps:ConstantSpeed",
124 : "WaterUse:Connections",
125 : "Coil:Cooling:Water",
126 : "Coil:Cooling:Water:DetailedGeometry",
127 : "Coil:Heating:Water",
128 : "Coil:Heating:Steam",
129 : "Solarcollector:Flatplate:Water",
130 : "LoadProfile:Plant",
131 : "GroundHeatExchanger:System",
132 : "GroundHeatExchanger:Surface",
133 : "GroundHeatExchanger:Pond",
134 : "Generator:Microturbine",
135 : "Generator:InternalCombustionEngine",
136 : "Generator:CombustionTurbine",
137 : "Generator:Microchp",
138 : "Generator:Fuelcell:StackCooler",
139 : "FluidCooler:SingleSpeed",
140 : "FluidCooler:TwoSpeed",
141 : "EvaporativeFluidCooler:SingleSpeed",
142 : "EvaporativeFluidCooler:TwoSpeed",
143 : "ThermalStorage:ChilledWater:Mixed",
144 : "ThermalStorage:ChilledWater:Stratified",
145 : "SolarCollector:FlatPlate:PhotovoltaicThermal",
146 : "ZoneHVAC:Baseboard:Convective:Water",
147 : "ZoneHVAC:Baseboard:RadiantConvective:Steam",
148 : "ZoneHVAC:Baseboard:RadiantConvective:Water",
149 : "ZoneHVAC:LowTemperatureRadiant:VariableFlow",
150 : "ZoneHVAC:LowTemperatureRadiant:ConstantFlow",
151 : "AirTerminal:SingleDuct:ConstantVolume:CooledBeam",
152 : "Coil:Heating:WaterToAirHeatPump:EquationFit",
153 : "Coil:Cooling:WaterToAirHeatPump:EquationFit",
154 : "Coil:Heating:WaterToAirHeatPump:ParameterEstimation",
155 : "Coil:Cooling:WaterToAirHeatPump:ParameterEstimation",
156 : "Refrigeration:Condenser:WaterCooled",
157 : "Refrigeration:CompressorRack",
158 : "AirLoopHVAC:UnitaryHeatPump:AirToAir:MultiSpeed",
159 : "ChillerHeater:Absorption:DoubleEffect",
160 : "PipingSystem:Underground:PipeCircuit",
161 : "SolarCollector:IntegralCollectorStorage",
162 : "Coil:Heating:WaterToAirHeatPump:VariableSpeedEquationFit",
163 : "Coil:Cooling:WaterToAirHeatPump:VariableSpeedEquationFit",
164 : "PlantComponent:UserDefined",
165 : "Coil:UserDefined",
166 : "ZoneHVAC:ForcedAir:UserDefined",
167 : "AirTerminal:SingleDuct:UserDefined",
168 : "AirConditioner:VariableRefrigerantFlow",
169 : "GroundHeatExchanger:HorizontalTrench",
170 : "HeatExchanger:FluidToFluid",
171 : "PlantComponent:TemperatureSource",
172 : "CentralHeatPumpSystem",
173 : "AirLoopHVAC:UnitarySystem",
174 : "Coil:Cooling:DX:SingleSpeed:ThermalStorage",
175 : "CoolingTower:VariableSpeed:Merkel",
176 : "SwimmingPool:Indoor",
177 : "GroundHeatExchanger:Slinky",
178 : "WaterHeater:HeatPump:WrappedCondenser",
179 : "AirTerminal:SingleDuct:ConstantVolume:FourPipeBeam",
180 : "ZoneHVAC:CoolingPanel:RadiantConvective:Water",
181 : "HeatPump:PlantLoop:EIR:Cooling",
182 : "HeatPump:PlantLoop:EIR:Heating",
183 : "HeatPump:AirToWater:FuelFired:Cooling",
184 : "HeatPump:AirToWater:FuelFired:Heating",
185 : "DistrictHeating:Steam"};
186 :
187 : static constexpr std::array<std::string_view, static_cast<size_t>(PlantEquipmentType::Num)> PlantEquipTypeNamesUC{
188 : "BOILER:HOTWATER",
189 : "BOILER:STEAM",
190 : "CHILLER:ABSORPTION",
191 : "CHILLER:ABSORPTION:INDIRECT",
192 : "CHILLER:COMBUSTIONTURBINE",
193 : "CHILLER:CONSTANTCOP",
194 : "CHILLERHEATER:ABSORPTION:DIRECTFIRED",
195 : "CHILLER:ELECTRIC",
196 : "CHILLER:ELECTRIC:EIR",
197 : "CHILLER:ELECTRIC:REFORMULATEDEIR",
198 : "CHILLER:ELECTRIC:ASHRAE205",
199 : "CHILLER:ENGINEDRIVEN",
200 : "COOLINGTOWER:SINGLESPEED",
201 : "COOLINGTOWER:TWOSPEED",
202 : "COOLINGTOWER:VARIABLESPEED",
203 : "GENERATOR:FUELCELL:EXHAUSTGASTOWATERHEATEXCHANGER",
204 : "WATERHEATER:HEATPUMP:PUMPEDCONDENSER",
205 : "HEATPUMP:WATERTOWATER:EQUATIONFIT:COOLING",
206 : "HEATPUMP:WATERTOWATER:EQUATIONFIT:HEATING",
207 : "HEATPUMP:WATERTOWATER:PARAMETERESTIMATION:COOLING",
208 : "HEATPUMP:WATERTOWATER:PARAMETERESTIMATION:HEATING",
209 : "PIPE:ADIABATIC",
210 : "PIPE:ADIABATIC:STEAM",
211 : "PIPE:OUTDOOR",
212 : "PIPE:INDOOR",
213 : "PIPE:UNDERGROUND",
214 : "DISTRICTCOOLING",
215 : "DISTRICTHEATING:WATER",
216 : "THERMALSTORAGE:ICE:DETAILED",
217 : "THERMALSTORAGE:ICE:SIMPLE",
218 : "TEMPERINGVALVE",
219 : "WATERHEATER:MIXED",
220 : "WATERHEATER:STRATIFIED",
221 : "PUMP:VARIABLESPEED",
222 : "PUMP:CONSTANTSPEED",
223 : "PUMP:VARIABLESPEED:CONDENSATE",
224 : "HEADEREDPUMPS:VARIABLESPEED",
225 : "HEADEREDPUMPS:CONSTANTSPEED",
226 : "WATERUSE:CONNECTIONS",
227 : "COIL:COOLING:WATER",
228 : "COIL:COOLING:WATER:DETAILEDGEOMETRY",
229 : "COIL:HEATING:WATER",
230 : "COIL:HEATING:STEAM",
231 : "SOLARCOLLECTOR:FLATPLATE:WATER",
232 : "LOADPROFILE:PLANT",
233 : "GROUNDHEATEXCHANGER:SYSTEM",
234 : "GROUNDHEATEXCHANGER:SURFACE",
235 : "GROUNDHEATEXCHANGER:POND",
236 : "GENERATOR:MICROTURBINE",
237 : "GENERATOR:INTERNALCOMBUSTIONENGINE",
238 : "GENERATOR:COMBUSTIONTURBINE",
239 : "GENERATOR:MICROCHP",
240 : "GENERATOR:FUELCELL:STACKCOOLER",
241 : "FLUIDCOOLER:SINGLESPEED",
242 : "FLUIDCOOLER:TWOSPEED",
243 : "EVAPORATIVEFLUIDCOOLER:SINGLESPEED",
244 : "EVAPORATIVEFLUIDCOOLER:TWOSPEED",
245 : "THERMALSTORAGE:CHILLEDWATER:MIXED",
246 : "THERMALSTORAGE:CHILLEDWATER:STRATIFIED",
247 : "SOLARCOLLECTOR:FLATPLATE:PHOTOVOLTAICTHERMAL",
248 : "ZONEHVAC:BASEBOARD:CONVECTIVE:WATER",
249 : "ZONEHVAC:BASEBOARD:RADIANTCONVECTIVE:STEAM",
250 : "ZONEHVAC:BASEBOARD:RADIANTCONVECTIVE:WATER",
251 : "ZONEHVAC:LOWTEMPERATURERADIANT:VARIABLEFLOW",
252 : "ZONEHVAC:LOWTEMPERATURERADIANT:CONSTANTFLOW",
253 : "AIRTERMINAL:SINGLEDUCT:CONSTANTVOLUME:COOLEDBEAM",
254 : "COIL:HEATING:WATERTOAIRHEATPUMP:EQUATIONFIT",
255 : "COIL:COOLING:WATERTOAIRHEATPUMP:EQUATIONFIT",
256 : "COIL:HEATING:WATERTOAIRHEATPUMP:PARAMETERESTIMATION",
257 : "COIL:COOLING:WATERTOAIRHEATPUMP:PARAMETERESTIMATION",
258 : "REFRIGERATION:CONDENSER:WATERCOOLED",
259 : "REFRIGERATION:COMPRESSORRACK",
260 : "AIRLOOPHVAC:UNITARYHEATPUMP:AIRTOAIR:MULTISPEED",
261 : "CHILLERHEATER:ABSORPTION:DOUBLEEFFECT",
262 : "PIPINGSYSTEM:UNDERGROUND:PIPECIRCUIT",
263 : "SOLARCOLLECTOR:INTEGRALCOLLECTORSTORAGE",
264 : "COIL:HEATING:WATERTOAIRHEATPUMP:VARIABLESPEEDEQUATIONFIT",
265 : "COIL:COOLING:WATERTOAIRHEATPUMP:VARIABLESPEEDEQUATIONFIT",
266 : "PLANTCOMPONENT:USERDEFINED",
267 : "COIL:USERDEFINED",
268 : "ZONEHVAC:FORCEDAIR:USERDEFINED",
269 : "AIRTERMINAL:SINGLEDUCT:USERDEFINED",
270 : "AIRCONDITIONER:VARIABLEREFRIGERANTFLOW",
271 : "GROUNDHEATEXCHANGER:HORIZONTALTRENCH",
272 : "HEATEXCHANGER:FLUIDTOFLUID",
273 : "PLANTCOMPONENT:TEMPERATURESOURCE",
274 : "CENTRALHEATPUMPSYSTEM",
275 : "AIRLOOPHVAC:UNITARYSYSTEM",
276 : "COIL:COOLING:DX:SINGLESPEED:THERMALSTORAGE",
277 : "COOLINGTOWER:VARIABLESPEED:MERKEL",
278 : "SWIMMINGPOOL:INDOOR",
279 : "GROUNDHEATEXCHANGER:SLINKY",
280 : "WATERHEATER:HEATPUMP:WRAPPEDCONDENSER",
281 : "AIRTERMINAL:SINGLEDUCT:CONSTANTVOLUME:FOURPIPEBEAM",
282 : "ZONEHVAC:COOLINGPANEL:RADIANTCONVECTIVE:WATER",
283 : "HEATPUMP:PLANTLOOP:EIR:COOLING",
284 : "HEATPUMP:PLANTLOOP:EIR:HEATING",
285 : "HEATPUMP:AIRTOWATER:FUELFIRED:COOLING",
286 : "HEATPUMP:AIRTOWATER:FUELFIRED:HEATING",
287 : "DISTRICTHEATING:STEAM"};
288 :
289 : static constexpr std::array<LoopType, static_cast<size_t>(PlantEquipmentType::Num)> ValidLoopEquipTypes{
290 : LoopType::Plant, // "Boiler:HotWater"
291 : LoopType::Plant, // "Boiler:Steam"
292 : LoopType::Plant, // "Chiller:Absorption"
293 : LoopType::Plant, // "Chiller:Absorption:Indirect"
294 : LoopType::Plant, // "Chiller:CombustionTurbine"
295 : LoopType::Plant, // "Chiller:ConstantCOP"
296 : LoopType::Plant, // "ChillerHeater:Absorption:DirectFired"
297 : LoopType::Plant, // "Chiller:Electric"
298 : LoopType::Plant, // "Chiller:Electric:EIR"
299 : LoopType::Plant, // "Chiller:Electric:ReformulatedEIR"
300 : LoopType::Plant, // "Chiller:Electric:ASHRAE205"
301 : LoopType::Plant, // "Chiller:EngineDriven"
302 : LoopType::Both, // "CoolingTower:SingleSpeed"
303 : LoopType::Both, // "CoolingTower:TwoSpeed"
304 : LoopType::Both, // "CoolingTower:VariableSpeed"
305 : LoopType::Plant, // "Generator:Fuelcell:ExhaustGastoWaterHeatExchanger"
306 : LoopType::Plant, // "WaterHeater:HeatPump:PumpedCondenser"
307 : LoopType::Plant, // "Heatpump:WatertoWater:Equationfit:Cooling"
308 : LoopType::Plant, // "Heatpump:WatertoWater:Equationfit:Heating"
309 : LoopType::Plant, // "Heatpump:WatertoWater:ParameterEstimation:Cooling"
310 : LoopType::Plant, // "Heatpump:WatertoWater:ParameterEstimation:Heating"
311 : LoopType::Both, // "Pipe:Adiabatic"
312 : LoopType::Both, // "Pipe:Adiabatic:Steam"
313 : LoopType::Both, // "Pipe:Outdoor"
314 : LoopType::Both, // "Pipe:Indoor"
315 : LoopType::Both, // "Pipe:Underground"
316 : LoopType::Both, // "DistrictCooling"
317 : LoopType::Both, // "DistrictHeating:Water"
318 : LoopType::Plant, // "ThermalStorage:Ice:Detailed"
319 : LoopType::Plant, // "ThermalStorage:Ice:Simple"
320 : LoopType::Both, // "TemperingValve"
321 : LoopType::Both, // "WaterHeater:Mixed"
322 : LoopType::Both, // "WaterHeater:Stratified"
323 : LoopType::Both, // "Pump:VariableSpeed"
324 : LoopType::Both, // "Pump:ConstantSpeed"
325 : LoopType::Both, // "Pump:VariableSpeed:Condensate"
326 : LoopType::Both, // "HeaderedPumps:VariableSpeed"
327 : LoopType::Both, // "HeaderedPumps:ConstantSpeed"
328 : LoopType::Plant, // "WaterUse:Connections"
329 : LoopType::Plant, // "Coil:Cooling:Water"
330 : LoopType::Plant, // "Coil:Cooling:Water:DetailedGeometry"
331 : LoopType::Plant, // "Coil:Heating:Water"
332 : LoopType::Plant, // "Coil:Heating:Steam"
333 : LoopType::Plant, // "Solarcollector:Flatplate:Water"
334 : LoopType::Both, // "LoadProfile:Plant"
335 : LoopType::Both, // "GroundHeatExchanger:System"
336 : LoopType::Both, // "GroundHeatExchanger:Surface"
337 : LoopType::Both, // "GroundHeatExchanger:Pond"
338 : LoopType::Plant, // "Generator:Microturbine"
339 : LoopType::Plant, // "Generator:InternalCombustionEngine"
340 : LoopType::Plant, // "Generator:CombustionTurbine"
341 : LoopType::Plant, // "Generator:Microchp"
342 : LoopType::Plant, // "Generator:Fuelcell:StackCooler"
343 : LoopType::Both, // "FluidCooler:SingleSpeed"
344 : LoopType::Both, // "FluidCooler:TwoSpeed"
345 : LoopType::Both, // "EvaporativeFluidCooler:SingleSpeed"
346 : LoopType::Both, // "EvaporativeFluidCooler:TwoSpeed"
347 : LoopType::Both, // "ThermalStorage:ChilledWater:Mixed"
348 : LoopType::Both, // "ThermalStorage:ChilledWater:Stratified"
349 : LoopType::Both, // "SolarCollector:FlatPlate:PhotovoltaicThermal"
350 : LoopType::Plant, // "ZoneHVAC:Baseboard:Convective:Water"
351 : LoopType::Plant, // "ZoneHVAC:Baseboard:RadiantConvective:Steam"
352 : LoopType::Plant, // "ZoneHVAC:Baseboard:RadiantConvective:Water"
353 : LoopType::Plant, // "ZoneHVAC:LowTemperatureRadiant:VariableFlow"
354 : LoopType::Plant, // "ZoneHVAC:LowTemperatureRadiant:ConstantFlow"
355 : LoopType::Both, // "AirTerminal:SingleDuct:ConstantVolume:CooledBeam"
356 : LoopType::Both, // "Coil:Heating:WaterToAirHeatPump:EquationFit"
357 : LoopType::Both, // "Coil:Cooling:WaterToAirHeatPump:EquationFit"
358 : LoopType::Both, // "Coil:Heating:WaterToAirHeatPump:ParameterEstimation"
359 : LoopType::Both, // "Coil:Cooling:WaterToAirHeatPump:ParameterEstimation"
360 : LoopType::Both, // "Refrigeration:Condenser:WaterCooled"
361 : LoopType::Both, // "Refrigeration:CompressorRack"
362 : LoopType::Plant, // "AirLoopHVAC:UnitaryHeatPump:AirToAir:MultiSpeed"
363 : LoopType::Plant, // "ChillerHeater:Absorption:DoubleEffect"
364 : LoopType::Both, // "PipingSystem:Underground:PipeCircuit"
365 : LoopType::Both, // "SolarCollector:IntegralCollectorStorage"
366 : LoopType::Both, // "Coil:Heating:WaterToAirHeatPump:VariableSpeedEquationFit"
367 : LoopType::Both, // "Coil:Cooling:WaterToAirHeatPump:VariableSpeedEquationFit"
368 : LoopType::Both, // "PlantComponent:UserDefined"
369 : LoopType::Both, // "Coil:UserDefined"
370 : LoopType::Both, // "ZoneHVAC:ForcedAir:UserDefined"
371 : LoopType::Both, // "AirTerminal:SingleDuct:UserDefined"
372 : LoopType::Both, // "AirConditioner:VariableRefrigerantFlow"
373 : LoopType::Both, // "GroundHeatExchanger:HorizontalTrench"
374 : LoopType::Both, // "HeatExchanger:FluidToFluid"
375 : LoopType::Both, // "PlantComponent:TemperatureSource"
376 : LoopType::Plant, // "CentralHeatPumpSystem"
377 : LoopType::Plant, // "AirLoopHVAC:UnitarySystem"
378 : LoopType::Both, // "Coil:Cooling:DX:SingleSpeed:ThermalStorage"
379 : LoopType::Both, // "CoolingTower:VariableSpeed:Merkel"
380 : LoopType::Both, // "SwimmingPool:Indoor"
381 : LoopType::Both, // "GroundHeatExchanger:Slinky"
382 : LoopType::Plant, // "WaterHeater:HeatPump:WrappedCondenser"
383 : LoopType::Plant, // "AirTerminal:SingleDuct:ConstantVolume:FourPipeBeam"
384 : LoopType::Plant, // "ZoneHVAC:CoolingPanel:RadiantConvective:Water"
385 : LoopType::Both, // "HeatPump:PlantLoop:EIR:Cooling"
386 : LoopType::Both, // "HeatPump:PlantLoop:EIR:Heating"
387 : LoopType::Both // "DistrictHeating:Steam"
388 : };
389 : } // namespace DataPlant
390 :
391 : struct DataPlantData : BaseGlobalStruct
392 : {
393 :
394 : int TotNumLoops = 0; // number of plant and condenser loops
395 : int TotNumHalfLoops = 0; // number of half loops (2 * TotNumLoops)
396 : bool PlantFirstSizeCompleted = false;
397 : bool PlantFirstSizesOkayToFinalize = false; // true if plant sizing is finishing and can save results
398 : bool PlantReSizingCompleted = false;
399 : bool PlantFirstSizesOkayToReport = false;
400 : bool PlantFinalSizesOkayToReport = false;
401 : bool AnyEMSPlantOpSchemesInModel = false;
402 : int PlantManageSubIterations = 0; // tracks plant iterations to characterize solver
403 : int PlantManageHalfLoopCalls = 0; // tracks number of half loop calls
404 : Array1D<DataPlant::PlantLoopData> PlantLoop;
405 : std::array<Array1D<DataPlant::ReportLoopData>, static_cast<int>(DataPlant::LoopSideLocation::Num)> VentRepPlant;
406 : std::array<Array1D<DataPlant::ReportLoopData>, static_cast<int>(DataPlant::LoopSideLocation::Num)> VentRepCond;
407 : Array1D<DataPlant::PlantCallingOrderInfoStruct> PlantCallingOrderInfo;
408 :
409 2126 : void init_constant_state([[maybe_unused]] EnergyPlusData &state) override
410 : {
411 2126 : }
412 :
413 1152 : void init_state([[maybe_unused]] EnergyPlusData &state) override
414 : {
415 1152 : }
416 :
417 2100 : void clear_state() override
418 : {
419 2100 : this->TotNumLoops = 0;
420 2100 : this->TotNumHalfLoops = 0;
421 2100 : this->PlantFirstSizeCompleted = false;
422 2100 : this->PlantFirstSizesOkayToFinalize = false;
423 2100 : this->PlantReSizingCompleted = false;
424 2100 : this->PlantFirstSizesOkayToReport = false;
425 2100 : this->PlantFinalSizesOkayToReport = false;
426 2100 : this->AnyEMSPlantOpSchemesInModel = false;
427 2100 : this->PlantManageSubIterations = 0;
428 2100 : this->PlantManageHalfLoopCalls = 0;
429 2100 : this->PlantLoop.deallocate();
430 2100 : this->VentRepPlant[static_cast<int>(DataPlant::LoopSideLocation::Demand)].deallocate();
431 2100 : this->VentRepPlant[static_cast<int>(DataPlant::LoopSideLocation::Supply)].deallocate();
432 2100 : this->VentRepCond[static_cast<int>(DataPlant::LoopSideLocation::Demand)].deallocate();
433 2100 : this->VentRepCond[static_cast<int>(DataPlant::LoopSideLocation::Supply)].deallocate();
434 2100 : this->PlantCallingOrderInfo.deallocate();
435 2100 : }
436 : };
437 :
438 : } // namespace EnergyPlus
439 :
440 : #endif
|