Line data Source code
1 : // EnergyPlus, Copyright (c) 1996-2023, 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 DataSizing_hh_INCLUDED
49 : #define DataSizing_hh_INCLUDED
50 :
51 : // ObjexxFCL Headers
52 : #include <ObjexxFCL/Array1D.hh>
53 : #include <ObjexxFCL/Array2D.hh>
54 :
55 : // EnergyPlus Headers
56 : #include <EnergyPlus/Data/BaseData.hh>
57 : #include <EnergyPlus/DataGlobals.hh>
58 : #include <EnergyPlus/DataHVACGlobals.hh>
59 : #include <EnergyPlus/EPVector.hh>
60 : #include <EnergyPlus/EnergyPlus.hh>
61 :
62 : namespace EnergyPlus {
63 :
64 : // Forward declarations
65 : struct EnergyPlusData;
66 :
67 : namespace DataSizing {
68 :
69 : enum class OAFlowCalcMethod
70 : // parameters for outside air flow method
71 : {
72 : Invalid = -1,
73 : PerPerson, // set the outdoor air flow rate based on number of people in the zone
74 : PerZone, // sum the outdoor air flow rate per zone based on user input
75 : PerArea, // sum the outdoor air flow rate based on zone area
76 : ACH, // sum the outdoor air flow rate based on number of air changes for the zone
77 : Sum, // sum the outdoor air flow rate of the people component and the space floor area component
78 : Max, // use the maximum of the outdoor air flow rate of the people component and the space floor area component
79 : IAQProcedure, // Use ASHRAE Standard 62.1-2007 IAQP to calculate the zone level outdoor air flow rates
80 : PCOccSch, // ProportionalControlBasedOnOccupancySchedule, Use ASHRAE Standard 62.1-2004 or Trane Engineer's newsletter (volume 34-5) to
81 : // calculate the zone level outdoor air flow rates based on scheduled occupancy
82 : PCDesOcc, // ProportionalControlBasedOnDesignOccupancy, Use ASHRAE Standard 62.1-2004 or Trane Engineer's newsletter (volume 34-5) to
83 : // calculate the zone level outdoor air flow rates based on design occupancy
84 : Num
85 : };
86 :
87 : constexpr std::array<std::string_view, static_cast<int>(OAFlowCalcMethod::Num)> OAFlowCalcMethodNames{
88 : "Flow/Person",
89 : "Flow/Zone",
90 : "Flow/Area",
91 : "AirChanges/Hour",
92 : "Sum",
93 : "Maximum",
94 : "IndoorAirQualityProcedure",
95 : "ProportionalControlBasedOnOccupancySchedule",
96 : "ProportionalControlBasedOnDesignOccupancy"};
97 :
98 : // parameters for outside air
99 : constexpr int AllOA(1);
100 : constexpr int MinOA(2);
101 :
102 : // parameters for loop fluid type
103 : constexpr int HeatingLoop(1);
104 : constexpr int CoolingLoop(2);
105 : constexpr int CondenserLoop(3);
106 : constexpr int SteamLoop(4);
107 :
108 : // parameters for sizing
109 : constexpr int NonCoincident(1);
110 : constexpr int Coincident(2);
111 :
112 : // parameters for Cooling Peak Load Type
113 : enum class PeakLoad
114 : {
115 : Invalid = -1,
116 : SensibleCooling,
117 : TotalCooling,
118 : Num
119 : };
120 :
121 : // parameters for Central Cooling Capacity Control Method
122 : enum class CapacityControl
123 : {
124 : Invalid = -1,
125 : VAV,
126 : Bypass,
127 : VT,
128 : OnOff,
129 : Num
130 : };
131 :
132 : // parameters for supply air flow rate method
133 : constexpr int SupplyAirTemperature(1);
134 : constexpr int TemperatureDifference(2);
135 : constexpr int SupplyAirHumidityRatio(3);
136 : constexpr int HumidityRatioDifference(4);
137 :
138 : // parameters for sizing
139 : constexpr int FromDDCalc(1);
140 : constexpr int InpDesAirFlow(2);
141 : constexpr int DesAirFlowWithLim(3);
142 :
143 : constexpr int DOANeutralSup(1);
144 : constexpr int DOANeutralDehumSup(2);
145 : constexpr int DOACoolSup(3);
146 :
147 : // parameters for Type of Load to Size On
148 : enum class LoadSizing
149 : {
150 : Invalid = -1,
151 : Sensible,
152 : Latent,
153 : Total,
154 : Ventilation,
155 : Num
156 : };
157 :
158 : // parameter for autosize
159 : constexpr Real64 AutoSize(-99999.0);
160 :
161 : // parameter for (time-of-peak) sizing format
162 : static constexpr std::string_view PeakHrMinFmt("{:02}:{:02}:00");
163 :
164 : // Zone Outdoor Air Method
165 : constexpr int ZOAM_ProportionalControlDesOcc(9); // Use ASHRAE Standard 62.1-2004 or Trane Engineer's newsletter (volume 34-5)
166 : // to calculate the zone level outdoor air flow rates based on design occupancy
167 :
168 : enum class SysOAMethod
169 : {
170 : Invalid = -1,
171 : ZoneSum, // Sum the outdoor air flow rates of all zones
172 : VRP, // Use ASHRAE Standard 62.1-2007 to calculate the system level outdoor air flow rates
173 : IAQP, // Use ASHRAE Standard 62.1-2007 IAQP to calculate the system level outdoor air flow rates based on the CO2 setpoint
174 : ProportionalControlSchOcc, // Use ASHRAE Standard 62.1-2004 or Trane Engineer's newsletter (volume 34-5) to calculate the system level outdoor
175 : // air flow rates based on scheduled occupancy
176 : IAQPGC, // Use ASHRAE Standard 62.1-2004 IAQP to calculate the system level outdoor air flow rates based on the generic contaminant setpoint
177 : IAQPCOM, // Take the maximum outdoor air rate from both CO2 and generic contaminant controls based on the generic contaminant setpoint
178 : ProportionalControlDesOcc, // Use ASHRAE Standard 62.1-2004 or Trane Engineer's newsletter (volume 34-5) to calculate the system level outdoor
179 : // air flow rates based on design occupancy
180 : ProportionalControlDesOARate, // Calculate the system level outdoor air flow rates based on design OA rate
181 : SP, // Use the ASHRAE Standard 62.1 Simplified Procedure to calculate the system level outdoor air flow rates considering the zone air
182 : // distribution effectiveness and the system ventilation efficiency
183 : VRPL, // Use ASHRAE Standard 62.1-2007 to calculate the system level outdoor air flow rates
184 : Num
185 : };
186 :
187 : // Zone HVAC Equipment Supply Air Sizing Option
188 : constexpr int None(1);
189 : constexpr int SupplyAirFlowRate(2);
190 : constexpr int FlowPerFloorArea(3);
191 : constexpr int FractionOfAutosizedCoolingAirflow(4);
192 : constexpr int FractionOfAutosizedHeatingAirflow(5);
193 : constexpr int FlowPerCoolingCapacity(6);
194 : constexpr int FlowPerHeatingCapacity(7);
195 :
196 : constexpr int CoolingDesignCapacity(8);
197 : constexpr int HeatingDesignCapacity(9);
198 : constexpr int CapacityPerFloorArea(10);
199 : constexpr int FractionOfAutosizedCoolingCapacity(11);
200 : constexpr int FractionOfAutosizedHeatingCapacity(12);
201 :
202 : constexpr int NoSizingFactorMode(101);
203 : constexpr int GlobalHeatingSizingFactorMode(102);
204 : constexpr int GlobalCoolingSizingFactorMode(103);
205 : constexpr int LoopComponentSizingFactorMode(104);
206 :
207 : enum class ZoneFanPlacement
208 : {
209 : Invalid = -1,
210 : NotSet,
211 : BlowThru,
212 : DrawThru,
213 : Num
214 : };
215 :
216 : enum class ZoneSizing
217 : {
218 : Invalid = -1,
219 : Sensible,
220 : Latent,
221 : SensibleAndLatent,
222 : SensibleOnly,
223 : Num
224 : };
225 : constexpr std::array<std::string_view, static_cast<int>(ZoneSizing::Num)> ZoneSizingMethodNamesUC{
226 : "SENSIBLE LOAD", "LATENT LOAD", "SENSIBLE AND LATENT LOAD", "SENSIBLE LOAD ONLY NO LATENT LOAD"};
227 :
228 : // Types
229 :
230 2238130 : struct ZoneSizingInputData
231 : {
232 : // Members
233 : std::string ZoneName; // name of a zone
234 : int ZoneNum; // index of the zone
235 : int ZnCoolDgnSAMethod; // choice of how to get zone cooling design air temperature;
236 : // 1 = specify supply air temperature,
237 : // 2 = calculate from the temperature difference
238 : int ZnHeatDgnSAMethod; // choice of how to get zone heating design air temperature;
239 : // 1 = specify supply air temperature,
240 : // 2 = calculate from the temperature difference
241 : Real64 CoolDesTemp; // zone design cooling supply air temperature [C]
242 : Real64 HeatDesTemp; // zone design heating supply air temperature [C]
243 : Real64 CoolDesTempDiff; // zone design cooling supply air temperature difference [deltaC]
244 : Real64 HeatDesTempDiff; // zone design heating supply air temperature difference [deltaC]
245 : Real64 CoolDesHumRat; // zone design cooling supply air humidity ratio [kgWater/kgDryAir]
246 : Real64 HeatDesHumRat; // zone design heating supply air humidity ratio [kgWater/kgDryAir]
247 : std::string DesignSpecOAObjName; // name of the DesignSpecification:OutdoorAir or DesignSpecification:OutdoorAir:SpaceList object
248 : int CoolAirDesMethod; // choice of how to get zone cooling design air flow rates;
249 : // 1 = calc from des day simulation; 2 = m3/s per zone, user input
250 : // 3 = apply limits to air flow rate from DD calc
251 : Real64 DesCoolAirFlow; // design zone supply air flow rate [m3/s]
252 : Real64 DesCoolMinAirFlowPerArea; // design cooling minimum air flow rate per zone area [m3/s / m2]
253 : Real64 DesCoolMinAirFlow; // design cooling minimum air flow rate [m3/s]
254 : Real64 DesCoolMinAirFlowFrac; // design cooling minimum air flow rate fraction
255 : // (of the cooling design air flow rate)
256 : int HeatAirDesMethod; // choice of how to get zone heating design air flow rates;
257 : // 1 = calc from des day simulation; 2 = m3/s per zone, user input
258 : // 3 = apply limits to air flow rate from DD calc
259 : Real64 DesHeatAirFlow; // design zone heating supply air flow rate [m3/s]
260 : Real64 DesHeatMaxAirFlowPerArea; // design heating maximum air flow rate per zone area [m3/s / m2]
261 : Real64 DesHeatMaxAirFlow; // design heating maximum air flow rate [m3/s]
262 : Real64 DesHeatMaxAirFlowFrac; // design heating maximum air flow rate fraction
263 : // (of the cooling design air flow rate)
264 : Real64 HeatSizingFactor; // the zone heating sizing ratio
265 : Real64 CoolSizingFactor; // the zone cooling sizing ratio
266 : Real64 ZoneADEffCooling;
267 : Real64 ZoneADEffHeating;
268 : std::string ZoneAirDistEffObjName; // name of the zone air distribution effectiveness object name
269 : int ZoneAirDistributionIndex; // index to the zone air distribution object
270 : int ZoneDesignSpecOAIndex; // index to the zone design spec OA object
271 : Real64 ZoneSecondaryRecirculation; // the zone secondary air recirculation fraction
272 : Real64 ZoneVentilationEff; // zone ventilation efficiency
273 : bool AccountForDOAS; // False: do nothing; True: calculate the effect of a DOA system on the zone sizing arrays
274 : int DOASControlStrategy; // 1=supply neutral ventilation air; 2=supply neutral dehumidified ventilation air;
275 : // 3=supply cold ventilation air
276 : Real64 DOASLowSetpoint; // Dedicated Outside Air Low Setpoint for Design [C]
277 : Real64 DOASHighSetpoint; // Dedicated Outside Air High Setpoint for Design [C]
278 :
279 : // zone latent sizing inputs
280 : bool zoneLatentSizing = false;
281 : Real64 zoneRHDehumidifySetPoint = 50.0;
282 : Real64 zoneRHHumidifySetPoint = 50.0;
283 : Real64 LatentCoolDesHumRat = 0.0; // zone design dehumidification supply air humidity ratio [kgw/kga]
284 : Real64 CoolDesHumRatDiff = 0.005; // zone design cooling supply air humidity ratio difference [deltakgw/kga]
285 : Real64 LatentHeatDesHumRat = 0.0; // zone design humidification supply air humidity ratio [kgw/kga]
286 : Real64 HeatDesHumRatDiff = 0.005; // zone design heating supply air humidity ratio temperature difference [deltakgw/kga]
287 : int ZnLatCoolDgnSAMethod = 0; // choice of how to get zone latent cooling design air humidity ratio;
288 : int ZnLatHeatDgnSAMethod = 0; // choice of how to get zone latent heating design air humidity ratio;
289 : int zoneRHDehumidifySchIndex = 0; // index to zone RH dehumidifying schedule used for zone sizing
290 : int zoneRHHumidifySchIndex = 0; // index to zone RH humidifying schedule used for zone sizing
291 : ZoneSizing zoneSizingMethod = ZoneSizing::Invalid; // load to sizing on: sensible, latent, sensibleandlatent, sensibleonlynolatent
292 :
293 : // Default Constructor
294 3772 : ZoneSizingInputData()
295 3772 : : ZoneNum(0), ZnCoolDgnSAMethod(0), ZnHeatDgnSAMethod(0), CoolDesTemp(0.0), HeatDesTemp(0.0), CoolDesTempDiff(0.0), HeatDesTempDiff(0.0),
296 : CoolDesHumRat(0.0), HeatDesHumRat(0.0), CoolAirDesMethod(0), DesCoolAirFlow(0.0), DesCoolMinAirFlowPerArea(0.0), DesCoolMinAirFlow(0.0),
297 : DesCoolMinAirFlowFrac(0.0), HeatAirDesMethod(0), DesHeatAirFlow(0.0), DesHeatMaxAirFlowPerArea(0.0), DesHeatMaxAirFlow(0.0),
298 : DesHeatMaxAirFlowFrac(0.0), HeatSizingFactor(0.0), CoolSizingFactor(0.0), ZoneADEffCooling(1.0), ZoneADEffHeating(1.0),
299 : ZoneAirDistributionIndex(0), ZoneDesignSpecOAIndex(0), ZoneSecondaryRecirculation(0.0), ZoneVentilationEff(0.0), AccountForDOAS(false),
300 3772 : DOASControlStrategy(0), DOASLowSetpoint(0.0), DOASHighSetpoint(0.0)
301 : {
302 3772 : }
303 : };
304 :
305 4813729 : struct ZoneSizingData
306 : {
307 : // Members
308 : std::string ZoneName; // name of a zone
309 : std::string ADUName; // Terminal Unit Name (air distribution unit or direct air unit) - only assigned for TermUnitFinalZoneSizing
310 : std::string CoolDesDay; // name of a cooling design day
311 : std::string HeatDesDay; // name of a heating design day
312 : int ZnCoolDgnSAMethod; // choice of how to get zone cooling design air temperature;
313 : // 1 = specify supply air temperature,
314 : // 2 = calculate from the temperature difference
315 : int ZnHeatDgnSAMethod; // choice of how to get zone heating design air temperature;
316 : // 1 = specify supply air temperature,
317 : // 2 = calculate from the temperature difference
318 : Real64 CoolDesTemp; // zone design cooling supply air temperature [C]
319 : Real64 HeatDesTemp; // zone design heating supply air temperature [C]
320 : Real64 CoolDesTempDiff; // zone design cooling supply air temperature difference [deltaC]
321 : Real64 HeatDesTempDiff; // zone design heating supply air temperature difference [deltaC]
322 : Real64 CoolDesHumRat; // zone design cooling supply air humidity ratio [kgWater/kgDryAir]
323 : Real64 HeatDesHumRat; // zone design heating supply air humidity ratio [kgWater/kgDryAir]
324 : int ZoneAirDistributionIndex; // index to DesignSpecification:ZoneAirDistribution object
325 : int ZoneDesignSpecOAIndex; // index to DesignSpecification:OutdoorAir object
326 : Real64 DesOAFlowPPer; // design outside air flow per person in zone [m3/s] (average for zone across spaces)
327 : Real64 DesOAFlowPerArea; // design outside air flow per zone area [m3/s / m2] (average for zone across spaces)
328 : int CoolAirDesMethod; // choice of how to get zone cooling design air flow rates;
329 : // 1 = calc from des day simulation; 2 = m3/s per zone, user input
330 : // 3 = apply limits to air flow rate from DD calc
331 : Real64 InpDesCoolAirFlow; // design zone supply air flow rate [m3/s]
332 : Real64 DesCoolMinAirFlowPerArea; // design cooling minimum air flow rate per zone area [m3/s / m2]
333 : Real64 DesCoolMinAirFlow; // design cooling minimum air flow rate [m3/s]
334 : Real64 DesCoolMinAirFlowFrac; // design cooling minimum air flow rate fraction
335 : // (of the cooling design air flow rate)
336 : int HeatAirDesMethod; // choice of how to get zone heating design air flow rates;
337 : // 1 = calc from des day simulation; 2 = m3/s per zone, user input
338 : // 3 = apply limits to air flow rate from DD calc
339 : Real64 InpDesHeatAirFlow; // design zone heating supply air flow rate [m3/s]
340 : Real64 DesHeatMaxAirFlowPerArea; // design heating maximum air flow rate per zone area [m3/s / m2]
341 : Real64 DesHeatMaxAirFlow; // design heating maximum air flow rate [m3/s]
342 : Real64 DesHeatMaxAirFlowFrac; // design heating maximum air flow rate fraction
343 : // (of the cooling design air flow rate)
344 : Real64 HeatSizingFactor; // the zone heating sizing ratio
345 : Real64 CoolSizingFactor; // the zone cooling sizing ratio
346 : bool AccountForDOAS; // False: do nothing; True: calculate the effect of a DOA system on the zone sizing arrays
347 : int DOASControlStrategy; // 1=supply neutral ventilation air; 2=supply neutral dehumidified ventilation air;
348 : // 3=supply cold ventilation air
349 : Real64 DOASLowSetpoint; // Dedicated Outside Air Low Setpoint for Design [C]
350 : Real64 DOASHighSetpoint; // Dedicated Outside Air High Setpoint for Design [C]
351 : int ZoneNum; // index into the Zone data array (in DataHeatBalance)
352 : Real64 DesHeatMassFlow; // zone design heating air mass flow rate [kg/s]
353 : Real64 DesHeatMassFlowNoOA; // zone design heating air mass flow rate without applying MinOA as a limit [kg/s]
354 : Real64 DesHeatOAFlowFrac; // zone design heating OA air volume fraction [-]
355 : bool EMSOverrideDesHeatMassOn; // true if EMS is acting on this structure
356 : Real64 EMSValueDesHeatMassFlow; // Value EMS directing to use for Design Heating air mass flow [kg/s]
357 : Real64 DesCoolMassFlow; // zone design cooling air mass flow rate [kg/s]
358 : Real64 DesCoolMassFlowNoOA; // zone design cooling air mass flow rate without applying MinOA as a limit [kg/s]
359 : Real64 DesCoolOAFlowFrac; // zone design cooling OA air volume fraction [-]
360 : bool EMSOverrideDesCoolMassOn; // true if EMS is acting on this structure
361 : Real64 EMSValueDesCoolMassFlow; // Value EMS directing to use for Design Cooling air mass flow [kg/s]
362 : Real64 DesHeatLoad; // zone design heating load including sizing factor and scaled to match airflow sizing [W]
363 : Real64 NonAirSysDesHeatLoad; // base zone design heating load including sizing factor [W]
364 : bool EMSOverrideDesHeatLoadOn; // true if EMS is acting on this structure
365 : Real64 EMSValueDesHeatLoad; // Value EMS directing to use for zone design heating load [W]
366 : Real64 DesCoolLoad; // zone design cooling load including sizing factor and scaled to match airflow sizing [W]
367 : Real64 NonAirSysDesCoolLoad; // base zone design cooling load including sizing factor [W]
368 : bool EMSOverrideDesCoolLoadOn; // true if EMS is acting on this structure
369 : Real64 EMSValueDesCoolLoad; // Value EMS directing to use for zone design cooling load [W]
370 : Real64 DesHeatDens; // zone design heating air density [kg/m3]
371 : Real64 DesCoolDens; // zone design cooling air density [kg/m3]
372 : Real64 DesHeatVolFlow; // zone design heating air volume flow rate including sizing factor and scaled to match airflow sizing [m3/s]
373 : Real64 DesHeatVolFlowNoOA; // zone design heating air volume flow rate including sizing factor and scaled to match airflow sizing without
374 : // MinOA limit [m3/s]
375 : Real64 NonAirSysDesHeatVolFlow; // base zone design heating air volume flow rate including sizing factor [m3/s]
376 : bool EMSOverrideDesHeatVolOn; // true if EMS is acting on this structure
377 : Real64 EMSValueDesHeatVolFlow; // Value EMS directing to use for Design Heating air volume flow [m3/s]
378 : Real64 DesCoolVolFlow; // zone design cooling air volume flow rate [m3/s]
379 : Real64 DesCoolVolFlowNoOA; // zone design cooling air volume flow rate without applying MinOA as a limit [m3/s]
380 : Real64 NonAirSysDesCoolVolFlow; // base zone design cooling air volume flow rate including sizing factor [m3/s]
381 : bool EMSOverrideDesCoolVolOn; // true if EMS is acting on this structure
382 : Real64 EMSValueDesCoolVolFlow; // Value EMS directing to use for Design cooling air volume flow [m3/s]
383 : Real64 DesHeatVolFlowMax; // zone design heating maximum air volume flow rate [m3/s]
384 : Real64 DesCoolVolFlowMin; // zone design cooling minimum air volume flow rate [m3/s]
385 : Real64 DesHeatCoilInTemp; // zone heating coil design air inlet temperature [C]
386 : Real64 DesCoolCoilInTemp; // zone cooling coil design air inlet temperature [C]
387 : Real64 DesHeatCoilInHumRat; // zone heating coil design air inlet humidity ratio [kg/kg]
388 : Real64 DesCoolCoilInHumRat; // zone cooling coil design air inlet humidity ratio [kg/kg]
389 : Real64 DesHeatCoilInTempTU; // zone heating coil design air inlet temperature (supply air)([C]
390 : Real64 DesCoolCoilInTempTU; // zone cooling coil design air inlet temperature (supply air)[C]
391 : Real64 DesHeatCoilInHumRatTU; // zone heating coil design air inlet humidity ratio [kg/kg]
392 : Real64 DesCoolCoilInHumRatTU; // zone cooling coil design air inlet humidity ratio [kg/kg]
393 : Real64 HeatMassFlow; // current zone heating air mass flow rate (HVAC time step)
394 : Real64 CoolMassFlow; // current zone cooling air mass flow rate (HVAC time step)
395 : Real64 HeatLoad; // current zone heating load (HVAC time step)
396 : Real64 CoolLoad; // current zone heating load (HVAC time step)
397 : Real64 HeatZoneTemp; // current zone temperature (heating, time step)
398 : Real64 HeatOutTemp; // current outdoor temperature (heating, time step)
399 : Real64 HeatZoneRetTemp; // current zone return temperature (heating, time step)
400 : Real64 HeatTstatTemp; // current zone thermostat temperature (heating, time step)
401 : Real64 CoolZoneTemp; // current zone temperature (cooling, time step)
402 : Real64 CoolOutTemp; // current Outdoor temperature (cooling, time step)
403 : Real64 CoolZoneRetTemp; // current zone return temperature (cooling, time step)
404 : Real64 CoolTstatTemp; // current zone thermostat temperature (cooling, time step)
405 : Real64 HeatZoneHumRat; // current zone humidity ratio (heating, time step)
406 : Real64 CoolZoneHumRat; // current zone humidity ratio (cooling, time step)
407 : Real64 HeatOutHumRat; // current outdoor humidity ratio (heating, time step)
408 : Real64 CoolOutHumRat; // current outdoor humidity ratio (cooling, time step)
409 : Real64 ZoneTempAtHeatPeak; // zone temp at max heating [C]
410 : Real64 ZoneRetTempAtHeatPeak; // zone return temp at max heating [C]
411 : Real64 OutTempAtHeatPeak; // outdoor temperature at max heating [C]
412 : Real64 ZoneTempAtCoolPeak; // zone temp at max cooling [C]
413 : Real64 ZoneRetTempAtCoolPeak; // zone return temp at max cooling [C]
414 : Real64 OutTempAtCoolPeak; // outdoor temperature at max cooling [C]
415 : Real64 ZoneHumRatAtHeatPeak; // zone humidity ratio at max heating [kg/kg]
416 : Real64 ZoneHumRatAtCoolPeak; // zone humidity ratio at max cooling [kg/kg]
417 : Real64 OutHumRatAtHeatPeak; // outdoor humidity at max heating [kg/kg]
418 : Real64 OutHumRatAtCoolPeak; // outdoor humidity at max cooling [kg/kg]
419 : int TimeStepNumAtHeatMax; // time step number (in day) at Heating peak
420 : int TimeStepNumAtCoolMax; // time step number (in day) at cooling peak
421 : int HeatDDNum; // design day index of design day causing heating peak
422 : int CoolDDNum; // design day index of design day causing cooling peak
423 : std::string cHeatDDDate; // date of design day causing heating peak
424 : std::string cCoolDDDate; // date of design day causing cooling peak
425 : Real64 MinOA; // design minimum outside air in m3/s
426 : Real64 DesCoolMinAirFlow2; // design cooling minimum air flow rate [m3/s] derived from DesCoolMinAirFlowPerArea
427 : Real64 DesHeatMaxAirFlow2; // design heating maximum air flow rate [m3/s] derived from DesHeatMaxAirFlowPerArea
428 : Array1D<Real64> HeatFlowSeq; // daily sequence of zone heating air mass flow rate (zone time step) [kg/s]
429 : Array1D<Real64> HeatFlowSeqNoOA; // daily sequence of zone heating air mass flow rate (zone time step) without MinOA limit [kg/s]
430 : Array1D<Real64> CoolFlowSeq; // daily sequence of zone cooling air mass flow rate (zone time step) [kg/s]
431 : Array1D<Real64> CoolFlowSeqNoOA; // daily sequence of zone cooling air mass flow rate (zone time step) without MinOA limit [kg/s]
432 : Array1D<Real64> HeatLoadSeq; // daily sequence of zone heating load (zone time step)
433 : Array1D<Real64> CoolLoadSeq; // daily sequence of zone cooling load (zone time step)
434 : Array1D<Real64> HeatZoneTempSeq; // daily sequence of zone temperatures (heating, zone time step)
435 : Array1D<Real64> HeatOutTempSeq; // daily sequence of outdoor temperatures (heating, zone time step)
436 : Array1D<Real64> HeatZoneRetTempSeq; // daily sequence of zone return temperatures (heating, zone time step)
437 : Array1D<Real64> HeatTstatTempSeq; // daily sequence of zone thermostat temperatures (heating, zone time step)
438 : Array1D<Real64> DesHeatSetPtSeq; // daily sequence of indoor set point temperatures (zone time step)
439 : Array1D<Real64> CoolZoneTempSeq; // daily sequence of zone temperatures (cooling, zone time step)
440 : Array1D<Real64> CoolOutTempSeq; // daily sequence of outdoor temperatures (cooling, zone time step)
441 : Array1D<Real64> CoolZoneRetTempSeq; // daily sequence of zone return temperatures (cooling, zone time step)
442 : Array1D<Real64> CoolTstatTempSeq; // daily sequence of zone thermostat temperatures (cooling, zone time step)
443 : Array1D<Real64> DesCoolSetPtSeq; // daily sequence of indoor set point temperatures (zone time step)
444 : Array1D<Real64> HeatZoneHumRatSeq; // daily sequence of zone humidity ratios (heating, zone time step)
445 : Array1D<Real64> CoolZoneHumRatSeq; // daily sequence of zone humidity ratios (cooling, zone time step)
446 : Array1D<Real64> HeatOutHumRatSeq; // daily sequence of outdoor humidity ratios (heating, zone time step)
447 : Array1D<Real64> CoolOutHumRatSeq; // daily sequence of outdoor humidity ratios (cooling, zone time step)
448 : Real64 ZoneADEffCooling; // the zone air distribution effectiveness in cooling mode
449 : Real64 ZoneADEffHeating; // the zone air distribution effectiveness in heating mode
450 : Real64 ZoneSecondaryRecirculation; // the zone secondary air recirculation fraction
451 : Real64 ZoneVentilationEff; // zone ventilation efficiency
452 : Real64 ZonePrimaryAirFraction; // the zone primary air fraction for cooling based calculations
453 : Real64 ZonePrimaryAirFractionHtg; // the zone primary air fraction for heating based calculations
454 : Real64 ZoneOAFracCooling; // OA fraction in cooling mode
455 : Real64 ZoneOAFracHeating; // OA fraction in heating mode
456 : Real64 TotalOAFromPeople; // Zone OA required due to people
457 : Real64 TotalOAFromArea; // Zone OA required based on floor area
458 : Real64 TotPeopleInZone; // total number of people in the zone
459 : Real64 TotalZoneFloorArea; // total zone floor area
460 : Real64 ZonePeakOccupancy; // zone peak occupancy based on max schedule value
461 : Real64 SupplyAirAdjustFactor; // supply air adjustment factor for next time step if OA is capped
462 : Real64 ZpzClgByZone; // OA Std 62.1 required fraction in cooling mode ? should this be ZdzClgByZone
463 : Real64 ZpzHtgByZone; // OA Std 62.1 required fraction in heating mode ? should this be ZdzHtgByZone
464 : Real64 VozClgByZone; // value of required cooling vent to zone, used in 62.1 tabular report, already includes people diversity term
465 : Real64 VozHtgByZone; // value of required heating vent to zone, used in 62.1 tabular report, already includes people diversity term
466 : Real64 DOASHeatLoad; // current heating load from DOAS supply air [W]
467 : Real64 DOASCoolLoad; // current cooling load from DOAS supply air [W]
468 : Real64 DOASHeatAdd; // current heat addition rate from DOAS supply air [W]
469 : Real64 DOASLatAdd; // current latent heat addition rate from DOAS supply air [W]
470 : Real64 DOASSupMassFlow; // current mass flow rate of DOAS supply air [kg/s]
471 : Real64 DOASSupTemp; // current DOAS supply air temperature [C]
472 : Real64 DOASSupHumRat; // current DOAS supply air humidity ratio [kgWater/kgDryAir]
473 : Real64 DOASTotCoolLoad; // current total cooling load imposed by DOAS supply air [W]
474 : bool VpzMinByZoneSPSized; // is Vpz_min sized using the 62.1 Standard Simplified Procedure
475 : Array1D<Real64> DOASHeatLoadSeq; // daily sequence of zone DOAS heating load (zone time step) [W]
476 : Array1D<Real64> DOASCoolLoadSeq; // daily sequence of zone DOAS cooling load (zone time step) [W]
477 : Array1D<Real64> DOASHeatAddSeq; // daily sequence of zone DOAS heat addition rate (zone time step) [W]
478 : Array1D<Real64> DOASLatAddSeq; // daily sequence of zone DOAS latent heat addition rate (zone time step) [W]
479 : Array1D<Real64> DOASSupMassFlowSeq; // daily sequence of zone DOAS supply mass flow rate (zone time step) [Kg/s]
480 : Array1D<Real64> DOASSupTempSeq; // daily sequence of zone DOAS supply temperature (zone time step) [C]
481 : Array1D<Real64> DOASSupHumRatSeq; // daily sequence of zone DOAS supply humidity ratio (zone time step) [kgWater/kgDryAir]
482 : Array1D<Real64> DOASTotCoolLoadSeq; // daily sequence of zone DOAS total cooling load (zone time step) [W]
483 :
484 : // Latent heat variables
485 : Real64 HeatLoadNoDOAS = 0.0; // current zone heating load no DOAS (HVAC time step)
486 : Real64 CoolLoadNoDOAS = 0.0; // current zone heating load no DOAS (HVAC time step)
487 : Real64 DesHeatLoadNoDOAS = 0.0; // design zone heating load no DOAS (HVAC time step)
488 : Real64 DesCoolLoadNoDOAS = 0.0; // design zone heating load no DOAS (HVAC time step)
489 : Real64 HeatLatentLoad = 0.0; // current zone humidification load (HVAC time step)
490 : Real64 CoolLatentLoad = 0.0; // current zone dehumidification load (HVAC time step)
491 : Real64 HeatLatentLoadNoDOAS = 0.0; // current zone humidification load without DOAS (HVAC time step)
492 : Real64 CoolLatentLoadNoDOAS = 0.0; // current zone dehumidification load without DOAS (HVAC time step)
493 : Real64 ZoneHeatLatentMassFlow = 0.0; // current mass flow rate required to meet humidification load [kg/s]
494 : Real64 ZoneCoolLatentMassFlow = 0.0; // current mass flow rate required to meet dehumidification load [kg/s]
495 : Real64 ZoneHeatLatentVolFlow = 0.0; // current volume flow rate required to meet humidification load [m3/s]
496 : Real64 ZoneCoolLatentVolFlow = 0.0; // current volume flow rate required to meet dehumidification load [m3/s]
497 : Real64 DesLatentHeatLoad = 0.0; // design zone humidification load (HVAC time step)
498 : Real64 DesLatentCoolLoad = 0.0; // design zone dehumidification load (HVAC time step)
499 : Real64 DesLatentHeatLoadNoDOAS = 0.0; // design zone humidification load no DOAS (HVAC time step)
500 : Real64 DesLatentCoolLoadNoDOAS = 0.0; // design zone dehumidification load no DOAS (HVAC time step)
501 : Real64 DesLatentHeatMassFlow = 0.0; // design mass flow rate required to meet humidification load [kg/s]
502 : Real64 DesLatentCoolMassFlow = 0.0; // design mass flow rate required to meet dehumidification load [kg/s]
503 : Real64 DesLatentHeatVolFlow = 0.0; // design volume flow rate required to meet humidification load [kg/s]
504 : Real64 DesLatentCoolVolFlow = 0.0; // design volume flow rate required to meet dehumidification load [kg/s]
505 : Real64 ZoneTempAtLatentCoolPeak = 0.0; // zone temp at max latent cooling [C]
506 : Real64 OutTempAtLatentCoolPeak = 0.0; // outdoor temp at max latent cooling [C]
507 : Real64 ZoneHumRatAtLatentCoolPeak = 0.0; // zone humrat at max latent cooling [kg/kg]
508 : Real64 OutHumRatAtLatentCoolPeak = 0.0; // outdoor humrat at max latent cooling [kg/kg]
509 : Real64 ZoneTempAtLatentHeatPeak = 0.0; // zone temp at max latent heating [C]
510 : Real64 OutTempAtLatentHeatPeak = 0.0; // outdoor temp at max latent heating [C]
511 : Real64 ZoneHumRatAtLatentHeatPeak = 0.0; // zone humrat at max latent heating [kg/kg]
512 : Real64 OutHumRatAtLatentHeatPeak = 0.0; // outdoor humrat at max latent heating [kg/kg]
513 : Real64 DesLatentHeatCoilInTemp = 0.0; // zone latent heating coil design air inlet temperature [C]
514 : Real64 DesLatentCoolCoilInTemp = 0.0; // zone latent cooling coil design air inlet temperature [C]
515 : Real64 DesLatentHeatCoilInHumRat = 0.0; // zone latent heating coil design air inlet humidity ratio [kg/kg]
516 : Real64 DesLatentCoolCoilInHumRat = 0.0; // zone latent cooling coil design air inlet humidity ratio [kg/kg]
517 : int TimeStepNumAtLatentHeatMax = 0; // time step number (in day) at heating peak
518 : int TimeStepNumAtLatentCoolMax = 0; // time step number (in day) at cooling peak
519 : int TimeStepNumAtLatentHeatNoDOASMax = 0; // time step number (in day) at latent heating peak without DOAS
520 : int TimeStepNumAtLatentCoolNoDOASMax = 0; // time step number (in day) at Latent cooling peak without DOAS
521 : int LatentHeatDDNum = 0; // design day index of design day causing heating peak
522 : int LatentCoolDDNum = 0; // design day index of design day causing cooling peak
523 : int LatentHeatNoDOASDDNum = 0; // design day index of design day causing latent heating peak with no DOAS
524 : int LatentCoolNoDOASDDNum = 0; // design day index of design day causing latent cooling peak with no DOAS
525 : std::string cLatentHeatDDDate; // date of design day causing heating peak
526 : std::string cLatentCoolDDDate; // date of design day causing cooling peak
527 : int TimeStepNumAtHeatNoDOASMax = 0; // time step number (in day) at Heating peak without DOAS
528 : int TimeStepNumAtCoolNoDOASMax = 0; // time step number (in day) at cooling peak without DOAS
529 : int HeatNoDOASDDNum = 0; // design day index of design day causing heating peak without DOAS
530 : int CoolNoDOASDDNum = 0; // design day index of design day causing cooling peak without DOAS
531 : std::string cHeatNoDOASDDDate; // date of design day causing heating peak without DOAS
532 : std::string cCoolNoDOASDDDate; // date of design day causing cooling peak without DOAS
533 : Array1D<Real64> HeatLoadNoDOASSeq; // daily sequence of zone heating load No DOAS (zone time step)
534 : Array1D<Real64> CoolLoadNoDOASSeq; // daily sequence of zone cooling load No DOAS (zone time step)
535 : Array1D<Real64> LatentHeatLoadSeq; // daily sequence of zone latent heating load (zone time step) [W]
536 : Array1D<Real64> LatentCoolLoadSeq; // daily sequence of zone latent cooling load (zone time step) [W]
537 : Array1D<Real64> HeatLatentLoadNoDOASSeq; // daily sequence of zone latent heating load No DOAS (zone time step) [W]
538 : Array1D<Real64> CoolLatentLoadNoDOASSeq; // daily sequence of zone latent cooling load No DOAS (zone time step) [W]
539 : Array1D<Real64> LatentCoolFlowSeq; // daily sequence of zone latent cooling supply mass flow rate (zone time step) [Kg/s]
540 : Array1D<Real64> LatentHeatFlowSeq; // daily sequence of zone latent heating supply mass flow rate (zone time step) [Kg/s]
541 : bool zoneLatentSizing = false; // trigger to do RH control during zone sizing
542 : Real64 zoneRHDehumidifySetPoint = 50.0; // RH dehumidifying set point used during sizing, default to 50%
543 : int zoneRHDehumidifySchIndex = 0; // index to zone RH dehumidifying schedule used for zone sizing
544 : Real64 zoneRHHumidifySetPoint = 50.0; // RH humidifying set point used during sizing, default to 50%
545 : int zoneRHHumidifySchIndex = 0; // index to zone RH humidifying schedule used for zone sizing
546 : Real64 LatentCoolDesHumRat = 0.0; // zone design dehumidification supply air humidity ratio [kgw/kga]
547 : Real64 CoolDesHumRatDiff = 0.005; // zone design cooling supply air humidity ratio difference [deltakgw/kga]
548 : Real64 LatentHeatDesHumRat = 0.0; // zone design humidification supply air humidity ratio [kgw/kga]
549 : Real64 HeatDesHumRatDiff = 0.005; // zone design heating supply air humidity ratio temperature difference [deltakgw/kga]
550 : int ZnLatCoolDgnSAMethod = 0; // choice of how to get zone latent cooling design air humidity ratio;
551 : int ZnLatHeatDgnSAMethod = 0; // choice of how to get zone latent heating design air humidity ratio;
552 : Real64 ZoneRetTempAtLatentCoolPeak = 0.0; // zone return temp at latent cooling peak time step
553 : Real64 ZoneRetTempAtLatentHeatPeak = 0.0; // zone return temp at latent heating peak time step
554 : std::string CoolNoDOASDesDay; // name of a cooling design day without DOAS
555 : std::string HeatNoDOASDesDay; // name of a heating design day without DOAS
556 : std::string LatCoolDesDay; // name of a cooling design day
557 : std::string LatHeatDesDay; // name of a heating design day
558 : std::string LatCoolNoDOASDesDay; // name of a cooling design day without DOAS
559 : std::string LatHeatNoDOASDesDay; // name of a heating design day without DOAS
560 : ZoneSizing zoneSizingMethod = ZoneSizing::Invalid; // load to sizing on: sensible, latent, sensibleandlatent, sensibleonlynolatent
561 : std::string CoolSizingType; // string reported to eio, Cooling or Latent Cooling
562 : std::string HeatSizingType; // string reported to eio, Heating or Latent Heating
563 :
564 : // Default Constructor
565 13093 : ZoneSizingData()
566 13093 : : ZnCoolDgnSAMethod(0), ZnHeatDgnSAMethod(0), CoolDesTemp(0.0), HeatDesTemp(0.0), CoolDesTempDiff(0.0), HeatDesTempDiff(0.0),
567 : CoolDesHumRat(0.0), HeatDesHumRat(0.0), ZoneAirDistributionIndex(0), ZoneDesignSpecOAIndex(0), DesOAFlowPPer(0.0),
568 : DesOAFlowPerArea(0.0), CoolAirDesMethod(0), InpDesCoolAirFlow(0.0), DesCoolMinAirFlowPerArea(0.0), DesCoolMinAirFlow(0.0),
569 : DesCoolMinAirFlowFrac(0.0), HeatAirDesMethod(0), InpDesHeatAirFlow(0.0), DesHeatMaxAirFlowPerArea(0.0), DesHeatMaxAirFlow(0.0),
570 : DesHeatMaxAirFlowFrac(0.0), HeatSizingFactor(0.0), CoolSizingFactor(0.0), AccountForDOAS(false), DOASControlStrategy(0),
571 : DOASLowSetpoint(0.0), DOASHighSetpoint(0.0), ZoneNum(0), DesHeatMassFlow(0.0), DesHeatMassFlowNoOA(0.0), DesHeatOAFlowFrac(0.0),
572 : EMSOverrideDesHeatMassOn(false), EMSValueDesHeatMassFlow(0.0), DesCoolMassFlow(0.0), DesCoolMassFlowNoOA(0.0), DesCoolOAFlowFrac(0.0),
573 : EMSOverrideDesCoolMassOn(false), EMSValueDesCoolMassFlow(0.0), DesHeatLoad(0.0), NonAirSysDesHeatLoad(0.0),
574 : EMSOverrideDesHeatLoadOn(false), EMSValueDesHeatLoad(0.0), DesCoolLoad(0.0), NonAirSysDesCoolLoad(0.0), EMSOverrideDesCoolLoadOn(false),
575 : EMSValueDesCoolLoad(0.0), DesHeatDens(0.0), DesCoolDens(0.0), DesHeatVolFlow(0.0), DesHeatVolFlowNoOA(0.0),
576 : NonAirSysDesHeatVolFlow(0.0), EMSOverrideDesHeatVolOn(false), EMSValueDesHeatVolFlow(0.0), DesCoolVolFlow(0.0), DesCoolVolFlowNoOA(0.0),
577 : NonAirSysDesCoolVolFlow(0.0), EMSOverrideDesCoolVolOn(false), EMSValueDesCoolVolFlow(0.0), DesHeatVolFlowMax(0.0),
578 : DesCoolVolFlowMin(0.0), DesHeatCoilInTemp(0.0), DesCoolCoilInTemp(0.0), DesHeatCoilInHumRat(0.0), DesCoolCoilInHumRat(0.0),
579 : DesHeatCoilInTempTU(0.0), DesCoolCoilInTempTU(0.0), DesHeatCoilInHumRatTU(0.0), DesCoolCoilInHumRatTU(0.0), HeatMassFlow(0.0),
580 : CoolMassFlow(0.0), HeatLoad(0.0), CoolLoad(0.0), HeatZoneTemp(0.0), HeatOutTemp(0.0), HeatZoneRetTemp(0.0), HeatTstatTemp(0.0),
581 : CoolZoneTemp(0.0), CoolOutTemp(0.0), CoolZoneRetTemp(0.0), CoolTstatTemp(0.0), HeatZoneHumRat(0.0), CoolZoneHumRat(0.0),
582 : HeatOutHumRat(0.0), CoolOutHumRat(0.0), ZoneTempAtHeatPeak(0.0), ZoneRetTempAtHeatPeak(0.0), OutTempAtHeatPeak(0.0),
583 : ZoneTempAtCoolPeak(0.0), ZoneRetTempAtCoolPeak(0.0), OutTempAtCoolPeak(0.0), ZoneHumRatAtHeatPeak(0.0), ZoneHumRatAtCoolPeak(0.0),
584 : OutHumRatAtHeatPeak(0.0), OutHumRatAtCoolPeak(0.0), TimeStepNumAtHeatMax(0), TimeStepNumAtCoolMax(0), HeatDDNum(0), CoolDDNum(0),
585 : MinOA(0.0), DesCoolMinAirFlow2(0.0), DesHeatMaxAirFlow2(0.0), ZoneADEffCooling(1.0), ZoneADEffHeating(1.0),
586 : ZoneSecondaryRecirculation(0.0), ZoneVentilationEff(0.0), ZonePrimaryAirFraction(0.0), ZonePrimaryAirFractionHtg(0.0),
587 : ZoneOAFracCooling(0.0), ZoneOAFracHeating(0.0), TotalOAFromPeople(0.0), TotalOAFromArea(0.0), TotPeopleInZone(0.0),
588 : TotalZoneFloorArea(0.0), ZonePeakOccupancy(0.0), SupplyAirAdjustFactor(1.0), ZpzClgByZone(0.0), ZpzHtgByZone(0.0), VozClgByZone(0.0),
589 : VozHtgByZone(0.0), DOASHeatLoad(0.0), DOASCoolLoad(0.0), DOASHeatAdd(0.0), DOASLatAdd(0.0), DOASSupMassFlow(0.0), DOASSupTemp(0.0),
590 13093 : DOASSupHumRat(0.0), DOASTotCoolLoad(0.0), VpzMinByZoneSPSized(false)
591 : {
592 13093 : }
593 :
594 : void scaleZoneCooling(Real64 ratio // Scaling ratio
595 : );
596 : void scaleZoneHeating(Real64 ratio // Scaling ratio
597 : );
598 : void zeroMemberData();
599 : void allocateMemberArrays(int numOfTimeStepInDay);
600 : };
601 :
602 2384160 : struct TermUnitSizingData
603 : {
604 : // Members
605 : int CtrlZoneNum; // Controlled zone number (index to FinalZoneSizing, etc.)
606 : std::string ADUName; // Terminal Unit Name (air distribution unit or direct air unit)
607 : Real64 AirVolFlow; // design air vol flow rate for single duct terminal unit [m3/s]
608 : Real64 MaxHWVolFlow; // design Hot Water vol flow for single duct terminal unit [m3/s]
609 : Real64 MaxSTVolFlow; // design Steam vol flow rate for single duct terminal unit [m3/s]
610 : Real64 MaxCWVolFlow; // design Cold Water vol flow for single duct terminal unit [m3/s]
611 : Real64 MinFlowFrac; // design minimum flow fraction for a terminal unit
612 : Real64 InducRat; // design induction ratio for a terminal unit
613 : bool InducesPlenumAir; // True if secondary air comes from the plenum
614 : Real64 ReheatAirFlowMult; // multiplier for air flow in reheat coil UA calculation
615 : Real64 ReheatLoadMult; // multiplier for load in reheat coil UA calculation
616 : Real64 DesCoolingLoad; // design cooling load used for zone equipment [W]
617 : Real64 DesHeatingLoad; // design heating load used for zone equipment [W]
618 : Real64 SpecDesSensCoolingFrac; // Fraction of Design Sensible Cooling Load from DesignSpecification:AirTerminal:Sizing
619 : Real64 SpecDesCoolSATRatio; // Cooling Design Supply Air Temperature Difference Ratio from DesignSpecification:AirTerminal:Sizing
620 : Real64 SpecDesSensHeatingFrac; // Fraction of Design Sensible Heating Load from DesignSpecification:AirTerminal:Sizing
621 : Real64 SpecDesHeatSATRatio; // Heating Design Supply Air Temperature Difference Ratio from DesignSpecification:AirTerminal:Sizing
622 : Real64 SpecMinOAFrac; // Fraction of Minimum Outdoor Air Flow from DesignSpecification:AirTerminal:Sizing
623 :
624 : // Default Constructor
625 4895 : TermUnitSizingData()
626 4895 : : CtrlZoneNum(0), AirVolFlow(0.0), MaxHWVolFlow(0.0), MaxSTVolFlow(0.0), MaxCWVolFlow(0.0), MinFlowFrac(0.0), InducRat(0.0),
627 : InducesPlenumAir(false), ReheatAirFlowMult(1.0), ReheatLoadMult(1.0), DesCoolingLoad(0.0), DesHeatingLoad(0.0),
628 4895 : SpecDesSensCoolingFrac(1.0), SpecDesCoolSATRatio(1.0), SpecDesSensHeatingFrac(1.0), SpecDesHeatSATRatio(1.0), SpecMinOAFrac(1.0)
629 : {
630 4895 : }
631 :
632 : Real64 applyTermUnitSizingCoolFlow(Real64 coolFlowWithOA, // Cooling flow rate with MinOA limit applied
633 : Real64 coolFlowNoOA // Cooling flow rate without MinOA limit applied
634 : );
635 :
636 : Real64 applyTermUnitSizingHeatFlow(Real64 heatFlowWithOA, // Heating flow rate with MinOA limit applied
637 : Real64 heatFlowNoOA // Heating flow rate without MinOA limit applied
638 : );
639 : };
640 :
641 3180037 : struct ZoneEqSizingData // data saved from zone eq component sizing and passed to subcomponents
642 : {
643 : // Members
644 : Real64 AirVolFlow; // design air vol flow rate for zone equipment unit [m3/s]
645 : Real64 MaxHWVolFlow; // design Hot Water vol flow for zone equipment unit [m3/s]
646 : Real64 MaxCWVolFlow; // design Cold Water vol flow for zone equipment unit [m3/s]
647 : Real64 OAVolFlow; // design outside air flow for zone equipment unit [m3/s]
648 : Real64 ATMixerVolFlow; // design ventilation air flow rate from air terminal mixer (central DOAS) [m3/s]
649 : Real64 ATMixerCoolPriDryBulb; // design ventilation drybulb temperature from air terminal mixer during cooling (central DOAS) [C]
650 : Real64 ATMixerCoolPriHumRat; // design ventilation humidity ratio from air terminal mixer during cooling (central DOAS) [kgWater/kgDryAir]
651 : Real64 ATMixerHeatPriDryBulb; // design ventilation drybulb temperature from air terminal mixer during heating (central DOAS) [C]
652 : Real64 ATMixerHeatPriHumRat; // design ventilation humidity ratio from air terminal mixer during heating (central DOAS) [kgWater/kgDryAir]
653 : Real64 DesCoolingLoad; // design cooling load used for zone equipment [W]
654 : Real64 DesHeatingLoad; // design heating load used for zone equipment [W]
655 : Real64 CoolingAirVolFlow; // design cooling air vol flow rate for equipment[m3/s]
656 : Real64 HeatingAirVolFlow; // design heating air vol flow rate for equipment[m3/s]
657 : Real64 SystemAirVolFlow; // design heating air vol flow rate for equipment[m3/s]
658 : bool AirFlow; // TRUE if AirloopHVAC system air flow rate is calculated
659 : bool CoolingAirFlow; // TRUE if AirloopHVAC system cooling air flow rate is calculated
660 : bool HeatingAirFlow; // TRUE if AirloopHVAC system heating air flow rate is calculated
661 : bool SystemAirFlow; // TRUE if AirloopHVAC system heating air flow rate is calculated
662 : bool Capacity; // TRUE if AirloopHVAC system capacity is calculated
663 : bool CoolingCapacity; // TRUE if AirloopHVAC system cooling capacity is calculated
664 : bool HeatingCapacity; // TRUE if AirloopHVAC system heating capacity is calculated
665 : bool SystemCapacity; // TRUE if AirloopHVAC system heating capacity is calculated
666 : bool DesignSizeFromParent; // TRUE if design size is set by parent object - normally false, set to true for special cases e.g. ERV
667 : int HVACSizingIndex; // index to DesignSpecification:ZoneHVAC:Sizing
668 : Array1D_int SizingMethod; // supply air flow rate sizing method (SupplyAirFlowRate, FlowPerFloorArea, FractionOfAutosizedCoolingAirflow and
669 : // FractionOfAutosizedHeatingAirflow)
670 : Array1D_int CapSizingMethod; // capacity sizing methods (HeatingDesignCapacity, CoolingDesignCapacity, CapacityPerFloorArea,
671 : // FractionOfAutosizedCoolingCapacity and FractionOfAutosizedHeatingCapacity )
672 :
673 : // Default Constructor
674 9329 : ZoneEqSizingData()
675 9329 : : AirVolFlow(0.0), MaxHWVolFlow(0.0), MaxCWVolFlow(0.0), OAVolFlow(0.0),
676 : ATMixerVolFlow(0.0), // design ventilation air flow rate from air terminal mixer (central DOAS) [m3/s]
677 : ATMixerCoolPriDryBulb(0.0), // design air terminal mixer cooling outlet temperature [C]
678 : ATMixerCoolPriHumRat(0.0), // design air terminal mixer cooling outlet humidity ratio [kgWater/kgDryAir]
679 : ATMixerHeatPriDryBulb(0.0), // design air terminal mixer heating outlet temperature [C]
680 : ATMixerHeatPriHumRat(0.0), // design air terminal mixer heating outlet humidity ratio [kgWater/kgDryAir]
681 : DesCoolingLoad(0.0), // design cooling load used for zone equipment [W]
682 : DesHeatingLoad(0.0), // design heating load used for zone equipment [W]
683 : CoolingAirVolFlow(0.0), // design cooling air vol flow rate for equipment[m3/s]
684 : HeatingAirVolFlow(0.0), // design heating air vol flow rate for equipment[m3/s]
685 : SystemAirVolFlow(0.0), // design heating air vol flow rate for equipment[m3/s]
686 : AirFlow(false), // TRUE if AirloopHVAC system air flow rate is calculated
687 : CoolingAirFlow(false), // TRUE if AirloopHVAC system cooling air flow rate is calculated
688 : HeatingAirFlow(false), // TRUE if AirloopHVAC system heating air flow rate is calculated
689 : SystemAirFlow(false), // TRUE if AirloopHVAC system heating air flow rate is calculated
690 : Capacity(false), // TRUE if AirloopHVAC system capacity is calculated
691 : CoolingCapacity(false), // TRUE if AirloopHVAC system cooling capacity is calculated
692 : HeatingCapacity(false), // TRUE if AirloopHVAC system heating capacity is calculated
693 : SystemCapacity(false), // TRUE if AirloopHVAC system heating capacity is calculated
694 : DesignSizeFromParent(false), // TRUE if design size is set by parent object - normally false, set to true for special cases e.g. ERV
695 9329 : HVACSizingIndex(0) // index to DesignSpecification:ZoneHVAC:Sizing
696 : {
697 9329 : }
698 : };
699 :
700 : // Data Structure for Zone HVAC sizing, referenced by various ZoneHVAC Equipment
701 217 : struct ZoneHVACSizingData
702 : {
703 : // Members
704 : std::string Name;
705 : int CoolingSAFMethod; // - Method for cooling supply air flow rate sizing calculation (SupplyAirFlowRate,FlowPerFloorArea,
706 : // FractionOfAutoSizedCoolingValue, FlowPerCoolingCapacity)
707 : int HeatingSAFMethod; // - Method for heating supply air flow rate sizing calculation (SupplyAirFlowRate,FlowPerFloorArea,
708 : // FractionOfAutoSizedHeatingValue, FlowPerHeatingCapacity,
709 : int NoCoolHeatSAFMethod; // - Method for supply air flow sizing during no cooling and heating calculation (SupplyAirFlowRate,
710 : // FractionOfAutoSizedCoolingValue, FractionOfAutoSizedHeatingValue)
711 : int CoolingCapMethod; // - Method for cooling capacity scaledsizing calculation (CoolingDesignCapacity, CapacityPerFloorArea,
712 : // FractionOfAutosizedHeatingCapacity)
713 : int HeatingCapMethod; // - Method for heatiing capacity scaledsizing calculation (HeatingDesignCapacity, CapacityPerFloorArea,
714 : // FracOfAutosizedHeatingCapacity)
715 : Real64 MaxCoolAirVolFlow; // - maximum cooling supply air flow rate, m3/s
716 : Real64 MaxHeatAirVolFlow; // - maximum heating supply air flow rate, m3/s
717 : Real64 MaxNoCoolHeatAirVolFlow; // - maximum supply air flow rate when no cooling or heating, m3/s
718 : Real64 ScaledCoolingCapacity; // - scaled maximum cooling capacity of zone HVAC equipment, W
719 : Real64 ScaledHeatingCapacity; // - scaled maximum heating capacity of zone HVAC equipment, W
720 : bool RequestAutoSize; // - true if autosizing is requested
721 :
722 : // Default Constructor
723 4 : ZoneHVACSizingData()
724 4 : : CoolingSAFMethod(0), HeatingSAFMethod(0), NoCoolHeatSAFMethod(0), CoolingCapMethod(0), HeatingCapMethod(0), MaxCoolAirVolFlow(0.0),
725 4 : MaxHeatAirVolFlow(0.0), MaxNoCoolHeatAirVolFlow(0.0), ScaledCoolingCapacity(0.0), ScaledHeatingCapacity(0.0), RequestAutoSize(false)
726 : {
727 4 : }
728 : };
729 :
730 : // Data Structure for air terminal sizing, referenced by ZoneHVAC:AirDistributionUnit
731 40 : struct AirTerminalSizingSpecData
732 : {
733 : // Members
734 : std::string Name;
735 : Real64 DesSensCoolingFrac; // Fraction of Design Sensible Cooling Load
736 : Real64 DesCoolSATRatio; // Cooling Design Supply Air Temperature Difference Ratio
737 : Real64 DesSensHeatingFrac; // Fraction of Design Sensible Heating Load
738 : Real64 DesHeatSATRatio; // Heating Design Supply Air Temperature Difference Ratio
739 : Real64 MinOAFrac; // Fraction of Minimum Outdoor Air Flow
740 :
741 : // Default Constructor
742 24 : AirTerminalSizingSpecData() : DesSensCoolingFrac(1.0), DesCoolSATRatio(1.0), DesSensHeatingFrac(1.0), DesHeatSATRatio(1.0), MinOAFrac(1.0)
743 : {
744 24 : }
745 : };
746 :
747 381833 : struct SystemSizingInputData
748 : {
749 : // Members
750 : std::string AirPriLoopName; // name of an AirLoopHVAC object
751 : int AirLoopNum; // index number of air loop
752 : LoadSizing loadSizingType; // type of load to size on sensible, latent, total, ventilation
753 : int SizingOption; // 1 = noncoincident, 2 = coincident
754 : int CoolOAOption; // 1 = use 100% outside air; 2 = use min OA; for cooling sizing
755 : int HeatOAOption; // 1 = use 100% outside air; 2 = use min OA; for heating sizing
756 : Real64 DesOutAirVolFlow; // design (minimum) outside air flow rate [m3/s]
757 : Real64 SysAirMinFlowRat; // minimum system air flow ratio for heating, Central Heating Maximum System Air Flow Ratio
758 : bool SysAirMinFlowRatWasAutoSized; // true if central heating maximum system air flow ratio was autosize on input
759 : Real64 PreheatTemp; // preheat design set temperature [C]
760 : Real64 PrecoolTemp; // precool design set temperature [C]
761 : Real64 PreheatHumRat; // preheat design humidity ratio [kg water/kg dry air]
762 : Real64 PrecoolHumRat; // precool design humidity ratio [kg water/kg dry air]
763 : Real64 CoolSupTemp; // cooling design supply air temperature [C]
764 : Real64 HeatSupTemp; // heating design supply air temperature [C]
765 : Real64 CoolSupHumRat; // cooling design supply air humidity ratio [kg water/kg dry air]
766 : Real64 HeatSupHumRat; // heating design supply air humidity ratio [kg water/kg dry air]
767 : int CoolAirDesMethod; // choice of how to get system cooling design air flow rates;
768 : // 1 = calc from des day simulation; 2=m3/s per system, user input
769 : Real64 DesCoolAirFlow; // design system supply air flow rate for cooling[m3/s]
770 : int HeatAirDesMethod; // choice of how to get system heating design air flow rates;
771 : // 1 = calc from des day simulation; 2=m3/s per zone, user input
772 : Real64 DesHeatAirFlow; // design system heating supply air flow rate [m3/s]
773 : int ScaleCoolSAFMethod; // choice of how to get system cooling scalable air flow rates; // (FlowPerFloorArea,
774 : // FractionOfAutosizedCoolingAirflow, FlowPerCoolingCapacity)
775 : int ScaleHeatSAFMethod; // choice of how to get system heating scalable air flow rates; // (FlowPerFloorArea,
776 : // FractionOfAutosizedCoolingAirflow, FractionOfAutosizedHeatingAirflow, FlowPerHeatingCapacity)
777 : SysOAMethod SystemOAMethod; // System Outdoor Air Method; 1 = SOAM_ZoneSum, 2 = SOAM_VRP, 9 = SOAM_SP
778 : Real64 MaxZoneOAFraction; // maximum value of min OA for zones served by system
779 : bool OAAutoSized; // Set to true if design OA vol flow is set to 'autosize' in Sizing:System
780 : int CoolingCapMethod; // - Method for cooling capacity scaledsizing calculation (CoolingDesignCapacity, CapacityPerFloorArea,
781 : // FractionOfAutosizedCoolingCapacity)
782 : int HeatingCapMethod; // - Method for heatiing capacity scaledsizing calculation (HeatingDesignCapacity, CapacityPerFloorArea,
783 : // FracOfAutosizedHeatingCapacity)
784 : Real64 ScaledCoolingCapacity; // - scaled maximum cooling capacity of cooling coil in an air loop
785 : Real64 ScaledHeatingCapacity; // - scaled maximum heating capacity of cooling coil in an air loop
786 : Real64 FloorAreaOnAirLoopCooled; // total floor of cooled zones served by an airloop
787 : Real64 FloorAreaOnAirLoopHeated; // total floor of heated zones served by an airloop
788 : Real64 FlowPerFloorAreaCooled; // ratio of cooling supply air flow rate to total floor area of cooled zones served by an airloop
789 : Real64 FlowPerFloorAreaHeated; // ratio of cooling supply air flow rate to total floor area of cooled zones served by an airloop
790 : Real64 FractionOfAutosizedCoolingAirflow; // fraction of of cooling supply air flow rate an airloop
791 : Real64 FractionOfAutosizedHeatingAirflow; // fraction of of heating supply air flow rate an airloop
792 : Real64 FlowPerCoolingCapacity; // ratio of cooling supply air flow rate to cooling capacity of an airloop
793 : Real64 FlowPerHeatingCapacity; // ratio of heating supply air flow rate to heating capacity of an airloop
794 : PeakLoad coolingPeakLoad; // Type of peak to size cooling coils on SensibleCooling or TotalCooling
795 : CapacityControl CoolCapControl; // type of control of cooling coil VAV, Bypass, VT, OnOff
796 : Real64 OccupantDiversity; // occupant diversity
797 :
798 : // Default Constructor
799 1274 : SystemSizingInputData()
800 1274 : : AirLoopNum(0), loadSizingType(LoadSizing::Invalid), SizingOption(0), CoolOAOption(0), HeatOAOption(0), DesOutAirVolFlow(0.0),
801 : SysAirMinFlowRat(0.0), SysAirMinFlowRatWasAutoSized(false), PreheatTemp(0.0), PrecoolTemp(0.0), PreheatHumRat(0.0), PrecoolHumRat(0.0),
802 : CoolSupTemp(0.0), HeatSupTemp(0.0), CoolSupHumRat(0.0), HeatSupHumRat(0.0), CoolAirDesMethod(0), DesCoolAirFlow(0.0),
803 : HeatAirDesMethod(0), DesHeatAirFlow(0.0), ScaleCoolSAFMethod(0), ScaleHeatSAFMethod(0), SystemOAMethod(SysOAMethod::Invalid),
804 : MaxZoneOAFraction(0.0), OAAutoSized(false), CoolingCapMethod(0), HeatingCapMethod(0), ScaledCoolingCapacity(0.0),
805 : ScaledHeatingCapacity(0.0), FloorAreaOnAirLoopCooled(0.0), FloorAreaOnAirLoopHeated(0.0), FlowPerFloorAreaCooled(0.0),
806 : FlowPerFloorAreaHeated(0.0), FractionOfAutosizedCoolingAirflow(1.0), FractionOfAutosizedHeatingAirflow(1.0),
807 : FlowPerCoolingCapacity(0.0), FlowPerHeatingCapacity(0.0), coolingPeakLoad(PeakLoad::Invalid), CoolCapControl(CapacityControl::Invalid),
808 1274 : OccupantDiversity(0.0)
809 : {
810 1274 : }
811 : };
812 :
813 388023 : struct SystemSizingData // Contains data for system sizing
814 : {
815 : // Members
816 : std::string AirPriLoopName; // name of an AirLoopHVAC object
817 : std::string CoolDesDay; // name of a cooling design day
818 : std::string HeatDesDay; // name of a heating design day
819 : LoadSizing loadSizingType; // type of load to size on Sensible, Latent, Total, Ventilation
820 : int SizingOption; // 1 = noncoincident, 2 = coincident.
821 : int CoolOAOption; // 1 = use 100% outside air; 2 = use min OA; for cooling sizing
822 : int HeatOAOption; // 1 = use 100% outside air; 2 = use min OA; for heating sizing
823 : Real64 DesOutAirVolFlow; // design (minimum) outside air flow rate [m3/s]
824 : Real64 SysAirMinFlowRat; // minimum system air flow ratio for heating, Central Heating Maximum System Air Flow Ratio
825 : bool SysAirMinFlowRatWasAutoSized; // true if central heating maximum system air flow ratio was autosize on input
826 : Real64 PreheatTemp; // preheat design set temperature
827 : Real64 PrecoolTemp; // precool design set temperature [C]
828 : Real64 PreheatHumRat; // preheat design humidity ratio [kg water/kg dry air]
829 : Real64 PrecoolHumRat; // precool design humidity ratio [kg water/kg dry air]
830 : Real64 CoolSupTemp; // cooling design supply air temperature [C]
831 : Real64 HeatSupTemp; // heating design supply air temperature[C]
832 : Real64 CoolSupHumRat; // cooling design supply air humidity ratio [kg water/kg dry air]
833 : Real64 HeatSupHumRat; // heating design supply air humidity ratio [kg water/kg dry air]
834 : int CoolAirDesMethod; // choice of how to get system design cooling air flow rates;
835 : // 1 = calc from des day simulation; 2=m3/s per system, user input
836 : int HeatAirDesMethod; // choice of how to get system design heating air flow rates;
837 : // 1 = calc from des day simulation; 2=m3/s per system, user input
838 : Real64 InpDesCoolAirFlow; // input design system supply air flow rate [m3/s]
839 : Real64 InpDesHeatAirFlow; // input design system heating supply air flow rate [m3/s]
840 : Real64 CoinCoolMassFlow; // coincident peak cooling mass flow rate [kg/s]
841 : bool EMSOverrideCoinCoolMassFlowOn; // If true, EMS to change coincident peak cooling mass flow rate
842 : Real64 EMSValueCoinCoolMassFlow; // Value EMS wants for coincident peak cooling mass flow rate [kg/s]
843 : Real64 CoinHeatMassFlow; // coincident peak heating mass flow rate [kg/s]
844 : bool EMSOverrideCoinHeatMassFlowOn; // If true, EMS to set coincident peak heating mass flow rate
845 : Real64 EMSValueCoinHeatMassFlow; // Value EMS wants for coincident peak heating mass flow rate [kg/s]
846 : Real64 NonCoinCoolMassFlow; // noncoincident peak cooling mass flow rate [kg/s]
847 : bool EMSOverrideNonCoinCoolMassFlowOn; // true, EMS to set noncoincident peak cooling mass flow rate
848 : Real64 EMSValueNonCoinCoolMassFlow; // Value EMS for noncoincident peak cooling mass flow rate [kg/s]
849 : Real64 NonCoinHeatMassFlow; // noncoincident peak heating mass flow rate [kg/s]
850 : bool EMSOverrideNonCoinHeatMassFlowOn; // true, EMS to set noncoincident peak heating mass flow rate
851 : Real64 EMSValueNonCoinHeatMassFlow; // Value EMS for noncoincident peak heating mass flow rate [kg/s]
852 : Real64 DesMainVolFlow; // design main supply duct volume flow [m3/s]
853 : bool EMSOverrideDesMainVolFlowOn; // If true, EMS is acting to change DesMainVolFlow
854 : Real64 EMSValueDesMainVolFlow; // Value EMS providing for design main supply duct volume flow [m3/s]
855 : Real64 DesHeatVolFlow; // design heat supply duct volume flow [m3/s]
856 : bool EMSOverrideDesHeatVolFlowOn; // If true, EMS is acting to change DesCoolVolFlow
857 : Real64 EMSValueDesHeatVolFlow; // Value EMS providing for design cool supply duct volume flow [m3/s]
858 : Real64 DesCoolVolFlow; // design cool supply duct volume flow [m3/s]
859 : bool EMSOverrideDesCoolVolFlowOn; // If true, EMS is acting to change DesCoolVolFlow
860 : Real64 EMSValueDesCoolVolFlow; // Value EMS providing for design cool supply duct volume flow [m3/s]
861 : Real64 SensCoolCap; // design sensible cooling capacity [W]
862 : Real64 TotCoolCap; // design total cooling capacity [W]
863 : Real64 HeatCap; // design heating capacity [W]
864 : Real64 PreheatCap; // design preheat capacity [W]
865 : Real64 MixTempAtCoolPeak; // design mixed air temperature for cooling [C]
866 : Real64 MixHumRatAtCoolPeak; // design mixed air hum ratio for cooling [kg water/kg dry air]
867 : Real64 RetTempAtCoolPeak; // design return air temperature for cooling [C]
868 : Real64 RetHumRatAtCoolPeak; // design return air hum ratio for cooling [kg water/kg dry air]
869 : Real64 OutTempAtCoolPeak; // design outside air temperature for cooling [C]
870 : Real64 OutHumRatAtCoolPeak; // design outside air hum ratio for cooling [kg water/kg dry air]
871 : Real64 MassFlowAtCoolPeak; // air mass flow rate at the cooling peak [kg/s]
872 : Real64 HeatMixTemp; // design mixed air temperature for heating [C]
873 : Real64 HeatMixHumRat; // design mixed air hum ratio for heating [kg water/kg dry air]
874 : Real64 HeatRetTemp; // design return air temperature for heating [C]
875 : Real64 HeatRetHumRat; // design return air hum ratio for heating [kg water/kg dry air]
876 : Real64 HeatOutTemp; // design outside air temperature for heating [C]
877 : Real64 HeatOutHumRat; // design outside air hum ratio for Heating [kg water/kg dry air]
878 : Real64 DesCoolVolFlowMin; // design minimum system cooling flow rate [m3/s]
879 : Array1D<Real64> HeatFlowSeq; // daily sequence of system heating air mass flow rate
880 : // (zone time step)
881 : Array1D<Real64> SumZoneHeatLoadSeq; // daily sequence of zones summed heating load [W]
882 : // (zone time step)
883 : Array1D<Real64> CoolFlowSeq; // daily sequence of system cooling air mass flow rate
884 : // (zone time step)
885 : Array1D<Real64> SumZoneCoolLoadSeq; // daily sequence of zones summed cooling load [W]
886 : // (zone time step)
887 : Array1D<Real64> CoolZoneAvgTempSeq; // daily sequence of zones flow weighted average temperature [C]
888 : // (zone time step)
889 : Array1D<Real64> HeatZoneAvgTempSeq; // daily sequence of zones flow weighted average temperature [C]
890 : // (zone time step)
891 : Array1D<Real64> SensCoolCapSeq; // daily sequence of system sensible cooling capacity
892 : // (zone time step)
893 : Array1D<Real64> TotCoolCapSeq; // daily sequence of system total cooling capacity
894 : // (zone time step)
895 : Array1D<Real64> HeatCapSeq; // daily sequence of system heating capacity [zone time step]
896 : Array1D<Real64> PreheatCapSeq; // daily sequence of system preheat capacity [zone time step]
897 : Array1D<Real64> SysCoolRetTempSeq; // daily sequence of system cooling return temperatures [C]
898 : // [zone time step]
899 : Array1D<Real64> SysCoolRetHumRatSeq; // daily sequence of system cooling return humidity ratios
900 : // [kg water/kg dry air] [zone time step]
901 : Array1D<Real64> SysHeatRetTempSeq; // daily sequence of system heating return temperatures [C]
902 : // [zone time step]
903 : Array1D<Real64> SysHeatRetHumRatSeq; // daily sequence of system heating return humidity ratios
904 : // [kg water/kg dry air] [zone time step]
905 : Array1D<Real64> SysCoolOutTempSeq; // daily sequence of system cooling outside temperatures [C]
906 : // [zone time step]
907 : Array1D<Real64> SysCoolOutHumRatSeq; // daily sequence of system cooling outside humidity ratios
908 : // [kg water/kg dry air] [zone time step]
909 : Array1D<Real64> SysHeatOutTempSeq; // daily sequence of system heating outside temperatures [C]
910 : // [zone time step]
911 : Array1D<Real64> SysHeatOutHumRatSeq; // daily sequence of system heating outside humidity ratios
912 : // [kg water/kg dry air] [zone time step]
913 : Array1D<Real64> SysDOASHeatAddSeq; // daily sequence of heat addition rate from DOAS supply air [W]
914 : Array1D<Real64> SysDOASLatAddSeq; // daily sequence of latent heat addition rate from DOAS supply air [W]
915 : SysOAMethod SystemOAMethod; // System Outdoor Air Method; 1 = SOAM_ZoneSum, 2 = SOAM_VRP, 9 = SOAM_SP
916 : Real64 MaxZoneOAFraction; // maximum value of min OA for zones served by system
917 : Real64 SysUncOA; // uncorrected system outdoor air flow based on zone people and zone area
918 : bool OAAutoSized; // Set to true if design OA vol flow is set to 'autosize'
919 : int ScaleCoolSAFMethod; // choice of how to get system cooling scalable air flow rates; (FlowPerFloorArea, FractionOfAutosizedCoolingAirflow,
920 : // FlowPerCoolingCapacity)
921 : int ScaleHeatSAFMethod; // choice of how to get system heating scalable air flow rates; (FlowPerFloorArea, FractionOfAutosizedCoolingAirflow,
922 : // FractionOfAutosizedHeatingAirflow, FlowPerHeatingCapacity)
923 : int CoolingCapMethod; // - Method for cooling capacity scaledsizing calculation (CoolingDesignCapacity, CapacityPerFloorArea,
924 : // FractionOfAutosizedCoolingCapacity)
925 : int HeatingCapMethod; // - Method for heatiing capacity scaledsizing calculation (HeatingDesignCapacity, CapacityPerFloorArea,
926 : // FracOfAutosizedHeatingCapacity)
927 : Real64 ScaledCoolingCapacity; // - scaled maximum cooling capacity of cooling coil in an air loop
928 : Real64 ScaledHeatingCapacity; // - scaled maximum heating capacity of cooling coil in an air loop
929 : Real64 FloorAreaOnAirLoopCooled; // total floor of cooled zones served by an airloop
930 : Real64 FloorAreaOnAirLoopHeated; // total floor of heated zones served by an airloop
931 : Real64 FlowPerFloorAreaCooled; // ratio of cooling supply air flow rate to total floor area of cooled zones served by an airloop
932 : Real64 FlowPerFloorAreaHeated; // ratio of cooling supply air flow rate to total floor area of cooled zones served by an airloop
933 : Real64 FractionOfAutosizedCoolingAirflow; // fraction of of cooling supply air flow rate an airloop
934 : Real64 FractionOfAutosizedHeatingAirflow; // fraction of of heating supply air flow rate an airloop
935 : Real64 FlowPerCoolingCapacity; // ratio of cooling supply air flow rate to cooling capacity of an airloop
936 : Real64 FlowPerHeatingCapacity; // ratio of heating supply air flow rate to heating capacity of an airloop
937 : Real64 FractionOfAutosizedCoolingCapacity; // fraction of of cooling total capacity
938 : Real64 FractionOfAutosizedHeatingCapacity; // fraction of of heating total capacity
939 : Real64 CoolingTotalCapacity; // system total cooling capacity
940 : Real64 HeatingTotalCapacity; // system total heating capacity
941 : PeakLoad coolingPeakLoad; // Type of peak to size cooling coils on SensibleCooling or TotalCooling
942 : CapacityControl CoolCapControl; // type of control of cooling coil VAV, Bypass, VT, OnOff
943 : bool sysSizeHeatingDominant;
944 : bool sysSizeCoolingDominant;
945 :
946 : Real64 CoinCoolCoilMassFlow; // coincident volume flow at time of cooling coil sensible+latent peak [m3/s]
947 : Real64 CoinHeatCoilMassFlow; // coincident volume flow at time of heating coil sensible peak [m3/s]
948 : Real64 DesCoolCoilVolFlow; // design cooling air volume flow rate at time of coil sens+latent peak [m3/s]
949 : Real64 DesHeatCoilVolFlow; // design heating air volume flow rate at time of coil sens peak [m3/s]
950 : Real64 DesMainCoilVolFlow; // design main supply duct volume flow at time of coil peak [m3/s]
951 : // These are for reporting purposes
952 :
953 : int SysHeatCoilTimeStepPk; // timestep in day of heating coil peak
954 : int SysHeatAirTimeStepPk; // timestep in day of heating airflow peak
955 : int HeatDDNum; // index of design day for heating
956 : int CoolDDNum; // index of design day for cooling
957 :
958 : Real64 SysCoolCoinSpaceSens; // sum of zone space sensible cooling loads at coincident peak
959 : Real64 SysHeatCoinSpaceSens; // sum of zone space sensible heating loads at coincident peak
960 : Real64 SysDesCoolLoad; // system peak load with coincident
961 : int SysCoolLoadTimeStepPk; // timestep in day of cooling load peak
962 : Real64 SysDesHeatLoad; // system peak load with coincident
963 : int SysHeatLoadTimeStepPk; // timestep in day of cooling load peak
964 : // Default Constructor
965 2837 : SystemSizingData()
966 2837 : : loadSizingType(LoadSizing::Invalid), SizingOption(0), CoolOAOption(0), HeatOAOption(0), DesOutAirVolFlow(0.0), SysAirMinFlowRat(0.0),
967 : SysAirMinFlowRatWasAutoSized(false), PreheatTemp(0.0), PrecoolTemp(0.0), PreheatHumRat(0.0), PrecoolHumRat(0.0), CoolSupTemp(0.0),
968 : HeatSupTemp(0.0), CoolSupHumRat(0.0), HeatSupHumRat(0.0), CoolAirDesMethod(0), HeatAirDesMethod(0), InpDesCoolAirFlow(0.0),
969 : InpDesHeatAirFlow(0.0), CoinCoolMassFlow(0.0), EMSOverrideCoinCoolMassFlowOn(false), EMSValueCoinCoolMassFlow(0.0),
970 : CoinHeatMassFlow(0.0), EMSOverrideCoinHeatMassFlowOn(false), EMSValueCoinHeatMassFlow(0.0), NonCoinCoolMassFlow(0.0),
971 : EMSOverrideNonCoinCoolMassFlowOn(false), EMSValueNonCoinCoolMassFlow(0.0), NonCoinHeatMassFlow(0.0),
972 : EMSOverrideNonCoinHeatMassFlowOn(false), EMSValueNonCoinHeatMassFlow(0.0), DesMainVolFlow(0.0), EMSOverrideDesMainVolFlowOn(false),
973 : EMSValueDesMainVolFlow(0.0), DesHeatVolFlow(0.0), EMSOverrideDesHeatVolFlowOn(false), EMSValueDesHeatVolFlow(0.0), DesCoolVolFlow(0.0),
974 : EMSOverrideDesCoolVolFlowOn(false), EMSValueDesCoolVolFlow(0.0), SensCoolCap(0.0), TotCoolCap(0.0), HeatCap(0.0), PreheatCap(0.0),
975 : MixTempAtCoolPeak(0.0), MixHumRatAtCoolPeak(0.0), RetTempAtCoolPeak(0.0), RetHumRatAtCoolPeak(0.0), OutTempAtCoolPeak(0.0),
976 : OutHumRatAtCoolPeak(0.0), MassFlowAtCoolPeak(0.0), HeatMixTemp(0.0), HeatMixHumRat(0.0), HeatRetTemp(0.0), HeatRetHumRat(0.0),
977 : HeatOutTemp(0.0), HeatOutHumRat(0.0), DesCoolVolFlowMin(0.0), SystemOAMethod(SysOAMethod::Invalid), MaxZoneOAFraction(0.0),
978 : SysUncOA(0.0), OAAutoSized(false), ScaleCoolSAFMethod(0), ScaleHeatSAFMethod(0), CoolingCapMethod(0), HeatingCapMethod(0),
979 : ScaledCoolingCapacity(0.0), ScaledHeatingCapacity(0.0), FloorAreaOnAirLoopCooled(0.0), FloorAreaOnAirLoopHeated(0.0),
980 : FlowPerFloorAreaCooled(0.0), FlowPerFloorAreaHeated(0.0), FractionOfAutosizedCoolingAirflow(1.0),
981 : FractionOfAutosizedHeatingAirflow(1.0), FlowPerCoolingCapacity(0.0), FlowPerHeatingCapacity(0.0),
982 : FractionOfAutosizedCoolingCapacity(1.0), FractionOfAutosizedHeatingCapacity(1.0), CoolingTotalCapacity(0.0), HeatingTotalCapacity(0.0),
983 : coolingPeakLoad(PeakLoad::Invalid), CoolCapControl(CapacityControl::Invalid), sysSizeHeatingDominant(false),
984 : sysSizeCoolingDominant(false), CoinCoolCoilMassFlow(0.0), CoinHeatCoilMassFlow(0.0), DesCoolCoilVolFlow(0.0), DesHeatCoilVolFlow(0.0),
985 : DesMainCoilVolFlow(0.0), SysHeatCoilTimeStepPk(0), SysHeatAirTimeStepPk(0), HeatDDNum(0), CoolDDNum(0), SysCoolCoinSpaceSens(0.0),
986 2837 : SysHeatCoinSpaceSens(0.0), SysDesCoolLoad(0.0), SysCoolLoadTimeStepPk(0), SysDesHeatLoad(0.0), SysHeatLoadTimeStepPk(0)
987 : {
988 2837 : }
989 : };
990 :
991 2179 : struct SysSizPeakDDNumData
992 : {
993 : // Members
994 : int SensCoolPeakDD; // design day containing the sensible cooling peak
995 : std::string cSensCoolPeakDDDate; // date string of design day causing sensible cooling peak
996 : int TotCoolPeakDD; // design day containing total cooling peak
997 : std::string cTotCoolPeakDDDate; // date string of design day causing total cooling peak
998 : int CoolFlowPeakDD; // design day containing the cooling air flow peak
999 : std::string cCoolFlowPeakDDDate; // date string of design day causing cooling air flow peak
1000 : int HeatPeakDD; // design day containing the heating peak
1001 : std::string cHeatPeakDDDate; // date string of design day causing heating peak
1002 : Array1D<int> TimeStepAtSensCoolPk; // time step of the sensible cooling peak
1003 : Array1D<int> TimeStepAtTotCoolPk; // time step of the total cooling peak
1004 : Array1D<int> TimeStepAtCoolFlowPk; // time step of the cooling air flow peak
1005 : Array1D<int> TimeStepAtHeatPk; // time step of the heating peak
1006 :
1007 : // Default Constructor
1008 1254 : SysSizPeakDDNumData() : SensCoolPeakDD(0), TotCoolPeakDD(0), CoolFlowPeakDD(0), HeatPeakDD(0)
1009 : {
1010 1254 : }
1011 : };
1012 :
1013 200948 : struct PlantSizingData
1014 : {
1015 : // Members
1016 : std::string PlantLoopName; // name of PLANT LOOP or CONDENSER LOOP object
1017 : int LoopType; // type of loop: 1=heating, 2=cooling, 3=condenser
1018 : Real64 ExitTemp; // loop design exit (supply) temperature [C]
1019 : Real64 DeltaT; // loop design temperature drop (or rise) [DelK]
1020 : int ConcurrenceOption; // sizing option for coincident or noncoincident
1021 : int NumTimeStepsInAvg; // number of zone timesteps in the averaging window for coincident plant flow
1022 : int SizingFactorOption; // option for what sizing factor to apply
1023 : // Calculated
1024 : Real64 DesVolFlowRate; // loop design flow rate in m3/s
1025 : bool VolFlowSizingDone; // flag to indicate when this loop has finished sizing flow rate
1026 : Real64 PlantSizFac; // hold the loop and pump sizing factor
1027 :
1028 : // Default Constructor
1029 1084 : PlantSizingData()
1030 1084 : : LoopType(0), ExitTemp(0.0), DeltaT(0.0), ConcurrenceOption(1), NumTimeStepsInAvg(0), SizingFactorOption(101), DesVolFlowRate(0.0),
1031 1084 : VolFlowSizingDone(false), PlantSizFac(1.0)
1032 : {
1033 1084 : }
1034 : };
1035 :
1036 : // based on ZoneSizingData but only have member variables that are related to the CheckSum/
1037 2918 : struct FacilitySizingData
1038 : {
1039 : // Members
1040 : int CoolDDNum; // design day index of design day causing heating peak
1041 : int HeatDDNum; // design day index of design day causing heating peak
1042 : int TimeStepNumAtCoolMax; // time step number (in day) at cooling peak
1043 : Array1D<Real64> DOASHeatAddSeq; // daily sequence of zone DOAS heat addition rate (zone time step) [W]
1044 : Array1D<Real64> DOASLatAddSeq; // daily sequence of zone DOAS latent heat addition rate (zone time step) [W]
1045 : Array1D<Real64> CoolOutHumRatSeq; // daily sequence of outdoor humidity ratios (cooling, zone time step)
1046 : Array1D<Real64> CoolOutTempSeq; // daily sequence of outdoor temperatures (cooling, zone time step)
1047 : Array1D<Real64> CoolZoneTempSeq; // daily sequence of zone temperatures (cooling, zone time step)
1048 : Array1D<Real64> CoolLoadSeq; // daily sequence of cooling load (cooling, zone time step)
1049 : Real64 DesCoolLoad; // zone design cooling load [W]
1050 : int TimeStepNumAtHeatMax; // time step number (in day) at Heating peak
1051 : Array1D<Real64> HeatOutHumRatSeq; // daily sequence of outdoor humidity ratios (heating, zone time step)
1052 : Array1D<Real64> HeatOutTempSeq; // daily sequence of outdoor temperatures (heating, zone time step)
1053 : Array1D<Real64> HeatZoneTempSeq; // daily sequence of zone temperatures (heating, zone time step)
1054 : Array1D<Real64> HeatLoadSeq; // daily sequence of heating load (cooling, zone time step)
1055 : Real64 DesHeatLoad; // zone design heating load [W]
1056 :
1057 : // Default Constructor
1058 2047 : FacilitySizingData() : CoolDDNum(0), HeatDDNum(0), TimeStepNumAtCoolMax(0), DesCoolLoad(0.0), TimeStepNumAtHeatMax(0), DesHeatLoad(0.0)
1059 : {
1060 2047 : }
1061 : };
1062 :
1063 3025 : struct DesDayWeathData
1064 : {
1065 : // Members
1066 : std::string DateString; // date of design day weather values
1067 : Array1D<Real64> Temp; // design day temperatures at the major time step
1068 : Array1D<Real64> HumRat; // design day humidity ratios at the major time step
1069 : Array1D<Real64> Press; // design day barometric pressure at the major time step
1070 : };
1071 :
1072 : struct CompDesWaterFlowData // design water flow rate for components that use water as an
1073 : {
1074 : // Members
1075 : // energy source or sink
1076 : int SupNode; // water inlet node number (condenser side for water / water)
1077 : Real64 DesVolFlowRate; // water design flow rate [m3/s]
1078 :
1079 : // Default Constructor
1080 890 : CompDesWaterFlowData() : SupNode(0), DesVolFlowRate(0.0)
1081 : {
1082 890 : }
1083 :
1084 : // Member Constructor
1085 5961 : CompDesWaterFlowData(int SupNode, // water inlet node number (condenser side for water / water)
1086 : Real64 DesVolFlowRate // water design flow rate [m3/s]
1087 : )
1088 5961 : : SupNode(SupNode), DesVolFlowRate(DesVolFlowRate)
1089 : {
1090 5961 : }
1091 : };
1092 :
1093 11878 : struct OARequirementsData
1094 : {
1095 : // Holds complete data for a single DesignSpecification:OutdoorAir object or
1096 : // a list of indexes from a DesignSpecification:OutdoorAir:SpaceList object
1097 : std::string Name; // Name of DesignSpecification:OutdoorAir or DesignSpecification:OutdoorAir:SpaceList object
1098 : int numDSOA = 0; // Number of DesignSpecification:OutdoorAir objects for this instance (zero if not a list)
1099 : EPVector<int> dsoaIndexes; // Indexes to DesignSpecification:OutdoorAir objects (if this is a DSOA:SpaceList object)
1100 : EPVector<std::string> dsoaSpaceNames; // Names of spaces if this is a (if this is a DSOA:SpaceList object)
1101 : EPVector<int> dsoaSpaceIndexes; // Indexes to Spaces (if this is a DSOA:SpaceList object)
1102 : OAFlowCalcMethod OAFlowMethod; // - Method for OA flow calculation (Flow/Person, Flow/Zone, Flow/Area, FlowACH, Sum, Maximum)
1103 : Real64 OAFlowPerPerson = 0.0; // - OA requirement per person
1104 : Real64 OAFlowPerArea = 0.0; // - OA requirement per zone area
1105 : Real64 OAFlowPerZone = 0.0; // - OA requirement per zone
1106 : Real64 OAFlowACH = 0.0; // - OA requirement per zone per hour
1107 : int OAFlowFracSchPtr = DataGlobalConstants::ScheduleAlwaysOn; // - Fraction schedule applied to total OA requirement
1108 : int OAPropCtlMinRateSchPtr =
1109 : DataGlobalConstants::ScheduleAlwaysOn; // - Fraction schedule applied to Proportional Control Minimum Outdoor Air Flow Rate
1110 : int CO2MaxMinLimitErrorCount = 0; // Counter when max CO2 concentration < min CO2 concentration for SOAM_ProportionalControlSchOcc
1111 : int CO2MaxMinLimitErrorIndex = 0; // Index for max CO2 concentration < min CO2 concentration recurring error message for
1112 : // SOAM_ProportionalControlSchOcc
1113 : int CO2GainErrorCount = 0; // Counter when CO2 generation from people is zero for SOAM_ProportionalControlSchOcc
1114 : int CO2GainErrorIndex = 0; // Index for recurring error message when CO2 generation from people is zero for SOAM_ProportionalControlSchOcc
1115 : bool myEnvrnFlag = true;
1116 :
1117 : Real64 desFlowPerZoneArea(EnergyPlusData &state,
1118 : int const actualZoneNum // Zone index
1119 : );
1120 :
1121 : Real64 desFlowPerZonePerson(EnergyPlusData &state,
1122 : int const actualZoneNum // Zone index
1123 : );
1124 :
1125 : Real64 calcOAFlowRate(EnergyPlusData &state,
1126 : int ActualZoneNum, // Zone index
1127 : bool UseOccSchFlag, // Zone occupancy schedule will be used instead of using total zone occupancy
1128 : bool UseMinOASchFlag, // Use min OA schedule in DesignSpecification:OutdoorAir object
1129 : bool const PerPersonNotSet, // when calculation should not include occupants (e.g., dual duct)
1130 : bool const MaxOAVolFlowFlag, // TRUE when calculation uses occupancy schedule (e.g., dual duct)
1131 : int const spaceNum = 0 // Space index (if applicable)
1132 : );
1133 : };
1134 :
1135 1012 : struct ZoneAirDistributionData
1136 : {
1137 : // Members
1138 : std::string Name;
1139 : std::string ZoneADEffSchName; // - Zone air distribution effectiveness schedule name
1140 : Real64 ZoneADEffCooling; // - Zone air distribution effectiveness in cooling mode
1141 : Real64 ZoneADEffHeating; // - Zone air distribution effectiveness in heating mode
1142 : Real64 ZoneSecondaryRecirculation; // - Zone air secondary recirculation ratio
1143 : int ZoneADEffSchPtr; // - Zone air distribution effectiveness schedule index
1144 : Real64 ZoneVentilationEff; // Zone ventilation effectiveness
1145 :
1146 : // Default Constructor
1147 546 : ZoneAirDistributionData()
1148 546 : : ZoneADEffCooling(1.0), ZoneADEffHeating(1.0), ZoneSecondaryRecirculation(0.0), ZoneADEffSchPtr(0), ZoneVentilationEff(0.0)
1149 : {
1150 546 : }
1151 :
1152 : Real64 calculateEz(EnergyPlusData &state, int ZoneNum); // Zone index
1153 : };
1154 :
1155 : // Resets Data globals so that previously set variables are not used in other equipment models
1156 : void resetHVACSizingGlobals(EnergyPlusData &state,
1157 : int curZoneEqNum,
1158 : int curSysNum,
1159 : bool &firstPassFlag // Can be set to false during the routine
1160 : );
1161 :
1162 : void GetCoilDesFlowT(EnergyPlusData &state,
1163 : int SysNum, // central air system index
1164 : Real64 CpAir, // specific heat to be used in calculations [J/kgC]
1165 : Real64 &DesFlow, // returned design mass flow [kg/s]
1166 : Real64 &DesExitTemp, // returned design coil exit temperature [kg/s]
1167 : Real64 &DesExitHumRat // returned design coil exit humidity ratio [kg/kg]
1168 : );
1169 :
1170 : Real64 calcDesignSpecificationOutdoorAir(EnergyPlusData &state,
1171 : int const DSOAPtr, // Pointer to DesignSpecification:OutdoorAir object
1172 : int const ActualZoneNum, // Zone index
1173 : bool const UseOccSchFlag, // Zone occupancy schedule will be used instead of using total zone occupancy
1174 : bool const UseMinOASchFlag, // Use min OA schedule in DesignSpecification:OutdoorAir object
1175 : bool const PerPersonNotSet = false, // when calculation should not include occupants (e.g., dual duct)
1176 : bool const MaxOAVolFlowFlag = false // TRUE when calculation uses occupancy schedule (e.g., dual duct)
1177 : );
1178 :
1179 : } // namespace DataSizing
1180 :
1181 1542 : struct SizingData : BaseGlobalStruct
1182 : {
1183 : int NumOARequirements = 0; // Number of OA Requirements objects
1184 : int NumZoneAirDistribution = 0; // Number of zone air distribution objects
1185 : int NumZoneSizingInput = 0; // Number of Zone Sizing objects
1186 : int NumSysSizInput = 0; // Number of System Sizing objects
1187 : int NumPltSizInput = 0; // Number of Plant Sizing objects
1188 : int CurSysNum = 0; // Current Air System index (0 if not in air loop)
1189 : int CurOASysNum = 0; // Current outside air system index (0 if not in OA Sys)
1190 : int CurZoneEqNum = 0; // Current Zone Equipment index (0 if not simulating ZoneEq)
1191 : int CurTermUnitSizingNum = 0; // Current terminal unit sizing index for TermUnitSizing and TermUnitFinalZoneSizing
1192 : int CurBranchNum = 0; // Index of branch being simulated (or 0 if not air loop)
1193 : DataHVACGlobals::AirDuctType CurDuctType = DataHVACGlobals::AirDuctType::Invalid; // Duct type of current branch
1194 : int CurLoopNum = 0; // the current plant loop index
1195 : int CurCondLoopNum = 0; // the current condenser loop number
1196 : int CurEnvirNumSimDay = 0; // current environment number for day simulated
1197 : int CurOverallSimDay = 0; // current day of simulation
1198 : int NumTimeStepsInAvg = 0; // number of time steps in the averaging window for the design flow and load sequences
1199 : int SaveNumPlantComps = 0; // Number of components using water as an energy source or sink (e.g. water coils)
1200 : int DataTotCapCurveIndex = 0; // index to total capacity as a function of temperature curve
1201 : Real64 DataTotCapCurveValue = 0; // value of total capacity as a function of temperature curve for CoilVRF_FluidTCtrl_*
1202 : int DataPltSizCoolNum = 0; // index to cooling plant sizing data
1203 : int DataPltSizHeatNum = 0; // index to heating plant sizing data
1204 : int DataWaterLoopNum = 0; // index to plant water loop
1205 : int DataCoilNum = 0; // index to coil object
1206 : int DataFanOpMode = 0; // fan operating mode (ContFanCycCoil or CycFanCycCoil)
1207 : bool DataCoilIsSuppHeater = false; // TRUE if heating coil used as supplemental heater
1208 : bool DataIsDXCoil = false; // TRUE if direct-expansion coil
1209 : bool DataAutosizable = true; // TRUE if component is autosizable
1210 : bool DataEMSOverrideON = false; // boolean determines if user relies on EMS to override autosizing
1211 : bool DataScalableSizingON = false; // boolean determines scalable flow sizing is specified
1212 : bool DataScalableCapSizingON = false; // boolean determines scalable capacity sizing is specified
1213 : bool DataSysScalableFlowSizingON = false; // boolean determines scalable system flow sizing is specified
1214 : bool DataSysScalableCapSizingON = false; // boolean determines scalable system capacity sizing is specified
1215 : bool SysSizingRunDone = false; // True if a system sizing run is successfully completed.
1216 : bool TermUnitSingDuct = false; // TRUE if a non-induction single duct terminal unit
1217 : bool TermUnitPIU = false; // TRUE if a powered induction terminal unit
1218 : bool TermUnitIU = false; // TRUE if an unpowered induction terminal unit
1219 : bool ZoneEqFanCoil = false; // TRUE if a 4 pipe fan coil unit is being simulated
1220 : bool ZoneEqOutdoorAirUnit = false; // TRUE if an OutdoorAirUnit is being simulated
1221 : bool ZoneEqUnitHeater = false; // TRUE if a unit heater is being simulated
1222 : bool ZoneEqUnitVent = false; // TRUE if a unit ventilator unit is being simulated
1223 : bool ZoneEqVentedSlab = false; // TRUE if a ventilated slab is being simulated
1224 : bool ZoneEqDXCoil = false; // TRUE if a ZoneHVAC DX coil is being simulated
1225 : bool ZoneEqUnitarySys = false; // TRUE if a zone UnitarySystem is being simulated
1226 : bool ZoneCoolingOnlyFan = false; // TRUE if a ZoneHVAC DX cooling coil is only coil in parent
1227 : bool ZoneHeatingOnlyFan = false; // TRUE if zone unit only does heating and contains a fam (such as Unit Heater)
1228 : bool ZoneSizingRunDone = false; // True if a zone sizing run has been successfully completed.
1229 : bool DataErrorsFound = false; // used for simulation termination when errors are found
1230 : bool DataDXCoolsLowSpeedsAutozize = false; // true allows reporting lower speed CoilCoolingCurveFits Autosize
1231 : Real64 AutoVsHardSizingThreshold = 0.1; // criteria threshold used to determine if user hard size and autosize disagree 10%
1232 : Real64 AutoVsHardSizingDeltaTempThreshold = 1.5; // temperature criteria threshold for autosize versus hard size [C]
1233 : Real64 DataCoilSizingAirInTemp = 0.0; // saves sizing data for use in coil object reporting
1234 : Real64 DataCoilSizingAirInHumRat = 0.0; // saves sizing data for use in coil object reporting
1235 : Real64 DataCoilSizingAirOutTemp = 0.0; // saves sizing data for use in coil object reporting
1236 : Real64 DataCoilSizingAirOutHumRat = 0.0; // saves sizing data for use in coil object reporting
1237 : Real64 DataCoilSizingFanCoolLoad = 0.0; // saves sizing data for use in coil object reporting
1238 : Real64 DataCoilSizingCapFT = 1.0; // saves sizing data for use in coil object reporting
1239 : bool DataDesAccountForFanHeat = true; // include fan heat when true
1240 : Real64 DataDesInletWaterTemp = 0.0; // coil inlet water temperature used for warning messages
1241 : Real64 DataDesInletAirHumRat = 0.0; // coil inlet air humidity ratio used for warning messages
1242 : Real64 DataDesInletAirTemp = 0.0; // coil inlet air temperature used for warning messages
1243 : Real64 DataDesOutletAirTemp = 0.0; // coil outlet air temperature used for sizing
1244 : Real64 DataDesOutletAirHumRat = 0.0; // coil air outlet humidity ratio used in sizing calculations [kg water / kg dry air]
1245 : Real64 DataCoolCoilCap = 0.0; // cooling coil capacity used for sizing with scalable inputs [W]
1246 : Real64 DataFlowUsedForSizing = 0.0; // air flow rate used for sizing with scalable inputs [m3/s]
1247 : Real64 DataAirFlowUsedForSizing = 0.0; // air flow rate used for sizing with scalable inputs [m3/s]
1248 : Real64 DataWaterFlowUsedForSizing = 0.0; // water flow rate used for sizing with scalable inputs [m3/s]
1249 : Real64 DataCapacityUsedForSizing = 0.0; // capacity used for sizing with scalable inputs [W]
1250 : Real64 DataDesignCoilCapacity = 0.0; // calculated capacity of coil at end of UA calculation
1251 : Real64 DataHeatSizeRatio = 1.0; // heating coil size as a ratio of cooling coil capacity
1252 : Real64 DataEMSOverride = 0.0; // value of EMS variable used to override autosizing
1253 : Real64 DataBypassFrac = 0.0; // value of bypass fraction for Coil:Cooling:DX:TwoStageWithHumidityControlMode coils
1254 : Real64 DataFracOfAutosizedCoolingAirflow = 1.0; // fraction of design cooling supply air flow rate
1255 : Real64 DataFracOfAutosizedHeatingAirflow = 1.0; // fraction of design heating supply air flow rate
1256 : Real64 DataFlowPerCoolingCapacity = 0.0; // cooling supply air flow per unit cooling capacity
1257 : Real64 DataFlowPerHeatingCapacity = 0.0; // heating supply air flow per unit heating capacity
1258 : Real64 DataFracOfAutosizedCoolingCapacity = 1.0; // fraction of autosized cooling capacity
1259 : Real64 DataFracOfAutosizedHeatingCapacity = 1.0; // fraction of autosized heating capacit
1260 : Real64 DataAutosizedCoolingCapacity = 0.0; // Autosized cooling capacity used for multiplying flow per capacity to get flow rate
1261 : Real64 DataAutosizedHeatingCapacity = 0.0; // Autosized heating capacit used for multiplying flow per capacity to get flow rate
1262 : Real64 DataConstantUsedForSizing = 0.0; // base value used for sizing inputs that are ratios of other inputs
1263 : Real64 DataFractionUsedForSizing = 0.0; // fractional value of base value used for sizing inputs that are ratios of other inputs
1264 : Real64 DataNonZoneNonAirloopValue = 0.0; // used when equipment is not located in a zone or airloop
1265 : Real64 DataSizingFraction = 1.0; // used when ratios of sizing is required
1266 : int DataZoneUsedForSizing = 0; // pointer to control zone for air loop equipment
1267 : int DataZoneNumber = 0; // a pointer to a served by zoneHVAC equipment
1268 : int NumZoneHVACSizing = 0; // Number of design specification zone HVAC sizing objects
1269 : int NumAirTerminalSizingSpec = 0; // Number of design specfication air terminal sizing objects
1270 : int NumAirTerminalUnits = 0; // Number of air terminal units (same as total number of zone inlet nodes)
1271 : Real64 DXCoolCap = 0.0; // The rated cooling capacity of a DX unit.
1272 : Real64 GlobalHeatSizingFactor = 0.0; // the global heating sizing ratio
1273 : Real64 GlobalCoolSizingFactor = 0.0; // the global cooling sizing ratio
1274 : Real64 SuppHeatCap = 0.0; // the heating capacity of the supplemental heater in a unitary system
1275 : Real64 UnitaryHeatCap = 0.0; // the heating capacity of a unitary system
1276 : Array1D<Real64> ZoneSizThermSetPtHi; // highest zone thermostat setpoint during zone sizing calcs
1277 : Array1D<Real64> ZoneSizThermSetPtLo; // lowest zone thermostat setpoint during zone sizing calcs
1278 : Array1D_string CoolPeakDateHrMin; // date:hr:min of cooling peak
1279 : Array1D_string HeatPeakDateHrMin; // date:hr:min of heating peak
1280 : Array1D_string LatCoolPeakDateHrMin; // date:hr:min of latent cooling peak
1281 : Array1D_string LatHeatPeakDateHrMin; // date:hr:min of latent heating peak
1282 : char SizingFileColSep; // Character to separate columns in sizing outputs
1283 : int DataDesicDehumNum = 0; // index to desiccant dehumidifier
1284 : bool DataDesicRegCoil = false; // TRUE if heating coil desiccant regeneration coil
1285 : bool HRFlowSizingFlag = false; // True, if it is a heat recovery heat exchanger flow sizing
1286 : Real64 DataWaterCoilSizCoolDeltaT = 0.0; // used for sizing cooling coil water design flow rate
1287 : Real64 DataWaterCoilSizHeatDeltaT = 0.0; // used for sizing heating coil water design flow rate
1288 : bool DataNomCapInpMeth = false; // True if heating coil is sized by CoilPerfInpMeth == NomCa
1289 : int DataFanEnumType = -1; // Fan type used during sizing
1290 : int DataFanIndex = -1; // Fan index used during sizing
1291 : DataSizing::ZoneFanPlacement DataFanPlacement = DataSizing::ZoneFanPlacement::NotSet; // identifies location of fan wrt coil
1292 : int DataDXSpeedNum = 0;
1293 : int DataCoolCoilType = -1;
1294 : int DataCoolCoilIndex = -1;
1295 : EPVector<DataSizing::OARequirementsData> OARequirements;
1296 : EPVector<DataSizing::ZoneAirDistributionData> ZoneAirDistribution;
1297 : EPVector<DataSizing::ZoneSizingInputData> ZoneSizingInput; // Input data for zone sizing
1298 : Array2D<DataSizing::ZoneSizingData> ZoneSizing; // Data for zone sizing (all data, all design)
1299 : EPVector<DataSizing::ZoneSizingData> FinalZoneSizing; // Final data for zone sizing including effects
1300 : Array2D<DataSizing::ZoneSizingData> CalcZoneSizing; // Data for zone sizing (all data)
1301 : EPVector<DataSizing::ZoneSizingData> CalcFinalZoneSizing; // Final data for zone sizing (calculated only)
1302 : EPVector<DataSizing::ZoneSizingData> TermUnitFinalZoneSizing; // Final data for sizing terminal units (indexed per terminal unit)
1303 : EPVector<DataSizing::SystemSizingInputData> SysSizInput; // Input data array for system sizing object
1304 : Array2D<DataSizing::SystemSizingData> SysSizing; // Data array for system sizing (all data)
1305 : EPVector<DataSizing::SystemSizingData> FinalSysSizing; // Data array for system sizing (max heat/cool)
1306 : EPVector<DataSizing::SystemSizingData> CalcSysSizing; // Data array for system sizing (max heat/cool)
1307 : EPVector<DataSizing::SysSizPeakDDNumData> SysSizPeakDDNum; // data array for peak des day indices
1308 : EPVector<DataSizing::TermUnitSizingData> TermUnitSizing; // Data added in sizing routines (indexed per terminal unit)
1309 : EPVector<DataSizing::ZoneEqSizingData> ZoneEqSizing; // Data added in zone eq component sizing routines
1310 : EPVector<DataSizing::ZoneEqSizingData> UnitarySysEqSizing; // Data added in unitary system sizing routines
1311 : EPVector<DataSizing::ZoneEqSizingData> OASysEqSizing; // Data added in unitary system sizing routines
1312 : EPVector<DataSizing::PlantSizingData> PlantSizData; // Input data array for plant sizing
1313 : EPVector<DataSizing::DesDayWeathData> DesDayWeath; // design day weather saved at major time step
1314 : EPVector<DataSizing::CompDesWaterFlowData> CompDesWaterFlow; // array to store components' design water flow
1315 : EPVector<DataSizing::ZoneHVACSizingData> ZoneHVACSizing; // Input data for zone HVAC sizing
1316 : EPVector<DataSizing::AirTerminalSizingSpecData>
1317 : AirTerminalSizingSpec; // Input data for zone HVAC sizing used only for Facility Load Component Summary
1318 : EPVector<DataSizing::FacilitySizingData> CalcFacilitySizing; // Data for zone sizing
1319 : DataSizing::FacilitySizingData CalcFinalFacilitySizing; // Final data for zone sizing
1320 : Array1D<Real64> VbzByZone; // saved value of ZoneOAUnc which is Vbz used in 62.1 tabular report
1321 : Array1D<Real64> VdzClgByZone; // saved value of cooling based ZoneSA which is Vdz used in 62.1 tabular report (also used for zone level Vps)
1322 : Array1D<Real64> VdzMinClgByZone; // minimum discharge flow for cooling, Vdz includes secondary and primary flows for dual path
1323 : Array1D<Real64> VdzHtgByZone; // saved value of heating based ZoneSA which is Vdz used in 62.1 tabular report (also used for zone level Vps)
1324 : Array1D<Real64> VdzMinHtgByZone; // minimum discharge flow for heating, Vdz includes secondary and primary flows for dual path
1325 : Array1D<Real64> ZdzClgByZone; // minimum discharge outdoor-air fraction for cooling
1326 : Array1D<Real64> ZdzHtgByZone; // minimum discharge outdoor-air fraction for heating
1327 : Array1D<Real64> VpzClgByZone; // saved value of cooling based ZonePA which is Vpz used in 62.1 tabular report
1328 : Array1D<Real64> VpzMinClgByZone; // saved value of minimum cooling based ZonePA which is VpzClg-min used in 62.1 tabular report
1329 : Array1D<Real64> VpzHtgByZone; // saved value of heating based ZonePA which is Vpz used in 62.1 tabular report
1330 : Array1D<Real64> VpzMinHtgByZone; // saved value of minimum heating based ZonePA which is VpzHtg-min used in 62.1 tabular report
1331 : Array1D<Real64> VpzClgSumBySys; // sum of saved value of cooling based ZonePA which is Vpz-sum used in 62.1 tabular report
1332 : Array1D<Real64> VpzHtgSumBySys; // sum of saved value of heating based ZonePA which is Vpz-sum used in 62.1 tabular report
1333 : Array1D<Real64> PzSumBySys; // sum of design people for system, Pz_sum
1334 : Array1D<Real64> PsBySys; // sum of peak concurrent people by system, Ps
1335 : Array1D<Real64> DBySys; // Population Diversity by system
1336 : Array1D<Real64> SumRpxPzBySys; // Sum of per person OA times number of people by system, No D yet
1337 : Array1D<Real64> SumRaxAzBySys; // sum of per area OA time zone area by system, does not get altered by D
1338 : Array1D<std::string> PeakPsOccurrenceDateTimeStringBySys; // string describing when Ps peak occurs
1339 : Array1D<std::string> PeakPsOccurrenceEnvironmentStringBySys; // string describing Environment when Ps peak occurs
1340 : Array1D<Real64> VouBySys; // uncorrected system outdoor air requirement, for std 62.1 VRP
1341 : Array1D<Real64> VpsClgBySys; // System primary airflow Vps, for cooling for std 62.1 VRP
1342 : Array1D<Real64> VpsHtgBySys; // system primary airflow Vps, for heating for std 62.1 VRP
1343 : Array1D<Real64> FaByZoneHeat; // saved value of Fa used in 62.1 tabular report
1344 : Array1D<Real64> FbByZoneCool; // saved value of Fb used in 62.1 tabular report
1345 : Array1D<Real64> FbByZoneHeat; // saved value of Fb used in 62.1 tabular report
1346 : Array1D<Real64> FcByZoneCool; // saved value of Fc used in 62.1 tabular report
1347 : Array1D<Real64> FcByZoneHeat; // saved value of Fc used in 62.1 tabular report
1348 : Array1D<Real64> XsBySysCool; // saved value of Xs used in 62.1 tabular report
1349 : Array1D<Real64> XsBySysHeat; // saved value of Xs used in 62.1 tabular report
1350 : Array1D<Real64> EvzByZoneCool; // saved value of Evz (zone vent effy) used in 62.1 tabular report
1351 : Array1D<Real64> EvzByZoneHeat; // saved value of Evz (zone vent effy) used in 62.1 tabular report
1352 : Array1D<Real64> EvzByZoneCoolPrev; // saved value of Evz (zone vent effy) used in 62.1 tabular report
1353 : Array1D<Real64> EvzByZoneHeatPrev; // saved value of Evz (zone vent effy) used in 62.1 tabular report
1354 : Array1D<Real64> VotClgBySys; // saved value of cooling ventilation required at primary AHU, used in 62.1 tabular report
1355 : Array1D<Real64> VotHtgBySys; // saved value of heating ventilation required at primary AHU, used in 62.1 tabular report
1356 : Array1D<Real64> VozSumClgBySys; // saved value of cooling ventilation required at clg zones
1357 : Array1D<Real64> VozSumHtgBySys; // saved value of cooling ventilation required at htg zones
1358 : Array1D<Real64> TotCoolCapTemp; // scratch variable used for calculating peak load [W]
1359 : Array1D<Real64> EvzMinBySysHeat; // saved value of EvzMin used in 62.1 tabular report
1360 : Array1D<Real64> EvzMinBySysCool; // saved value of EvzMin used in 62.1 tabular report
1361 : Array1D<Real64> FaByZoneCool; // triggers allocation in UpdateSysSizing
1362 : Array1D<Real64> SensCoolCapTemp; // triggers allocation in UpdateSysSizing
1363 :
1364 0 : void clear_state() override
1365 : {
1366 0 : new (this) SizingData();
1367 0 : }
1368 : };
1369 :
1370 : } // namespace EnergyPlus
1371 :
1372 : #endif
|