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 FanCoilUnits_hh_INCLUDED
49 : #define FanCoilUnits_hh_INCLUDED
50 :
51 : // C++ Headers
52 : #include <memory>
53 : #include <string>
54 :
55 : // ObjexxFCL Headers
56 : #include <ObjexxFCL/Array1D.hh>
57 : #include <ObjexxFCL/Optional.hh>
58 :
59 : // EnergyPlus Headers
60 : #include <EnergyPlus/Data/BaseData.hh>
61 : #include <EnergyPlus/DataGlobals.hh>
62 : #include <EnergyPlus/EnergyPlus.hh>
63 : #include <EnergyPlus/Plant/Enums.hh>
64 : #include <EnergyPlus/Plant/PlantLocation.hh>
65 : #include <EnergyPlus/SystemAvailabilityManager.hh>
66 :
67 : namespace EnergyPlus {
68 :
69 : // Forward declarations
70 : struct EnergyPlusData;
71 :
72 : namespace FanCoilUnits {
73 :
74 : Real64 constexpr Small5WLoad = 5.0; // load threshold 5.0 W
75 :
76 : // coil type units supported in this module
77 : constexpr int FanCoilUnit_4Pipe(1);
78 :
79 : enum class CCoil
80 : {
81 : Invalid = -1,
82 : Water,
83 : Detailed,
84 : HXAssist,
85 : Num
86 : };
87 :
88 : enum class HCoil
89 : {
90 : Invalid = -1,
91 : Water,
92 : Electric,
93 : Num
94 : };
95 :
96 : enum class CCM // capacity control method supported in this module
97 : {
98 : Invalid = -1,
99 : ConsFanVarFlow,
100 : CycFan,
101 : VarFanVarFlow,
102 : VarFanConsFlow,
103 : MultiSpeedFan,
104 : ASHRAE,
105 : Num
106 : };
107 :
108 : struct FanCoilData
109 : {
110 : // Members
111 : // Input data
112 : int UnitType_Num = 0;
113 : std::string availSchedName; // availability schedule
114 : Sched::Schedule *availSched = nullptr; // availability schedule
115 : std::string SchedOutAir; // outside air schedule, multipliy maximum outdoor air flow rate
116 : Sched::Schedule *oaSched = nullptr; // outside air schedule
117 : HVAC::FanType fanType = HVAC::FanType::Invalid; // fan type
118 : int SpeedFanSel = 0; // Speed fan selected
119 : CCM CapCtrlMeth_Num = CCM::Invalid;
120 : Real64 PLR = 0.0; // Part Load Ratio, fraction of time step fancoil is on
121 : int MaxIterIndexH = 0; // Maximum iterations exceeded for heating
122 : int BadMassFlowLimIndexH = 0; // Bad mass flow limit error index for heating
123 : int MaxIterIndexC = 0; // Maximum iterations exceeded for cooling
124 : int BadMassFlowLimIndexC = 0; // Bad mass flow limit error index for cooling
125 : Real64 FanAirVolFlow = 0.0; // m3/s
126 : Real64 MaxAirVolFlow = 0.0; // m3/s
127 : Real64 MaxAirMassFlow = 0.0; // kg/s
128 : Real64 LowSpeedRatio = 0.0; // Low speed fan supply air flow ratio
129 : Real64 MedSpeedRatio = 0.0; // Medium speed fan supply air flow ratio
130 : Real64 SpeedFanRatSel = 0.0; // Speed fan ratio determined by fan speed selection at each timestep
131 : Real64 OutAirVolFlow = 0.0; // m3/s
132 : Real64 OutAirMassFlow = 0.0; // kg/s
133 : int AirInNode = 0; // inlet air node number
134 : int AirOutNode = 0; // outlet air node number
135 : int OutsideAirNode = 0; // outside air node number
136 : int AirReliefNode = 0; // relief air node number
137 : int MixedAirNode = 0; // Mixed Air Node number
138 : std::string OAMixName; // name of outside air mixer
139 : std::string OAMixType; // type of outside air mixer
140 : int OAMixIndex = 0;
141 : std::string FanName; // name of fan
142 : int FanIndex = 0; // index for fan
143 : std::string CCoilName; // name of cooling coil
144 : int CCoilName_Index = 0; // Index for this Cooling Coil in SimWaterComp
145 : std::string CCoilType; // type of cooling coil:
146 : // 'Coil:Cooling:Water' or
147 : // 'Coil:Cooling:Water:DetailedGeometry' or
148 : // 'CoilSystem:Cooling:Water:HeatExchangerAssisted'
149 : CCoil CCoilType_Num = CCoil::Invalid; // Numeric equivalent for type of cooling coil
150 : std::string CCoilPlantName; // name of cooling coil (child<=CoilSystem:Cooling:Water:HeatExchangerAssisted)
151 : DataPlant::PlantEquipmentType CCoilPlantType = DataPlant::PlantEquipmentType::Invalid;
152 : int ControlCompTypeNum = 0;
153 : int CompErrIndex = 0;
154 : Real64 MaxColdWaterVolFlow = 0.0; // m3/s
155 : Real64 MinColdWaterVolFlow = 0.0; // m3/s
156 : Real64 MinColdWaterFlow = 0.0; // kg/s
157 : Real64 ColdControlOffset = 0.0; // control tolerance
158 : std::string HCoilName; // name of heating coil
159 : int HCoilName_Index = 0;
160 : std::string HCoilType; // type of heating coil:
161 : // 'Coil:Heating:Water' or
162 : HCoil HCoilType_Num = HCoil::Invalid; // Numeric equivalent for type of cooling coil
163 : DataPlant::PlantEquipmentType HCoilPlantTypeOf = DataPlant::PlantEquipmentType::Invalid;
164 : Real64 MaxHotWaterVolFlow = 0.0; // m3/s
165 : Real64 MinHotWaterVolFlow = 0.0; // m3/s
166 : Real64 MinHotWaterFlow = 0.0; // kg/s
167 : Real64 HotControlOffset = 0.0; // control tolerance
168 : Real64 DesignHeatingCapacity = 0.0; // size of electric heating coil [W]
169 : Avail::Status availStatus = Avail::Status::NoAction;
170 : std::string AvailManagerListName; // Name of an availability manager list object
171 : // addition for OA to Zone Units
172 : std::string ATMixerName; // name of air terminal mixer
173 : int ATMixerIndex = 0; // index to the air terminal mixer
174 : HVAC::MixerType ATMixerType = HVAC::MixerType::Invalid; // 1 = inlet side mixer, 2 = supply side mixer
175 : int ATMixerPriNode = 0; // primary inlet air node number for the air terminal mixer
176 : int ATMixerSecNode = 0; // secondary air inlet node number for the air terminal mixer
177 : int HVACSizingIndex = 0; // index of a HVACSizing object for a fancoil unit
178 : Real64 SpeedRatio = 0.0; // speed ratio when the fan is cycling between stages
179 : Sched::Schedule *fanOpModeSched = nullptr; // supply air fan operating mode schedule
180 : HVAC::FanOp fanOp = HVAC::FanOp::Cycling; // 1=cycling fan cycling coil; 2=constant fan cycling coil
181 : bool ASHRAETempControl = false; // ASHRAE90.1 control to temperature set point when true
182 : Real64 QUnitOutNoHC = 0.0; // unit output with coils off [W]
183 : Real64 QUnitOutMaxH = 0.0; // unit output at maximum heating [W]
184 : Real64 QUnitOutMaxC = 0.0; // unit output at maximum cooling [W]
185 : int LimitErrCountH = 0; // count of SolveRoot limit errors
186 : int LimitErrCountC = 0; // count of SolveRoot limit errors
187 : int ConvgErrCountH = 0; // count of SolveRoot iteration limit errors
188 : int ConvgErrCountC = 0; // count of SolveRoot iteration limit errors
189 : // Report data
190 : Real64 HeatPower = 0.0; // unit heating output in watts
191 : Real64 HeatEnergy = 0.0; // unit heating output in J
192 : Real64 TotCoolPower = 0.0; // unit total cooling power output in watts
193 : Real64 TotCoolEnergy = 0.0; // unit total cooling energy output in joules
194 : Real64 SensCoolPower = 0.0; // unit sensible cooling power output in watts
195 : Real64 SensCoolEnergy = 0.0; // unit sensible cooling energy output in joules
196 : Real64 ElecPower = 0.0; // unit electric power consumption in watts
197 : Real64 ElecEnergy = 0.0; // unit electiric energy consumption in joules
198 : Real64 DesCoolingLoad = 0.0; // used for reporting in watts
199 : Real64 DesHeatingLoad = 0.0; // used for reporting in watts
200 : Real64 DesZoneCoolingLoad = 0.0; // used for reporting in watts
201 : Real64 DesZoneHeatingLoad = 0.0; // used for reporting in watts
202 : int DSOAPtr = 0; // design specification outdoor air object index
203 : bool FirstPass = true; // detects first time through for resetting sizing data
204 : Sched::Schedule *fanAvailSched = nullptr; // fan availability schedule index
205 :
206 : // SZVAV Model inputs
207 : std::string Name; // name of unit
208 : std::string UnitType; // type of unit
209 : Real64 MaxCoolCoilFluidFlow = 0.0; // kg/s
210 : Real64 MaxHeatCoilFluidFlow = 0.0; // kg/s
211 : Real64 DesignMinOutletTemp = 0.0; // ASHRAE90.1 maximum supply air temperature in Cooling mode
212 : Real64 DesignMaxOutletTemp = 0.0; // ASHRAE90.1 maximum supply air temperature in Heating mode
213 : Real64 MaxNoCoolHeatAirMassFlow = 0.0; // minimum air flow rate using constant fan and ASHRAE90.1 control method
214 : Real64 MaxCoolAirMassFlow = 0.0; // used in ASHRAE90.1 model, same as MaxAirMassFlow
215 : Real64 MaxHeatAirMassFlow = 0.0; // used in ASHRAE90.1 model, same as MaxAirMassFlow
216 : Real64 LowSpeedCoolFanRatio = 0.0; // ratio of min air flow to max air flow
217 : Real64 LowSpeedHeatFanRatio = 0.0; // ratio of min air flow to max air flow
218 : int CoolCoilFluidInletNode = 0; // chilled water control node
219 : int CoolCoilFluidOutletNodeNum = 0; // chilled water coil outlet plant node
220 : int HeatCoilFluidInletNode = 0; // hot water control node
221 : int HeatCoilFluidOutletNodeNum = 0; // hot water coil outlet plant node
222 : PlantLocation CoolCoilPlantLoc{}; // index for plant location for chilled water coil
223 : PlantLocation HeatCoilPlantLoc{}; // index for plant location for hot water coil
224 : int CoolCoilInletNodeNum = 0; // index of cooling coil inlet node number
225 : int CoolCoilOutletNodeNum = 0; // index of cooling coil outlet node number
226 : int HeatCoilInletNodeNum = 0; // index of heating coil inlet node number
227 : int HeatCoilOutletNodeNum = 0; // index of heating coil outlet node number
228 : int ControlZoneNum = 0; // pointer to a zone served by a fancoil unit
229 : int NodeNumOfControlledZone = 0; // node number of controlled zone
230 : bool ATMixerExists = false; // True if there is an ATMixer
231 : int ATMixerOutNode = 0; // outlet air node number for the air terminal mixer
232 : Real64 FanPartLoadRatio = 0.0; // ratio of air flow to max air flow to simulation modulating fan
233 : Real64 HeatCoilWaterFlowRatio = 0.0; // ratio of water flow rate to max water flow rate
234 : Real64 ControlZoneMassFlowFrac = 1.0; // flow fraction of control zone (always 1 for zone equipment)
235 : int MaxIterIndex = 0; // recurring message index
236 : int RegulaFalsiFailedIndex = 0; // iteration loop warning
237 : };
238 :
239 : struct FanCoilNumericFieldData
240 : {
241 : // Members
242 : Array1D_string FieldNames;
243 : };
244 :
245 : void SimFanCoilUnit(EnergyPlusData &state,
246 : std::string_view CompName, // name of the fan coil unit
247 : int ControlledZoneNum, // number of zone being served
248 : bool FirstHVACIteration, // TRUE if 1st HVAC simulation of system timestep
249 : Real64 &PowerMet, // Sensible power supplied (W)
250 : Real64 &LatOutputProvided, // Latent add/removal supplied by window AC (kg/s), dehumid = negative
251 : int &CompIndex);
252 :
253 : void GetFanCoilUnits(EnergyPlusData &state);
254 :
255 : void InitFanCoilUnits(EnergyPlusData &state,
256 : int FanCoilNum, // number of the current fan coil unit being simulated
257 : int ControlledZoneNum); // number of zone being served
258 :
259 : void SizeFanCoilUnit(EnergyPlusData &state, int FanCoilNum,
260 : int ControlledZoneNum); // index into ZoneEquipConfig array
261 :
262 : void Sim4PipeFanCoil(EnergyPlusData &state,
263 : int &FanCoilNum, // number of the current fan coil unit being simulated
264 : int ControlledZoneNum, // index into ZoneEqupConfig
265 : bool FirstHVACIteration, // TRUE if 1st HVAC simulation of system timestep
266 : Real64 &PowerMet, // Sensible power supplied (W)
267 : Real64 &LatOutputProvided // Latent power supplied (kg/s), negative = dehumidification
268 : );
269 :
270 : void TightenWaterFlowLimits(EnergyPlusData &state,
271 : int FanCoilNum, // Unit index in fan coil array
272 : bool CoolingLoad, // true if zone requires cooling
273 : bool HeatingLoad, // true if zone requires heating
274 : int WaterControlNode, // water control node, either cold or hot water
275 : int ControlledZoneNum, // controlling zone index
276 : bool FirstHVACIteration, // TRUE if 1st HVAC simulation of system timestep
277 : Real64 QZnReq, // zone load [W]
278 : Real64 &MinWaterFlow, // minimum water flow rate
279 : Real64 &MaxWaterFlow // maximum water flow rate
280 : );
281 :
282 : void TightenAirAndWaterFlowLimits(EnergyPlusData &state,
283 : int FanCoilNum, // Unit index in fan coil array
284 : bool CoolingLoad, // true if zone requires cooling
285 : bool HeatingLoad, // true if zone requires heating
286 : int WaterControlNode, // water control node, either cold or hot water
287 : int ControlledZoneNum, // controlling zone index
288 : bool FirstHVACIteration, // TRUE if 1st HVAC simulation of system timestep
289 : Real64 QZnReq, // zone load [W]
290 : Real64 &PLRMin, // minimum part-load ratio
291 : Real64 &PLRMax // maximum part-load ratio
292 : );
293 :
294 : void Calc4PipeFanCoil(EnergyPlusData &state,
295 : int FanCoilNum, // Unit index in fan coil array
296 : int ControlledZoneNum, // ZoneEquipConfig index
297 : bool FirstHVACIteration, // flag for 1st HVAV iteration in the time step
298 : Real64 &LoadMet, // load met by unit (watts)
299 : ObjexxFCL::Optional<Real64> PLR = _, // Part Load Ratio, fraction of time step fancoil is on
300 : Real64 ElecHeatCoilPLR = 1.0 // electric heating coil PLR used with MultiSpeedFan capacity control
301 : );
302 :
303 : void SimMultiStage4PipeFanCoil(EnergyPlusData &state,
304 : int &FanCoilNum, // number of the current fan coil unit being simulated
305 : int ControlledZoneNum, // index into ZoneEqupConfig
306 : bool FirstHVACIteration, // TRUE if 1st HVAC simulation of system timestep
307 : Real64 &PowerMet // Sensible power supplied (W)
308 : );
309 :
310 : void CalcMultiStage4PipeFanCoil(EnergyPlusData &state,
311 : int &FanCoilNum, // number of the current fan coil unit being simulated
312 : int ZoneNum, // number of zone being served
313 : bool FirstHVACIteration, // TRUE if 1st HVAC simulation of system timestep
314 : Real64 QZnReq, // current zone cooling or heating load
315 : Real64 &SpeedRatio, // fan coil speed ratio
316 : Real64 &PartLoadRatio, // fan coil part load ratio
317 : Real64 &PowerMet // Sensible power supplied (W)
318 : );
319 :
320 : void ReportFanCoilUnit(EnergyPlusData &state, int FanCoilNum); // number of the current fan coil unit being simulated
321 :
322 : int GetFanCoilZoneInletAirNode(EnergyPlusData &state, int const FanCoilNum);
323 :
324 : int GetFanCoilOutAirNode(EnergyPlusData &state, int FanCoilNum);
325 :
326 : int GetFanCoilReturnAirNode(EnergyPlusData &state, int FanCoilNum);
327 :
328 : int GetFanCoilMixedAirNode(EnergyPlusData &state, int FanCoilNum);
329 :
330 : Real64 CalcFanCoilLoadResidual(EnergyPlusData &state,
331 : int FanCoilNum, // Index to this fan coil unit
332 : bool FirstHVACIteration, // FirstHVACIteration flag
333 : int ControlledZoneNum, // zone index
334 : Real64 QZnReq, // Sensible load to be met [W]
335 : Real64 PartLoadRatio // coil part load ratio
336 : );
337 :
338 : Real64 CalcFanCoilPLRResidual(EnergyPlusData &state,
339 : Real64 PLR, // part-load ratio of air and water mass flow rate
340 : int FanCoilNum, // Index to this fan coil unit
341 : bool FirstHVACIteration, // FirstHVACIteration flag
342 : int ControlledZoneNum, // zone index
343 : int WaterControlNode, // water node to control
344 : Real64 QZnReq // Sensible load to be met [W] // Function parameters
345 : );
346 :
347 : Real64 CalcFanCoilHeatCoilPLRResidual(EnergyPlusData &state,
348 : Real64 CyclingR, // electric heating coil cycling ratio
349 : int FanCoilNum,
350 : bool FirstHVACIteration,
351 : int ZoneNum,
352 : Real64 QZnReq // Function parameters
353 : );
354 :
355 : Real64 CalcFanCoilCWLoadResidual(EnergyPlusData &state,
356 : Real64 CWFlow, // water mass flow rate [kg/s]
357 : int FanCoilNum,
358 : bool FirstHVACIteration,
359 : int ControlledZoneNum,
360 : Real64 QZnReq);
361 :
362 : Real64 CalcFanCoilWaterFlowResidual(EnergyPlusData &state,
363 : Real64 PLR,
364 : int FanCoilNum,
365 : bool FirstHVACIteration,
366 : int ControlledZoneNum,
367 : Real64 QZnReq,
368 : int AirInNode,
369 : int WaterControlNode,
370 : Real64 maxCoilFluidFlow,
371 : Real64 AirMassFlowRate);
372 :
373 : Real64 CalcFanCoilAirAndWaterFlowResidual(EnergyPlusData &state,
374 : Real64 WaterFlow, // water mass flow rate [kg/s]
375 : int FanCoilNum,
376 : bool FirstHVACIteration,
377 : int ControlledZoneNum,
378 : Real64 QZnReq,
379 : int AirInNode,
380 : int WaterControlNode,
381 : Real64 MinWaterFlow);
382 :
383 : int getEqIndex(EnergyPlusData &state, std::string_view CompName);
384 : } // namespace FanCoilUnits
385 :
386 : struct FanCoilUnitsData : BaseGlobalStruct
387 : {
388 :
389 : std::string const cMO_FanCoil = "ZoneHVAC:FourPipeFanCoil";
390 : int NumFanCoils = 0;
391 : int Num4PipeFanCoils = 0;
392 : Array1D_bool MySizeFlag;
393 : Array1D_bool CheckEquipName;
394 : bool GetFanCoilInputFlag = true; // First time, input is "gotten"
395 : Real64 FanFlowRatio = 0.0;
396 : bool HeatingLoad = false; // True when zone needs heating
397 : bool CoolingLoad = false; // True when zone needs cooling
398 : Array1D<FanCoilUnits::FanCoilData> FanCoil;
399 : Array1D<FanCoilUnits::FanCoilNumericFieldData> FanCoilNumericFields;
400 : bool InitFanCoilUnitsOneTimeFlag = true;
401 : bool InitFanCoilUnitsCheckInZoneEquipmentListFlag = false; // True after the Zone Equipment List has been checked for items
402 :
403 : // static variables extracted from functions
404 : bool ErrorsFound = false; // Set to true if errors in input, fatal at end of routine
405 : bool errFlag = false; // Local error flag for GetOAMixerNodeNums
406 : int TotalArgs = 0; // Total number of alpha and numeric arguments (max) for a
407 : bool ZoneExNodeNotFound = false; // used in error checking
408 : bool ZoneInNodeNotFound = false; // used in error checking
409 : int ATMixerNum = 0; // index of air terminal mixer in the air terminal mixer data array
410 : HVAC::MixerType ATMixerType = HVAC::MixerType::Invalid; // type of air terminal mixer (1=inlet side; 2=supply side)
411 : int ATMixerPriNode = 0; // node number of the air terminal mixer primary air inlet
412 : int ATMixerSecNode = 0; // node number of the air terminal mixer secondary air inlet
413 : int ATMixerOutNode = 0; // node number of the air terminal mixer secondary air inlet
414 : Array1D_bool MyEnvrnFlag;
415 : Array1D_bool MyPlantScanFlag;
416 : Array1D_bool MyZoneEqFlag; // used to set up zone equipment availability managers
417 : int CoilWaterInletNode = 0;
418 : int CoilWaterOutletNode = 0;
419 : int ATMixOutNode = 0; // outlet node of ATM Mixer
420 : int ZoneNode = 0; // zone node
421 :
422 2126 : void init_constant_state([[maybe_unused]] EnergyPlusData &state) override
423 : {
424 2126 : }
425 :
426 1152 : void init_state([[maybe_unused]] EnergyPlusData &state) override
427 : {
428 1152 : }
429 :
430 2100 : void clear_state() override
431 : {
432 2100 : new (this) FanCoilUnitsData();
433 2100 : }
434 : };
435 :
436 : } // namespace EnergyPlus
437 :
438 : #endif
|