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 : #include <EnergyPlus/Autosizing/SystemAirFlowSizing.hh>
49 : #include <EnergyPlus/Data/EnergyPlusData.hh>
50 : #include <EnergyPlus/DataEnvironment.hh>
51 : #include <EnergyPlus/DataHVACGlobals.hh>
52 : #include <EnergyPlus/General.hh>
53 : #include <EnergyPlus/OutputReportPredefined.hh>
54 : #include <EnergyPlus/UtilityRoutines.hh>
55 : #include <EnergyPlus/WeatherManager.hh>
56 :
57 : namespace EnergyPlus {
58 :
59 3642 : Real64 SystemAirFlowSizer::size(EnergyPlusData &state, Real64 _originalValue, bool &errorsFound)
60 : {
61 :
62 3642 : if (!this->checkInitialized(state, errorsFound)) {
63 0 : return 0.0;
64 : }
65 3642 : this->preSize(state, _originalValue);
66 7284 : std::string DDNameFanPeak = "";
67 7284 : std::string dateTimeFanPeak = "";
68 :
69 3642 : if (this->dataEMSOverrideON) {
70 0 : this->autoSizedValue = this->dataEMSOverride;
71 3642 : } else if (this->dataConstantUsedForSizing > 0.0 && this->dataFractionUsedForSizing > 0.0) {
72 338 : this->autoSizedValue = this->dataConstantUsedForSizing * this->dataFractionUsedForSizing;
73 : } else {
74 3304 : if (this->curZoneEqNum > 0) {
75 1554 : if (!this->wasAutoSized && !this->sizingDesRunThisZone) {
76 81 : this->autoSizedValue = _originalValue;
77 1473 : } else if (this->zoneEqSizing(this->curZoneEqNum).DesignSizeFromParent) {
78 208 : this->autoSizedValue = this->zoneEqSizing(this->curZoneEqNum).AirVolFlow;
79 : } else {
80 1265 : if ((this->zoneAirFlowSizMethod == DataSizing::SupplyAirFlowRate) || (this->zoneAirFlowSizMethod == DataSizing::None)) {
81 :
82 0 : if (this->zoneEqSizing(this->curZoneEqNum).SystemAirFlow) {
83 0 : this->autoSizedValue = max(this->zoneEqSizing(this->curZoneEqNum).AirVolFlow,
84 0 : this->finalZoneSizing(this->curZoneEqNum).DesCoolVolFlow,
85 0 : this->finalZoneSizing(this->curZoneEqNum).DesHeatVolFlow);
86 0 : if (this->autoSizedValue == this->finalZoneSizing(this->curZoneEqNum).DesCoolVolFlow) {
87 0 : if (this->finalZoneSizing(this->curZoneEqNum).CoolDDNum > 0 &&
88 0 : this->finalZoneSizing(this->curZoneEqNum).CoolDDNum <= state.dataEnvrn->TotDesDays) {
89 0 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Title;
90 0 : dateTimeFanPeak =
91 0 : format("{}/{} {}",
92 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Month,
93 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).DayOfMonth,
94 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
95 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtCoolMax));
96 : }
97 0 : } else if (this->autoSizedValue == this->finalZoneSizing(this->curZoneEqNum).DesHeatVolFlow) {
98 0 : if (this->finalZoneSizing(this->curZoneEqNum).HeatDDNum > 0 &&
99 0 : this->finalZoneSizing(this->curZoneEqNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
100 0 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
101 0 : dateTimeFanPeak =
102 0 : format("{}/{} {}",
103 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
104 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).DayOfMonth,
105 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
106 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtHeatMax));
107 : }
108 0 : } else if (this->autoSizedValue == this->zoneEqSizing(this->curZoneEqNum).AirVolFlow) {
109 0 : DDNameFanPeak = "Unknown";
110 : }
111 : } else {
112 0 : if (this->zoneCoolingOnlyFan) {
113 0 : this->autoSizedValue = this->finalZoneSizing(this->curZoneEqNum).DesCoolVolFlow;
114 0 : if (this->finalZoneSizing(this->curZoneEqNum).CoolDDNum > 0 &&
115 0 : this->finalZoneSizing(this->curZoneEqNum).CoolDDNum <= state.dataEnvrn->TotDesDays) {
116 0 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Title;
117 0 : dateTimeFanPeak =
118 0 : format("{}/{} {}",
119 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Month,
120 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).DayOfMonth,
121 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
122 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtCoolMax));
123 : }
124 0 : } else if (this->zoneHeatingOnlyFan) {
125 0 : this->autoSizedValue = this->finalZoneSizing(this->curZoneEqNum).DesHeatVolFlow;
126 0 : if (this->finalZoneSizing(this->curZoneEqNum).HeatDDNum > 0 &&
127 0 : this->finalZoneSizing(this->curZoneEqNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
128 0 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
129 0 : dateTimeFanPeak =
130 0 : format("{}/{} {}",
131 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
132 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).DayOfMonth,
133 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
134 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtHeatMax));
135 : }
136 0 : } else if (this->zoneEqSizing(this->curZoneEqNum).CoolingAirFlow && !this->zoneEqSizing(this->curZoneEqNum).HeatingAirFlow) {
137 0 : this->autoSizedValue = this->zoneEqSizing(this->curZoneEqNum).CoolingAirVolFlow;
138 0 : if (this->finalZoneSizing(this->curZoneEqNum).CoolDDNum > 0 &&
139 0 : this->finalZoneSizing(this->curZoneEqNum).CoolDDNum <= state.dataEnvrn->TotDesDays) {
140 0 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Title;
141 0 : dateTimeFanPeak =
142 0 : format("{}/{} {}",
143 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Month,
144 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).DayOfMonth,
145 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
146 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtCoolMax));
147 : }
148 0 : } else if (this->zoneEqSizing(this->curZoneEqNum).HeatingAirFlow && !this->zoneEqSizing(this->curZoneEqNum).CoolingAirFlow) {
149 0 : this->autoSizedValue = this->zoneEqSizing(this->curZoneEqNum).HeatingAirVolFlow;
150 0 : if (this->finalZoneSizing(this->curZoneEqNum).HeatDDNum > 0 &&
151 0 : this->finalZoneSizing(this->curZoneEqNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
152 0 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
153 0 : dateTimeFanPeak =
154 0 : format("{}/{} {}",
155 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
156 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).DayOfMonth,
157 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
158 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtHeatMax));
159 : }
160 0 : } else if (this->zoneEqSizing(this->curZoneEqNum).HeatingAirFlow && this->zoneEqSizing(this->curZoneEqNum).CoolingAirFlow) {
161 0 : this->autoSizedValue = max(this->zoneEqSizing(this->curZoneEqNum).CoolingAirVolFlow,
162 0 : this->zoneEqSizing(this->curZoneEqNum).HeatingAirVolFlow);
163 0 : if (this->autoSizedValue == this->zoneEqSizing(this->curZoneEqNum).CoolingAirVolFlow) {
164 0 : if (this->finalZoneSizing(this->curZoneEqNum).CoolDDNum > 0 &&
165 0 : this->finalZoneSizing(this->curZoneEqNum).CoolDDNum <= state.dataEnvrn->TotDesDays) {
166 0 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Title;
167 0 : dateTimeFanPeak =
168 0 : format("{}/{} {}",
169 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Month,
170 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).DayOfMonth,
171 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
172 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtCoolMax));
173 : }
174 0 : } else if (this->autoSizedValue == this->zoneEqSizing(this->curZoneEqNum).HeatingAirVolFlow) {
175 0 : if (this->finalZoneSizing(this->curZoneEqNum).HeatDDNum > 0 &&
176 0 : this->finalZoneSizing(this->curZoneEqNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
177 0 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
178 0 : dateTimeFanPeak =
179 0 : format("{}/{} {}",
180 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
181 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).DayOfMonth,
182 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
183 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtHeatMax));
184 : }
185 : }
186 : } else {
187 0 : this->autoSizedValue = max(this->finalZoneSizing(this->curZoneEqNum).DesCoolVolFlow,
188 0 : this->finalZoneSizing(this->curZoneEqNum).DesHeatVolFlow);
189 0 : if (this->autoSizedValue == this->finalZoneSizing(this->curZoneEqNum).DesCoolVolFlow) {
190 0 : if (this->finalZoneSizing(this->curZoneEqNum).CoolDDNum > 0 &&
191 0 : this->finalZoneSizing(this->curZoneEqNum).CoolDDNum <= state.dataEnvrn->TotDesDays) {
192 0 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Title;
193 0 : dateTimeFanPeak =
194 0 : format("{}/{} {}",
195 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Month,
196 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).DayOfMonth,
197 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
198 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtCoolMax));
199 : }
200 0 : } else if (this->autoSizedValue == this->finalZoneSizing(this->curZoneEqNum).DesHeatVolFlow) {
201 0 : if (this->finalZoneSizing(this->curZoneEqNum).HeatDDNum > 0 &&
202 0 : this->finalZoneSizing(this->curZoneEqNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
203 0 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
204 0 : dateTimeFanPeak =
205 0 : format("{}/{} {}",
206 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
207 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).DayOfMonth,
208 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
209 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtHeatMax));
210 : }
211 : }
212 : }
213 : }
214 1265 : } else if (this->zoneAirFlowSizMethod == DataSizing::FractionOfAutosizedCoolingAirflow) {
215 0 : if (this->zoneCoolingOnlyFan) {
216 0 : this->autoSizedValue = this->dataFracOfAutosizedCoolingAirflow * this->finalZoneSizing(this->curZoneEqNum).DesCoolVolFlow;
217 0 : if (this->finalZoneSizing(this->curZoneEqNum).CoolDDNum > 0 &&
218 0 : this->finalZoneSizing(this->curZoneEqNum).CoolDDNum <= state.dataEnvrn->TotDesDays) {
219 0 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Title;
220 0 : dateTimeFanPeak =
221 0 : format("{}/{} {}",
222 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Month,
223 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).DayOfMonth,
224 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
225 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtCoolMax));
226 : }
227 0 : } else if (this->zoneHeatingOnlyFan) {
228 0 : this->autoSizedValue = this->dataFracOfAutosizedHeatingAirflow * this->finalZoneSizing(this->curZoneEqNum).DesHeatVolFlow;
229 0 : if (this->finalZoneSizing(this->curZoneEqNum).HeatDDNum > 0 &&
230 0 : this->finalZoneSizing(this->curZoneEqNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
231 0 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
232 0 : dateTimeFanPeak =
233 0 : format("{}/{} {}",
234 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
235 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).DayOfMonth,
236 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
237 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtHeatMax));
238 : }
239 0 : } else if (this->zoneEqSizing(this->curZoneEqNum).CoolingAirFlow && !this->zoneEqSizing(this->curZoneEqNum).HeatingAirFlow) {
240 0 : this->autoSizedValue = this->dataFracOfAutosizedCoolingAirflow * this->zoneEqSizing(this->curZoneEqNum).CoolingAirVolFlow;
241 0 : if (this->finalZoneSizing(this->curZoneEqNum).CoolDDNum > 0 &&
242 0 : this->finalZoneSizing(this->curZoneEqNum).CoolDDNum <= state.dataEnvrn->TotDesDays) {
243 0 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Title;
244 0 : dateTimeFanPeak =
245 0 : format("{}/{} {}",
246 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Month,
247 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).DayOfMonth,
248 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
249 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtCoolMax));
250 : }
251 0 : } else if (this->zoneEqSizing(this->curZoneEqNum).HeatingAirFlow && !this->zoneEqSizing(this->curZoneEqNum).CoolingAirFlow) {
252 0 : this->autoSizedValue = this->dataFracOfAutosizedHeatingAirflow * this->zoneEqSizing(this->curZoneEqNum).HeatingAirVolFlow;
253 0 : if (this->finalZoneSizing(this->curZoneEqNum).HeatDDNum > 0 &&
254 0 : this->finalZoneSizing(this->curZoneEqNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
255 0 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
256 0 : dateTimeFanPeak =
257 0 : format("{}/{} {}",
258 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
259 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).DayOfMonth,
260 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
261 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtHeatMax));
262 : }
263 0 : } else if (this->zoneEqSizing(this->curZoneEqNum).HeatingAirFlow && this->zoneEqSizing(this->curZoneEqNum).CoolingAirFlow) {
264 0 : this->autoSizedValue =
265 0 : max(this->dataFracOfAutosizedCoolingAirflow * this->zoneEqSizing(this->curZoneEqNum).CoolingAirVolFlow,
266 0 : this->dataFracOfAutosizedHeatingAirflow * this->zoneEqSizing(this->curZoneEqNum).HeatingAirVolFlow);
267 0 : if (this->autoSizedValue ==
268 0 : this->dataFracOfAutosizedCoolingAirflow * this->zoneEqSizing(this->curZoneEqNum).CoolingAirVolFlow) {
269 0 : if (this->finalZoneSizing(this->curZoneEqNum).CoolDDNum > 0 &&
270 0 : this->finalZoneSizing(this->curZoneEqNum).CoolDDNum <= state.dataEnvrn->TotDesDays) {
271 0 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Title;
272 0 : dateTimeFanPeak =
273 0 : format("{}/{} {}",
274 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Month,
275 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).DayOfMonth,
276 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
277 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtCoolMax));
278 : }
279 0 : } else if (this->autoSizedValue ==
280 0 : this->dataFracOfAutosizedHeatingAirflow * this->zoneEqSizing(this->curZoneEqNum).HeatingAirVolFlow) {
281 0 : if (this->finalZoneSizing(this->curZoneEqNum).HeatDDNum > 0 &&
282 0 : this->finalZoneSizing(this->curZoneEqNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
283 0 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
284 0 : dateTimeFanPeak =
285 0 : format("{}/{} {}",
286 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
287 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).DayOfMonth,
288 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
289 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtHeatMax));
290 : }
291 : }
292 : } else {
293 0 : this->autoSizedValue =
294 0 : max(this->dataFracOfAutosizedCoolingAirflow * this->finalZoneSizing(this->curZoneEqNum).DesCoolVolFlow,
295 0 : this->dataFracOfAutosizedHeatingAirflow * this->finalZoneSizing(this->curZoneEqNum).DesHeatVolFlow);
296 0 : if (this->autoSizedValue ==
297 0 : this->dataFracOfAutosizedCoolingAirflow * this->finalZoneSizing(this->curZoneEqNum).DesCoolVolFlow) {
298 0 : if (this->finalZoneSizing(this->curZoneEqNum).CoolDDNum > 0 &&
299 0 : this->finalZoneSizing(this->curZoneEqNum).CoolDDNum <= state.dataEnvrn->TotDesDays) {
300 0 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Title;
301 0 : dateTimeFanPeak =
302 0 : format("{}/{} {}",
303 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Month,
304 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).DayOfMonth,
305 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
306 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtCoolMax));
307 : }
308 0 : } else if (this->autoSizedValue ==
309 0 : this->dataFracOfAutosizedHeatingAirflow * this->finalZoneSizing(this->curZoneEqNum).DesHeatVolFlow) {
310 0 : if (this->finalZoneSizing(this->curZoneEqNum).HeatDDNum > 0 &&
311 0 : this->finalZoneSizing(this->curZoneEqNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
312 0 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
313 0 : dateTimeFanPeak =
314 0 : format("{}/{} {}",
315 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
316 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).DayOfMonth,
317 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
318 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtHeatMax));
319 : }
320 : }
321 : }
322 1265 : } else if (this->zoneAirFlowSizMethod == DataSizing::FractionOfAutosizedHeatingAirflow) {
323 0 : if (this->zoneCoolingOnlyFan) {
324 0 : this->autoSizedValue = this->dataFracOfAutosizedCoolingAirflow * this->finalZoneSizing(this->curZoneEqNum).DesCoolVolFlow;
325 0 : if (this->finalZoneSizing(this->curZoneEqNum).CoolDDNum > 0 &&
326 0 : this->finalZoneSizing(this->curZoneEqNum).CoolDDNum <= state.dataEnvrn->TotDesDays) {
327 0 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Title;
328 0 : dateTimeFanPeak =
329 0 : format("{}/{} {}",
330 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Month,
331 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).DayOfMonth,
332 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
333 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtCoolMax));
334 : }
335 0 : } else if (this->zoneHeatingOnlyFan) {
336 0 : this->autoSizedValue = this->dataFracOfAutosizedHeatingAirflow * this->finalZoneSizing(this->curZoneEqNum).DesHeatVolFlow;
337 0 : if (this->finalZoneSizing(this->curZoneEqNum).HeatDDNum > 0 &&
338 0 : this->finalZoneSizing(this->curZoneEqNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
339 0 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
340 0 : dateTimeFanPeak =
341 0 : format("{}/{} {}",
342 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
343 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).DayOfMonth,
344 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
345 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtHeatMax));
346 : }
347 0 : } else if (this->zoneEqSizing(this->curZoneEqNum).CoolingAirFlow && !this->zoneEqSizing(this->curZoneEqNum).HeatingAirFlow) {
348 0 : this->autoSizedValue = this->dataFracOfAutosizedCoolingAirflow * this->zoneEqSizing(this->curZoneEqNum).CoolingAirVolFlow;
349 0 : if (this->finalZoneSizing(this->curZoneEqNum).CoolDDNum > 0 &&
350 0 : this->finalZoneSizing(this->curZoneEqNum).CoolDDNum <= state.dataEnvrn->TotDesDays) {
351 0 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Title;
352 0 : dateTimeFanPeak =
353 0 : format("{}/{} {}",
354 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Month,
355 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).DayOfMonth,
356 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
357 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtCoolMax));
358 : }
359 0 : } else if (this->zoneEqSizing(this->curZoneEqNum).HeatingAirFlow && !this->zoneEqSizing(this->curZoneEqNum).CoolingAirFlow) {
360 0 : this->autoSizedValue = this->dataFracOfAutosizedHeatingAirflow * this->zoneEqSizing(this->curZoneEqNum).HeatingAirVolFlow;
361 0 : if (this->finalZoneSizing(this->curZoneEqNum).HeatDDNum > 0 &&
362 0 : this->finalZoneSizing(this->curZoneEqNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
363 0 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
364 0 : dateTimeFanPeak =
365 0 : format("{}/{} {}",
366 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
367 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).DayOfMonth,
368 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
369 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtHeatMax));
370 : }
371 0 : } else if (this->zoneEqSizing(this->curZoneEqNum).HeatingAirFlow && this->zoneEqSizing(this->curZoneEqNum).CoolingAirFlow) {
372 0 : this->autoSizedValue =
373 0 : max(this->dataFracOfAutosizedCoolingAirflow * this->zoneEqSizing(this->curZoneEqNum).CoolingAirVolFlow,
374 0 : this->dataFracOfAutosizedHeatingAirflow * this->zoneEqSizing(this->curZoneEqNum).HeatingAirVolFlow);
375 0 : if (this->autoSizedValue ==
376 0 : this->dataFracOfAutosizedCoolingAirflow * this->zoneEqSizing(this->curZoneEqNum).CoolingAirVolFlow) {
377 0 : if (this->finalZoneSizing(this->curZoneEqNum).CoolDDNum > 0 &&
378 0 : this->finalZoneSizing(this->curZoneEqNum).CoolDDNum <= state.dataEnvrn->TotDesDays) {
379 0 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Title;
380 0 : dateTimeFanPeak =
381 0 : format("{}/{} {}",
382 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Month,
383 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).DayOfMonth,
384 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
385 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtCoolMax));
386 : }
387 0 : } else if (this->autoSizedValue ==
388 0 : this->dataFracOfAutosizedHeatingAirflow * this->zoneEqSizing(this->curZoneEqNum).HeatingAirVolFlow) {
389 0 : if (this->finalZoneSizing(this->curZoneEqNum).HeatDDNum > 0 &&
390 0 : this->finalZoneSizing(this->curZoneEqNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
391 0 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
392 0 : dateTimeFanPeak =
393 0 : format("{}/{} {}",
394 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
395 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).DayOfMonth,
396 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
397 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtHeatMax));
398 : }
399 : }
400 : } else {
401 0 : this->autoSizedValue =
402 0 : max(this->dataFracOfAutosizedCoolingAirflow * this->finalZoneSizing(this->curZoneEqNum).DesCoolVolFlow,
403 0 : this->dataFracOfAutosizedHeatingAirflow * this->finalZoneSizing(this->curZoneEqNum).DesHeatVolFlow);
404 0 : if (this->autoSizedValue ==
405 0 : this->dataFracOfAutosizedCoolingAirflow * this->finalZoneSizing(this->curZoneEqNum).DesCoolVolFlow) {
406 0 : if (this->finalZoneSizing(this->curZoneEqNum).CoolDDNum > 0 &&
407 0 : this->finalZoneSizing(this->curZoneEqNum).CoolDDNum <= state.dataEnvrn->TotDesDays) {
408 0 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Title;
409 0 : dateTimeFanPeak =
410 0 : format("{}/{} {}",
411 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Month,
412 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).DayOfMonth,
413 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
414 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtCoolMax));
415 : }
416 0 : } else if (this->autoSizedValue ==
417 0 : this->dataFracOfAutosizedHeatingAirflow * this->finalZoneSizing(this->curZoneEqNum).DesHeatVolFlow) {
418 0 : if (this->finalZoneSizing(this->curZoneEqNum).HeatDDNum > 0 &&
419 0 : this->finalZoneSizing(this->curZoneEqNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
420 0 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
421 0 : dateTimeFanPeak =
422 0 : format("{}/{} {}",
423 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
424 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).DayOfMonth,
425 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
426 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtHeatMax));
427 : }
428 : }
429 : }
430 1265 : } else if (this->zoneAirFlowSizMethod == DataSizing::FlowPerCoolingCapacity) {
431 0 : if (this->zoneCoolingOnlyFan) {
432 0 : this->autoSizedValue = this->dataFlowPerCoolingCapacity * this->dataAutosizedCoolingCapacity;
433 0 : if (this->finalZoneSizing(this->curZoneEqNum).CoolDDNum > 0 &&
434 0 : this->finalZoneSizing(this->curZoneEqNum).CoolDDNum <= state.dataEnvrn->TotDesDays) {
435 0 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Title;
436 0 : dateTimeFanPeak =
437 0 : format("{}/{} {}",
438 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Month,
439 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).DayOfMonth,
440 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
441 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtCoolMax));
442 : }
443 0 : } else if (this->zoneHeatingOnlyFan) {
444 0 : this->autoSizedValue = this->dataFlowPerHeatingCapacity * this->dataAutosizedHeatingCapacity;
445 0 : if (this->finalZoneSizing(this->curZoneEqNum).HeatDDNum > 0 &&
446 0 : this->finalZoneSizing(this->curZoneEqNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
447 0 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
448 0 : dateTimeFanPeak =
449 0 : format("{}/{} {}",
450 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
451 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).DayOfMonth,
452 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
453 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtHeatMax));
454 : }
455 0 : } else if (this->zoneEqSizing(this->curZoneEqNum).CoolingAirFlow && !this->zoneEqSizing(this->curZoneEqNum).HeatingAirFlow) {
456 0 : this->autoSizedValue = this->dataFlowPerCoolingCapacity * this->dataAutosizedCoolingCapacity;
457 0 : if (this->finalZoneSizing(this->curZoneEqNum).CoolDDNum > 0 &&
458 0 : this->finalZoneSizing(this->curZoneEqNum).CoolDDNum <= state.dataEnvrn->TotDesDays) {
459 0 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Title;
460 0 : dateTimeFanPeak =
461 0 : format("{}/{} {}",
462 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Month,
463 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).DayOfMonth,
464 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
465 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtCoolMax));
466 : }
467 0 : } else if (this->zoneEqSizing(this->curZoneEqNum).HeatingAirFlow && !this->zoneEqSizing(this->curZoneEqNum).CoolingAirFlow) {
468 0 : this->autoSizedValue = this->dataFlowPerHeatingCapacity * this->dataAutosizedHeatingCapacity;
469 0 : if (this->finalZoneSizing(this->curZoneEqNum).HeatDDNum > 0 &&
470 0 : this->finalZoneSizing(this->curZoneEqNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
471 0 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
472 0 : dateTimeFanPeak =
473 0 : format("{}/{} {}",
474 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
475 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).DayOfMonth,
476 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
477 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtHeatMax));
478 : }
479 0 : } else if (this->zoneEqSizing(this->curZoneEqNum).HeatingAirFlow && this->zoneEqSizing(this->curZoneEqNum).CoolingAirFlow) {
480 0 : this->autoSizedValue = max(this->dataFlowPerCoolingCapacity * this->dataAutosizedCoolingCapacity,
481 0 : this->dataFlowPerHeatingCapacity * this->dataAutosizedHeatingCapacity);
482 0 : if (this->autoSizedValue == this->dataFlowPerCoolingCapacity * this->dataAutosizedCoolingCapacity) {
483 0 : if (this->finalZoneSizing(this->curZoneEqNum).CoolDDNum > 0 &&
484 0 : this->finalZoneSizing(this->curZoneEqNum).CoolDDNum <= state.dataEnvrn->TotDesDays) {
485 0 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Title;
486 0 : dateTimeFanPeak =
487 0 : format("{}/{} {}",
488 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Month,
489 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).DayOfMonth,
490 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
491 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtCoolMax));
492 : }
493 0 : } else if (this->autoSizedValue == this->dataFlowPerHeatingCapacity * this->dataAutosizedHeatingCapacity) {
494 0 : if (this->finalZoneSizing(this->curZoneEqNum).HeatDDNum > 0 &&
495 0 : this->finalZoneSizing(this->curZoneEqNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
496 0 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
497 0 : dateTimeFanPeak =
498 0 : format("{}/{} {}",
499 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
500 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).DayOfMonth,
501 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
502 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtHeatMax));
503 : }
504 : }
505 : } else {
506 0 : this->autoSizedValue = max(this->dataFlowPerCoolingCapacity * this->dataAutosizedCoolingCapacity,
507 0 : this->dataFlowPerHeatingCapacity * this->dataAutosizedHeatingCapacity);
508 0 : if (this->autoSizedValue == this->dataFlowPerCoolingCapacity * this->dataAutosizedCoolingCapacity) {
509 0 : if (this->finalZoneSizing(this->curZoneEqNum).CoolDDNum > 0 &&
510 0 : this->finalZoneSizing(this->curZoneEqNum).CoolDDNum <= state.dataEnvrn->TotDesDays) {
511 0 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Title;
512 0 : dateTimeFanPeak =
513 0 : format("{}/{} {}",
514 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Month,
515 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).DayOfMonth,
516 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
517 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtCoolMax));
518 : }
519 0 : } else if (this->autoSizedValue == this->dataFlowPerHeatingCapacity * this->dataAutosizedHeatingCapacity) {
520 0 : if (this->finalZoneSizing(this->curZoneEqNum).HeatDDNum > 0 &&
521 0 : this->finalZoneSizing(this->curZoneEqNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
522 0 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
523 0 : dateTimeFanPeak =
524 0 : format("{}/{} {}",
525 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
526 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).DayOfMonth,
527 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
528 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtHeatMax));
529 : }
530 : }
531 : }
532 1265 : } else if (this->zoneAirFlowSizMethod == DataSizing::FlowPerHeatingCapacity) {
533 0 : if (this->zoneCoolingOnlyFan) {
534 0 : this->autoSizedValue = this->dataFlowPerCoolingCapacity * this->dataAutosizedCoolingCapacity;
535 0 : if (this->finalZoneSizing(this->curZoneEqNum).CoolDDNum > 0 &&
536 0 : this->finalZoneSizing(this->curZoneEqNum).CoolDDNum <= state.dataEnvrn->TotDesDays) {
537 0 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Title;
538 0 : dateTimeFanPeak =
539 0 : format("{}/{} {}",
540 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Month,
541 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).DayOfMonth,
542 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
543 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtCoolMax));
544 : }
545 0 : } else if (this->zoneHeatingOnlyFan) {
546 0 : this->autoSizedValue = this->dataFlowPerHeatingCapacity * this->dataAutosizedHeatingCapacity;
547 0 : if (this->finalZoneSizing(this->curZoneEqNum).HeatDDNum > 0 &&
548 0 : this->finalZoneSizing(this->curZoneEqNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
549 0 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
550 0 : dateTimeFanPeak =
551 0 : format("{}/{} {}",
552 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
553 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).DayOfMonth,
554 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
555 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtHeatMax));
556 : }
557 0 : } else if (this->zoneEqSizing(this->curZoneEqNum).CoolingAirFlow && !this->zoneEqSizing(this->curZoneEqNum).HeatingAirFlow) {
558 0 : this->autoSizedValue = this->dataFlowPerCoolingCapacity * this->dataAutosizedCoolingCapacity;
559 0 : if (this->finalZoneSizing(this->curZoneEqNum).CoolDDNum > 0 &&
560 0 : this->finalZoneSizing(this->curZoneEqNum).CoolDDNum <= state.dataEnvrn->TotDesDays) {
561 0 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Title;
562 0 : dateTimeFanPeak =
563 0 : format("{}/{} {}",
564 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Month,
565 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).DayOfMonth,
566 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
567 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtCoolMax));
568 : }
569 0 : } else if (this->zoneEqSizing(this->curZoneEqNum).HeatingAirFlow && !this->zoneEqSizing(this->curZoneEqNum).CoolingAirFlow) {
570 0 : this->autoSizedValue = this->dataFlowPerHeatingCapacity * this->dataAutosizedHeatingCapacity;
571 0 : if (this->finalZoneSizing(this->curZoneEqNum).HeatDDNum > 0 &&
572 0 : this->finalZoneSizing(this->curZoneEqNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
573 0 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
574 0 : dateTimeFanPeak =
575 0 : format("{}/{} {}",
576 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
577 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).DayOfMonth,
578 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
579 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtHeatMax));
580 : }
581 0 : } else if (this->zoneEqSizing(this->curZoneEqNum).HeatingAirFlow && this->zoneEqSizing(this->curZoneEqNum).CoolingAirFlow) {
582 0 : this->autoSizedValue = max(this->dataFlowPerCoolingCapacity * this->dataAutosizedCoolingCapacity,
583 0 : this->dataFlowPerHeatingCapacity * this->dataAutosizedHeatingCapacity);
584 0 : if (this->autoSizedValue == this->dataFlowPerCoolingCapacity * this->dataAutosizedCoolingCapacity) {
585 0 : if (this->finalZoneSizing(this->curZoneEqNum).CoolDDNum > 0 &&
586 0 : this->finalZoneSizing(this->curZoneEqNum).CoolDDNum <= state.dataEnvrn->TotDesDays) {
587 0 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Title;
588 0 : dateTimeFanPeak =
589 0 : format("{}/{} {}",
590 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Month,
591 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).DayOfMonth,
592 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
593 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtCoolMax));
594 : }
595 0 : } else if (this->autoSizedValue == this->dataFlowPerHeatingCapacity * this->dataAutosizedHeatingCapacity) {
596 0 : if (this->finalZoneSizing(this->curZoneEqNum).HeatDDNum > 0 &&
597 0 : this->finalZoneSizing(this->curZoneEqNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
598 0 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
599 0 : dateTimeFanPeak =
600 0 : format("{}/{} {}",
601 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
602 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).DayOfMonth,
603 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
604 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtHeatMax));
605 : }
606 : }
607 : } else {
608 0 : this->autoSizedValue = max(this->dataFlowPerCoolingCapacity * this->dataAutosizedCoolingCapacity,
609 0 : this->dataFlowPerHeatingCapacity * this->dataAutosizedHeatingCapacity);
610 0 : if (this->autoSizedValue == this->dataFlowPerCoolingCapacity * this->dataAutosizedCoolingCapacity) {
611 0 : if (this->finalZoneSizing(this->curZoneEqNum).CoolDDNum > 0 &&
612 0 : this->finalZoneSizing(this->curZoneEqNum).CoolDDNum <= state.dataEnvrn->TotDesDays) {
613 0 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Title;
614 0 : dateTimeFanPeak =
615 0 : format("{}/{} {}",
616 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Month,
617 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).DayOfMonth,
618 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
619 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtCoolMax));
620 : }
621 0 : } else if (this->autoSizedValue == this->dataFlowPerHeatingCapacity * this->dataAutosizedHeatingCapacity) {
622 0 : if (this->finalZoneSizing(this->curZoneEqNum).HeatDDNum > 0 &&
623 0 : this->finalZoneSizing(this->curZoneEqNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
624 0 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
625 0 : dateTimeFanPeak =
626 0 : format("{}/{} {}",
627 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
628 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).DayOfMonth,
629 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
630 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtHeatMax));
631 : }
632 : }
633 : }
634 : } else {
635 1265 : if (this->zoneEqSizing(this->curZoneEqNum).CoolingAirFlow && !this->zoneEqSizing(this->curZoneEqNum).HeatingAirFlow) {
636 6 : this->autoSizedValue = this->zoneEqSizing(this->curZoneEqNum).CoolingAirVolFlow;
637 12 : if (this->finalZoneSizing(this->curZoneEqNum).CoolDDNum > 0 &&
638 6 : this->finalZoneSizing(this->curZoneEqNum).CoolDDNum <= state.dataEnvrn->TotDesDays) {
639 6 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Title;
640 6 : dateTimeFanPeak =
641 30 : format("{}/{} {}",
642 6 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Month,
643 6 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).DayOfMonth,
644 6 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
645 12 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtCoolMax));
646 : }
647 1259 : } else if (this->zoneEqSizing(this->curZoneEqNum).HeatingAirFlow && !this->zoneEqSizing(this->curZoneEqNum).CoolingAirFlow) {
648 0 : this->autoSizedValue = this->zoneEqSizing(this->curZoneEqNum).HeatingAirVolFlow;
649 0 : if (this->finalZoneSizing(this->curZoneEqNum).HeatDDNum > 0 &&
650 0 : this->finalZoneSizing(this->curZoneEqNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
651 0 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
652 0 : dateTimeFanPeak =
653 0 : format("{}/{} {}",
654 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
655 0 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).DayOfMonth,
656 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
657 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtHeatMax));
658 : }
659 1259 : } else if (this->zoneEqSizing(this->curZoneEqNum).HeatingAirFlow && this->zoneEqSizing(this->curZoneEqNum).CoolingAirFlow) {
660 561 : this->autoSizedValue =
661 561 : max(this->zoneEqSizing(this->curZoneEqNum).CoolingAirVolFlow, this->zoneEqSizing(this->curZoneEqNum).HeatingAirVolFlow);
662 561 : if (this->autoSizedValue == this->zoneEqSizing(this->curZoneEqNum).CoolingAirVolFlow) {
663 1120 : if (this->finalZoneSizing(this->curZoneEqNum).CoolDDNum > 0 &&
664 560 : this->finalZoneSizing(this->curZoneEqNum).CoolDDNum <= state.dataEnvrn->TotDesDays) {
665 560 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Title;
666 560 : dateTimeFanPeak =
667 2800 : format("{}/{} {}",
668 560 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Month,
669 560 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).DayOfMonth,
670 560 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
671 1120 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtCoolMax));
672 : }
673 1 : } else if (this->autoSizedValue == this->zoneEqSizing(this->curZoneEqNum).HeatingAirVolFlow) {
674 2 : if (this->finalZoneSizing(this->curZoneEqNum).HeatDDNum > 0 &&
675 1 : this->finalZoneSizing(this->curZoneEqNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
676 1 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
677 1 : dateTimeFanPeak =
678 5 : format("{}/{} {}",
679 1 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
680 1 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).DayOfMonth,
681 1 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
682 2 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtHeatMax));
683 : }
684 : }
685 : } else {
686 698 : if (this->zoneEqSizing(this->curZoneEqNum).SystemAirFlow) {
687 2 : this->autoSizedValue = max(this->zoneEqSizing(this->curZoneEqNum).AirVolFlow,
688 1 : this->zoneEqSizing(this->curZoneEqNum).CoolingAirVolFlow,
689 1 : this->zoneEqSizing(this->curZoneEqNum).HeatingAirVolFlow);
690 697 : } else if (this->zoneCoolingOnlyFan) {
691 42 : this->autoSizedValue = this->finalZoneSizing(this->curZoneEqNum).DesCoolVolFlow;
692 84 : if (this->finalZoneSizing(this->curZoneEqNum).CoolDDNum > 0 &&
693 42 : this->finalZoneSizing(this->curZoneEqNum).CoolDDNum <= state.dataEnvrn->TotDesDays) {
694 24 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Title;
695 24 : dateTimeFanPeak =
696 120 : format("{}/{} {}",
697 24 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Month,
698 24 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).DayOfMonth,
699 24 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
700 48 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtCoolMax));
701 : }
702 655 : } else if (this->zoneHeatingOnlyFan) {
703 71 : this->autoSizedValue = this->finalZoneSizing(this->curZoneEqNum).DesHeatVolFlow;
704 142 : if (this->finalZoneSizing(this->curZoneEqNum).HeatDDNum > 0 &&
705 71 : this->finalZoneSizing(this->curZoneEqNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
706 71 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
707 71 : dateTimeFanPeak =
708 355 : format("{}/{} {}",
709 71 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
710 71 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).DayOfMonth,
711 71 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
712 142 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtHeatMax));
713 : }
714 : } else {
715 584 : this->autoSizedValue = max(this->finalZoneSizing(this->curZoneEqNum).DesCoolVolFlow,
716 584 : this->finalZoneSizing(this->curZoneEqNum).DesHeatVolFlow);
717 584 : if (this->autoSizedValue == this->finalZoneSizing(this->curZoneEqNum).DesCoolVolFlow) {
718 1136 : if (this->finalZoneSizing(this->curZoneEqNum).CoolDDNum > 0 &&
719 568 : this->finalZoneSizing(this->curZoneEqNum).CoolDDNum <= state.dataEnvrn->TotDesDays) {
720 568 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Title;
721 568 : dateTimeFanPeak =
722 2840 : format("{}/{} {}",
723 568 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Month,
724 568 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).DayOfMonth,
725 568 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
726 1136 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtCoolMax));
727 : }
728 16 : } else if (this->autoSizedValue == this->finalZoneSizing(this->curZoneEqNum).DesHeatVolFlow) {
729 32 : if (this->finalZoneSizing(this->curZoneEqNum).HeatDDNum > 0 &&
730 16 : this->finalZoneSizing(this->curZoneEqNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
731 16 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
732 16 : dateTimeFanPeak =
733 80 : format("{}/{} {}",
734 16 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
735 16 : state.dataWeatherManager->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).DayOfMonth,
736 16 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
737 32 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtHeatMax));
738 : }
739 : }
740 : }
741 : }
742 1265 : if (this->dataFractionUsedForSizing > 0.0) this->autoSizedValue = this->autoSizedValue * this->dataFractionUsedForSizing;
743 : }
744 : }
745 1750 : } else if (this->curSysNum > 0) {
746 1731 : if (!this->wasAutoSized && !this->sizingDesRunThisAirSys) {
747 351 : this->autoSizedValue = _originalValue;
748 : } else {
749 1380 : if (this->dataHRFlowSizingFlag) { // HX sizing
750 25 : if (this->curOASysNum) {
751 : // size to supply air duct flow rate
752 18 : if (this->outsideAirSys(this->curOASysNum).AirLoopDOASNum > -1) {
753 0 : auto &thisAirloopDOAS = this->airloopDOAS[this->outsideAirSys(this->curOASysNum).AirLoopDOASNum];
754 0 : this->autoSizedValue = thisAirloopDOAS.SizingMassFlow / state.dataEnvrn->StdRhoAir;
755 18 : } else if (this->finalSysSizing(this->curSysNum).DesOutAirVolFlow > 0.0) {
756 18 : this->autoSizedValue = this->finalSysSizing(this->curSysNum).DesOutAirVolFlow;
757 : } else {
758 0 : switch (this->curDuctType) {
759 0 : case DataHVACGlobals::AirDuctType::Main: {
760 0 : this->autoSizedValue = this->finalSysSizing(this->curSysNum).DesMainVolFlow;
761 0 : } break;
762 0 : case DataHVACGlobals::AirDuctType::Cooling: {
763 0 : this->autoSizedValue = this->finalSysSizing(this->curSysNum).DesCoolVolFlow;
764 0 : } break;
765 0 : case DataHVACGlobals::AirDuctType::Heating: {
766 0 : this->autoSizedValue = this->finalSysSizing(this->curSysNum).DesHeatVolFlow;
767 0 : } break;
768 0 : case DataHVACGlobals::AirDuctType::Other: {
769 0 : this->autoSizedValue = this->finalSysSizing(this->curSysNum).DesMainVolFlow;
770 0 : } break;
771 0 : default: {
772 0 : this->autoSizedValue = this->finalSysSizing(this->curSysNum).DesMainVolFlow;
773 0 : } break;
774 : }
775 : }
776 : } else {
777 7 : switch (this->curDuctType) {
778 7 : case DataHVACGlobals::AirDuctType::Main: {
779 7 : this->autoSizedValue = this->finalSysSizing(this->curSysNum).DesMainVolFlow;
780 7 : } break;
781 0 : case DataHVACGlobals::AirDuctType::Cooling: {
782 0 : this->autoSizedValue = this->finalSysSizing(this->curSysNum).DesCoolVolFlow;
783 0 : } break;
784 0 : case DataHVACGlobals::AirDuctType::Heating: {
785 0 : this->autoSizedValue = this->finalSysSizing(this->curSysNum).DesHeatVolFlow;
786 0 : } break;
787 :
788 0 : case DataHVACGlobals::AirDuctType::Other: {
789 0 : this->autoSizedValue = this->finalSysSizing(this->curSysNum).DesMainVolFlow;
790 0 : } break;
791 0 : default: {
792 0 : this->autoSizedValue = this->finalSysSizing(this->curSysNum).DesMainVolFlow;
793 0 : } break;
794 : }
795 : }
796 :
797 : } else {
798 1355 : auto &sysSizPeakDDNum = state.dataSize->SysSizPeakDDNum(this->curSysNum);
799 :
800 1355 : if (this->airLoopSysFlag) {
801 243 : auto &unitarysysEqSizing = this->unitarySysEqSizing(this->curSysNum);
802 243 : if (unitarysysEqSizing.CoolingAirFlow && unitarysysEqSizing.HeatingAirFlow) {
803 236 : this->autoSizedValue = std::max(unitarysysEqSizing.CoolingAirVolFlow, unitarysysEqSizing.HeatingAirVolFlow);
804 236 : if (this->autoSizedValue == unitarysysEqSizing.CoolingAirVolFlow) {
805 236 : if (sysSizPeakDDNum.CoolFlowPeakDD > 0 && sysSizPeakDDNum.CoolFlowPeakDD <= state.dataEnvrn->TotDesDays) {
806 236 : auto &desDayInput = state.dataWeatherManager->DesDayInput(sysSizPeakDDNum.CoolFlowPeakDD);
807 236 : DDNameFanPeak = desDayInput.Title;
808 472 : dateTimeFanPeak = format("{}/{} {}",
809 : desDayInput.Month,
810 : desDayInput.DayOfMonth,
811 236 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
812 472 : state, sysSizPeakDDNum.TimeStepAtCoolFlowPk(sysSizPeakDDNum.CoolFlowPeakDD)));
813 : }
814 :
815 0 : } else if (this->autoSizedValue == unitarysysEqSizing.HeatingAirVolFlow) {
816 0 : if (this->finalSysSizing(this->curSysNum).HeatDDNum > 0 &&
817 0 : this->finalSysSizing(this->curSysNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
818 0 : auto &desDayInput = state.dataWeatherManager->DesDayInput(this->finalSysSizing(this->curSysNum).HeatDDNum);
819 0 : DDNameFanPeak = desDayInput.Title;
820 0 : dateTimeFanPeak = format("{}/{} {}",
821 : desDayInput.Month,
822 : desDayInput.DayOfMonth,
823 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
824 0 : state, this->finalSysSizing(this->curSysNum).SysHeatAirTimeStepPk));
825 : }
826 236 : }
827 7 : } else if (unitarysysEqSizing.CoolingAirFlow) {
828 6 : this->autoSizedValue = unitarysysEqSizing.CoolingAirVolFlow;
829 6 : if (sysSizPeakDDNum.CoolFlowPeakDD > 0 && sysSizPeakDDNum.CoolFlowPeakDD <= state.dataEnvrn->TotDesDays) {
830 6 : auto &desDayInput = state.dataWeatherManager->DesDayInput(sysSizPeakDDNum.CoolFlowPeakDD);
831 6 : DDNameFanPeak = state.dataWeatherManager->DesDayInput(sysSizPeakDDNum.CoolFlowPeakDD).Title;
832 12 : dateTimeFanPeak = format("{}/{} {}",
833 : desDayInput.Month,
834 : desDayInput.DayOfMonth,
835 6 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
836 12 : state, sysSizPeakDDNum.TimeStepAtCoolFlowPk(sysSizPeakDDNum.CoolFlowPeakDD)));
837 : }
838 1 : } else if (unitarysysEqSizing.HeatingAirFlow) {
839 1 : this->autoSizedValue = unitarysysEqSizing.HeatingAirVolFlow;
840 2 : if (this->finalSysSizing(this->curSysNum).HeatDDNum > 0 &&
841 1 : this->finalSysSizing(this->curSysNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
842 1 : auto &desDayInput = state.dataWeatherManager->DesDayInput(this->finalSysSizing(this->curSysNum).HeatDDNum);
843 1 : DDNameFanPeak = desDayInput.Title;
844 2 : dateTimeFanPeak = format("{}/{} {}",
845 : desDayInput.Month,
846 : desDayInput.DayOfMonth,
847 1 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
848 2 : state, this->finalSysSizing(this->curSysNum).SysHeatAirTimeStepPk));
849 : }
850 :
851 : } else {
852 0 : this->autoSizedValue = this->finalSysSizing(this->curSysNum).DesMainVolFlow;
853 0 : if (this->autoSizedValue == this->finalSysSizing(this->curSysNum).DesHeatVolFlow) {
854 0 : if (this->finalSysSizing(this->curSysNum).HeatDDNum > 0 &&
855 0 : this->finalSysSizing(this->curSysNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
856 0 : auto &desDayInput = state.dataWeatherManager->DesDayInput(this->finalSysSizing(this->curSysNum).HeatDDNum);
857 0 : DDNameFanPeak = desDayInput.Title;
858 0 : dateTimeFanPeak = format("{}/{} {}",
859 : desDayInput.Month,
860 : desDayInput.DayOfMonth,
861 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
862 0 : state, this->finalSysSizing(this->curSysNum).SysHeatAirTimeStepPk));
863 : }
864 0 : } else if (this->autoSizedValue == this->finalSysSizing(this->curSysNum).DesCoolVolFlow) {
865 0 : if (sysSizPeakDDNum.CoolFlowPeakDD > 0 && sysSizPeakDDNum.CoolFlowPeakDD <= state.dataEnvrn->TotDesDays) {
866 0 : auto &desDayInput = state.dataWeatherManager->DesDayInput(sysSizPeakDDNum.CoolFlowPeakDD);
867 0 : DDNameFanPeak = desDayInput.Title;
868 0 : dateTimeFanPeak = format("{}/{} {}",
869 : desDayInput.Month,
870 : desDayInput.DayOfMonth,
871 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
872 0 : state, sysSizPeakDDNum.TimeStepAtCoolFlowPk(sysSizPeakDDNum.CoolFlowPeakDD)));
873 : }
874 : }
875 : }
876 : } else {
877 1112 : this->autoSizedValue = this->finalSysSizing(this->curSysNum).DesMainVolFlow;
878 1112 : if (this->autoSizedValue == this->finalSysSizing(this->curSysNum).DesHeatVolFlow) {
879 1213 : if (this->finalSysSizing(this->curSysNum).HeatDDNum > 0 &&
880 606 : this->finalSysSizing(this->curSysNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
881 606 : auto &desDayInput = state.dataWeatherManager->DesDayInput(this->finalSysSizing(this->curSysNum).HeatDDNum);
882 606 : DDNameFanPeak = desDayInput.Title;
883 1212 : dateTimeFanPeak = format("{}/{} {}",
884 : desDayInput.Month,
885 : desDayInput.DayOfMonth,
886 606 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
887 1212 : state, this->finalSysSizing(this->curSysNum).SysHeatAirTimeStepPk));
888 : }
889 505 : } else if (this->autoSizedValue == this->finalSysSizing(this->curSysNum).DesCoolVolFlow) {
890 479 : if (sysSizPeakDDNum.CoolFlowPeakDD > 0 && sysSizPeakDDNum.CoolFlowPeakDD <= state.dataEnvrn->TotDesDays) {
891 479 : auto &desDayInput = state.dataWeatherManager->DesDayInput(sysSizPeakDDNum.CoolFlowPeakDD);
892 479 : DDNameFanPeak = desDayInput.Title;
893 958 : dateTimeFanPeak = format("{}/{} {}",
894 : desDayInput.Month,
895 : desDayInput.DayOfMonth,
896 479 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
897 958 : state, sysSizPeakDDNum.TimeStepAtCoolFlowPk(sysSizPeakDDNum.CoolFlowPeakDD)));
898 : }
899 : }
900 : }
901 1355 : if (this->dataFractionUsedForSizing > 0.0) this->autoSizedValue = this->autoSizedValue * this->dataFractionUsedForSizing;
902 : }
903 : }
904 19 : } else if (this->dataNonZoneNonAirloopValue > 0) {
905 17 : this->autoSizedValue = this->dataNonZoneNonAirloopValue;
906 2 : } else if (!this->wasAutoSized) {
907 2 : this->autoSizedValue = this->originalValue;
908 : } else {
909 0 : std::string msg = this->callingRoutine + ' ' + this->compType + ' ' + this->compName + ", Developer Error: Component sizing incomplete.";
910 0 : ShowSevereError(state, msg);
911 0 : this->addErrorMessage(msg);
912 0 : msg = format("SizingString = {}, SizingResult = {:.1T}", this->sizingString, this->autoSizedValue);
913 0 : ShowContinueError(state, msg);
914 0 : this->addErrorMessage(msg);
915 0 : errorsFound = true;
916 : }
917 :
918 3304 : if (this->dataScalableSizingON) {
919 2 : if (this->zoneAirFlowSizMethod == DataSizing::SupplyAirFlowRate || this->zoneAirFlowSizMethod == DataSizing::None) {
920 0 : this->sizingStringScalable = "(scaled by flow / zone) ";
921 2 : } else if (this->zoneAirFlowSizMethod == DataSizing::FlowPerFloorArea) {
922 0 : this->sizingStringScalable = "(scaled by flow / area) ";
923 4 : } else if (this->zoneAirFlowSizMethod == DataSizing::FractionOfAutosizedCoolingAirflow ||
924 2 : this->zoneAirFlowSizMethod == DataSizing::FractionOfAutosizedHeatingAirflow) {
925 0 : this->sizingStringScalable = "(scaled by fractional multiplier) ";
926 4 : } else if (this->zoneAirFlowSizMethod == DataSizing::FlowPerCoolingCapacity ||
927 2 : this->zoneAirFlowSizMethod == DataSizing::FlowPerHeatingCapacity) {
928 0 : this->sizingStringScalable = "(scaled by flow / capacity) ";
929 : }
930 : }
931 : }
932 :
933 : // override sizing string
934 3642 : if (this->overrideSizeString) {
935 249 : if (UtilityRoutines::SameString(this->compType, "ZoneHVAC:FourPipeFanCoil")) {
936 78 : this->sizingString = "Maximum Supply Air Flow Rate [m3/s]";
937 78 : if (this->isEpJSON) this->sizingString = "maximum_supply_air_flow_rate [m3/s]";
938 171 : } else if (UtilityRoutines::SameString(this->compType, "ZoneHVAC:UnitVentilator")) {
939 0 : this->sizingString = "Maximum Supply Air Flow Rate [m3/s]";
940 0 : if (this->isEpJSON) this->sizingString = "maximum_supply_air_flow_rate [m3/s]";
941 171 : } else if (UtilityRoutines::SameString(this->compType, "Fan:SystemModel")) {
942 171 : this->sizingString = "Design Maximum Air Flow Rate [m3/s]";
943 : // if (this->isEpJSON) this->sizingString = "design_maximum_air_flow_rate [m3/s]";
944 : } else {
945 0 : if (this->isEpJSON) this->sizingString = "supply_air_maximum_flow_rate [m3/s]";
946 : }
947 : }
948 :
949 3642 : this->selectSizerOutput(state, errorsFound);
950 3642 : if (this->isFanReportObject) {
951 : // fill fan peak day and time here
952 1973 : if (state.dataRptCoilSelection->coilSelectionReportObj->isCompTypeFan(this->compType)) {
953 1973 : if (this->dataScalableSizingON) {
954 2 : DDNameFanPeak = "Scaled size, not from any peak";
955 2 : dateTimeFanPeak = "Scaled size, not from any peak";
956 : }
957 1973 : OutputReportPredefined::PreDefTableEntry(state, state.dataOutRptPredefined->pdchFanDesDay, this->compName, DDNameFanPeak);
958 1973 : OutputReportPredefined::PreDefTableEntry(state, state.dataOutRptPredefined->pdchFanPkTime, this->compName, dateTimeFanPeak);
959 : }
960 : }
961 3642 : return this->autoSizedValue;
962 : }
963 :
964 0 : void SystemAirFlowSizer::clearState()
965 : {
966 0 : BaseSizerWithScalableInputs::clearState();
967 0 : }
968 :
969 2313 : } // namespace EnergyPlus
|