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 ReportCoilSelection_hh_INCLUDED
49 : #define ReportCoilSelection_hh_INCLUDED
50 :
51 : // C++ Headers
52 : #include <memory>
53 : #include <string>
54 : #include <vector>
55 :
56 : #include <ObjexxFCL/Optional.hh>
57 :
58 : // EnergyPlus Headers
59 : #include <EnergyPlus/Data/BaseData.hh>
60 : #include <EnergyPlus/DataAirSystems.hh>
61 : #include <EnergyPlus/EnergyPlus.hh>
62 :
63 : namespace EnergyPlus {
64 :
65 : // Forward declarations
66 : struct EnergyPlusData;
67 :
68 6043 : class CoilSelectionData
69 : // data object, one for each unique coil in simulation
70 : {
71 :
72 : public: // methods
73 : // Constructor
74 : CoilSelectionData(std::string const &coilName);
75 :
76 : public: // data
77 : std::string coilName_; // user-defined coil name
78 : std::string coilObjName; // coil object name, e.g., Coil:Cooling:Water, Coil:Heating:DX:SingleSpeed, etc.
79 : bool isCooling; // true if this coil is for cooling
80 : bool isHeating; // true if this coil is for heating
81 : std::string coilLocation; // where is the coil located?, AirLoop or Zone
82 : std::string desDayNameAtSensPeak; // the name of the design day that produced the sensible Ideal Loads peak
83 : std::string coilSensePeakHrMin; // time stamp of the sensible coil peak during Ideal Loads Simulation
84 : std::string desDayNameAtTotalPeak; // the name of the design day that produced the total Ideal Loads peak
85 : std::string coilTotalPeakHrMin; // time stamp of the sensible coil peak during Ideal Loads Simulation
86 : std::string desDayNameAtAirFlowPeak; // the name of the design day that produced the air flow Ideal Loads peak
87 : std::string airPeakHrMin; // time stamp of the airflow peak during Ideal Loads Simulation
88 :
89 : int coilNum; // coil array index associated with WaterCoil(), DXCoil(), or HeatingCoil() array structures
90 : int airloopNum; // Coil index to AirLoop
91 : int oaControllerNum; // Coil index to OAController
92 : int zoneEqNum; // Coil index to CurZoneEqNum, for zone coils
93 : int oASysNum; // Coil index to OASysEqSizing
94 : std::vector<int> zoneNum; // list of zone indexes associated with this coil
95 : std::vector<std::string> zoneName; // list of zone names associated with this coil, if any
96 : std::string typeHVACname; // this coil is in what sort of HVAC system, parent object types
97 : std::string userNameforHVACsystem; // this coil is an HVAC system named by the user.
98 : int zoneHVACTypeNum; // store type num if zoneHVAC
99 : int zoneHVACIndex; // store component index for zone HVAC
100 : int typeof_Coil; // type of coil, e.g., PlantEquipmentType::CoilWaterSimpleHeating, PlantEquipmentType::CoilWaterDetailedFlatCooling,
101 : // PlantEquipmentType::CoilWaterCooling
102 :
103 : int coilSizingMethodConcurrence; // 1 = noncoincident, 2 = coincident
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 : DataAirSystems::FanModelType supFanModelType; // indicates which type of fan model for supply fan, legacy or new OO
203 : int supFanNum; // index pointing to this fan in legacy fan data structure, 1-based struct array
204 : int supFanVecIndex; // index pointing to this fan in new OO fan object array, 0-based
205 : Real64 fanSizeMaxAirVolumeFlow; // the size of the fan in terms of volume flow rate [m3/s]
206 : Real64 fanSizeMaxAirMassFlow; // the size of the fan in terms of mass flow rate [kg/s]
207 : Real64 fanHeatGainIdealPeak; // Fan heat gain to air during Ideal loads peak sizing [W]
208 : Real64 coilAndFanNetTotalCapacityIdealPeak; // coil net total capacity including fan heat gain for ideal loads peak sizing [W]
209 :
210 : // static plant info
211 : Real64 plantDesMaxMassFlowRate; // this coil's plant loop overall design flow rate [kg/s]
212 : Real64 plantDesRetTemp; // this coil's plant loop design return temperature
213 : Real64 plantDesSupTemp; // this coil's plant loop design supply temperature
214 : Real64 plantDesDeltaTemp; // this coil's plant loop design temperature diference (delta C)
215 : Real64 plantDesCapacity; // this coil's plant loop capacity [W]
216 : Real64 coilCapPrcntPlantCap; // this coil's capacity as a percentage of the overall loop's capacity
217 : Real64 coilFlowPrcntPlantFlow; // this coil's design flow rate as a percentage the overall loop's design flow rate
218 : // misc
219 : Real64 coilUA; // U-value times Area, coil sizing result for UA [ ]
220 :
221 : }; // end class CoilSelectionData
222 :
223 771 : class ReportCoilSelection
224 :
225 : {
226 : public: // Creation
227 771 : ReportCoilSelection() : numCoilsReported_(0)
228 : {
229 771 : }
230 :
231 : public: // methods
232 : void finishCoilSummaryReportTable(EnergyPlusData &state);
233 :
234 : void setCoilFinalSizes(EnergyPlusData &state,
235 : std::string const &coilName, // user-defined name of the coil
236 : std::string const &coilObjName, // coil object name, e.g., Coil:Cooling:Water
237 : Real64 const totGrossCap, // total capacity [W]
238 : Real64 const sensGrossCap, // sensible capacity [W]
239 : Real64 const airFlowRate, // design or reference or rated air flow rate [m3/s]
240 : Real64 const waterFlowRate // design or reference or rated water flow rate [m3/s]
241 : );
242 :
243 : void setRatedCoilConditions(EnergyPlusData &state,
244 : std::string const &coilName, // ! user-defined name of the coil
245 : std::string const &coilObjName, // coil object name, e.g., Coil:Cooling:Water
246 : Real64 const RatedCoilTotCap, // ! rated coil total capacity [W]
247 : Real64 const RatedCoilSensCap, // rated coil sensible capacity [W]
248 : Real64 const RatedAirMassFlow, // rated coil design air mass flow rate [m3/s]
249 : Real64 const RatedCoilInDb, // rated coil inlet air dry bulb at time of peak [C]
250 : Real64 const RatedCoilInHumRat, // rated coil inlet air humidity ratio [kgWater/kgDryAir]
251 : Real64 const RatedCoilInWb, // rated coil inlet air wet bulb [C]
252 : Real64 const RatedCoilOutDb, // rated coil outlet air dry bulb [C]
253 : Real64 const RatedCoilOutHumRat, // rated coil outlet air humidity ratio, [kgWater/kgDryAir]
254 : Real64 const RatedCoilOutWb, // rated coil outlet air wet bulb [C]
255 :
256 : Real64 const RatedCoilOadbRef, // rated DX coil outside air dry bulb reference [C]
257 : Real64 const RatedCoilOawbRef, // rated DX coil outside air wet bulb reference [C]
258 : Real64 const RatedCoilBpFactor, // rated coil bypass factor
259 : Real64 const RatedCoilEff // rated coil effectiveness
260 : );
261 :
262 : void setCoilAirFlow(EnergyPlusData &state,
263 : std::string const &coilName, // user-defined name of the coil
264 : std::string const &coilType, // idf input object class name of coil
265 : Real64 const airVdot, // air flow rate in m3/s
266 : bool const isAutoSized // true if air flow was autosized
267 : );
268 :
269 : void setCoilWaterFlowNodeNums(EnergyPlusData &state,
270 : std::string const &coilName, // user-defined name of the coil
271 : std::string const &coilType, // idf input object class name of coil
272 : Real64 const waterVdot, // water flow rate in m3/s
273 : bool const isAutoSized, // true if water flow was autosized
274 : int const inletNodeNum, // coil chw inlet node num
275 : int const outletNodeNum, // coil chw outlet node num
276 : int const DataWaterLoopNum // plant loop structure index
277 : );
278 :
279 : void setCoilWaterFlowPltSizNum(EnergyPlusData &state,
280 : std::string const &coilName, // user-defined name of the coil
281 : std::string const &coilType, // idf input object class name of coil
282 : Real64 const waterVdot, // water flow rate in m3/s
283 : bool const isAutoSized, // true if water flow was autosized
284 : int const DataPltSizNum, // plant sizing structure index
285 : int const DataWaterLoopNum // plant loop structure index
286 : );
287 :
288 : void setCoilEntAirTemp(EnergyPlusData &state,
289 : std::string const &coilName, // user-defined name of the coil
290 : std::string const &coilType, // idf input object class name of coil
291 : Real64 const entAirDryBulbTemp, // ideal loads sizing result for air entering coil drybulb temp (C)
292 : int const curSysNum, // airloop system number index, if non zero
293 : int const curZoneEqNum // zone equipment list index, if non-zero
294 : );
295 :
296 : void setCoilEntAirHumRat(EnergyPlusData &state,
297 : std::string const &coilName, // user-defined name of the coil
298 : std::string const &coilType, // idf input object class name of coil
299 : Real64 const entAirHumRat);
300 :
301 : void setCoilEntWaterTemp(EnergyPlusData &state,
302 : std::string const &coilName, // user-defined name of the coil
303 : std::string const &coilType, // idf input object class name of coil
304 : Real64 const entWaterTemp // degree C
305 : );
306 :
307 : void setCoilLvgWaterTemp(EnergyPlusData &state,
308 : std::string const &coilName, // user-defined name of the coil
309 : std::string const &coilType, // idf input object class name of coil
310 : Real64 const lvgWaterTemp // degree C
311 : );
312 :
313 : void setCoilWaterDeltaT(EnergyPlusData &state,
314 : std::string const &coilName, // user-defined name of the coil
315 : std::string const &coilType, // idf input object class name of coil
316 : Real64 const CoilWaterDeltaT // degree C temperature difference used to size coil
317 : );
318 :
319 : void setCoilLvgAirTemp(EnergyPlusData &state,
320 : std::string const &coilName, // user-defined name of the coil
321 : std::string const &coilType, // idf input object class name of coil
322 : Real64 const lvgAirDryBulbTemp // air temperature leaving coil {C}
323 : );
324 :
325 : void setCoilLvgAirHumRat(EnergyPlusData &state,
326 : std::string const &coilName, // user-defined name of the coil
327 : std::string const &coilType, // idf input object class name of coil
328 : Real64 const lvgAirHumRat //
329 : );
330 :
331 : void setCoilCoolingCapacity(EnergyPlusData &state,
332 : std::string const &coilName, // user-defined name of the coil
333 : std::string const &coilType, // idf input object class name of coil
334 : Real64 const totalCoolingCap, // {W} coil cooling capacity
335 : bool const isAutoSize, // true if value was autosized
336 : int const curSysNum, // airloop system number index, if non zero
337 : int const curZoneEqNum, // zone equipment list index, if non-zero
338 : int const curOASysNum, // OA system equipment list index, if non-zero
339 : Real64 const fanCoolLoad, // {W} fan load used in ideal loads coil sizing
340 : Real64 const coilCapFunTempFac, // {W} curve result for modification factor for capacity as a function of temperature
341 : Real64 const DXFlowPerCapMinRatio, // non dimensional ratio, capacity adjustment ratio min
342 : Real64 const DXFlowPerCapMaxRatio // non dimensional ratio, capacity adjustment ratio max
343 : );
344 :
345 : void setCoilHeatingCapacity(EnergyPlusData &state,
346 : std::string const &coilName, // user-defined name of the coil
347 : std::string const &coilType, // idf input object class name of coil
348 : Real64 const totalHeatingCap, // {W} coil Heating capacity
349 : bool const isAutoSize, // true if value was autosized
350 : int const curSysNum, // airloop system number index, if non zero
351 : int const curZoneEqNum, // zone equipment list index, if non-zero
352 : int const curOASysNum, // OA system equipment list index, if non-zero
353 : Real64 const fanHeatGain, // {W} fan load used in ideal loads coil sizing
354 : Real64 const coilCapFunTempFac, // {W} curve result for modification factor for capacity as a function of temperature
355 : Real64 const DXFlowPerCapMinRatio, // non dimensional ratio, capacity adjustment ratio min
356 : Real64 const DXFlowPerCapMaxRatio // non dimensional ratio, capacity adjustment ratio max
357 : );
358 :
359 : void setCoilWaterCoolingCapacity(EnergyPlusData &state,
360 : std::string const &coilName, // user-defined name of the coil
361 : std::string const &coilType, // idf input object class name of coil
362 : Real64 const totalCoolingCap, // {W} coil cooling capacity
363 : bool const isAutoSize, // true if value was autosized
364 : int const inletNodeNum, // coil chw inlet node num
365 : int const outletNodeNum, // coil chw outlet node num
366 : int const dataWaterLoopNum // plant loop structure index
367 : );
368 :
369 : void setCoilWaterHeaterCapacityNodeNums(EnergyPlusData &state,
370 : std::string const &coilName, // user-defined name of the coil
371 : std::string const &coilType, // idf input object class name of coil
372 : Real64 const totalHeatingCap, // {W} coil Heating capacity
373 : bool const isAutoSize, // true if value was autosized
374 : int const inletNodeNum, // coil chw inlet node num
375 : int const outletNodeNum, // coil chw outlet node num
376 : int const dataWaterLoopNum // plant loop structure index
377 : );
378 :
379 : void setCoilWaterHeaterCapacityPltSizNum(EnergyPlusData &state,
380 : std::string const &coilName, // user-defined name of the coil
381 : std::string const &coilType, // idf input object class name of coil
382 : Real64 const totalHeatingCap, // {W} coil Heating capacity
383 : bool const isAutoSize, // true if value was autosized
384 : int const dataPltSizNum, // plant sizing structure index
385 : int const dataWaterLoopNum // plant loop structure index
386 : );
387 :
388 : void setCoilUA(EnergyPlusData &state,
389 : std::string const &coilName, // user-defined name of the coil
390 : std::string const &coilType, // idf input object class name of coil
391 : Real64 const UAvalue, // [W/k] UA value for coil,
392 : Real64 const dataCapacityUsedForSizing, // [W] sizing global
393 : bool const isAutoSize, // true if value was autosized
394 : int const curSysNum, // airloop system number index, if non zero
395 : int const curZoneEqNum // zone equipment list index, if non-zero
396 : );
397 :
398 : void setCoilReheatMultiplier(EnergyPlusData &state,
399 : std::string const &coilName, // user-defined name of the coil
400 : std::string const &coilType, // idf input object class name of coil
401 : Real64 const multiplierReheatLoad);
402 :
403 : void setCoilSupplyFanInfo(EnergyPlusData &state,
404 : std::string const &coilName, // user-defined name of the coil
405 : std::string const &coilType, // idf input object class name of coil
406 : std::string const &fanName,
407 : DataAirSystems::FanModelType fanEnumType,
408 : int fanIndex);
409 :
410 : static std::string getTimeText(EnergyPlusData &state, int const timeStepAtPeak);
411 :
412 : bool isCompTypeFan(std::string const &compType // string component type, input object class name
413 : );
414 :
415 : bool isCompTypeCoil(std::string const &compType // string component type, input object class name
416 : );
417 :
418 : void setZoneLatentLoadCoolingIdealPeak(int const zoneIndex, Real64 const zoneCoolingLatentLoad);
419 :
420 : void setZoneLatentLoadHeatingIdealPeak(int const zoneIndex, Real64 const zoneHeatingLatentLoad);
421 :
422 : private: // methods
423 : void doAirLoopSetup(EnergyPlusData &state, int const coilVecIndex);
424 :
425 : void doZoneEqSetup(EnergyPlusData &state, int const coilVecIndex);
426 :
427 : void doFinalProcessingOfCoilData(EnergyPlusData &state);
428 :
429 : void writeCoilSelectionOutput(EnergyPlusData &state);
430 :
431 : void writeCoilSelectionOutput2(EnergyPlusData &state);
432 :
433 : int getIndexForOrCreateDataObjFromCoilName(EnergyPlusData &state,
434 : std::string const &coilName, // user-defined name of the coil
435 : std::string const &coilType // idf input object class name of coil
436 : );
437 :
438 : public: // data
439 : int numCoilsReported_;
440 : std::vector<std::unique_ptr<CoilSelectionData>> coilSelectionDataObjs;
441 :
442 : }; // end ReportCoilSelection class
443 :
444 : void createCoilSelectionReportObj(EnergyPlusData &state);
445 :
446 1542 : struct ReportCoilSelectionData : BaseGlobalStruct
447 : {
448 :
449 : std::unique_ptr<ReportCoilSelection> coilSelectionReportObj;
450 :
451 0 : void clear_state() override
452 : {
453 0 : this->coilSelectionReportObj.release();
454 0 : }
455 : };
456 :
457 : } // namespace EnergyPlus
458 :
459 : #endif
|