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