Line data Source code
1 : // EnergyPlus, Copyright (c) 1996-2024, The Board of Trustees of the University of Illinois,
2 : // The Regents of the University of California, through Lawrence Berkeley National Laboratory
3 : // (subject to receipt of any required approvals from the U.S. Dept. of Energy), Oak Ridge
4 : // National Laboratory, managed by UT-Battelle, Alliance for Sustainable Energy, LLC, and other
5 : // contributors. All rights reserved.
6 : //
7 : // NOTICE: This Software was developed under funding from the U.S. Department of Energy and the
8 : // U.S. Government consequently retains certain rights. As such, the U.S. Government has been
9 : // granted for itself and others acting on its behalf a paid-up, nonexclusive, irrevocable,
10 : // worldwide license in the Software to reproduce, distribute copies to the public, prepare
11 : // derivative works, and perform publicly and display publicly, and to permit others to do so.
12 : //
13 : // Redistribution and use in source and binary forms, with or without modification, are permitted
14 : // provided that the following conditions are met:
15 : //
16 : // (1) Redistributions of source code must retain the above copyright notice, this list of
17 : // conditions and the following disclaimer.
18 : //
19 : // (2) Redistributions in binary form must reproduce the above copyright notice, this list of
20 : // conditions and the following disclaimer in the documentation and/or other materials
21 : // provided with the distribution.
22 : //
23 : // (3) Neither the name of the University of California, Lawrence Berkeley National Laboratory,
24 : // the University of Illinois, U.S. Dept. of Energy nor the names of its contributors may be
25 : // used to endorse or promote products derived from this software without specific prior
26 : // written permission.
27 : //
28 : // (4) Use of EnergyPlus(TM) Name. If Licensee (i) distributes the software in stand-alone form
29 : // without changes from the version obtained under this License, or (ii) Licensee makes a
30 : // reference solely to the software portion of its product, Licensee must refer to the
31 : // software as "EnergyPlus version X" software, where "X" is the version number Licensee
32 : // obtained under this License and may not use a different name for the software. Except as
33 : // specifically required in this Section (4), Licensee shall not use in a company name, a
34 : // product name, in advertising, publicity, or other promotional activities any name, trade
35 : // name, trademark, logo, or other designation of "EnergyPlus", "E+", "e+" or confusingly
36 : // similar designation, without the U.S. Department of Energy's prior written consent.
37 : //
38 : // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
39 : // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
40 : // AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
41 : // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
42 : // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
43 : // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
44 : // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
45 : // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
46 : // POSSIBILITY OF SUCH DAMAGE.
47 :
48 : #ifndef ReportCoilSelection_hh_INCLUDED
49 : #define ReportCoilSelection_hh_INCLUDED
50 :
51 : // C++ Headers
52 : #include <memory>
53 : #include <string>
54 : #include <vector>
55 :
56 : // EnergyPlus Headers
57 : #include <EnergyPlus/Data/BaseData.hh>
58 : #include <EnergyPlus/DataAirSystems.hh>
59 : #include <EnergyPlus/DataSizing.hh>
60 : #include <EnergyPlus/EnergyPlus.hh>
61 :
62 : namespace EnergyPlus {
63 :
64 : // Forward declarations
65 : struct EnergyPlusData;
66 :
67 : class CoilSelectionData
68 : // data object, one for each unique coil in simulation
69 : {
70 :
71 : public: // methods
72 : // Constructor
73 : explicit CoilSelectionData(std::string const &coilName);
74 :
75 : public: // data
76 : std::string coilName_; // user-defined coil name
77 : std::string coilObjName; // coil object name, e.g., Coil:Cooling:Water, Coil:Heating:DX:SingleSpeed, etc.
78 : bool isCooling; // true if this coil is for cooling
79 : bool isHeating; // true if this coil is for heating
80 : std::string coilLocation; // where is the coil located?, AirLoop or Zone
81 : std::string desDayNameAtSensPeak; // the name of the design day that produced the sensible Ideal Loads peak
82 : std::string coilSensePeakHrMin; // time stamp of the sensible coil peak during Ideal Loads Simulation
83 : std::string desDayNameAtTotalPeak; // the name of the design day that produced the total Ideal Loads peak
84 : std::string coilTotalPeakHrMin; // time stamp of the sensible coil peak during Ideal Loads Simulation
85 : std::string desDayNameAtAirFlowPeak; // the name of the design day that produced the air flow Ideal Loads peak
86 : std::string airPeakHrMin; // time stamp of the airflow peak during Ideal Loads Simulation
87 :
88 : int coilNum; // coil array index associated with WaterCoil(), DXCoil(), or HeatingCoil() array structures
89 : int airloopNum; // Coil index to AirLoop
90 : int oaControllerNum; // Coil index to OAController
91 : int zoneEqNum; // Coil index to CurZoneEqNum, for zone coils
92 : int oASysNum; // Coil index to OASysEqSizing
93 : std::vector<int> zoneNum; // list of zone indexes associated with this coil
94 : std::vector<std::string> zoneName; // list of zone names associated with this coil, if any
95 : std::string typeHVACname; // this coil is in what sort of HVAC system, parent object types
96 : std::string userNameforHVACsystem; // this coil is an HVAC system named by the user.
97 : int zoneHVACTypeNum; // store type num if zoneHVAC
98 : int zoneHVACIndex; // store component index for zone HVAC
99 : int typeof_Coil; // type of coil, e.g., PlantEquipmentType::CoilWaterSimpleHeating, PlantEquipmentType::CoilWaterDetailedFlatCooling,
100 : // PlantEquipmentType::CoilWaterCooling
101 :
102 : DataSizing::CoilSizingConcurrence coilSizingMethodConcurrence =
103 : DataSizing::CoilSizingConcurrence::NA; // non-coincident, coincident, combination, n/a
104 : std::string coilSizingMethodConcurrenceName; // string name of sizing method for concurrence
105 :
106 : int coilSizingMethodCapacity; // 8=CoolingDesignCapacity, 9=HeatingDesignCapacity, 10=CapacityPerFloorArea, 11=FractionOfAutosizedCoolingCapacity,
107 : // 12=FractionOfAutosizedHeatingCapacity
108 : std::string coilSizingMethodCapacityName;
109 :
110 : int coilSizingMethodAirFlow; // choice of how to get system design air flow rates;
111 : // 2=SupplyAirFlowRate, 3=FlowPerFloorArea, 4=FractionOfAutosizedCoolingAirflow,
112 : // 5=FractionOfAutosizedHeatingAirflow, 6=FlowPerCoolingCapacity, 7=FlowPerHeatingCapacity
113 : std::string coilSizingMethodAirFlowName;
114 :
115 : bool isCoilSizingForTotalLoad; // Type of peak to size (cooling) coils on: True is TotalCoolingLoad, False is sensible
116 : std::string coilPeakLoadTypeToSizeOnName;
117 :
118 : // Real64 coilDesCapUser; // coil capacity original input value [W]; -999 means field not applicable to this coil
119 : bool capIsAutosized; // true if the coil's capacity was autosized
120 : std::string coilCapAutoMsg; // Yes if user cap was autosized, No if hard value entered
121 :
122 : bool volFlowIsAutosized; // true if the coil's flow was autosized
123 : std::string coilVolFlowAutoMsg; // Yes if user flow was autosized, no if hard value;
124 : Real64 coilWaterFlowUser; // coil water flow original input value [m3/s]; -999 means field not applicable to this coil
125 : std::string coilWaterFlowAutoMsg; // Yes if user water flow was autosized
126 :
127 : bool oaPretreated; // Was the outside air pretreated prior to inlet of coil [True or False]
128 : std::string coilOAPretreatMsg; // Yes if the entering air OA was pretreated before mixing, No otherwise
129 :
130 : bool isSupplementalHeater; // true if heating coil is a supplemental heater.
131 : Real64 coilTotCapFinal;
132 : Real64 coilSensCapFinal;
133 : Real64 coilRefAirVolFlowFinal;
134 : Real64 coilRefWaterVolFlowFinal;
135 :
136 : // Values from time of Ideal Load Sizing Peak
137 : Real64 coilTotCapAtPeak; // coil total capacity at peak [W]
138 : Real64 coilSensCapAtPeak; // coil sensible capacity at peak [W]
139 : Real64 coilDesMassFlow; // coil design air mass flow rate [kg/s]
140 : Real64 coilDesVolFlow; // coil design air volume flow rate [m3/s]
141 : Real64 coilDesEntTemp; // coil entering dry bulb at peak [C]
142 : Real64 coilDesEntWetBulb; // coil design entering wet bulb [C]
143 : Real64 coilDesEntHumRat; // coil entering humidity ratio at peak [kgWater/kgDryAir]
144 : Real64 coilDesEntEnth; // coil entering enthalpy [J/kg-C]
145 : Real64 coilDesLvgTemp; // coil leaving dry bulb at peak [C]
146 : Real64 coilDesLvgWetBulb; // coil design leaving wet bulb [C]
147 : Real64 coilDesLvgHumRat; // coil leaving humidity ratio at peak [kgWater/kgDryAir]
148 : Real64 coilDesLvgEnth; // coil leaving enthalpy [J/kg-C]
149 : Real64 coilDesWaterMassFlow; // coil design water mass flow rate [m3/s]
150 : Real64 coilDesWaterEntTemp; // coil design entering water temperature[C]
151 : Real64 coilDesWaterLvgTemp; // coil design leaving water temperature [C]
152 : Real64 coilDesWaterTempDiff; // coil plant design delta T [ delta C]
153 :
154 : int pltSizNum; // index to PlantSizData() array if this coil attached to a plant
155 : int waterLoopNum; // Plant loop index if this (water) coil attached to a plant
156 : std::string plantLoopName; // user name of the plant loop
157 : Real64 oaPeakTemp; // outside air dry bulb at ideal loads peak [C]
158 : Real64 oaPeakHumRat; // outside air humidity ratio at ideal loads peak [kgWater/kgDryAir]
159 : Real64 oaPeakWetBulb; // outside air wet bulb at peak [C]
160 : Real64 oaPeakVolFlow; // outside air volume flow rate at peak [m3/s]
161 : Real64 oaPeakVolFrac; // fraction of outside air volume flow rate at peak
162 : Real64 oaDoaTemp; // DOA unit design supply air dry bulb [C]
163 : Real64 oaDoaHumRat; // DOA unit design supply air humidity ratio [kgWater/kgDryAir]
164 : Real64 raPeakTemp; // return air dry bulb at peak [C]
165 : Real64 raPeakHumRat; // return air humidity ratio at peak [kgWater/kgDryAir]
166 : Real64 rmPeakTemp; // room air dry bulb (setpoint) at peak [C]
167 : Real64 rmPeakHumRat; // room air humidity ratio (setpoint) at peak [kgWater/kgDryAir]
168 : Real64 rmPeakRelHum; // room air relative humidity (setpoint) at peak [%]
169 : Real64 rmSensibleAtPeak; // space sensible zone load at peak [W]
170 : Real64 rmLatentAtPeak; // space latent zone load at ideal loads peak [W]
171 : Real64 coilIdealSizCapOverSimPeakCap; // capacity at rated conditions subtracted by capacity at simulation peak, zero if under sized [W]
172 : Real64 coilIdealSizCapUnderSimPeakCap; // capacity at simulation peak subtracted by capacity at rated conditions, zero if oversized [W]
173 : Real64 reheatLoadMult; // reheat coil multiplier due to over/undersizing of coil airflow
174 : Real64 minRatio; // Flow/capacity ratio too low so reducing capacity by ratio
175 : Real64 maxRatio; // Flow/capacity ratio too high so increasing capacity by ratio
176 : Real64 cpMoistAir; // specific heat capacity of moist air through coil [J/kg-C]
177 : Real64 cpDryAir; // specific heat capacity of dry air (at elevation) [J/kg-C]
178 : Real64 rhoStandAir; // density of dry air at a standard temp and at eleveation [kg/m3]
179 : Real64 rhoFluid; // density of coil plant fluid [kg/m3]
180 : Real64 cpFluid; // specific heat capacity of coil plant fluid [J/kg-K]
181 : Real64 coilCapFTIdealPeak; // coil capacity multiplier at Ideal Peak conditions, func of temperature only, to the input rating point (usually
182 : // for a DX coil) [W]
183 : Real64 coilRatedTotCap; // rated coil total capacity [W]
184 : Real64 coilRatedSensCap; // rated coil sensible capacity [W]
185 : Real64 ratedAirMassFlow; // rated coil design air mass flow rate [m3/s]
186 : Real64 ratedCoilInDb; // rated coil inlet air dry bulb [C]
187 : Real64 ratedCoilInWb; // rated coil inlet air wet bulb [C]
188 : Real64 ratedCoilInHumRat; // rated coil inlet air humidity ratio [kgWater/kgDryAir]
189 : Real64 ratedCoilInEnth; // rated coil inlet air enthalpy [J/kg-C]
190 : Real64 ratedCoilOutDb; // rated coil outlet air dry bulb [C]
191 : Real64 ratedCoilOutWb; // rated coil outlet air wet bulb [C]
192 : Real64 ratedCoilOutHumRat; // rated coil outlet air humidity ratio, [kgWater/kgDryAir]
193 : Real64 ratedCoilOutEnth; // rated coil outlet air enthalpy [J/kg-C]
194 : Real64 ratedCoilEff; // rated coil effectiveness
195 : Real64 ratedCoilBpFactor; // rated coil bypass factor
196 : Real64 ratedCoilAppDewPt; // rated coil apparatus dew point [C]
197 : Real64 ratedCoilOadbRef; // rated DX coil outside air dry bulb reference [C]
198 : Real64 ratedCoilOawbRef; // rated DX coil outside air wet bulb reference [C]
199 :
200 : std::string fanAssociatedWithCoilName; // name of fan found to be associated with this coil
201 : std::string fanTypeName; // type of fan found to be associated with this coil
202 : HVAC::FanType supFanType; // indicates which type of fan model for supply fan, legacy or new OO
203 : int supFanNum = 0; // index pointing to this fan in legacy fan data structure, 1-based struct array
204 : Real64 fanSizeMaxAirVolumeFlow; // the size of the fan in terms of volume flow rate [m3/s]
205 : Real64 fanSizeMaxAirMassFlow; // the size of the fan in terms of mass flow rate [kg/s]
206 : Real64 fanHeatGainIdealPeak; // Fan heat gain to air during Ideal loads peak sizing [W]
207 : Real64 coilAndFanNetTotalCapacityIdealPeak; // coil net total capacity including fan heat gain for ideal loads peak sizing [W]
208 :
209 : // static plant info
210 : Real64 plantDesMaxMassFlowRate; // this coil's plant loop overall design flow rate [kg/s]
211 : Real64 plantDesRetTemp; // this coil's plant loop design return temperature
212 : Real64 plantDesSupTemp; // this coil's plant loop design supply temperature
213 : Real64 plantDesDeltaTemp; // this coil's plant loop design temperature diference (delta C)
214 : Real64 plantDesCapacity; // this coil's plant loop capacity [W]
215 : Real64 coilCapPrcntPlantCap; // this coil's capacity as a percentage of the overall loop's capacity
216 : Real64 coilFlowPrcntPlantFlow; // this coil's design flow rate as a percentage the overall loop's design flow rate
217 : // misc
218 : Real64 coilUA; // U-value times Area, coil sizing result for UA [ ]
219 :
220 : }; // end class CoilSelectionData
221 :
222 : class ReportCoilSelection
223 :
224 : {
225 : public: // Creation
226 796 : ReportCoilSelection() : numCoilsReported_(0)
227 : {
228 796 : }
229 :
230 : public: // methods
231 : void finishCoilSummaryReportTable(EnergyPlusData &state);
232 :
233 : void setCoilFinalSizes(EnergyPlusData &state,
234 : std::string const &coilName, // user-defined name of the coil
235 : std::string const &coilObjName, // coil object name, e.g., Coil:Cooling:Water
236 : Real64 const totGrossCap, // total capacity [W]
237 : Real64 const sensGrossCap, // sensible capacity [W]
238 : Real64 const airFlowRate, // design or reference or rated air flow rate [m3/s]
239 : Real64 const waterFlowRate // design or reference or rated water flow rate [m3/s]
240 : );
241 :
242 : void setRatedCoilConditions(EnergyPlusData &state,
243 : std::string const &coilName, // ! user-defined name of the coil
244 : std::string const &coilObjName, // coil object name, e.g., Coil:Cooling:Water
245 : Real64 const RatedCoilTotCap, // ! rated coil total capacity [W]
246 : Real64 const RatedCoilSensCap, // rated coil sensible capacity [W]
247 : Real64 const RatedAirMassFlow, // rated coil design air mass flow rate [m3/s]
248 : Real64 const RatedCoilInDb, // rated coil inlet air dry bulb at time of peak [C]
249 : Real64 const RatedCoilInHumRat, // rated coil inlet air humidity ratio [kgWater/kgDryAir]
250 : Real64 const RatedCoilInWb, // rated coil inlet air wet bulb [C]
251 : Real64 const RatedCoilOutDb, // rated coil outlet air dry bulb [C]
252 : Real64 const RatedCoilOutHumRat, // rated coil outlet air humidity ratio, [kgWater/kgDryAir]
253 : Real64 const RatedCoilOutWb, // rated coil outlet air wet bulb [C]
254 :
255 : Real64 const RatedCoilOadbRef, // rated DX coil outside air dry bulb reference [C]
256 : Real64 const RatedCoilOawbRef, // rated DX coil outside air wet bulb reference [C]
257 : Real64 const RatedCoilBpFactor, // rated coil bypass factor
258 : Real64 const RatedCoilEff // rated coil effectiveness
259 : );
260 :
261 : void setCoilAirFlow(EnergyPlusData &state,
262 : std::string const &coilName, // user-defined name of the coil
263 : std::string const &coilType, // idf input object class name of coil
264 : Real64 const airVdot, // air flow rate in m3/s
265 : bool const isAutoSized // true if air flow was autosized
266 : );
267 :
268 : void setCoilWaterFlowNodeNums(EnergyPlusData &state,
269 : std::string const &coilName, // user-defined name of the coil
270 : std::string const &coilType, // idf input object class name of coil
271 : Real64 const waterVdot, // water flow rate in m3/s
272 : bool const isAutoSized, // true if water flow was autosized
273 : int const inletNodeNum, // coil chw inlet node num
274 : int const outletNodeNum, // coil chw outlet node num
275 : int const DataWaterLoopNum // plant loop structure index
276 : );
277 :
278 : void setCoilWaterFlowPltSizNum(EnergyPlusData &state,
279 : std::string const &coilName, // user-defined name of the coil
280 : std::string const &coilType, // idf input object class name of coil
281 : Real64 const waterVdot, // water flow rate in m3/s
282 : bool const isAutoSized, // true if water flow was autosized
283 : int const DataPltSizNum, // plant sizing structure index
284 : int const DataWaterLoopNum // plant loop structure index
285 : );
286 :
287 : void setCoilEntAirTemp(EnergyPlusData &state,
288 : std::string const &coilName, // user-defined name of the coil
289 : std::string const &coilType, // idf input object class name of coil
290 : Real64 const entAirDryBulbTemp, // ideal loads sizing result for air entering coil drybulb temp (C)
291 : int const curSysNum, // airloop system number index, if non zero
292 : int const curZoneEqNum // zone equipment list index, if non-zero
293 : );
294 :
295 : void setCoilEntAirHumRat(EnergyPlusData &state,
296 : std::string const &coilName, // user-defined name of the coil
297 : std::string const &coilType, // idf input object class name of coil
298 : Real64 const entAirHumRat);
299 :
300 : void setCoilEntWaterTemp(EnergyPlusData &state,
301 : std::string const &coilName, // user-defined name of the coil
302 : std::string const &coilType, // idf input object class name of coil
303 : Real64 const entWaterTemp // degree C
304 : );
305 :
306 : void setCoilLvgWaterTemp(EnergyPlusData &state,
307 : std::string const &coilName, // user-defined name of the coil
308 : std::string const &coilType, // idf input object class name of coil
309 : Real64 const lvgWaterTemp // degree C
310 : );
311 :
312 : void setCoilWaterDeltaT(EnergyPlusData &state,
313 : std::string const &coilName, // user-defined name of the coil
314 : std::string const &coilType, // idf input object class name of coil
315 : Real64 const CoilWaterDeltaT // degree C temperature difference used to size coil
316 : );
317 :
318 : void setCoilLvgAirTemp(EnergyPlusData &state,
319 : std::string const &coilName, // user-defined name of the coil
320 : std::string const &coilType, // idf input object class name of coil
321 : Real64 const lvgAirDryBulbTemp // air temperature leaving coil {C}
322 : );
323 :
324 : void setCoilLvgAirHumRat(EnergyPlusData &state,
325 : std::string const &coilName, // user-defined name of the coil
326 : std::string const &coilType, // idf input object class name of coil
327 : Real64 const lvgAirHumRat //
328 : );
329 :
330 : void setCoilCoolingCapacity(EnergyPlusData &state,
331 : std::string const &coilName, // user-defined name of the coil
332 : std::string const &coilType, // idf input object class name of coil
333 : Real64 const totalCoolingCap, // {W} coil cooling capacity
334 : bool const isAutoSize, // true if value was autosized
335 : int const curSysNum, // airloop system number index, if non zero
336 : int const curZoneEqNum, // zone equipment list index, if non-zero
337 : int const curOASysNum, // OA system equipment list index, if non-zero
338 : Real64 const fanCoolLoad, // {W} fan load used in ideal loads coil sizing
339 : Real64 const coilCapFunTempFac, // {W} curve result for modification factor for capacity as a function of temperature
340 : Real64 const DXFlowPerCapMinRatio, // non dimensional ratio, capacity adjustment ratio min
341 : Real64 const DXFlowPerCapMaxRatio // non dimensional ratio, capacity adjustment ratio max
342 : );
343 :
344 : void setCoilHeatingCapacity(EnergyPlusData &state,
345 : std::string const &coilName, // user-defined name of the coil
346 : std::string const &coilType, // idf input object class name of coil
347 : Real64 const totalHeatingCap, // {W} coil Heating capacity
348 : bool const isAutoSize, // true if value was autosized
349 : int const curSysNum, // airloop system number index, if non zero
350 : int const curZoneEqNum, // zone equipment list index, if non-zero
351 : int const curOASysNum, // OA system equipment list index, if non-zero
352 : Real64 const fanHeatGain, // {W} fan load used in ideal loads coil sizing
353 : Real64 const coilCapFunTempFac, // {W} curve result for modification factor for capacity as a function of temperature
354 : Real64 const DXFlowPerCapMinRatio, // non dimensional ratio, capacity adjustment ratio min
355 : Real64 const DXFlowPerCapMaxRatio // non dimensional ratio, capacity adjustment ratio max
356 : );
357 :
358 : void setCoilWaterCoolingCapacity(EnergyPlusData &state,
359 : std::string const &coilName, // user-defined name of the coil
360 : std::string const &coilType, // idf input object class name of coil
361 : Real64 const totalCoolingCap, // {W} coil cooling capacity
362 : bool const isAutoSize, // true if value was autosized
363 : int const inletNodeNum, // coil chw inlet node num
364 : int const outletNodeNum, // coil chw outlet node num
365 : int const dataWaterLoopNum // plant loop structure index
366 : );
367 :
368 : void setCoilWaterHeaterCapacityNodeNums(EnergyPlusData &state,
369 : std::string const &coilName, // user-defined name of the coil
370 : std::string const &coilType, // idf input object class name of coil
371 : Real64 const totalHeatingCap, // {W} coil Heating capacity
372 : bool const isAutoSize, // true if value was autosized
373 : int const inletNodeNum, // coil chw inlet node num
374 : int const outletNodeNum, // coil chw outlet node num
375 : int const dataWaterLoopNum // plant loop structure index
376 : );
377 :
378 : void setCoilWaterHeaterCapacityPltSizNum(EnergyPlusData &state,
379 : std::string const &coilName, // user-defined name of the coil
380 : std::string const &coilType, // idf input object class name of coil
381 : Real64 const totalHeatingCap, // {W} coil Heating capacity
382 : bool const isAutoSize, // true if value was autosized
383 : int const dataPltSizNum, // plant sizing structure index
384 : int const dataWaterLoopNum // plant loop structure index
385 : );
386 :
387 : void setCoilUA(EnergyPlusData &state,
388 : std::string const &coilName, // user-defined name of the coil
389 : std::string const &coilType, // idf input object class name of coil
390 : Real64 const UAvalue, // [W/k] UA value for coil,
391 : Real64 const dataCapacityUsedForSizing, // [W] sizing global
392 : bool const isAutoSize, // true if value was autosized
393 : int const curSysNum, // airloop system number index, if non zero
394 : int const curZoneEqNum // zone equipment list index, if non-zero
395 : );
396 :
397 : void setCoilReheatMultiplier(EnergyPlusData &state,
398 : std::string const &coilName, // user-defined name of the coil
399 : std::string const &coilType, // idf input object class name of coil
400 : Real64 const multiplierReheatLoad);
401 :
402 : void setCoilSupplyFanInfo(EnergyPlusData &state,
403 : std::string const &coilName, // user-defined name of the coil
404 : std::string const &coilType, // idf input object class name of coil
405 : std::string const &fanName,
406 : HVAC::FanType fanType,
407 : int fanIndex);
408 :
409 : void setCoilEqNum(EnergyPlusData &state,
410 : std::string const &coilName,
411 : std::string const &coilType,
412 : int const curSysNum,
413 : int const curOASysNum,
414 : int const curZoneEqNum);
415 :
416 : static std::string getTimeText(EnergyPlusData &state, int const timeStepAtPeak);
417 :
418 : bool isCompTypeFan(std::string const &compType // string component type, input object class name
419 : );
420 :
421 : bool isCompTypeCoil(std::string const &compType // string component type, input object class name
422 : );
423 :
424 : void setZoneLatentLoadCoolingIdealPeak(int const zoneIndex, Real64 const zoneCoolingLatentLoad);
425 :
426 : void setZoneLatentLoadHeatingIdealPeak(int const zoneIndex, Real64 const zoneHeatingLatentLoad);
427 :
428 : private: // methods
429 : void doAirLoopSetup(EnergyPlusData &state, int const coilVecIndex);
430 :
431 : void doZoneEqSetup(EnergyPlusData &state, int const coilVecIndex);
432 :
433 : void doFinalProcessingOfCoilData(EnergyPlusData &state);
434 :
435 : void writeCoilSelectionOutput(EnergyPlusData &state);
436 :
437 : void writeCoilSelectionOutput2(EnergyPlusData &state);
438 :
439 : int getIndexForOrCreateDataObjFromCoilName(EnergyPlusData &state,
440 : std::string const &coilName, // user-defined name of the coil
441 : std::string const &coilType // idf input object class name of coil
442 : );
443 :
444 : void associateZoneCoilWithParent(EnergyPlusData &state, std::unique_ptr<CoilSelectionData> &c);
445 :
446 : public: // data
447 : int numCoilsReported_;
448 : std::vector<std::unique_ptr<CoilSelectionData>> coilSelectionDataObjs;
449 :
450 : }; // end ReportCoilSelection class
451 :
452 : void createCoilSelectionReportObj(EnergyPlusData &state);
453 :
454 : struct ReportCoilSelectionData : BaseGlobalStruct
455 : {
456 :
457 : std::unique_ptr<ReportCoilSelection> coilSelectionReportObj;
458 :
459 796 : void init_state([[maybe_unused]] EnergyPlusData &state) override
460 : {
461 796 : }
462 :
463 0 : void clear_state() override
464 : {
465 0 : this->coilSelectionReportObj.release();
466 0 : }
467 : };
468 :
469 : } // namespace EnergyPlus
470 :
471 : #endif
|