Line data Source code
1 : // EnergyPlus, Copyright (c) 1996-2024, 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 SingleDuct_hh_INCLUDED
49 : #define SingleDuct_hh_INCLUDED
50 :
51 : #include <unordered_map>
52 :
53 : // ObjexxFCL Headers
54 : #include <ObjexxFCL/Array1D.hh>
55 : #include <ObjexxFCL/Optional.hh>
56 :
57 : // EnergyPlus Headers
58 : #include <EnergyPlus/Data/BaseData.hh>
59 : #include <EnergyPlus/DataGlobals.hh>
60 : #include <EnergyPlus/DataZoneEquipment.hh>
61 : #include <EnergyPlus/EnergyPlus.hh>
62 : #include <EnergyPlus/Plant/Enums.hh>
63 : #include <EnergyPlus/Plant/PlantLocation.hh>
64 :
65 : namespace EnergyPlus {
66 :
67 : // Forward declarations
68 : struct EnergyPlusData;
69 :
70 : namespace SingleDuct {
71 :
72 : enum class Action
73 : {
74 : Invalid = -1,
75 : Normal,
76 : Reverse,
77 : ReverseWithLimits,
78 : HeatingNotUsed,
79 : Num
80 : };
81 : enum class SysType
82 : {
83 : Invalid = -1,
84 : SingleDuctVAVReheat,
85 : SingleDuctConstVolReheat,
86 : SingleDuctConstVolNoReheat,
87 : SingleDuctVAVNoReheat,
88 : SingleDuctVAVReheatVSFan,
89 : SingleDuctCBVAVReheat,
90 : SingleDuctCBVAVNoReheat,
91 : Num,
92 : };
93 : enum class HeatingCoilType : int
94 : {
95 : Invalid = -1,
96 : None,
97 : Gas,
98 : Electric,
99 : SimpleHeating,
100 : SteamAirHeating,
101 : Num,
102 : };
103 : enum class MinFlowFraction
104 : {
105 : Invalid = -1,
106 : Constant,
107 : Scheduled,
108 : Fixed,
109 : MinFracNotUsed,
110 : Num
111 : };
112 :
113 : struct SingleDuctAirTerminalFlowConditions
114 : {
115 : // Members
116 : Real64 AirMassFlowRate; // MassFlow through the Sys being Simulated [kg/Sec]
117 : Real64 AirMassFlowRateMaxAvail; // MassFlow through the Sys being Simulated [kg/Sec]
118 : Real64 AirMassFlowRateMinAvail; // MassFlow through the Sys being Simulated [kg/Sec]
119 : Real64 AirTemp; // (C)
120 : Real64 AirHumRat; // (Kg/Kg)
121 : Real64 AirEnthalpy; // (J/Kg)
122 :
123 : // Default Constructor
124 1040 : SingleDuctAirTerminalFlowConditions()
125 1040 : : AirMassFlowRate(0.0), AirMassFlowRateMaxAvail(0.0), AirMassFlowRateMinAvail(0.0), AirTemp(0.0), AirHumRat(0.0), AirEnthalpy(0.0)
126 : {
127 1040 : }
128 : };
129 :
130 : struct SingleDuctAirTerminal
131 : {
132 : // Members
133 : int SysNum; // index to single duct air terminal unit
134 : std::string SysName; // Name of the Sys
135 : std::string sysType; // Type of Sys ie. VAV, Mixing, Inducing, etc.
136 : SysType SysType_Num; // Numeric Equivalent for System type
137 : std::string Schedule; // Sys Operation Schedule
138 : int SchedPtr; // Pointer to the correct schedule
139 : std::string ReheatComp; // Type of the Reheat Coil Object
140 : HeatingCoilType ReheatComp_Num; // Numeric Equivalent in this module for Coil type
141 : int ReheatComp_Index; // Returned Index number from other routines
142 : std::string ReheatName; // name of reheat coil
143 : DataPlant::PlantEquipmentType ReheatComp_PlantType; // typeOf_ number for plant type of heating coil
144 : HVAC::FanType fanType; // Numeric Equivalent in this module for fan type
145 : int Fan_Index; // Returned Index number from other routines
146 : int ControlCompTypeNum;
147 : int CompErrIndex;
148 : std::string FanName; // name of fan
149 : Real64 MaxAirVolFlowRate; // Max Specified Volume Flow Rate of Sys (cooling max) [m3/sec]
150 : Real64 AirMassFlowRateMax; // Max Specified Mass Flow Rate of Sys (cooling max) [kg/sec]
151 : Real64 MaxHeatAirVolFlowRate; // Max specified volume flow rate of unit at max heating [m3/s]
152 : Real64 HeatAirMassFlowRateMax; // Max Specified Mass Flow Rate of unit at max heating [kg/sec]
153 : MinFlowFraction ZoneMinAirFracMethod; // parameter for what method is used for min flow fraction
154 : Real64 ZoneMinAirFracDes; // Fraction of supply air used as design minimum flow
155 : Real64 ZoneMinAirFrac; // Fraction of supply air used as current minimum flow
156 : Real64 ZoneMinAirFracReport; // Fraction of supply air used as minimum flow for reporting (zero if terminal unit flow is zero)
157 : Real64 ZoneFixedMinAir; // Absolute minimum supply air flow
158 : int ZoneMinAirFracSchPtr; // pointer to the schedule for min flow fraction
159 : bool ConstantMinAirFracSetByUser; // record if user left field blank for constant min fraction.
160 : bool FixedMinAirSetByUser; // record if user left field blank for constant min fraction.
161 : Real64 DesignMinAirFrac; // store user entered constant min flow fract for design
162 : Real64 DesignFixedMinAir; // store user entered constant min flow for design
163 : int InletNodeNum; // terminal unit inlet node number; damper inlet node number
164 : int OutletNodeNum; // damper outlet node number for VAV; unused by CV; coil air inlet node for VAV
165 : // fan outlet node, coil inlet node for VAV VS Fan
166 : int ReheatControlNode; // hot water inlet node for heating coil
167 : int ReheatCoilOutletNode; // outlet node for heating coil
168 : Real64 ReheatCoilMaxCapacity; // heating coil capacity, W
169 : int ReheatAirOutletNode; // terminal unit outlet node; heating coil air outlet node
170 : Real64 MaxReheatWaterVolFlow; // m3/s
171 : Real64 MaxReheatSteamVolFlow; // m3/s
172 : Real64 MaxReheatWaterFlow; // kg/s
173 : Real64 MaxReheatSteamFlow; // kg/s
174 : Real64 MinReheatWaterVolFlow; // m3/s
175 : Real64 MinReheatSteamVolFlow; // m3/s
176 : Real64 MinReheatWaterFlow; // kg/s
177 : Real64 MinReheatSteamFlow; // kg/s
178 : Real64 ControllerOffset;
179 : Real64 MaxReheatTemp; // C
180 : bool MaxReheatTempSetByUser;
181 : Action DamperHeatingAction;
182 : Real64 DamperPosition;
183 : int ADUNum; // index of corresponding air distribution unit
184 : int FluidIndex; // Refrigerant index
185 : int ErrCount1; // iteration limit exceeded in Hot Water Flow Calc
186 : int ErrCount1c; // iteration limit exceeded in Hot Water Flow Calc - continue
187 : int ErrCount2; // bad iterations limits in hot water flow calc
188 : Real64 ZoneFloorArea; // Zone floor area
189 : int CtrlZoneNum; // Pointer to CtrlZone data structure
190 : int CtrlZoneInNodeIndex; // which controlled zone inlet node number corresponds with this unit
191 : Real64 MaxAirVolFlowRateDuringReheat; // Maximum vol flow during reheat
192 : Real64 MaxAirVolFractionDuringReheat; // Maximum vol flow fraction during reheat
193 : Real64 AirMassFlowDuringReheatMax; // Maximum mass flow during reheat
194 : int ZoneOutdoorAirMethod; // Outdoor air method
195 : Real64 OutdoorAirFlowRate; // report variable for TU outdoor air flow rate
196 : bool NoOAFlowInputFromUser; // avoids OA calculation if no input specified by user
197 : int OARequirementsPtr; // - Index to DesignSpecification:OutdoorAir object
198 : int AirLoopNum;
199 : PlantLocation HWplantLoc; // plant topology, Component location
200 : std::string ZoneHVACUnitType; // type of Zone HVAC unit for air terminal mixer units
201 : std::string ZoneHVACUnitName; // name of Zone HVAC unit for air terminal mixer units
202 : int SecInNode; // zone or zone unit air node number
203 : // warning variables
204 : int IterationLimit; // Used for RegulaFalsi error -1
205 : int IterationFailed; // Used for RegulaFalsi error -2
206 : DataZoneEquipment::PerPersonVentRateMode OAPerPersonMode; // mode for how per person rates are determined, DCV or design.
207 : bool EMSOverrideAirFlow; // if true, EMS is calling to override flow rate
208 : Real64 EMSMassFlowRateValue; // value EMS is directing to use for flow rate [kg/s]
209 : int ZoneTurndownMinAirFracSchPtr; // pointer to the schedule for turndown minimum airflow fraction
210 : Real64 ZoneTurndownMinAirFrac; // turndown minimum airflow fraction value, multiplier of zone design minimum air flow
211 : bool ZoneTurndownMinAirFracSchExist; // if true, if zone turndown min air frac schedule exist
212 : bool MyEnvrnFlag;
213 : bool MySizeFlag;
214 : bool GetGasElecHeatCoilCap; // Gets autosized value of coil capacity
215 : bool PlantLoopScanFlag; // plant loop scan flag, false if scanned
216 : Real64 MassFlow1; // previous value of the terminal unit mass flow rate
217 : Real64 MassFlow2; // previous value of the previous value of the mass flow rate
218 : Real64 MassFlow3;
219 : Real64 MassFlowDiff;
220 : SingleDuctAirTerminalFlowConditions sd_airterminalInlet;
221 : SingleDuctAirTerminalFlowConditions sd_airterminalOutlet;
222 :
223 : // Default Constructor
224 520 : SingleDuctAirTerminal()
225 2080 : : SysNum(-1), SysType_Num(SysType::Invalid), SchedPtr(0), ReheatComp_Num(HeatingCoilType::None), ReheatComp_Index(0),
226 520 : ReheatComp_PlantType(DataPlant::PlantEquipmentType::Invalid), fanType(HVAC::FanType::Invalid), Fan_Index(0), ControlCompTypeNum(0),
227 1040 : CompErrIndex(0), MaxAirVolFlowRate(0.0), AirMassFlowRateMax(0.0), MaxHeatAirVolFlowRate(0.0), HeatAirMassFlowRateMax(0.0),
228 520 : ZoneMinAirFracMethod(MinFlowFraction::Constant), ZoneMinAirFracDes(0.0), ZoneMinAirFrac(0.0), ZoneMinAirFracReport(0.0),
229 520 : ZoneFixedMinAir(0.0), ZoneMinAirFracSchPtr(0), ConstantMinAirFracSetByUser(false), FixedMinAirSetByUser(false), DesignMinAirFrac(0.0),
230 520 : DesignFixedMinAir(0.0), InletNodeNum(0), OutletNodeNum(0), ReheatControlNode(0), ReheatCoilOutletNode(0), ReheatCoilMaxCapacity(0.0),
231 520 : ReheatAirOutletNode(0), MaxReheatWaterVolFlow(0.0), MaxReheatSteamVolFlow(0.0), MaxReheatWaterFlow(0.0), MaxReheatSteamFlow(0.0),
232 520 : MinReheatWaterVolFlow(0.0), MinReheatSteamVolFlow(0.0), MinReheatWaterFlow(0.0), MinReheatSteamFlow(0.0), ControllerOffset(0.0),
233 520 : MaxReheatTemp(0.0), MaxReheatTempSetByUser(false), DamperHeatingAction(Action::HeatingNotUsed), DamperPosition(0.0), ADUNum(0),
234 520 : FluidIndex(0), ErrCount1(0), ErrCount1c(0), ErrCount2(0), ZoneFloorArea(0.0), CtrlZoneNum(0), CtrlZoneInNodeIndex(0),
235 520 : MaxAirVolFlowRateDuringReheat(0.0), MaxAirVolFractionDuringReheat(0.0), AirMassFlowDuringReheatMax(0.0), ZoneOutdoorAirMethod(0),
236 520 : OutdoorAirFlowRate(0.0), NoOAFlowInputFromUser(true), OARequirementsPtr(0), AirLoopNum(0), HWplantLoc{}, SecInNode(0),
237 520 : IterationLimit(0), IterationFailed(0), OAPerPersonMode(DataZoneEquipment::PerPersonVentRateMode::Invalid), EMSOverrideAirFlow(false),
238 520 : EMSMassFlowRateValue(0.0), ZoneTurndownMinAirFracSchPtr(0), ZoneTurndownMinAirFrac(1.0), ZoneTurndownMinAirFracSchExist(false),
239 520 : MyEnvrnFlag(true), MySizeFlag(true), GetGasElecHeatCoilCap(true), PlantLoopScanFlag(true), MassFlow1(0.0), MassFlow2(0.0),
240 1040 : MassFlow3(0.0), MassFlowDiff(0.0)
241 : {
242 520 : }
243 :
244 : void InitSys(EnergyPlusData &state, bool FirstHVACIteration);
245 :
246 : void SizeSys(EnergyPlusData &state);
247 :
248 : void SimVAV(EnergyPlusData &state, bool FirstHVACIteration, int ZoneNum, int ZoneNodeNum);
249 :
250 : void CalcOAMassFlow(EnergyPlusData &state, Real64 &SAMassFlow, Real64 &AirLoopOAFrac) const;
251 :
252 : void SimCBVAV(EnergyPlusData &state, bool FirstHVACIteration, int ZoneNum, int ZoneNodeNum);
253 :
254 : void SimVAVVS(EnergyPlusData &state, bool FirstHVACIteration, int ZoneNum, int ZoneNodeNum);
255 :
256 : void SimConstVol(EnergyPlusData &state, bool FirstHVACIteration, int ZoneNum, int ZoneNodeNum);
257 :
258 : void CalcVAVVS(EnergyPlusData &state,
259 : bool FirstHVACIteration,
260 : int ZoneNode,
261 : Real64 HWFlow,
262 : Real64 HCoilReq,
263 : HVAC::FanType fanType,
264 : Real64 AirFlow,
265 : int FanOn,
266 : Real64 &LoadMet);
267 :
268 : void SimConstVolNoReheat(EnergyPlusData &state);
269 :
270 : void CalcOutdoorAirVolumeFlowRate(EnergyPlusData &state);
271 :
272 : void reportTerminalUnit(EnergyPlusData &state);
273 :
274 : void UpdateSys(EnergyPlusData &state) const;
275 :
276 : void ReportSys(EnergyPlusData &state);
277 : };
278 :
279 : struct AirTerminalMixerData
280 : {
281 : // Members
282 : // Input data
283 : std::string Name; // name of unit
284 : HVAC::MixerType type = HVAC::MixerType::Invalid; // type of inlet mixer, 1 = inlet side, 2 = supply side
285 : int ZoneHVACUnitType = 0; // type of Zone HVAC unit. ZoneHVAC:WaterToAirHeatPump =1, ZoneHVAC:FourPipeFanCoil = 2
286 : std::string ZoneHVACUnitName; // name of Zone HVAC unit
287 : int SecInNode = 0; // secondary air inlet node number
288 : int PriInNode = 0; // primary air inlet node number
289 : int MixedAirOutNode = 0; // mixed air outlet node number
290 : int ZoneInletNode = 0; // zone inlet node that ultimately receives air from this mixer
291 : Real64 MixedAirTemp = 0.0; // mixed air in temp
292 : Real64 MixedAirHumRat = 0.0; // mixed air in hum rat
293 : Real64 MixedAirEnthalpy = 0.0; // mixed air in enthalpy
294 : Real64 MixedAirPressure = 0.0; // mixed air in pressure
295 : Real64 MixedAirMassFlowRate = 0.0; // mixed air in mass flow rate
296 : Real64 MassFlowRateMaxAvail = 0.0; // maximum air mass flow rate allowed through component
297 : int ADUNum = 0; // index of Air Distribution Unit
298 : int TermUnitSizingIndex = 0; // Pointer to TermUnitSizing and TermUnitFinalZoneSizing data for this terminal unit
299 : bool OneTimeInitFlag = true; // true if one-time inits should be done
300 : bool OneTimeInitFlag2 = true; // true if more one-time inits should be done
301 : int CtrlZoneInNodeIndex = 0; // which controlled zone inlet node number corresponds with this unit
302 : int ZoneNum = 0;
303 : bool NoOAFlowInputFromUser = true; // avoids OA calculation if no input specified by user
304 : int OARequirementsPtr = 0; // - Index to DesignSpecification:OutdoorAir object
305 : int AirLoopNum = 0; // System sizing adjustments
306 : Real64 DesignPrimaryAirVolRate = 0.0; // System sizing adjustments, filled from design OA spec using sizing mode flags.
307 : DataZoneEquipment::PerPersonVentRateMode OAPerPersonMode =
308 : DataZoneEquipment::PerPersonVentRateMode::Invalid; // mode for how per person rates are determined, DCV or design.
309 : bool printWarning = true; // flag to print warnings only once
310 :
311 : void InitATMixer(EnergyPlusData &state, bool FirstHVACIteration);
312 : };
313 :
314 : void SimulateSingleDuct(EnergyPlusData &state, std::string_view CompName, bool FirstHVACIteration, int ZoneNum, int ZoneNodeNum, int &CompIndex);
315 :
316 : void GetSysInput(EnergyPlusData &state);
317 :
318 : void GetHVACSingleDuctSysIndex(EnergyPlusData &state,
319 : std::string const &SDSName,
320 : int &SDSIndex,
321 : bool &ErrorsFound,
322 : std::string_view const ThisObjectType = {},
323 : ObjexxFCL::Optional_int DamperInletNode = _, // Damper inlet node number
324 : ObjexxFCL::Optional_int DamperOutletNode = _ // Damper outlet node number
325 : );
326 :
327 : void SimATMixer(EnergyPlusData &state, std::string const &SysName, bool FirstHVACIteration, int &SysIndex);
328 :
329 : void GetATMixers(EnergyPlusData &state);
330 :
331 : void CalcATMixer(EnergyPlusData &state, int SysNum);
332 :
333 : void UpdateATMixer(EnergyPlusData &state, int SysNum);
334 :
335 : void GetATMixer(EnergyPlusData &state,
336 : std::string const &ZoneEquipName, // zone unit name name
337 : std::string &ATMixerName, // air terminal mixer name
338 : int &ATMixerNum, // air terminal mixer index
339 : HVAC::MixerType &ATMixerType, // air teminal mixer type
340 : int &ATMixerPriNode, // air terminal mixer primary air node number
341 : int &ATMixerSecNode, // air terminal mixer secondary air node number
342 : int &ATMixerOutNode, // air terminal mixer outlet air node number
343 : int ZoneEquipOutletNode // zone equipment outlet node (used with inlet side mixers)
344 : );
345 :
346 : void SetATMixerPriFlow(EnergyPlusData &state,
347 : int ATMixerNum, // Air terminal mixer index
348 : ObjexxFCL::Optional<Real64 const> PriAirMassFlowRate = _ // Air terminal mixer primary air mass flow rate [kg/s]
349 : );
350 :
351 : void setATMixerSizingProperties(EnergyPlusData &state,
352 : int inletATMixerIndex, // index to ATMixer at inlet of zone equipment
353 : int controlledZoneNum, // controlled zone number
354 : int curZoneEqNum // current zone equipment being simulated
355 : );
356 :
357 : } // namespace SingleDuct
358 :
359 : struct SingleDuctData : BaseGlobalStruct
360 : {
361 :
362 : EPVector<SingleDuct::AirTerminalMixerData> SysATMixer;
363 : Array1D<SingleDuct::SingleDuctAirTerminal> sd_airterminal;
364 : std::unordered_map<std::string, std::string> SysUniqueNames;
365 : Array1D_bool CheckEquipName;
366 : int NumATMixers = 0;
367 : int NumConstVolSys = 0;
368 : int NumSDAirTerminal = 0; // The Number of single duct air terminals found in the Input
369 : bool GetInputFlag = true; // Flag set to make sure you get input once
370 : bool GetATMixerFlag = true; // Flag set to make sure you get input once
371 : bool InitSysFlag = true; // Flag set to make sure you do begin simulation initializaztions once
372 : bool InitATMixerFlag = true; // Flag set to make sure you do begin simulation initializaztions once for mixer
373 : bool ZoneEquipmentListChecked = false; // True after the Zone Equipment List has been checked for items
374 :
375 : int SysNumGSI = 0; // The Sys that you are currently loading input into
376 : int SysIndexGSI = 0; // The Sys that you are currently loading input into
377 : int NumVAVSysGSI = 0;
378 : int NumNoRHVAVSysGSI = 0;
379 : int NumVAVVSGSI = 0;
380 : int NumCBVAVSysGSI = 0;
381 : int NumNoRHCBVAVSysGSI = 0;
382 : int NumAlphasGSI = 0;
383 : int NumNumsGSI = 0;
384 : int NumCVNoReheatSysGSI = 0;
385 : int MaxNumsGSI = 0; // Maximum number of numeric input fields
386 : int MaxAlphasGSI = 0; // Maximum number of alpha input fields
387 : int TotalArgsGSI = 0; // Total number of alpha and numeric arguments = max for a
388 : Real64 CoilInTempSS = 0.0;
389 : Real64 DesCoilLoadSS = 0.0;
390 : Real64 DesZoneHeatLoadSS = 0.0;
391 : Real64 ZoneDesTempSS = 0.0;
392 : Real64 ZoneDesHumRatSS = 0.0;
393 : int CoilWaterInletNodeSS = 0;
394 : int CoilWaterOutletNodeSS = 0;
395 : int CoilSteamInletNodeSS = 0;
396 : int CoilSteamOutletNodeSS = 0;
397 : int DummyWaterIndexSS = 1;
398 : Real64 UserInputMaxHeatAirVolFlowRateSS = 0.0; // user input for MaxHeatAirVolFlowRate
399 : Real64 MinAirMassFlowRevActSVAV = 0.0; // minimum air mass flow rate used in "reverse action" air mass flow rate calculation
400 : Real64 MaxAirMassFlowRevActSVAV = 0.0; // maximum air mass flow rate used in "reverse action" air mass flow rate calculation
401 : Real64 ZoneTempSCBVAV = 0.0; // zone air temperature [C]
402 : Real64 MaxHeatTempSCBVAV = 0.0; // maximum supply air temperature [C]
403 : Real64 MassFlowReqSCBVAV = 0.0; // air mass flow rate required to meet the coil heating load [W]
404 : Real64 MassFlowActualSCBVAV = 0.0; // air mass flow rate actually used [W]
405 : Real64 QZoneMaxSCBVAV = 0.0; // maximum zone heat addition rate given constraints of MaxHeatTemp and max /
406 : // available air mass flow rate [W]
407 : Real64 MinMassAirFlowSCBVAV = 0.0; // the air flow rate during heating for normal acting damper
408 : Real64 QZoneMax2SCBVAV = 0.0; // temporary variable
409 : Real64 QZoneMax3SCBVAV = 0.0; // temporary variable
410 : Real64 TAirMaxSCV = 0.0; // Maximum zone supply air temperature [C]
411 : Real64 QMaxSCV = 0.0; // Maximum heat addition rate imposed by the max zone supply air temperature [W]
412 : Real64 ZoneTempSCV = 0.0; // Zone temperature [C]
413 : Real64 QMax2SCV = 0.0;
414 : int SysNumSATM = 0;
415 : Real64 PriMassFlowRateCATM = 0.0;
416 : Real64 PriEnthalpyCATM = 0.0;
417 : Real64 PriHumRatCATM = 0.0;
418 : Real64 PriTempCATM = 0.0;
419 :
420 : Real64 SecAirMassFlowRateCATM = 0.0;
421 : Real64 SecAirEnthalpyCATM = 0.0;
422 : Real64 SecAirHumRatCATM = 0.0;
423 : Real64 SecAirTempCATM = 0.0;
424 :
425 : Real64 MixedAirMassFlowRateCATM = 0.0;
426 : Real64 MixedAirEnthalpyCATM = 0.0;
427 : Real64 MixedAirHumRatCATM = 0.0;
428 : Real64 MixedAirTempCATM = 0.0;
429 :
430 : Real64 ZoneTempSDAT = 0.0; // zone air temperature [C]
431 : Real64 MaxHeatTempSDAT = 0.0; // maximum supply air temperature [C]
432 : Real64 MaxDeviceAirMassFlowReheatSDAT = 0.0; // air mass flow rate required to meet the coil heating load [W]
433 : Real64 MassFlowReqToLimitLeavingTempSDAT = 0.0; // air mass flow rate actually used [W]
434 : Real64 QZoneMaxRHTempLimitSDAT = 0.0; // maximum zone heat addition rate given constraints of MaxHeatTemp and max
435 : // available air mass flow rate [W]
436 : Real64 MinMassAirFlowSDAT = 0.0; // the air flow rate during heating for normal acting damper
437 : Real64 QZoneMax2SDAT = 0.0; // temporary variable
438 :
439 796 : void init_state([[maybe_unused]] EnergyPlusData &state) override
440 : {
441 796 : }
442 :
443 0 : void clear_state() override
444 : {
445 0 : new (this) SingleDuctData();
446 0 : }
447 : };
448 :
449 : } // namespace EnergyPlus
450 :
451 : #endif
|