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 4245 : Real64 SystemAirFlowSizer::size(EnergyPlusData &state, Real64 _originalValue, bool &errorsFound)
60 : {
61 :
62 4245 : if (!this->checkInitialized(state, errorsFound)) {
63 0 : return 0.0;
64 : }
65 4245 : this->preSize(state, _originalValue);
66 4245 : std::string DDNameFanPeak;
67 4245 : std::string dateTimeFanPeak;
68 :
69 4245 : if (this->dataEMSOverrideON) {
70 0 : this->autoSizedValue = this->dataEMSOverride;
71 4245 : } else if (this->dataConstantUsedForSizing > 0.0 && this->dataFractionUsedForSizing > 0.0) {
72 341 : this->autoSizedValue = this->dataConstantUsedForSizing * this->dataFractionUsedForSizing;
73 : } else {
74 3904 : if (this->curZoneEqNum > 0) {
75 2075 : if (!this->wasAutoSized && !this->sizingDesRunThisZone) {
76 60 : this->autoSizedValue = _originalValue;
77 2015 : } else if (this->zoneEqSizing(this->curZoneEqNum).DesignSizeFromParent) {
78 214 : this->autoSizedValue = this->zoneEqSizing(this->curZoneEqNum).AirVolFlow;
79 : } else {
80 1801 : 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.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Title;
90 : dateTimeFanPeak =
91 0 : format("{}/{} {}",
92 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Month,
93 0 : state.dataWeather->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.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
101 : dateTimeFanPeak =
102 0 : format("{}/{} {}",
103 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
104 0 : state.dataWeather->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.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Title;
117 : dateTimeFanPeak =
118 0 : format("{}/{} {}",
119 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Month,
120 0 : state.dataWeather->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.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
129 : dateTimeFanPeak =
130 0 : format("{}/{} {}",
131 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
132 0 : state.dataWeather->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.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Title;
141 : dateTimeFanPeak =
142 0 : format("{}/{} {}",
143 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Month,
144 0 : state.dataWeather->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.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
153 : dateTimeFanPeak =
154 0 : format("{}/{} {}",
155 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
156 0 : state.dataWeather->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.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Title;
167 : dateTimeFanPeak =
168 0 : format("{}/{} {}",
169 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Month,
170 0 : state.dataWeather->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.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
178 : dateTimeFanPeak =
179 0 : format("{}/{} {}",
180 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
181 0 : state.dataWeather->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.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Title;
193 : dateTimeFanPeak =
194 0 : format("{}/{} {}",
195 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Month,
196 0 : state.dataWeather->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.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 1801 : } 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.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Title;
220 0 : dateTimeFanPeak = format("{}/{} {}",
221 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Month,
222 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).DayOfMonth,
223 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
224 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtCoolMax));
225 : }
226 0 : } else if (this->zoneHeatingOnlyFan) {
227 0 : this->autoSizedValue = this->dataFracOfAutosizedHeatingAirflow * this->finalZoneSizing(this->curZoneEqNum).DesHeatVolFlow;
228 0 : if (this->finalZoneSizing(this->curZoneEqNum).HeatDDNum > 0 &&
229 0 : this->finalZoneSizing(this->curZoneEqNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
230 0 : DDNameFanPeak = state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
231 0 : dateTimeFanPeak = format("{}/{} {}",
232 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
233 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).DayOfMonth,
234 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
235 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtHeatMax));
236 : }
237 0 : } else if (this->zoneEqSizing(this->curZoneEqNum).CoolingAirFlow && !this->zoneEqSizing(this->curZoneEqNum).HeatingAirFlow) {
238 0 : this->autoSizedValue = this->dataFracOfAutosizedCoolingAirflow * this->zoneEqSizing(this->curZoneEqNum).CoolingAirVolFlow;
239 0 : if (this->finalZoneSizing(this->curZoneEqNum).CoolDDNum > 0 &&
240 0 : this->finalZoneSizing(this->curZoneEqNum).CoolDDNum <= state.dataEnvrn->TotDesDays) {
241 0 : DDNameFanPeak = state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Title;
242 0 : dateTimeFanPeak = format("{}/{} {}",
243 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Month,
244 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).DayOfMonth,
245 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
246 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtCoolMax));
247 : }
248 0 : } else if (this->zoneEqSizing(this->curZoneEqNum).HeatingAirFlow && !this->zoneEqSizing(this->curZoneEqNum).CoolingAirFlow) {
249 0 : this->autoSizedValue = this->dataFracOfAutosizedHeatingAirflow * this->zoneEqSizing(this->curZoneEqNum).HeatingAirVolFlow;
250 0 : if (this->finalZoneSizing(this->curZoneEqNum).HeatDDNum > 0 &&
251 0 : this->finalZoneSizing(this->curZoneEqNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
252 0 : DDNameFanPeak = state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
253 0 : dateTimeFanPeak = format("{}/{} {}",
254 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
255 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).DayOfMonth,
256 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
257 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtHeatMax));
258 : }
259 0 : } else if (this->zoneEqSizing(this->curZoneEqNum).HeatingAirFlow && this->zoneEqSizing(this->curZoneEqNum).CoolingAirFlow) {
260 0 : this->autoSizedValue =
261 0 : max(this->dataFracOfAutosizedCoolingAirflow * this->zoneEqSizing(this->curZoneEqNum).CoolingAirVolFlow,
262 0 : this->dataFracOfAutosizedHeatingAirflow * this->zoneEqSizing(this->curZoneEqNum).HeatingAirVolFlow);
263 0 : if (this->autoSizedValue ==
264 0 : 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 0 : } else if (this->autoSizedValue ==
276 0 : this->dataFracOfAutosizedHeatingAirflow * this->zoneEqSizing(this->curZoneEqNum).HeatingAirVolFlow) {
277 0 : if (this->finalZoneSizing(this->curZoneEqNum).HeatDDNum > 0 &&
278 0 : this->finalZoneSizing(this->curZoneEqNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
279 0 : DDNameFanPeak = state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
280 : dateTimeFanPeak =
281 0 : format("{}/{} {}",
282 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
283 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).DayOfMonth,
284 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
285 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtHeatMax));
286 : }
287 : }
288 : } else {
289 0 : this->autoSizedValue =
290 0 : max(this->dataFracOfAutosizedCoolingAirflow * this->finalZoneSizing(this->curZoneEqNum).DesCoolVolFlow,
291 0 : this->dataFracOfAutosizedHeatingAirflow * this->finalZoneSizing(this->curZoneEqNum).DesHeatVolFlow);
292 0 : if (this->autoSizedValue ==
293 0 : this->dataFracOfAutosizedCoolingAirflow * this->finalZoneSizing(this->curZoneEqNum).DesCoolVolFlow) {
294 0 : if (this->finalZoneSizing(this->curZoneEqNum).CoolDDNum > 0 &&
295 0 : this->finalZoneSizing(this->curZoneEqNum).CoolDDNum <= state.dataEnvrn->TotDesDays) {
296 0 : DDNameFanPeak = state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Title;
297 : dateTimeFanPeak =
298 0 : format("{}/{} {}",
299 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Month,
300 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).DayOfMonth,
301 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
302 0 : 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 1801 : } else if (this->zoneAirFlowSizMethod == DataSizing::FractionOfAutosizedHeatingAirflow) {
319 0 : if (this->zoneCoolingOnlyFan) {
320 0 : this->autoSizedValue = this->dataFracOfAutosizedCoolingAirflow * this->finalZoneSizing(this->curZoneEqNum).DesCoolVolFlow;
321 0 : if (this->finalZoneSizing(this->curZoneEqNum).CoolDDNum > 0 &&
322 0 : this->finalZoneSizing(this->curZoneEqNum).CoolDDNum <= state.dataEnvrn->TotDesDays) {
323 0 : DDNameFanPeak = state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Title;
324 0 : dateTimeFanPeak = format("{}/{} {}",
325 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Month,
326 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).DayOfMonth,
327 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
328 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtCoolMax));
329 : }
330 0 : } else if (this->zoneHeatingOnlyFan) {
331 0 : this->autoSizedValue = this->dataFracOfAutosizedHeatingAirflow * this->finalZoneSizing(this->curZoneEqNum).DesHeatVolFlow;
332 0 : if (this->finalZoneSizing(this->curZoneEqNum).HeatDDNum > 0 &&
333 0 : this->finalZoneSizing(this->curZoneEqNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
334 0 : DDNameFanPeak = state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
335 0 : dateTimeFanPeak = format("{}/{} {}",
336 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
337 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).DayOfMonth,
338 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
339 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtHeatMax));
340 : }
341 0 : } else if (this->zoneEqSizing(this->curZoneEqNum).CoolingAirFlow && !this->zoneEqSizing(this->curZoneEqNum).HeatingAirFlow) {
342 0 : this->autoSizedValue = this->dataFracOfAutosizedCoolingAirflow * this->zoneEqSizing(this->curZoneEqNum).CoolingAirVolFlow;
343 0 : if (this->finalZoneSizing(this->curZoneEqNum).CoolDDNum > 0 &&
344 0 : this->finalZoneSizing(this->curZoneEqNum).CoolDDNum <= state.dataEnvrn->TotDesDays) {
345 0 : DDNameFanPeak = state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Title;
346 0 : dateTimeFanPeak = format("{}/{} {}",
347 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Month,
348 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).DayOfMonth,
349 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
350 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtCoolMax));
351 : }
352 0 : } else if (this->zoneEqSizing(this->curZoneEqNum).HeatingAirFlow && !this->zoneEqSizing(this->curZoneEqNum).CoolingAirFlow) {
353 0 : this->autoSizedValue = this->dataFracOfAutosizedHeatingAirflow * this->zoneEqSizing(this->curZoneEqNum).HeatingAirVolFlow;
354 0 : if (this->finalZoneSizing(this->curZoneEqNum).HeatDDNum > 0 &&
355 0 : this->finalZoneSizing(this->curZoneEqNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
356 0 : DDNameFanPeak = state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
357 0 : dateTimeFanPeak = format("{}/{} {}",
358 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
359 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).DayOfMonth,
360 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
361 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtHeatMax));
362 : }
363 0 : } else if (this->zoneEqSizing(this->curZoneEqNum).HeatingAirFlow && this->zoneEqSizing(this->curZoneEqNum).CoolingAirFlow) {
364 0 : this->autoSizedValue =
365 0 : max(this->dataFracOfAutosizedCoolingAirflow * this->zoneEqSizing(this->curZoneEqNum).CoolingAirVolFlow,
366 0 : this->dataFracOfAutosizedHeatingAirflow * this->zoneEqSizing(this->curZoneEqNum).HeatingAirVolFlow);
367 0 : if (this->autoSizedValue ==
368 0 : 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 0 : } else if (this->autoSizedValue ==
380 0 : this->dataFracOfAutosizedHeatingAirflow * this->zoneEqSizing(this->curZoneEqNum).HeatingAirVolFlow) {
381 0 : if (this->finalZoneSizing(this->curZoneEqNum).HeatDDNum > 0 &&
382 0 : this->finalZoneSizing(this->curZoneEqNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
383 0 : DDNameFanPeak = state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
384 : dateTimeFanPeak =
385 0 : format("{}/{} {}",
386 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
387 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).DayOfMonth,
388 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
389 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtHeatMax));
390 : }
391 : }
392 : } else {
393 0 : this->autoSizedValue =
394 0 : max(this->dataFracOfAutosizedCoolingAirflow * this->finalZoneSizing(this->curZoneEqNum).DesCoolVolFlow,
395 0 : this->dataFracOfAutosizedHeatingAirflow * this->finalZoneSizing(this->curZoneEqNum).DesHeatVolFlow);
396 0 : if (this->autoSizedValue ==
397 0 : this->dataFracOfAutosizedCoolingAirflow * this->finalZoneSizing(this->curZoneEqNum).DesCoolVolFlow) {
398 0 : if (this->finalZoneSizing(this->curZoneEqNum).CoolDDNum > 0 &&
399 0 : this->finalZoneSizing(this->curZoneEqNum).CoolDDNum <= state.dataEnvrn->TotDesDays) {
400 0 : DDNameFanPeak = state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Title;
401 : dateTimeFanPeak =
402 0 : format("{}/{} {}",
403 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Month,
404 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).DayOfMonth,
405 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
406 0 : 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 1801 : } else if (this->zoneAirFlowSizMethod == DataSizing::FlowPerCoolingCapacity) {
423 0 : if (this->zoneCoolingOnlyFan) {
424 0 : this->autoSizedValue = this->dataFlowPerCoolingCapacity * this->dataAutosizedCoolingCapacity;
425 0 : if (this->finalZoneSizing(this->curZoneEqNum).CoolDDNum > 0 &&
426 0 : this->finalZoneSizing(this->curZoneEqNum).CoolDDNum <= state.dataEnvrn->TotDesDays) {
427 0 : DDNameFanPeak = state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Title;
428 0 : dateTimeFanPeak = format("{}/{} {}",
429 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Month,
430 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).DayOfMonth,
431 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
432 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtCoolMax));
433 : }
434 0 : } else if (this->zoneHeatingOnlyFan) {
435 0 : this->autoSizedValue = this->dataFlowPerHeatingCapacity * this->dataAutosizedHeatingCapacity;
436 0 : if (this->finalZoneSizing(this->curZoneEqNum).HeatDDNum > 0 &&
437 0 : this->finalZoneSizing(this->curZoneEqNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
438 0 : DDNameFanPeak = state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
439 0 : dateTimeFanPeak = format("{}/{} {}",
440 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
441 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).DayOfMonth,
442 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
443 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtHeatMax));
444 : }
445 0 : } else if (this->zoneEqSizing(this->curZoneEqNum).CoolingAirFlow && !this->zoneEqSizing(this->curZoneEqNum).HeatingAirFlow) {
446 0 : this->autoSizedValue = this->dataFlowPerCoolingCapacity * this->dataAutosizedCoolingCapacity;
447 0 : if (this->finalZoneSizing(this->curZoneEqNum).CoolDDNum > 0 &&
448 0 : this->finalZoneSizing(this->curZoneEqNum).CoolDDNum <= state.dataEnvrn->TotDesDays) {
449 0 : DDNameFanPeak = state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Title;
450 0 : dateTimeFanPeak = format("{}/{} {}",
451 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Month,
452 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).DayOfMonth,
453 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
454 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtCoolMax));
455 : }
456 0 : } else if (this->zoneEqSizing(this->curZoneEqNum).HeatingAirFlow && !this->zoneEqSizing(this->curZoneEqNum).CoolingAirFlow) {
457 0 : this->autoSizedValue = this->dataFlowPerHeatingCapacity * this->dataAutosizedHeatingCapacity;
458 0 : if (this->finalZoneSizing(this->curZoneEqNum).HeatDDNum > 0 &&
459 0 : this->finalZoneSizing(this->curZoneEqNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
460 0 : DDNameFanPeak = state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
461 0 : dateTimeFanPeak = format("{}/{} {}",
462 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
463 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).DayOfMonth,
464 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
465 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtHeatMax));
466 : }
467 0 : } else if (this->zoneEqSizing(this->curZoneEqNum).HeatingAirFlow && this->zoneEqSizing(this->curZoneEqNum).CoolingAirFlow) {
468 0 : this->autoSizedValue = max(this->dataFlowPerCoolingCapacity * this->dataAutosizedCoolingCapacity,
469 0 : this->dataFlowPerHeatingCapacity * this->dataAutosizedHeatingCapacity);
470 0 : 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 0 : } else if (this->autoSizedValue == this->dataFlowPerHeatingCapacity * this->dataAutosizedHeatingCapacity) {
482 0 : if (this->finalZoneSizing(this->curZoneEqNum).HeatDDNum > 0 &&
483 0 : this->finalZoneSizing(this->curZoneEqNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
484 0 : DDNameFanPeak = state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
485 : dateTimeFanPeak =
486 0 : format("{}/{} {}",
487 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
488 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).DayOfMonth,
489 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
490 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtHeatMax));
491 : }
492 : }
493 : } else {
494 0 : this->autoSizedValue = max(this->dataFlowPerCoolingCapacity * this->dataAutosizedCoolingCapacity,
495 0 : this->dataFlowPerHeatingCapacity * this->dataAutosizedHeatingCapacity);
496 0 : 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 0 : } else if (this->autoSizedValue == this->dataFlowPerHeatingCapacity * this->dataAutosizedHeatingCapacity) {
508 0 : if (this->finalZoneSizing(this->curZoneEqNum).HeatDDNum > 0 &&
509 0 : this->finalZoneSizing(this->curZoneEqNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
510 0 : DDNameFanPeak = state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
511 : dateTimeFanPeak =
512 0 : format("{}/{} {}",
513 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
514 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).DayOfMonth,
515 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
516 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtHeatMax));
517 : }
518 : }
519 : }
520 1801 : } else if (this->zoneAirFlowSizMethod == DataSizing::FlowPerHeatingCapacity) {
521 0 : if (this->zoneCoolingOnlyFan) {
522 0 : this->autoSizedValue = this->dataFlowPerCoolingCapacity * this->dataAutosizedCoolingCapacity;
523 0 : if (this->finalZoneSizing(this->curZoneEqNum).CoolDDNum > 0 &&
524 0 : this->finalZoneSizing(this->curZoneEqNum).CoolDDNum <= state.dataEnvrn->TotDesDays) {
525 0 : DDNameFanPeak = state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Title;
526 0 : dateTimeFanPeak = format("{}/{} {}",
527 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Month,
528 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).DayOfMonth,
529 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
530 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtCoolMax));
531 : }
532 0 : } else if (this->zoneHeatingOnlyFan) {
533 0 : this->autoSizedValue = this->dataFlowPerHeatingCapacity * this->dataAutosizedHeatingCapacity;
534 0 : if (this->finalZoneSizing(this->curZoneEqNum).HeatDDNum > 0 &&
535 0 : this->finalZoneSizing(this->curZoneEqNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
536 0 : DDNameFanPeak = state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
537 0 : dateTimeFanPeak = format("{}/{} {}",
538 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
539 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).DayOfMonth,
540 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
541 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtHeatMax));
542 : }
543 0 : } else if (this->zoneEqSizing(this->curZoneEqNum).CoolingAirFlow && !this->zoneEqSizing(this->curZoneEqNum).HeatingAirFlow) {
544 0 : this->autoSizedValue = this->dataFlowPerCoolingCapacity * this->dataAutosizedCoolingCapacity;
545 0 : if (this->finalZoneSizing(this->curZoneEqNum).CoolDDNum > 0 &&
546 0 : this->finalZoneSizing(this->curZoneEqNum).CoolDDNum <= state.dataEnvrn->TotDesDays) {
547 0 : DDNameFanPeak = state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Title;
548 0 : dateTimeFanPeak = format("{}/{} {}",
549 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Month,
550 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).DayOfMonth,
551 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
552 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtCoolMax));
553 : }
554 0 : } else if (this->zoneEqSizing(this->curZoneEqNum).HeatingAirFlow && !this->zoneEqSizing(this->curZoneEqNum).CoolingAirFlow) {
555 0 : this->autoSizedValue = this->dataFlowPerHeatingCapacity * this->dataAutosizedHeatingCapacity;
556 0 : if (this->finalZoneSizing(this->curZoneEqNum).HeatDDNum > 0 &&
557 0 : this->finalZoneSizing(this->curZoneEqNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
558 0 : DDNameFanPeak = state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
559 0 : dateTimeFanPeak = format("{}/{} {}",
560 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
561 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).DayOfMonth,
562 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
563 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtHeatMax));
564 : }
565 0 : } else if (this->zoneEqSizing(this->curZoneEqNum).HeatingAirFlow && this->zoneEqSizing(this->curZoneEqNum).CoolingAirFlow) {
566 0 : this->autoSizedValue = max(this->dataFlowPerCoolingCapacity * this->dataAutosizedCoolingCapacity,
567 0 : this->dataFlowPerHeatingCapacity * this->dataAutosizedHeatingCapacity);
568 0 : 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 0 : } else if (this->autoSizedValue == this->dataFlowPerHeatingCapacity * this->dataAutosizedHeatingCapacity) {
580 0 : if (this->finalZoneSizing(this->curZoneEqNum).HeatDDNum > 0 &&
581 0 : this->finalZoneSizing(this->curZoneEqNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
582 0 : DDNameFanPeak = state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
583 : dateTimeFanPeak =
584 0 : format("{}/{} {}",
585 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
586 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).DayOfMonth,
587 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
588 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtHeatMax));
589 : }
590 : }
591 : } else {
592 0 : this->autoSizedValue = max(this->dataFlowPerCoolingCapacity * this->dataAutosizedCoolingCapacity,
593 0 : this->dataFlowPerHeatingCapacity * this->dataAutosizedHeatingCapacity);
594 0 : 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 0 : } else if (this->autoSizedValue == this->dataFlowPerHeatingCapacity * this->dataAutosizedHeatingCapacity) {
606 0 : if (this->finalZoneSizing(this->curZoneEqNum).HeatDDNum > 0 &&
607 0 : this->finalZoneSizing(this->curZoneEqNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
608 0 : DDNameFanPeak = state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
609 : dateTimeFanPeak =
610 0 : format("{}/{} {}",
611 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
612 0 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).DayOfMonth,
613 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
614 0 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtHeatMax));
615 : }
616 : }
617 : }
618 : } else {
619 1801 : if (this->zoneEqSizing(this->curZoneEqNum).CoolingAirFlow && !this->zoneEqSizing(this->curZoneEqNum).HeatingAirFlow) {
620 57 : this->autoSizedValue = this->zoneEqSizing(this->curZoneEqNum).CoolingAirVolFlow;
621 114 : if (this->finalZoneSizing(this->curZoneEqNum).CoolDDNum > 0 &&
622 57 : this->finalZoneSizing(this->curZoneEqNum).CoolDDNum <= state.dataEnvrn->TotDesDays) {
623 48 : DDNameFanPeak = state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Title;
624 96 : dateTimeFanPeak = format("{}/{} {}",
625 48 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Month,
626 48 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).DayOfMonth,
627 48 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
628 96 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtCoolMax));
629 : }
630 1744 : } else if (this->zoneEqSizing(this->curZoneEqNum).HeatingAirFlow && !this->zoneEqSizing(this->curZoneEqNum).CoolingAirFlow) {
631 0 : this->autoSizedValue = this->zoneEqSizing(this->curZoneEqNum).HeatingAirVolFlow;
632 0 : 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 1744 : } else if (this->zoneEqSizing(this->curZoneEqNum).HeatingAirFlow && this->zoneEqSizing(this->curZoneEqNum).CoolingAirFlow) {
642 962 : this->autoSizedValue =
643 962 : max(this->zoneEqSizing(this->curZoneEqNum).CoolingAirVolFlow, this->zoneEqSizing(this->curZoneEqNum).HeatingAirVolFlow);
644 962 : if (this->autoSizedValue == this->zoneEqSizing(this->curZoneEqNum).CoolingAirVolFlow) {
645 1922 : if (this->finalZoneSizing(this->curZoneEqNum).CoolDDNum > 0 &&
646 961 : this->finalZoneSizing(this->curZoneEqNum).CoolDDNum <= state.dataEnvrn->TotDesDays) {
647 961 : DDNameFanPeak = state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Title;
648 : dateTimeFanPeak =
649 1922 : format("{}/{} {}",
650 961 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Month,
651 961 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).DayOfMonth,
652 961 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
653 1922 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtCoolMax));
654 : }
655 1 : } else if (this->autoSizedValue == this->zoneEqSizing(this->curZoneEqNum).HeatingAirVolFlow) {
656 2 : if (this->finalZoneSizing(this->curZoneEqNum).HeatDDNum > 0 &&
657 1 : this->finalZoneSizing(this->curZoneEqNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
658 1 : DDNameFanPeak = state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
659 : dateTimeFanPeak =
660 2 : format("{}/{} {}",
661 1 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
662 1 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).DayOfMonth,
663 1 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
664 2 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtHeatMax));
665 : }
666 : }
667 : } else {
668 782 : if (this->zoneEqSizing(this->curZoneEqNum).SystemAirFlow) {
669 1 : this->autoSizedValue = max(this->zoneEqSizing(this->curZoneEqNum).AirVolFlow,
670 1 : this->zoneEqSizing(this->curZoneEqNum).CoolingAirVolFlow,
671 1 : this->zoneEqSizing(this->curZoneEqNum).HeatingAirVolFlow);
672 781 : } else if (this->zoneCoolingOnlyFan) {
673 62 : this->autoSizedValue = this->finalZoneSizing(this->curZoneEqNum).DesCoolVolFlow;
674 124 : if (this->finalZoneSizing(this->curZoneEqNum).CoolDDNum > 0 &&
675 62 : this->finalZoneSizing(this->curZoneEqNum).CoolDDNum <= state.dataEnvrn->TotDesDays) {
676 53 : DDNameFanPeak = state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Title;
677 : dateTimeFanPeak =
678 106 : format("{}/{} {}",
679 53 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Month,
680 53 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).DayOfMonth,
681 53 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
682 106 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtCoolMax));
683 : }
684 719 : } else if (this->zoneHeatingOnlyFan) {
685 71 : this->autoSizedValue = this->finalZoneSizing(this->curZoneEqNum).DesHeatVolFlow;
686 142 : if (this->finalZoneSizing(this->curZoneEqNum).HeatDDNum > 0 &&
687 71 : this->finalZoneSizing(this->curZoneEqNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
688 71 : DDNameFanPeak = state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
689 : dateTimeFanPeak =
690 142 : format("{}/{} {}",
691 71 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
692 71 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).DayOfMonth,
693 71 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
694 142 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtHeatMax));
695 : }
696 : } else {
697 648 : this->autoSizedValue = max(this->finalZoneSizing(this->curZoneEqNum).DesCoolVolFlow,
698 648 : this->finalZoneSizing(this->curZoneEqNum).DesHeatVolFlow);
699 648 : if (this->autoSizedValue == this->finalZoneSizing(this->curZoneEqNum).DesCoolVolFlow) {
700 1260 : if (this->finalZoneSizing(this->curZoneEqNum).CoolDDNum > 0 &&
701 630 : this->finalZoneSizing(this->curZoneEqNum).CoolDDNum <= state.dataEnvrn->TotDesDays) {
702 630 : DDNameFanPeak = state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Title;
703 : dateTimeFanPeak =
704 1260 : format("{}/{} {}",
705 630 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).Month,
706 630 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).CoolDDNum).DayOfMonth,
707 630 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
708 1260 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtCoolMax));
709 : }
710 18 : } else if (this->autoSizedValue == this->finalZoneSizing(this->curZoneEqNum).DesHeatVolFlow) {
711 36 : if (this->finalZoneSizing(this->curZoneEqNum).HeatDDNum > 0 &&
712 18 : this->finalZoneSizing(this->curZoneEqNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
713 18 : DDNameFanPeak = state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Title;
714 : dateTimeFanPeak =
715 36 : format("{}/{} {}",
716 18 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).Month,
717 18 : state.dataWeather->DesDayInput(this->finalZoneSizing(this->curZoneEqNum).HeatDDNum).DayOfMonth,
718 18 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
719 36 : state, this->finalZoneSizing(this->curZoneEqNum).TimeStepNumAtHeatMax));
720 : }
721 : }
722 : }
723 : }
724 1801 : if (this->dataFractionUsedForSizing > 0.0) {
725 359 : this->autoSizedValue = this->autoSizedValue * this->dataFractionUsedForSizing;
726 : }
727 : }
728 : }
729 1829 : } else if (this->curSysNum > 0) {
730 1810 : if (!this->wasAutoSized && !this->sizingDesRunThisAirSys) {
731 360 : this->autoSizedValue = _originalValue;
732 : } else {
733 1450 : if (this->dataHRFlowSizingFlag) { // HX sizing
734 29 : if (this->curOASysNum) {
735 : // size to supply air duct flow rate
736 21 : if (this->outsideAirSys(this->curOASysNum).AirLoopDOASNum > -1) {
737 0 : auto const &thisAirloopDOAS = this->airloopDOAS[this->outsideAirSys(this->curOASysNum).AirLoopDOASNum];
738 0 : this->autoSizedValue = thisAirloopDOAS.SizingMassFlow / state.dataEnvrn->StdRhoAir;
739 21 : } else if (this->finalSysSizing(this->curSysNum).DesOutAirVolFlow > 0.0) {
740 21 : this->autoSizedValue = this->finalSysSizing(this->curSysNum).DesOutAirVolFlow;
741 : } else {
742 0 : switch (this->curDuctType) {
743 0 : case HVAC::AirDuctType::Main: {
744 0 : this->autoSizedValue = this->finalSysSizing(this->curSysNum).DesMainVolFlow;
745 0 : } break;
746 0 : case HVAC::AirDuctType::Cooling: {
747 0 : this->autoSizedValue = this->finalSysSizing(this->curSysNum).DesCoolVolFlow;
748 0 : } break;
749 0 : case HVAC::AirDuctType::Heating: {
750 0 : this->autoSizedValue = this->finalSysSizing(this->curSysNum).DesHeatVolFlow;
751 0 : } break;
752 0 : case HVAC::AirDuctType::Other: {
753 0 : this->autoSizedValue = this->finalSysSizing(this->curSysNum).DesMainVolFlow;
754 0 : } break;
755 0 : default: {
756 0 : this->autoSizedValue = this->finalSysSizing(this->curSysNum).DesMainVolFlow;
757 0 : } break;
758 : }
759 : }
760 : } else {
761 8 : switch (this->curDuctType) {
762 8 : case HVAC::AirDuctType::Main: {
763 8 : this->autoSizedValue = this->finalSysSizing(this->curSysNum).DesMainVolFlow;
764 8 : } break;
765 0 : case HVAC::AirDuctType::Cooling: {
766 0 : this->autoSizedValue = this->finalSysSizing(this->curSysNum).DesCoolVolFlow;
767 0 : } break;
768 0 : case HVAC::AirDuctType::Heating: {
769 0 : this->autoSizedValue = this->finalSysSizing(this->curSysNum).DesHeatVolFlow;
770 0 : } break;
771 :
772 0 : case HVAC::AirDuctType::Other: {
773 0 : this->autoSizedValue = this->finalSysSizing(this->curSysNum).DesMainVolFlow;
774 0 : } break;
775 0 : default: {
776 0 : this->autoSizedValue = this->finalSysSizing(this->curSysNum).DesMainVolFlow;
777 0 : } break;
778 : }
779 : }
780 :
781 : } else {
782 1421 : if (this->curOASysNum > 0) {
783 : // should a parent object ever override DOAS or OASystem flow rate (e.g., using oaSysEqSizing().AirVolFlow)?
784 5 : if (outsideAirSys(this->curOASysNum).AirLoopDOASNum > -1) {
785 0 : this->autoSizedValue =
786 0 : this->airloopDOAS[outsideAirSys(this->curOASysNum).AirLoopDOASNum].SizingMassFlow / state.dataEnvrn->StdRhoAir;
787 : } else {
788 5 : switch (this->curDuctType) {
789 0 : case HVAC::AirDuctType::Cooling: {
790 0 : this->autoSizedValue = this->finalSysSizing(this->curSysNum).DesCoolVolFlow;
791 0 : } break;
792 0 : case HVAC::AirDuctType::Heating: {
793 0 : this->autoSizedValue = this->finalSysSizing(this->curSysNum).DesHeatVolFlow;
794 0 : } break;
795 5 : case HVAC::AirDuctType::Main:
796 : case HVAC::AirDuctType::Other:
797 : default: {
798 5 : this->autoSizedValue = this->finalSysSizing(this->curSysNum).DesMainVolFlow;
799 5 : } break;
800 : }
801 5 : if (this->autoSizedValue == this->finalSysSizing(this->curSysNum).DesHeatVolFlow) {
802 4 : if (this->finalSysSizing(this->curSysNum).HeatDDNum > 0 &&
803 2 : this->finalSysSizing(this->curSysNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
804 2 : auto &desDayInput = state.dataWeather->DesDayInput(this->finalSysSizing(this->curSysNum).HeatDDNum);
805 2 : DDNameFanPeak = desDayInput.Title;
806 4 : dateTimeFanPeak = format("{}/{} {}",
807 2 : desDayInput.Month,
808 2 : desDayInput.DayOfMonth,
809 2 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
810 4 : state, this->finalSysSizing(this->curSysNum).SysHeatAirTimeStepPk));
811 : }
812 3 : } else if (this->autoSizedValue == this->finalSysSizing(this->curSysNum).DesCoolVolFlow) {
813 3 : auto &sysSizPeakDDNum = state.dataSize->SysSizPeakDDNum(this->curSysNum);
814 3 : if (sysSizPeakDDNum.CoolFlowPeakDD > 0 && sysSizPeakDDNum.CoolFlowPeakDD <= state.dataEnvrn->TotDesDays) {
815 3 : auto &desDayInput = state.dataWeather->DesDayInput(sysSizPeakDDNum.CoolFlowPeakDD);
816 3 : DDNameFanPeak = desDayInput.Title;
817 6 : dateTimeFanPeak = format("{}/{} {}",
818 3 : desDayInput.Month,
819 3 : desDayInput.DayOfMonth,
820 3 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
821 6 : state, sysSizPeakDDNum.TimeStepAtCoolFlowPk(sysSizPeakDDNum.CoolFlowPeakDD)));
822 : }
823 : }
824 : }
825 : } else {
826 1416 : auto &sysSizPeakDDNum = state.dataSize->SysSizPeakDDNum(this->curSysNum);
827 :
828 1416 : if (this->airLoopSysFlag) {
829 257 : auto const &unitarysysEqSizing = this->unitarySysEqSizing(this->curSysNum);
830 257 : if (unitarysysEqSizing.CoolingAirFlow && unitarysysEqSizing.HeatingAirFlow) {
831 250 : this->autoSizedValue = std::max(unitarysysEqSizing.CoolingAirVolFlow, unitarysysEqSizing.HeatingAirVolFlow);
832 250 : if (this->autoSizedValue == unitarysysEqSizing.CoolingAirVolFlow) {
833 250 : if (sysSizPeakDDNum.CoolFlowPeakDD > 0 && sysSizPeakDDNum.CoolFlowPeakDD <= state.dataEnvrn->TotDesDays) {
834 250 : auto &desDayInput = state.dataWeather->DesDayInput(sysSizPeakDDNum.CoolFlowPeakDD);
835 250 : DDNameFanPeak = desDayInput.Title;
836 500 : dateTimeFanPeak = format("{}/{} {}",
837 250 : desDayInput.Month,
838 250 : desDayInput.DayOfMonth,
839 250 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
840 500 : state, sysSizPeakDDNum.TimeStepAtCoolFlowPk(sysSizPeakDDNum.CoolFlowPeakDD)));
841 : }
842 :
843 0 : } else if (this->autoSizedValue == unitarysysEqSizing.HeatingAirVolFlow) {
844 0 : if (this->finalSysSizing(this->curSysNum).HeatDDNum > 0 &&
845 0 : this->finalSysSizing(this->curSysNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
846 0 : auto &desDayInput = state.dataWeather->DesDayInput(this->finalSysSizing(this->curSysNum).HeatDDNum);
847 0 : DDNameFanPeak = desDayInput.Title;
848 0 : dateTimeFanPeak = format("{}/{} {}",
849 0 : desDayInput.Month,
850 0 : desDayInput.DayOfMonth,
851 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
852 0 : state, this->finalSysSizing(this->curSysNum).SysHeatAirTimeStepPk));
853 : }
854 : }
855 257 : } else if (unitarysysEqSizing.CoolingAirFlow) {
856 6 : this->autoSizedValue = unitarysysEqSizing.CoolingAirVolFlow;
857 6 : if (sysSizPeakDDNum.CoolFlowPeakDD > 0 && sysSizPeakDDNum.CoolFlowPeakDD <= state.dataEnvrn->TotDesDays) {
858 6 : auto &desDayInput = state.dataWeather->DesDayInput(sysSizPeakDDNum.CoolFlowPeakDD);
859 6 : DDNameFanPeak = state.dataWeather->DesDayInput(sysSizPeakDDNum.CoolFlowPeakDD).Title;
860 12 : dateTimeFanPeak = format("{}/{} {}",
861 6 : desDayInput.Month,
862 6 : desDayInput.DayOfMonth,
863 6 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
864 12 : state, sysSizPeakDDNum.TimeStepAtCoolFlowPk(sysSizPeakDDNum.CoolFlowPeakDD)));
865 : }
866 1 : } else if (unitarysysEqSizing.HeatingAirFlow) {
867 1 : this->autoSizedValue = unitarysysEqSizing.HeatingAirVolFlow;
868 2 : if (this->finalSysSizing(this->curSysNum).HeatDDNum > 0 &&
869 1 : this->finalSysSizing(this->curSysNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
870 1 : auto &desDayInput = state.dataWeather->DesDayInput(this->finalSysSizing(this->curSysNum).HeatDDNum);
871 1 : DDNameFanPeak = desDayInput.Title;
872 2 : dateTimeFanPeak = format("{}/{} {}",
873 1 : desDayInput.Month,
874 1 : desDayInput.DayOfMonth,
875 1 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
876 2 : state, this->finalSysSizing(this->curSysNum).SysHeatAirTimeStepPk));
877 : }
878 :
879 : } else {
880 0 : this->autoSizedValue = this->finalSysSizing(this->curSysNum).DesMainVolFlow;
881 0 : if (this->autoSizedValue == this->finalSysSizing(this->curSysNum).DesHeatVolFlow) {
882 0 : if (this->finalSysSizing(this->curSysNum).HeatDDNum > 0 &&
883 0 : this->finalSysSizing(this->curSysNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
884 0 : auto &desDayInput = state.dataWeather->DesDayInput(this->finalSysSizing(this->curSysNum).HeatDDNum);
885 0 : DDNameFanPeak = desDayInput.Title;
886 0 : dateTimeFanPeak = format("{}/{} {}",
887 0 : desDayInput.Month,
888 0 : desDayInput.DayOfMonth,
889 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
890 0 : state, this->finalSysSizing(this->curSysNum).SysHeatAirTimeStepPk));
891 : }
892 0 : } else if (this->autoSizedValue == this->finalSysSizing(this->curSysNum).DesCoolVolFlow) {
893 0 : if (sysSizPeakDDNum.CoolFlowPeakDD > 0 && sysSizPeakDDNum.CoolFlowPeakDD <= state.dataEnvrn->TotDesDays) {
894 0 : auto &desDayInput = state.dataWeather->DesDayInput(sysSizPeakDDNum.CoolFlowPeakDD);
895 0 : DDNameFanPeak = desDayInput.Title;
896 0 : dateTimeFanPeak = format("{}/{} {}",
897 0 : desDayInput.Month,
898 0 : desDayInput.DayOfMonth,
899 0 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
900 0 : state, sysSizPeakDDNum.TimeStepAtCoolFlowPk(sysSizPeakDDNum.CoolFlowPeakDD)));
901 : }
902 : }
903 : }
904 : } else {
905 1159 : this->autoSizedValue = this->finalSysSizing(this->curSysNum).DesMainVolFlow;
906 1159 : if (this->autoSizedValue == this->finalSysSizing(this->curSysNum).DesHeatVolFlow) {
907 1294 : if (this->finalSysSizing(this->curSysNum).HeatDDNum > 0 &&
908 643 : this->finalSysSizing(this->curSysNum).HeatDDNum <= state.dataEnvrn->TotDesDays) {
909 643 : auto &desDayInput = state.dataWeather->DesDayInput(this->finalSysSizing(this->curSysNum).HeatDDNum);
910 643 : DDNameFanPeak = desDayInput.Title;
911 1286 : dateTimeFanPeak = format("{}/{} {}",
912 643 : desDayInput.Month,
913 643 : desDayInput.DayOfMonth,
914 643 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
915 1286 : state, this->finalSysSizing(this->curSysNum).SysHeatAirTimeStepPk));
916 : }
917 508 : } else if (this->autoSizedValue == this->finalSysSizing(this->curSysNum).DesCoolVolFlow) {
918 484 : if (sysSizPeakDDNum.CoolFlowPeakDD > 0 && sysSizPeakDDNum.CoolFlowPeakDD <= state.dataEnvrn->TotDesDays) {
919 484 : auto &desDayInput = state.dataWeather->DesDayInput(sysSizPeakDDNum.CoolFlowPeakDD);
920 484 : DDNameFanPeak = desDayInput.Title;
921 968 : dateTimeFanPeak = format("{}/{} {}",
922 484 : desDayInput.Month,
923 484 : desDayInput.DayOfMonth,
924 484 : state.dataRptCoilSelection->coilSelectionReportObj->getTimeText(
925 968 : state, sysSizPeakDDNum.TimeStepAtCoolFlowPk(sysSizPeakDDNum.CoolFlowPeakDD)));
926 : }
927 : }
928 : }
929 1416 : if (this->dataFractionUsedForSizing > 0.0) {
930 347 : this->autoSizedValue = this->autoSizedValue * this->dataFractionUsedForSizing;
931 : }
932 : }
933 : }
934 : }
935 19 : } else if (this->dataNonZoneNonAirloopValue > 0) {
936 17 : this->autoSizedValue = this->dataNonZoneNonAirloopValue;
937 2 : } else if (!this->wasAutoSized) {
938 2 : this->autoSizedValue = this->originalValue;
939 : } else {
940 0 : std::string msg = this->callingRoutine + ' ' + this->compType + ' ' + this->compName + ", Developer Error: Component sizing incomplete.";
941 0 : ShowSevereError(state, msg);
942 0 : this->addErrorMessage(msg);
943 0 : msg = format("SizingString = {}, SizingResult = {:.1T}", this->sizingString, this->autoSizedValue);
944 0 : ShowContinueError(state, msg);
945 0 : this->addErrorMessage(msg);
946 0 : errorsFound = true;
947 0 : }
948 :
949 3904 : if (this->dataScalableSizingON) {
950 2 : if (this->zoneAirFlowSizMethod == DataSizing::SupplyAirFlowRate || this->zoneAirFlowSizMethod == DataSizing::None) {
951 0 : this->sizingStringScalable = "(scaled by flow / zone) ";
952 2 : } else if (this->zoneAirFlowSizMethod == DataSizing::FlowPerFloorArea) {
953 0 : this->sizingStringScalable = "(scaled by flow / area) ";
954 2 : } else if (this->zoneAirFlowSizMethod == DataSizing::FractionOfAutosizedCoolingAirflow ||
955 2 : this->zoneAirFlowSizMethod == DataSizing::FractionOfAutosizedHeatingAirflow) {
956 0 : this->sizingStringScalable = "(scaled by fractional multiplier) ";
957 2 : } else if (this->zoneAirFlowSizMethod == DataSizing::FlowPerCoolingCapacity ||
958 2 : this->zoneAirFlowSizMethod == DataSizing::FlowPerHeatingCapacity) {
959 0 : this->sizingStringScalable = "(scaled by flow / capacity) ";
960 : }
961 : }
962 : }
963 :
964 : // override sizing string
965 4245 : if (this->overrideSizeString) {
966 309 : if (Util::SameString(this->compType, "ZoneHVAC:FourPipeFanCoil")) {
967 78 : this->sizingString = "Maximum Supply Air Flow Rate [m3/s]";
968 78 : if (this->isEpJSON) {
969 0 : this->sizingString = "maximum_supply_air_flow_rate [m3/s]";
970 : }
971 231 : } else if (Util::SameString(this->compType, "ZoneHVAC:UnitVentilator")) {
972 0 : this->sizingString = "Maximum Supply Air Flow Rate [m3/s]";
973 0 : if (this->isEpJSON) {
974 0 : this->sizingString = "maximum_supply_air_flow_rate [m3/s]";
975 : }
976 231 : } else if (Util::SameString(this->compType, "Fan:SystemModel")) {
977 231 : this->sizingString = "Design Maximum Air Flow Rate [m3/s]";
978 : // if (this->isEpJSON) this->sizingString = "design_maximum_air_flow_rate [m3/s]";
979 : } else {
980 0 : if (this->isEpJSON) {
981 0 : this->sizingString = "supply_air_maximum_flow_rate [m3/s]";
982 : }
983 : }
984 : }
985 :
986 4245 : this->selectSizerOutput(state, errorsFound);
987 4245 : if (this->isFanReportObject) {
988 : // fill fan peak day and time here
989 2215 : if (state.dataRptCoilSelection->coilSelectionReportObj->isCompTypeFan(this->compType)) {
990 2215 : if (this->dataScalableSizingON) {
991 2 : DDNameFanPeak = "Scaled size, not from any peak";
992 2 : dateTimeFanPeak = "Scaled size, not from any peak";
993 : }
994 2215 : OutputReportPredefined::PreDefTableEntry(state, state.dataOutRptPredefined->pdchFanDesDay, this->compName, DDNameFanPeak);
995 2215 : OutputReportPredefined::PreDefTableEntry(state, state.dataOutRptPredefined->pdchFanPkTime, this->compName, dateTimeFanPeak);
996 : }
997 : }
998 4245 : return this->autoSizedValue;
999 4245 : }
1000 :
1001 0 : void SystemAirFlowSizer::clearState()
1002 : {
1003 0 : BaseSizerWithScalableInputs::clearState();
1004 0 : }
1005 :
1006 : } // namespace EnergyPlus
|