Line data Source code
1 : // EnergyPlus, Copyright (c) 1996-2023, The Board of Trustees of the University of Illinois,
2 : // The Regents of the University of California, through Lawrence Berkeley National Laboratory
3 : // (subject to receipt of any required approvals from the U.S. Dept. of Energy), Oak Ridge
4 : // National Laboratory, managed by UT-Battelle, Alliance for Sustainable Energy, LLC, and other
5 : // contributors. All rights reserved.
6 : //
7 : // NOTICE: This Software was developed under funding from the U.S. Department of Energy and the
8 : // U.S. Government consequently retains certain rights. As such, the U.S. Government has been
9 : // granted for itself and others acting on its behalf a paid-up, nonexclusive, irrevocable,
10 : // worldwide license in the Software to reproduce, distribute copies to the public, prepare
11 : // derivative works, and perform publicly and display publicly, and to permit others to do so.
12 : //
13 : // Redistribution and use in source and binary forms, with or without modification, are permitted
14 : // provided that the following conditions are met:
15 : //
16 : // (1) Redistributions of source code must retain the above copyright notice, this list of
17 : // conditions and the following disclaimer.
18 : //
19 : // (2) Redistributions in binary form must reproduce the above copyright notice, this list of
20 : // conditions and the following disclaimer in the documentation and/or other materials
21 : // provided with the distribution.
22 : //
23 : // (3) Neither the name of the University of California, Lawrence Berkeley National Laboratory,
24 : // the University of Illinois, U.S. Dept. of Energy nor the names of its contributors may be
25 : // used to endorse or promote products derived from this software without specific prior
26 : // written permission.
27 : //
28 : // (4) Use of EnergyPlus(TM) Name. If Licensee (i) distributes the software in stand-alone form
29 : // without changes from the version obtained under this License, or (ii) Licensee makes a
30 : // reference solely to the software portion of its product, Licensee must refer to the
31 : // software as "EnergyPlus version X" software, where "X" is the version number Licensee
32 : // obtained under this License and may not use a different name for the software. Except as
33 : // specifically required in this Section (4), Licensee shall not use in a company name, a
34 : // product name, in advertising, publicity, or other promotional activities any name, trade
35 : // name, trademark, logo, or other designation of "EnergyPlus", "E+", "e+" or confusingly
36 : // similar designation, without the U.S. Department of Energy's prior written consent.
37 : //
38 : // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
39 : // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
40 : // AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
41 : // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
42 : // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
43 : // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
44 : // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
45 : // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
46 : // POSSIBILITY OF SUCH DAMAGE.
47 :
48 : #ifndef OutputReportTabular_hh_INCLUDED
49 : #define OutputReportTabular_hh_INCLUDED
50 :
51 : // C++ Headers
52 : #include <fstream>
53 : #include <string>
54 :
55 : // ObjexxFCL Headers
56 : #include <ObjexxFCL/Array1D.hh>
57 : #include <ObjexxFCL/Array1S.hh>
58 : #include <ObjexxFCL/Array2D.hh>
59 : #include <ObjexxFCL/Array2S.hh>
60 : #include <ObjexxFCL/Array3D.hh>
61 : #include <ObjexxFCL/Optional.hh>
62 :
63 : // EnergyPlus Headers
64 : #include <EnergyPlus/Data/BaseData.hh>
65 : #include <EnergyPlus/DataGlobals.hh>
66 : #include <EnergyPlus/DataHeatBalance.hh>
67 : #include <EnergyPlus/EnergyPlus.hh>
68 : #include <EnergyPlus/FileSystem.hh>
69 : #include <EnergyPlus/OutputProcessor.hh>
70 : #include <EnergyPlus/WeatherManager.hh>
71 :
72 : namespace EnergyPlus {
73 :
74 : // Forward declarations
75 : struct EnergyPlusData;
76 :
77 : namespace OutputReportTabular {
78 :
79 : // Using/Aliasing
80 :
81 : // Data
82 : // MODULE PARAMETER DEFINITIONS:
83 :
84 : enum class AggType
85 : {
86 : Invalid = -1,
87 : SumOrAvg,
88 : Maximum,
89 : Minimum,
90 : ValueWhenMaxMin,
91 : HoursZero,
92 : HoursNonZero,
93 : HoursPositive,
94 : HoursNonPositive,
95 : HoursNegative,
96 : HoursNonNegative,
97 : SumOrAverageHoursShown,
98 : MaximumDuringHoursShown,
99 : MinimumDuringHoursShown,
100 : Num
101 : };
102 :
103 : enum class TableStyle
104 : {
105 : Invalid = -1,
106 : Comma,
107 : Tab,
108 : Fixed,
109 : HTML,
110 : XML,
111 : Num
112 : };
113 :
114 : enum class UnitsStyle
115 : {
116 : Invalid = -1,
117 : None,
118 : JtoKWH,
119 : JtoMJ,
120 : JtoGJ,
121 : InchPound,
122 : NotFound,
123 : Num
124 : };
125 :
126 : enum class EndUseSubTableType
127 : {
128 : Invalid = -1,
129 : BySubCategory,
130 : BySpaceType,
131 : Num
132 : };
133 :
134 : enum LoadCompCol // These correspond to the columns in the load component table
135 : {
136 : // Invalid is not necessary since this is not specified by the user in the IDF
137 : SensInst = 1,
138 : SensDelay,
139 : SensRA,
140 : Latent,
141 : Total,
142 : Perc,
143 : Area,
144 : PerArea
145 : };
146 :
147 : enum LoadCompRow
148 : {
149 : // Invalid is not necessary since this is not specified by the user in the IDF
150 : // internal gains
151 : People = 1,
152 : Lights,
153 : Equip,
154 : Refrig,
155 : WaterUse,
156 : HvacLoss,
157 : PowerGen,
158 :
159 : // misc
160 : DOAS,
161 : Infil,
162 : ZoneVent,
163 : IntZonMix,
164 :
165 : // opaque surfaces
166 : Roof,
167 : IntZonCeil,
168 : OtherRoof,
169 : ExtWall,
170 : IntZonWall,
171 : GrdWall,
172 : OtherWall,
173 : ExtFlr,
174 : IntZonFlr,
175 : GrdFlr,
176 : OtherFlr,
177 :
178 : // subsurfaces
179 : FeneCond,
180 : FeneSolr,
181 : OpqDoor,
182 :
183 : // total
184 : GrdTot
185 : };
186 :
187 : // BEPS Report Related Variables
188 : // From Report:Table:Predefined - BEPS
189 : constexpr int numResourceTypes(14);
190 : constexpr int numSourceTypes(12);
191 :
192 : constexpr const char *validChars("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_:.");
193 :
194 : enum class OutputType
195 : {
196 : Invalid = -1,
197 : Zone,
198 : AirLoop,
199 : Facility,
200 : Num
201 : };
202 :
203 : // MODULE VARIABLE DECLARATIONS:
204 :
205 : // The Binned table type is different and only references one variable and its structure is very
206 : // different from the others so it is has its own type.
207 :
208 : constexpr int numNamedMonthly(63);
209 : // These reports are detailed/named in routine InitializePredefinedMonthlyTitles
210 :
211 : // Allow up to five output files to be created
212 : constexpr int maxNumStyles(5);
213 :
214 : // LineTypes for reading the stat file
215 : enum class StatLineType
216 : {
217 : Invalid = -1,
218 : Initialized, // used as a dummy placeholder
219 : StatisticsLine,
220 : LocationLine,
221 : LatLongLine,
222 : ElevationLine,
223 : StdPressureLine,
224 : DataSourceLine,
225 : WMOStationLine,
226 : DesignConditionsLine,
227 : HeatingConditionsLine,
228 : CoolingConditionsLine,
229 : StdHDDLine,
230 : StdCDDLine,
231 : MaxDryBulbLine,
232 : MinDryBulbLine,
233 : MaxDewPointLine,
234 : MinDewPointLine,
235 : WithHDDLine,
236 : WithCDDLine,
237 : MaxHourlyPrec,
238 : MonthlyPrec,
239 : KoppenLine,
240 : KoppenDes1Line,
241 : KoppenDes2Line,
242 : AshStdLine,
243 : AshStdDes1Line,
244 : AshStdDes2Line,
245 : AshStdDes3Line,
246 : Num
247 : };
248 :
249 : static constexpr std::array<DataHeatBalance::IntGainType, 1> IntGainTypesTubularGCLS = {DataHeatBalance::IntGainType::DaylightingDeviceTubular};
250 :
251 : // Types
252 :
253 1196 : struct OutputTableBinnedType
254 : {
255 : // Members
256 : std::string keyValue; // the key value (usually an asterisk to indicate all variables
257 : std::string varOrMeter; // the name of the variable or meter
258 : Real64 intervalStart; // The lowest value for the intervals being binned into.
259 : Real64 intervalSize; // The size of the bins starting with Interval start.
260 : int intervalCount; // The number of bins used. The number of hours below the start of
261 : // the lowest bin and above the value of the last bin are also shown.
262 : int resIndex; // result index - pointer to BinResults array
263 : int numTables;
264 : OutputProcessor::VariableType typeOfVar;
265 : OutputProcessor::StoreType avgSum; // Variable is Averaged=1 or Summed=2
266 : OutputProcessor::TimeStepType stepType; // Variable time step is Zone=1 or HVAC=2
267 : OutputProcessor::Unit units; // the units enumeration
268 : std::string ScheduleName; // the name of the schedule
269 : int scheduleIndex; // index to the schedule specified - if no schedule use zero
270 :
271 : // Default Constructor
272 768 : OutputTableBinnedType()
273 768 : : intervalStart(0.0), intervalSize(0.0), intervalCount(0), resIndex(0), numTables(0), typeOfVar(OutputProcessor::VariableType::NotFound),
274 768 : avgSum(OutputProcessor::StoreType::Averaged), stepType(OutputProcessor::TimeStepType::Zone), scheduleIndex(0)
275 : {
276 768 : }
277 : };
278 :
279 2136 : struct BinResultsType
280 : {
281 : // Members
282 : Array1D<Real64> mnth; // monthly bins
283 : Array1D<Real64> hrly; // hourly bins
284 :
285 : // Default Constructor
286 2136 : BinResultsType() : mnth(12, 0.0), hrly(24, 0.0)
287 : {
288 2136 : }
289 : };
290 :
291 712 : struct BinObjVarIDType
292 : {
293 : // Members
294 : std::string namesOfObj; // name of the object
295 : int varMeterNum; // variable or meter number
296 :
297 : // Default Constructor
298 712 : BinObjVarIDType() : varMeterNum(0)
299 : {
300 712 : }
301 : };
302 :
303 : struct BinStatisticsType
304 : {
305 : // Members
306 : Real64 sum; // sum of the variable
307 : Real64 sum2; // sum of the variable squared
308 : int n; // number of items in sum
309 : Real64 minimum; // minimum value
310 : Real64 maximum; // maximum value
311 :
312 : // Default Constructor
313 712 : BinStatisticsType() : sum(0.0), sum2(0.0), n(0), minimum(0.0), maximum(0.0)
314 : {
315 712 : }
316 : };
317 :
318 92710 : struct NamedMonthlyType
319 : {
320 : // Members
321 : std::string title; // report title
322 : bool show; // if report should be shown
323 :
324 : // Default Constructor
325 730 : NamedMonthlyType() : show(false)
326 : {
327 730 : }
328 : };
329 :
330 7323 : struct MonthlyInputType
331 : {
332 : // Members
333 : std::string name; // identifier
334 : int numFieldSet; // number of monthly field sets
335 : int firstFieldSet; // pointer to the first field set
336 : int numTables; // number of tables
337 : int firstTable; // pointer to the first table
338 : int showDigits; // the number of digits to be shown
339 :
340 : // Default Constructor
341 73 : MonthlyInputType() : numFieldSet(0), firstFieldSet(0), numTables(0), firstTable(0), showDigits(0)
342 : {
343 73 : }
344 : };
345 :
346 74621 : struct MonthlyFieldSetInputType
347 : {
348 : // Members
349 : std::string variMeter; // the name of the variable or meter
350 : std::string colHead; // the column header to use instead of the variable name (only for predefined)
351 : AggType aggregate; // the type of aggregation for the variable (see aggType parameters)
352 : OutputProcessor::Unit varUnits; // Units enumeration
353 : std::string variMeterUpper; // the name of the variable or meter uppercased
354 : OutputProcessor::VariableType typeOfVar;
355 : int keyCount; // noel
356 : OutputProcessor::StoreType varAvgSum; // Variable is Averaged=1 or Summed=2
357 : OutputProcessor::TimeStepType varStepType; // Variable time step is Zone=1 or HVAC=2
358 : Array1D_string NamesOfKeys; // keyNames !noel
359 : Array1D_int IndexesForKeyVar; // keyVarIndexes !noel
360 :
361 : // Default Constructor
362 121 : MonthlyFieldSetInputType()
363 121 : : aggregate(AggType::Invalid), varUnits(OutputProcessor::Unit::None), typeOfVar(OutputProcessor::VariableType::NotFound), keyCount(0),
364 121 : varAvgSum(OutputProcessor::StoreType::Averaged), varStepType(OutputProcessor::TimeStepType::Zone)
365 : {
366 121 : }
367 : };
368 :
369 2 : struct MonthlyTablesType
370 : {
371 : // Members
372 : std::string keyValue; // the key value - the object names that result in the variable
373 : int firstColumn; // pointer to the monthly column array for the first item
374 : int numColumns; // number of columns for the table
375 :
376 : // Default Constructor
377 2 : MonthlyTablesType() : firstColumn(0), numColumns(0)
378 : {
379 2 : }
380 : };
381 :
382 2 : struct MonthlyColumnsType
383 : {
384 : // Members
385 : std::string varName; // name of variable
386 : std::string colHead; // column header (not used for user defined monthly)
387 : int varNum; // variable or meter number
388 : OutputProcessor::VariableType typeOfVar; // 0=not found, 1=integer, 2=real, 3=meter
389 : OutputProcessor::StoreType avgSum; // Variable is Averaged=1 or Summed=2
390 : OutputProcessor::TimeStepType stepType; // Variable time step is Zone=1 or HVAC=2
391 : OutputProcessor::Unit units; // the units string, may be blank
392 : AggType aggType; // index to the type of aggregation (see list of parameters)
393 : Array1D<Real64> reslt; // monthly results
394 : Array1D<Real64> duration; // the time during which results are summed for use in averages
395 : Array1D_int timeStamp; // encoded timestamp of max or min
396 : Real64 aggForStep; // holds the aggregation for the HVAC time steps when smaller than
397 : // the zone timestep
398 :
399 : // Default Constructor
400 2 : MonthlyColumnsType()
401 2 : : varNum(0), typeOfVar(OutputProcessor::VariableType::NotFound), avgSum(OutputProcessor::StoreType::Averaged),
402 : stepType(OutputProcessor::TimeStepType::Zone), units(OutputProcessor::Unit::None), aggType(AggType::Invalid), reslt(12, 0.0),
403 2 : duration(12, 0.0), timeStamp(12, 0), aggForStep(0.0)
404 : {
405 2 : }
406 : };
407 :
408 2091 : struct TOCEntriesType
409 : {
410 : // Members
411 : std::string reportName; // the name of the individual report
412 : std::string sectionName; // the name of the section containing individual reports
413 : bool isWritten; // flag if the entry has been written to TOC
414 :
415 : // Default Constructor
416 51 : TOCEntriesType() : isWritten(false)
417 : {
418 51 : }
419 : };
420 :
421 182253 : struct UnitConvType
422 : {
423 : // Members
424 : std::string siName; // the name abbreviation or symbol of the SI units
425 : std::string ipName; // the name abbreviation or symbol of the IP units
426 : Real64 mult; // the multiplier used to convert from SI to IP in IP = (SI * mult) + offset
427 : Real64 offset; // the offset used to convert from SI to IP in IP = (SI * mult) + offset
428 : std::string hint; // the string used when multiple SI units match
429 : bool several; // several different options for the SI unit to be converted into IP
430 : bool is_default; // if part of a set of "several" this should be used as default
431 :
432 : // Default Constructor
433 769 : UnitConvType() : mult(1.0), offset(0.0), several(false), is_default(false)
434 : {
435 769 : }
436 : };
437 :
438 1058 : struct CompLoadTablesType
439 : {
440 : // members
441 : int desDayNum; // design day number
442 : int timeStepMax; // times step of the day that the maximum occurs
443 : Array2D<Real64> cells; // main component table results (column, row)
444 : Array2D_bool cellUsed; // flag if the cell is used for the table of results (column, row)
445 : std::string peakDateHrMin; // string containing peak timestamp
446 : Real64 outsideDryBulb; // outside dry bulb temperature at peak
447 : Real64 outsideWetBulb; // outside wet bulb temperature at peak
448 : Real64 outsideHumRatio; // outside humidity ratio at peak
449 : Real64 zoneDryBulb; // zone dry bulb temperature at peak
450 : Real64 zoneRelHum; // zone relative humidity at peak
451 : Real64 zoneHumRatio; // zone humidity ratio at peak
452 :
453 : Real64 supAirTemp; // supply air temperature
454 : Real64 mixAirTemp; // mixed air temperature
455 : Real64 mainFanAirFlow; // main fan air flow
456 : Real64 outsideAirFlow; // outside air flow
457 : Real64 designPeakLoad; // design peak load
458 : Real64 diffDesignPeak; // difference between Design and Peak Load
459 :
460 : Real64 peakDesSensLoad; // peak design sensible load
461 : Real64 estInstDelSensLoad; // estimated instant plus delayed sensible load
462 : Real64 diffPeakEst; // difference between the peak design sensible load and the estimated instant plus delayed sensible load
463 : Array1D_int zoneIndices; // the zone numbers covered by the report
464 :
465 : Real64 outsideAirRatio; // outside Air
466 : Real64 floorArea; // floor area
467 : Real64 airflowPerFlrArea; // airflow per floor area
468 : Real64 airflowPerTotCap; // airflow per total capacity
469 : Real64 areaPerTotCap; // area per total capacity
470 : Real64 totCapPerArea; // total capacity per area
471 : Real64 chlPumpPerFlow; // chiller pump power per flow
472 : Real64 cndPumpPerFlow; // condenser pump power per flow
473 : Real64 numPeople; // number of people
474 :
475 : // default constructor
476 215 : CompLoadTablesType()
477 215 : : desDayNum(0), timeStepMax(0), outsideDryBulb(0.), outsideWetBulb(0.), outsideHumRatio(0.), zoneDryBulb(0.), zoneRelHum(0.),
478 : supAirTemp(0.), mixAirTemp(0.), mainFanAirFlow(0.), outsideAirFlow(0.), designPeakLoad(0.), diffDesignPeak(0.), peakDesSensLoad(0.),
479 : estInstDelSensLoad(0.), diffPeakEst(0.), outsideAirRatio(0.), floorArea(0.), airflowPerFlrArea(0.), airflowPerTotCap(0.),
480 215 : areaPerTotCap(0.), totCapPerArea(0.), chlPumpPerFlow(0.), cndPumpPerFlow(0.), numPeople(0.)
481 :
482 : {
483 215 : }
484 : };
485 :
486 : struct ZompComponentAreasType
487 : {
488 : // members
489 : Real64 floor;
490 : Real64 roof;
491 : Real64 ceiling;
492 : Real64 extWall;
493 : Real64 intZoneWall;
494 : Real64 grndCntWall;
495 : Real64 extFloor;
496 : Real64 intZoneFloor;
497 : Real64 grndCntFloor;
498 : Real64 fenestration;
499 : Real64 door;
500 :
501 : // default constructor
502 23 : ZompComponentAreasType()
503 23 : : floor(0.), roof(0.), ceiling(0.), extWall(0.), intZoneWall(0.), grndCntWall(0.), extFloor(0.), intZoneFloor(0.), grndCntFloor(0.),
504 23 : fenestration(0.), door(0.)
505 : {
506 23 : }
507 : };
508 :
509 : // Functions
510 :
511 : std::ofstream &open_tbl_stream(EnergyPlusData &state, int const iStyle, fs::path const &filePath, bool output_to_file = true);
512 :
513 : void UpdateTabularReports(EnergyPlusData &state, OutputProcessor::TimeStepType t_timeStepType); // What kind of data to update (Zone, HVAC)
514 :
515 : //======================================================================================================================
516 : //======================================================================================================================
517 :
518 : // GET INPUT ROUTINES
519 :
520 : //======================================================================================================================
521 : //======================================================================================================================
522 :
523 : void GetInputTabularMonthly(EnergyPlusData &state);
524 :
525 : int AddMonthlyReport(EnergyPlusData &state, std::string const &inReportName, int const inNumDigitsShown);
526 :
527 : void AddMonthlyFieldSetInput(
528 : EnergyPlusData &state, int const inMonthReport, std::string const &inVariMeter, std::string const &inColHead, AggType const inAggregate);
529 :
530 : void InitializeTabularMonthly(EnergyPlusData &state);
531 :
532 : bool isInvalidAggregationOrder(EnergyPlusData &state);
533 :
534 : void GetInputTabularTimeBins(EnergyPlusData &state);
535 :
536 : bool warningAboutKeyNotFound(EnergyPlusData &state, int foundIndex, int inObjIndex, std::string const &moduleName);
537 :
538 : void GetInputTabularStyle(EnergyPlusData &state);
539 :
540 : UnitsStyle SetUnitsStyleFromString(std::string const &unitStringIn);
541 :
542 : void GetInputOutputTableSummaryReports(EnergyPlusData &state);
543 :
544 : bool isCompLoadRepReq(EnergyPlusData &state);
545 :
546 : bool hasSizingPeriodsDays(EnergyPlusData &state);
547 :
548 : void InitializePredefinedMonthlyTitles(EnergyPlusData &state);
549 :
550 : void CreatePredefinedMonthlyReports(EnergyPlusData &state);
551 :
552 : void GetInputFuelAndPollutionFactors(EnergyPlusData &state);
553 :
554 : //======================================================================================================================
555 : //======================================================================================================================
556 :
557 : // OTHER INITIALIZATION ROUTINES
558 :
559 : //======================================================================================================================
560 : //======================================================================================================================
561 :
562 : void OpenOutputTabularFile(EnergyPlusData &state);
563 :
564 : void CloseOutputTabularFile(EnergyPlusData &state);
565 :
566 : void WriteTableOfContents(EnergyPlusData &state);
567 :
568 : void AddTOCReportPeriod(const int nReportPeriods,
569 : const std::string kw,
570 : const Array1D<WeatherManager::ReportPeriodData> &ReportPeriodInputData,
571 : std::ostream &tbl_stream);
572 :
573 : //======================================================================================================================
574 : //======================================================================================================================
575 :
576 : // GATHER DATA EACH TIME STEP ROUTINES
577 :
578 : //======================================================================================================================
579 : //======================================================================================================================
580 :
581 : void GatherBinResultsForTimestep(EnergyPlusData &state, OutputProcessor::TimeStepType t_timeStepType); // What kind of data to update (Zone, HVAC)
582 :
583 : void GatherMonthlyResultsForTimestep(EnergyPlusData &state,
584 : OutputProcessor::TimeStepType t_timeStepType); // What kind of data to update (Zone, HVAC)
585 :
586 : void GatherBEPSResultsForTimestep(EnergyPlusData &state,
587 : OutputProcessor::TimeStepType t_timeStepType); // What kind of data to update (Zone, HVAC)
588 :
589 : void GatherSourceEnergyEndUseResultsForTimestep(EnergyPlusData &state,
590 : OutputProcessor::TimeStepType t_timeStepType); // What kind of data to update (Zone, HVAC)
591 :
592 : void GatherPeakDemandForTimestep(EnergyPlusData &state, OutputProcessor::TimeStepType t_timeStepType); // What kind of data to update (Zone, HVAC)
593 :
594 : void GatherHeatGainReport(EnergyPlusData &state, OutputProcessor::TimeStepType t_timeStepType); // What kind of data to update (Zone, HVAC)
595 :
596 : void GatherHeatEmissionReport(EnergyPlusData &state, OutputProcessor::TimeStepType t_timeStepType);
597 :
598 : void CalcHeatEmissionReport(EnergyPlusData &state);
599 :
600 : //======================================================================================================================
601 : //======================================================================================================================
602 :
603 : // WRITE OUTPUT FILE ROUTINES
604 :
605 : //======================================================================================================================
606 : //======================================================================================================================
607 :
608 : void WriteTabularReports(EnergyPlusData &state);
609 :
610 : void parseStatLine(const std::string &lineIn,
611 : StatLineType &lineType,
612 : bool &desConditionlinepassed,
613 : bool &heatingDesignlinepassed,
614 : bool &coolingDesignlinepassed,
615 : bool &isKoppen,
616 : bool &insideLiquidPrecipitation);
617 :
618 : void FillWeatherPredefinedEntries(EnergyPlusData &state);
619 :
620 : std::string GetColumnUsingTabs(std::string const &inString, // Input String
621 : int const colNum // Column number
622 : );
623 :
624 : void FillRemainingPredefinedEntries(EnergyPlusData &state);
625 :
626 : void WriteMonthlyTables(EnergyPlusData &state);
627 :
628 : void WriteTimeBinTables(EnergyPlusData &state);
629 :
630 : void WriteBEPSTable(EnergyPlusData &state);
631 :
632 : void writeBEPSEndUseBySubCatOrSpaceType(EnergyPlusData &state,
633 : EndUseSubTableType tableType,
634 : Array2D<Real64> &endUseSubOther,
635 : Array2D<Real64> &collapsedEndUse,
636 : Array3D<Real64> &collapsedEndUseSub,
637 : Array1D_bool &needOtherRow,
638 : const UnitsStyle unitsStyle_cur,
639 : const bool produceTabular,
640 : const bool produceSQLite);
641 :
642 : std::string ResourceWarningMessage(std::string const &resource);
643 :
644 : Real64 WaterConversionFunct(Real64 WaterTotal, Real64 ConversionFactor);
645 :
646 : void WriteSourceEnergyEndUseSummary(EnergyPlusData &state);
647 :
648 : void WriteDemandEndUseSummary(EnergyPlusData &state);
649 :
650 : void WriteCompCostTable(EnergyPlusData &state);
651 :
652 : void writeRowReportPeriodInputVeri(const std::string reportType,
653 : Array2D_string &tableBody,
654 : const int rowid,
655 : const int periodIdx,
656 : const Array1D<WeatherManager::ReportPeriodData> &ReportPeriodInputData);
657 :
658 : void WriteVeriSumTable(EnergyPlusData &state);
659 :
660 : void writeVeriSumSpaceTables(EnergyPlusData &state, bool produceTabular, bool produceSQLite);
661 :
662 : void WriteAdaptiveComfortTable(EnergyPlusData &state);
663 :
664 : std::string formatReportPeriodTimestamp(const int year, const int month, const int day, const int hour);
665 :
666 : void WriteReportHeaderReportingPeriod(EnergyPlusData &state,
667 : const std::string reportKeyWord,
668 : const int periodIdx,
669 : const Array1D<WeatherManager::ReportPeriodData> &ReportPeriodInputData);
670 :
671 : void WriteReportPeriodTimeConsumption(EnergyPlusData &state);
672 :
673 : void WriteThermalResilienceTablesRepPeriod(EnergyPlusData &state, int const periodIdx);
674 :
675 : void WriteThermalResilienceTables(EnergyPlusData &state);
676 :
677 : void WriteCO2ResilienceTables(EnergyPlusData &state);
678 :
679 : void WriteCO2ResilienceTablesRepPeriod(EnergyPlusData &state, const int periodIdx);
680 :
681 : void WriteVisualResilienceTables(EnergyPlusData &state);
682 :
683 : void WriteVisualResilienceTablesRepPeriod(EnergyPlusData &state, const int periodIdx);
684 :
685 : template <int columnNum>
686 : void WriteResilienceBinsTable(EnergyPlusData &state,
687 : std::array<int, columnNum> const &columnHead,
688 : const std::array<Real64, columnNum> DataHeatBalance::ZoneResilience::*memberPtr,
689 : Real64 const unitConvMultiplier = 1.0);
690 :
691 : template <int columnNum>
692 : void WriteResilienceBinsTableNonPreDefUseZoneData(EnergyPlusData &state,
693 : const std::string &tableName,
694 : Array1D_string const &columnHead,
695 : Array1D_int &columnWidth,
696 : const std::array<Real64, columnNum> DataHeatBalance::ZoneResilience::*memberPtr,
697 : Array1D_string &rowHead,
698 : Array2D_string &tableBody,
699 : Real64 const unitConvMultiplier = 1.0);
700 :
701 : void WriteResilienceBinsTableReportingPeriod(EnergyPlusData &state,
702 : const std::string &tableType,
703 : int const columnNum,
704 : int const periodIdx,
705 : const std::string &periodTitle,
706 : const std::string &tableName,
707 : Array1D_string const &columnHead,
708 : Array1D_int &columnWidth,
709 : Array2D<std::vector<Real64>> const &ZoneBins,
710 : Array1D_string &rowHead,
711 : Array2D_string &tableBody,
712 : Real64 const unitConvMultiplier = 1.0);
713 :
714 : void WriteSETHoursTableNonPreDefUseZoneData(EnergyPlusData &state,
715 : int const columnNum,
716 : const std::string &tableName,
717 : Array1D_string const &columnHead,
718 : Array1D_int &columnWidth,
719 : const std::array<Real64, 5> DataHeatBalance::ZoneResilience::*memberPtr,
720 : Array1D_string &rowHead,
721 : Array2D_string &tableBody,
722 : Real64 const unitConvMultiplier = 1.0);
723 :
724 : void WriteSETHoursTableReportingPeriod(EnergyPlusData &state,
725 : int const columnNum,
726 : int const periodIdx,
727 : const std::string &periodTitle,
728 : const std::string &tableName,
729 : Array1D_string const &columnHead,
730 : Array1D_int &columnWidth,
731 : Array2D<std::vector<Real64>> const &ZoneBins,
732 : Array1D_string &rowHead,
733 : Array2D_string &tableBody,
734 : Real64 const unitConvMultiplier = 1.0);
735 :
736 : // return the table entry of the rowIndex-th row and columnIndex-th col
737 : std::string RetrieveEntryFromTableBody(Array2D_string &tableBody, int const rowIndex, int const columnIndex);
738 :
739 : void WriteHourOfSafetyTable(EnergyPlusData &state,
740 : int const columnNum,
741 : std::vector<int> const &columnHead,
742 : Array1D<std::vector<Real64>> const &ZoneBins,
743 : int const dateColIdx);
744 :
745 : void WriteHourOfSafetyTableNonPreDefUseZoneData(EnergyPlusData &state,
746 : int const columnNum,
747 : const std::string &tableName,
748 : Array1D_string const &columnHead,
749 : Array1D_int &columnWidth,
750 : const std::array<Real64, 5> DataHeatBalance::ZoneResilience::*memberPtr,
751 : Array1D_string &rowHead,
752 : Array2D_string &tableBody,
753 : int const dateColIdx);
754 :
755 : void WriteHourOfSafetyTableReportingPeriod(EnergyPlusData &state,
756 : int const columnNum,
757 : int const periodIdx,
758 : const std::string &periodTitle,
759 : const std::string &tableName,
760 : Array1D_string const &columnHead,
761 : Array1D_int &columnWidth,
762 : Array2D<std::vector<Real64>> const &ZoneBins,
763 : Array1D_string &rowHead,
764 : Array2D_string &tableBody,
765 : int const dateColIdx);
766 :
767 : void WriteHeatEmissionTable(EnergyPlusData &state);
768 :
769 : void WritePredefinedTables(EnergyPlusData &state);
770 :
771 : void WriteComponentSizing(EnergyPlusData &state);
772 :
773 : void WriteSurfaceShadowing(EnergyPlusData &state);
774 :
775 : void WriteEioTables(EnergyPlusData &state);
776 :
777 : int unitsFromHeading(EnergyPlusData &state, std::string &heading);
778 :
779 : int unitsFromHeading(EnergyPlusData &state, std::string &heading, UnitsStyle unitsStyle_para);
780 :
781 : std::vector<std::string> splitCommaString(std::string const &inputString);
782 :
783 : void AddTOCLoadComponentTableSummaries(EnergyPlusData &state);
784 :
785 : void AllocateLoadComponentArrays(EnergyPlusData &state);
786 :
787 : void DeallocateLoadComponentArrays(EnergyPlusData &state);
788 :
789 : void ComputeLoadComponentDecayCurve(EnergyPlusData &state);
790 :
791 : void GatherComponentLoadsSurface(EnergyPlusData &state);
792 :
793 : void GatherComponentLoadsHVAC(EnergyPlusData &state);
794 :
795 : void WriteLoadComponentSummaryTables(EnergyPlusData &state);
796 :
797 : void GetDelaySequences(EnergyPlusData &state,
798 : int desDaySelected,
799 : bool isCooling,
800 : int zoneIndex,
801 : Array1D<Real64> &peopleDelaySeq,
802 : Array1D<Real64> &equipDelaySeq,
803 : Array1D<Real64> &hvacLossDelaySeq,
804 : Array1D<Real64> &powerGenDelaySeq,
805 : Array1D<Real64> &lightDelaySeq,
806 : Array1D<Real64> &feneSolarDelaySeq,
807 : Array3D<Real64> &feneCondInstantSeq,
808 : Array2D<Real64> &surfDelaySeq);
809 :
810 : void ComputeTableBodyUsingMovingAvg(EnergyPlusData &state,
811 : Array2D<Real64> &resultCells,
812 : Array2D_bool &resultCellsUsed,
813 : int desDaySelected,
814 : int timeOfMax,
815 : int zoneIndex,
816 : Array1D<Real64> const &peopleDelaySeq,
817 : Array1D<Real64> const &equipDelaySeq,
818 : Array1D<Real64> const &hvacLossDelaySeq,
819 : Array1D<Real64> const &powerGenDelaySeq,
820 : Array1D<Real64> const &lightDelaySeq,
821 : Array1D<Real64> const &feneSolarDelaySeq,
822 : Array3D<Real64> const &feneCondInstantSeqLoc,
823 : Array2D<Real64> const &surfDelaySeq);
824 :
825 : void
826 : CollectPeakZoneConditions(EnergyPlusData &state, CompLoadTablesType &compLoad, int desDaySelected, int timeOfMax, int zoneIndex, bool isCooling);
827 :
828 : void ComputeEngineeringChecks(CompLoadTablesType &compLoad);
829 :
830 : void GetZoneComponentAreas(EnergyPlusData &state, Array1D<ZompComponentAreasType> &areas);
831 :
832 : void AddAreaColumnForZone(int zoneNum, Array1D<ZompComponentAreasType> const &compAreas, CompLoadTablesType &compLoadTotal);
833 :
834 : void CombineLoadCompResults(CompLoadTablesType &compLoadTotal, CompLoadTablesType const &compLoadPartial, Real64 multiplier);
835 :
836 : void AddTotalRowsForLoadSummary(CompLoadTablesType &compLoadTotal);
837 :
838 : void ComputePeakDifference(CompLoadTablesType &compLoad);
839 :
840 : void LoadSummaryUnitConversion(EnergyPlusData &state, CompLoadTablesType &compLoadTotal);
841 :
842 : void LoadSummaryUnitConversion(EnergyPlusData &state, CompLoadTablesType &compLoadTotal, UnitsStyle unitsStyle_para);
843 :
844 : void CreateListOfZonesForAirLoop(EnergyPlusData &state, CompLoadTablesType &compLoad, Array1D_int const &zoneToAirLoop, int curAirLoop);
845 :
846 : void OutputCompLoadSummary(EnergyPlusData &state,
847 : EnergyPlus::OutputReportTabular::OutputType kind,
848 : CompLoadTablesType const &compLoadCool,
849 : CompLoadTablesType const &compLoadHeat,
850 : int zoneOrAirLoopIndex,
851 : UnitsStyle unitsStyle_para,
852 : bool produceTabular_para,
853 : bool produceSQLite_para);
854 :
855 : void WriteReportHeaders(EnergyPlusData &state,
856 : std::string const &reportName,
857 : std::string const &objectName,
858 : OutputProcessor::StoreType const averageOrSum);
859 :
860 : void WriteSubtitle(EnergyPlusData &state, std::string const &subtitle);
861 :
862 : void WriteTextLine(EnergyPlusData &state, std::string const &lineOfText, Optional_bool_const isBold = _);
863 :
864 : void WriteTable(EnergyPlusData &state,
865 : Array2S_string const body, // row,column
866 : const Array1D_string &rowLabels,
867 : const Array1D_string &columnLabels,
868 : Array1D_int &widthColumn,
869 : bool transposeXML = false,
870 : std::string_view const footnoteText = {});
871 :
872 : bool produceDualUnitsFlags(int iUnit_Sys,
873 : EnergyPlus::OutputReportTabular::UnitsStyle unitsStyle_Tab,
874 : EnergyPlus::OutputReportTabular::UnitsStyle unitsStyle_Sql,
875 : UnitsStyle &unitsStyle_Cur,
876 : bool &produce_Tab,
877 : bool &produce_Sql);
878 :
879 : std::string MakeAnchorName(std::string const &reportString, std::string const &objectString);
880 :
881 : std::string InsertCurrencySymbol(EnergyPlusData &state,
882 : std::string const &inString, // Input String
883 : bool const isHTML // True if an HTML string
884 : );
885 :
886 : std::string ConvertToElementTag(std::string const &inString); // Input String
887 :
888 : std::string ConvertUnicodeToUTF8(unsigned long const codepoint);
889 :
890 : std::string ConvertToEscaped(std::string const &inString, // Input String
891 : bool isXML = true); // isXML if false assumes HTML and will not convert quotes and apostrophes, for HTML4
892 :
893 : void DetermineBuildingFloorArea(EnergyPlusData &state);
894 :
895 : // Tables with Subcategories in particular have a blank for rowHead for display in the HTML output.
896 : // This routine will fill up the blanks for output to Sql in particular
897 : void FillRowHead(Array1D_string &rowHead);
898 :
899 : //======================================================================================================================
900 : //======================================================================================================================
901 :
902 : // ROUTINES TO RESET GATHERED VALUES TO ZERO
903 :
904 : //======================================================================================================================
905 : //======================================================================================================================
906 :
907 : void ResetTabularReports(EnergyPlusData &state);
908 :
909 : void ResetMonthlyGathering(EnergyPlusData &state);
910 :
911 : void ResetBinGathering(EnergyPlusData &state);
912 :
913 : void ResetBEPSGathering(EnergyPlusData &state);
914 :
915 : void ResetSourceEnergyEndUseGathering(EnergyPlusData &state);
916 :
917 : void ResetPeakDemandGathering(EnergyPlusData &state);
918 :
919 : void ResetHeatGainGathering(EnergyPlusData &state);
920 :
921 : void ResetRemainingPredefinedEntries(EnergyPlusData &state);
922 :
923 : void ResetAdaptiveComfort(EnergyPlusData &state);
924 :
925 : //======================================================================================================================
926 : //======================================================================================================================
927 :
928 : // ROUTINES RELATED TO IF VALUE IS IN A RANGE
929 :
930 : //======================================================================================================================
931 : //======================================================================================================================
932 :
933 : bool isInTriangle(
934 : Real64 const qx, Real64 const qy, Real64 const x1, Real64 const y1, Real64 const x2, Real64 const y2, Real64 const x3, Real64 const y3);
935 :
936 : bool isInQuadrilateral(Real64 const qx,
937 : Real64 const qy,
938 : Real64 const ax,
939 : Real64 const ay,
940 : Real64 const bx,
941 : Real64 const by,
942 : Real64 const cx,
943 : Real64 const cy,
944 : Real64 const dx,
945 : Real64 const dy);
946 :
947 : //======================================================================================================================
948 : //======================================================================================================================
949 :
950 : // SUPPORT ROUTINES
951 :
952 : //======================================================================================================================
953 : //======================================================================================================================
954 :
955 : std::string RealToStr(Real64 const RealIn, int const numDigits);
956 :
957 : Real64 StrToReal(std::string_view stringIn);
958 :
959 : std::string DateToString(int const codedDate); // word containing encoded month, day, hour, minute
960 :
961 : bool isNumber(std::string const &s);
962 :
963 : int digitsAferDecimal(std::string const &s);
964 :
965 : void AddTOCEntry(EnergyPlusData &state, std::string const &nameSection, std::string const &nameReport);
966 :
967 : void SetupUnitConversions(EnergyPlusData &state);
968 :
969 : std::string GetUnitSubString(std::string const &inString); // Input String
970 :
971 : void LookupSItoIP(EnergyPlusData &state, std::string const &stringInWithSI, int &unitConvIndex, std::string &stringOutWithIP);
972 :
973 : void LookupJtokWH(EnergyPlusData &state, std::string const &stringInWithJ, int &unitConvIndex, std::string &stringOutWithKWH);
974 :
975 : Real64 ConvertIP(EnergyPlusData &state, int const unitConvIndex, Real64 const SIvalue);
976 :
977 : Real64 ConvertIPdelta(EnergyPlusData &state, int const unitConvIndex, Real64 const SIvalue);
978 :
979 : void GetUnitConversion(EnergyPlusData &state, int const unitConvIndex, Real64 &multiplier, Real64 &offset, std::string &IPunit);
980 :
981 : Real64 getSpecificUnitMultiplier(EnergyPlusData &state, std::string const &SIunit, std::string const &IPunit);
982 :
983 : Real64 getSpecificUnitDivider(EnergyPlusData &state, std::string const &SIunit, std::string const &IPunit);
984 :
985 : Real64 getSpecificUnitIndex(EnergyPlusData &state, std::string const &SIunit, std::string const &IPunit);
986 :
987 : } // namespace OutputReportTabular
988 :
989 5397 : struct OutputReportTabularData : BaseGlobalStruct
990 : {
991 :
992 : OutputReportTabular::UnitsStyle unitsStyle = OutputReportTabular::UnitsStyle::None;
993 : OutputReportTabular::UnitsStyle unitsStyle_SQLite = OutputReportTabular::UnitsStyle::NotFound;
994 : int OutputTableBinnedCount = 0;
995 : int BinResultsTableCount = 0;
996 : int BinResultsIntervalCount = 0;
997 : int MonthlyInputCount = 0;
998 : int sizeMonthlyInput = 0;
999 : int MonthlyFieldSetInputCount = 0;
1000 : int sizeMonthlyFieldSetInput = 0;
1001 : int MonthlyTablesCount = 0;
1002 : int MonthlyColumnsCount = 0;
1003 : Array1D_bool IsMonthGathered = Array1D_bool(12, false); // shown as true for any month used
1004 : int TOCEntriesCount = 0;
1005 : int TOCEntriesSize = 0;
1006 : int UnitConvSize = 0;
1007 : bool WriteTabularFiles = false;
1008 : bool GetInput = true;
1009 :
1010 : // From Report:Table:Style
1011 : int numStyles = 0;
1012 : std::ofstream csv_stream; // CSV table stream
1013 : std::ofstream tab_stream; // Tab table stream
1014 : std::ofstream fix_stream; // Fixed table stream
1015 : std::ofstream htm_stream; // HTML table stream
1016 : std::ofstream xml_stream; // XML table stream
1017 : Array1D<std::ofstream *> TabularOutputFile = Array1D<std::ofstream *>(
1018 3855 : OutputReportTabular::maxNumStyles, {&csv_stream, &tab_stream, &fix_stream, &htm_stream, &xml_stream}); // Table stream array
1019 : Array1D_string del = Array1D_string(OutputReportTabular::maxNumStyles); // the delimiter to use
1020 : Array1D<OutputReportTabular::TableStyle> TableStyle = Array1D<OutputReportTabular::TableStyle>(
1021 : OutputReportTabular::maxNumStyles, OutputReportTabular::TableStyle::Invalid); // see list of parameters
1022 :
1023 : Real64 timeInYear = 0.0;
1024 :
1025 : // Flags for predefined tabular reports
1026 : bool displayTabularBEPS = false;
1027 : bool displayLEEDSummary = false;
1028 : bool displayTabularCompCosts = false;
1029 : bool displayTabularVeriSum = false;
1030 : bool displayComponentSizing = false;
1031 : bool displaySurfaceShadowing = false;
1032 : bool displayDemandEndUse = false;
1033 : bool displayAdaptiveComfort = false;
1034 : bool displaySourceEnergyEndUseSummary = false;
1035 : bool displayZoneComponentLoadSummary = false;
1036 : bool displayAirLoopComponentLoadSummary = false;
1037 : bool displayFacilityComponentLoadSummary = false;
1038 : bool displayLifeCycleCostReport = false;
1039 : bool displayTariffReport = false;
1040 : bool displayEconomicResultSummary = false;
1041 : bool displayHeatEmissionsSummary = false;
1042 : bool displayEioSummary = false;
1043 : bool displayThermalResilienceSummary = false;
1044 : bool displayCO2ResilienceSummary = false;
1045 : bool displayVisualResilienceSummary = false;
1046 : bool displayThermalResilienceSummaryExplicitly = false;
1047 : bool displayCO2ResilienceSummaryExplicitly = false;
1048 : bool displayVisualResilienceSummaryExplicitly = false;
1049 : // BEPS Report Related Variables
1050 : // From Report:Table:Predefined - BEPS
1051 : // arrays that hold the meter numbers that are initialized at get input
1052 : Array1D_int meterNumTotalsBEPS = Array1D_int(OutputReportTabular::numResourceTypes, 0);
1053 : Array1D_int meterNumTotalsSource = Array1D_int(OutputReportTabular::numSourceTypes, 0);
1054 : Array1D_bool fuelfactorsused = Array1D_bool(OutputReportTabular::numSourceTypes, false);
1055 : Array1D_bool ffUsed = Array1D_bool(OutputReportTabular::numResourceTypes, false);
1056 : Array1D<Real64> SourceFactors = Array1D<Real64>(OutputReportTabular::numResourceTypes, 0.0);
1057 : Array1D_bool ffSchedUsed = Array1D_bool(OutputReportTabular::numResourceTypes, false);
1058 : Array1D_int ffSchedIndex = Array1D_int(OutputReportTabular::numResourceTypes, 0);
1059 : Array2D_int meterNumEndUseBEPS = Array2D_int(OutputReportTabular::numResourceTypes, DataGlobalConstantsData::iEndUseSize, 0);
1060 : Array3D_int meterNumEndUseSubBEPS;
1061 : Array3D_int meterNumEndUseSpTypeBEPS;
1062 : // arrays that hold the names of the resource and end uses
1063 : Array1D_string resourceTypeNames = Array1D_string(OutputReportTabular::numResourceTypes);
1064 : Array1D_string sourceTypeNames = Array1D_string(OutputReportTabular::numSourceTypes);
1065 : Array1D_string endUseNames = Array1D_string(DataGlobalConstantsData::iEndUseSize);
1066 : // arrays that hold the actual values for the year
1067 : Array1D<Real64> gatherTotalsBEPS = Array1D<Real64>(OutputReportTabular::numResourceTypes, 0.0);
1068 : Array1D<Real64> gatherTotalsBySourceBEPS = Array1D<Real64>(OutputReportTabular::numResourceTypes, 0.0);
1069 : Array1D<Real64> gatherTotalsSource = Array1D<Real64>(OutputReportTabular::numSourceTypes, 0.0);
1070 : Array1D<Real64> gatherTotalsBySource = Array1D<Real64>(OutputReportTabular::numSourceTypes, 0.0);
1071 : Array2D<Real64> gatherEndUseBEPS = Array2D<Real64>(OutputReportTabular::numResourceTypes, DataGlobalConstantsData::iEndUseSize, 0.0);
1072 : Array2D<Real64> gatherEndUseBySourceBEPS = Array2D<Real64>(OutputReportTabular::numResourceTypes, DataGlobalConstantsData::iEndUseSize, 0.0);
1073 : Array3D<Real64> gatherEndUseSubBEPS;
1074 : Array3D<Real64> gatherEndUseSpTypeBEPS;
1075 : Array1D_bool needOtherRowLEED45 = Array1D_bool(DataGlobalConstantsData::iEndUseSize);
1076 : Array1D_bool needOtherRowEndUse = Array1D_bool(DataGlobalConstantsData::iEndUseSize);
1077 :
1078 : // arrays the hold the demand values
1079 : Array1D<Real64> gatherDemandTotal = Array1D<Real64>(OutputReportTabular::numResourceTypes, 0.0);
1080 : Array2D<Real64> gatherDemandEndUse = Array2D<Real64>(OutputReportTabular::numResourceTypes, DataGlobalConstantsData::iEndUseSize, 0.0);
1081 : Array2D<Real64> gatherDemandIndEndUse = Array2D<Real64>(OutputReportTabular::numResourceTypes, DataGlobalConstantsData::iEndUseSize, 0.0);
1082 : Array3D<Real64> gatherDemandEndUseSub;
1083 : Array3D<Real64> gatherDemandIndEndUseSub;
1084 : Array1D_int gatherDemandTimeStamp = Array1D_int(OutputReportTabular::numResourceTypes, 0);
1085 :
1086 : // to keep track of hours for the BEPS report gathering
1087 : Real64 gatherElapsedTimeBEPS = 0.0;
1088 : // for normalization of results
1089 : Real64 buildingGrossFloorArea = 0.0;
1090 : Real64 buildingConditionedFloorArea = 0.0;
1091 : // keep track if schedules are used in fuel factors
1092 : bool fuelFactorSchedulesUsed = false;
1093 : // for electric load components on BEPS report
1094 : int meterNumPowerFuelFireGen = 0;
1095 : Real64 gatherPowerFuelFireGen = 0.0;
1096 : int meterNumPowerPV = 0;
1097 : Real64 gatherPowerPV = 0.0;
1098 : int meterNumPowerWind = 0;
1099 : Real64 gatherPowerWind = 0.0;
1100 : Real64 OverallNetEnergyFromStorage = 0.0;
1101 : int meterNumPowerHTGeothermal = 0;
1102 : Real64 gatherPowerHTGeothermal = 0.0;
1103 : int meterNumElecProduced = 0;
1104 : Real64 gatherElecProduced = 0.0;
1105 : int meterNumElecPurchased = 0;
1106 : Real64 gatherElecPurchased = 0.0;
1107 : int meterNumElecSurplusSold = 0;
1108 : Real64 gatherElecSurplusSold = 0.0;
1109 : int meterNumElecStorage = 0;
1110 : Real64 gatherElecStorage = 0.0;
1111 : int meterNumPowerConversion = 0;
1112 : Real64 gatherPowerConversion = 0.0;
1113 : // for on site thermal source components on BEPS report
1114 : int meterNumWaterHeatRecovery = 0;
1115 : Real64 gatherWaterHeatRecovery = 0.0;
1116 : int meterNumAirHeatRecoveryCool = 0;
1117 : Real64 gatherAirHeatRecoveryCool = 0.0;
1118 : int meterNumAirHeatRecoveryHeat = 0;
1119 : Real64 gatherAirHeatRecoveryHeat = 0.0;
1120 : int meterNumHeatHTGeothermal = 0;
1121 : Real64 gatherHeatHTGeothermal = 0.0;
1122 : int meterNumHeatSolarWater = 0;
1123 : Real64 gatherHeatSolarWater = 0.0;
1124 : int meterNumHeatSolarAir = 0;
1125 : Real64 gatherHeatSolarAir = 0.0;
1126 : // for on site water components on BEPS report
1127 : int meterNumRainWater = 0;
1128 : Real64 gatherRainWater = 0.0;
1129 : int meterNumCondensate = 0;
1130 : Real64 gatherCondensate = 0.0;
1131 : int meterNumGroundwater = 0;
1132 : Real64 gatherWellwater = 0.0;
1133 : int meterNumMains = 0;
1134 : Real64 gatherMains = 0.0;
1135 : int meterNumWaterEndUseTotal = 0;
1136 : Real64 gatherWaterEndUseTotal = 0.0;
1137 : // for source energy conversion factors on BEPS report
1138 : Real64 sourceFactorElectric = 0.0;
1139 : Real64 sourceFactorNaturalGas = 0.0;
1140 : Real64 efficiencyDistrictCooling = 0.0;
1141 : Real64 efficiencyDistrictHeating = 0.0;
1142 : Real64 sourceFactorSteam = 0.0;
1143 : Real64 sourceFactorGasoline = 0.0;
1144 : Real64 sourceFactorDiesel = 0.0;
1145 : Real64 sourceFactorCoal = 0.0;
1146 : Real64 sourceFactorFuelOil1 = 0.0;
1147 : Real64 sourceFactorFuelOil2 = 0.0;
1148 : Real64 sourceFactorPropane = 0.0;
1149 : Real64 sourceFactorOtherFuel1 = 0.0;
1150 : Real64 sourceFactorOtherFuel2 = 0.0;
1151 :
1152 : Array1D_int td = Array1D_int(8);
1153 : //(1) Current year
1154 : //(2) Current month
1155 : //(3) Current day
1156 : //(4) Time difference with respect to UTC in minutes (0-59)
1157 : //(5) Hour of the day (0-23)
1158 : //(6) Minutes (0-59)
1159 : //(7) Seconds (0-59)
1160 : //(8) Milliseconds (0-999)
1161 :
1162 : // Design day name storage
1163 : Array1D_string DesignDayName;
1164 : int DesignDayCount = 0;
1165 :
1166 : // arrays related to pulse and load component reporting
1167 : Array2D_int radiantPulseTimestep;
1168 : Array2D<Real64> radiantPulseReceived;
1169 : Array3D<Real64> loadConvectedNormal;
1170 : Array3D<Real64> loadConvectedWithPulse;
1171 : Array3D<Real64> netSurfRadSeq;
1172 : Array2D<Real64> decayCurveCool;
1173 : Array2D<Real64> decayCurveHeat;
1174 : Array3D<Real64> ITABSFseq; // used for determining the radiant fraction on each surface
1175 : Array3D<Real64> TMULTseq; // used for determining the radiant fraction on each surface
1176 :
1177 : Array3D<Real64> peopleInstantSeq;
1178 : Array3D<Real64> peopleLatentSeq;
1179 : Array3D<Real64> peopleRadSeq;
1180 :
1181 : Array3D<Real64> lightInstantSeq;
1182 : Array3D<Real64> lightRetAirSeq;
1183 : Array3D<Real64> lightLWRadSeq; // long wave thermal radiation
1184 : Array3D<Real64> lightSWRadSeq; // short wave visible radiation
1185 :
1186 : Array3D<Real64> equipInstantSeq;
1187 : Array3D<Real64> equipLatentSeq;
1188 : Array3D<Real64> equipRadSeq;
1189 :
1190 : Array3D<Real64> refrigInstantSeq;
1191 : Array3D<Real64> refrigRetAirSeq;
1192 : Array3D<Real64> refrigLatentSeq;
1193 :
1194 : Array3D<Real64> waterUseInstantSeq;
1195 : Array3D<Real64> waterUseLatentSeq;
1196 :
1197 : Array3D<Real64> hvacLossInstantSeq;
1198 : Array3D<Real64> hvacLossRadSeq;
1199 :
1200 : Array3D<Real64> powerGenInstantSeq;
1201 : Array3D<Real64> powerGenRadSeq;
1202 : Array3D<Real64> infilInstantSeq;
1203 : Array3D<Real64> infilLatentSeq;
1204 :
1205 : Array3D<Real64> zoneVentInstantSeq;
1206 : Array3D<Real64> zoneVentLatentSeq;
1207 :
1208 : Array3D<Real64> interZoneMixInstantSeq;
1209 : Array3D<Real64> interZoneMixLatentSeq;
1210 :
1211 : Array3D<Real64> feneCondInstantSeq;
1212 : Array3D<Real64> feneSolarRadSeq;
1213 :
1214 : int maxUniqueKeyCount = 0;
1215 :
1216 : // for the XML report must keep track fo the active sub-table name and report set by other routines
1217 : std::string activeSubTableName;
1218 : std::string activeReportNameNoSpace;
1219 : std::string activeReportName;
1220 : std::string activeForName;
1221 : std::string prevReportName;
1222 :
1223 : // Object Data
1224 : Array1D<OutputReportTabular::OutputTableBinnedType> OutputTableBinned;
1225 : Array2D<OutputReportTabular::BinResultsType> BinResults; // table number, number of intervals
1226 : Array1D<OutputReportTabular::BinResultsType> BinResultsBelow; // time below the lowest defined bin
1227 : Array1D<OutputReportTabular::BinResultsType> BinResultsAbove; // time above the highest defined bin
1228 : Array1D<OutputReportTabular::BinObjVarIDType> BinObjVarID;
1229 : Array1D<OutputReportTabular::BinStatisticsType> BinStatistics;
1230 : Array1D<OutputReportTabular::NamedMonthlyType> namedMonthly; // for predefined monthly report titles
1231 : Array1D<OutputReportTabular::MonthlyFieldSetInputType> MonthlyFieldSetInput;
1232 : Array1D<OutputReportTabular::MonthlyInputType> MonthlyInput;
1233 : Array1D<OutputReportTabular::MonthlyTablesType> MonthlyTables;
1234 : Array1D<OutputReportTabular::MonthlyColumnsType> MonthlyColumns;
1235 : Array1D<OutputReportTabular::TOCEntriesType> TOCEntries;
1236 : Array1D<OutputReportTabular::UnitConvType> UnitConv;
1237 :
1238 : bool GatherMonthlyResultsForTimestepRunOnce = true;
1239 : bool UpdateTabularReportsGetInput = true;
1240 : bool GatherHeatGainReportfirstTime = true;
1241 : bool AllocateLoadComponentArraysDoAllocate = true;
1242 : bool initAdjFenDone = false;
1243 : int numPeopleAdaptive = 0;
1244 :
1245 : Real64 BigNum = 0.0;
1246 : bool VarWarning = true;
1247 : int ErrCount1 = 0;
1248 : Array1D<OutputProcessor::VariableType> MonthlyColumnsTypeOfVar;
1249 : Array1D<OutputProcessor::TimeStepType> MonthlyColumnsStepType;
1250 : Array1D<OutputReportTabular::AggType> MonthlyColumnsAggType;
1251 : Array1D_int MonthlyColumnsVarNum;
1252 : Array1D_int MonthlyTablesNumColumns;
1253 : int curFirstColumn = 0;
1254 : int iZoneGHGR = 0;
1255 : int iRadiantGHGR = 0;
1256 : int iunitGHGR = 0;
1257 : int curZoneGHGR = 0;
1258 : Real64 eqpSensGHGR = 0.0;
1259 : Real64 totalGHGR = 0.0; // the following arrays store the radiant total for each timestep
1260 : Array1D<Real64> radiantHeat;
1261 : Array1D<Real64> radiantCool;
1262 : Array1D<Real64> ATUHeat;
1263 : Array1D<Real64> ATUCool;
1264 : int timestepTimeStampGHGR = 0;
1265 : Real64 bldgHtPk = 0.0;
1266 : Real64 bldgClPk = 0.0;
1267 : Real64 timeStepRatio = 0.0;
1268 : Real64 totalVolume = 0.0;
1269 : int numUncondZones = 0;
1270 : int numCondZones = 0;
1271 : Real64 HrsPerWeek = 0.0; // sensible heat gain report totals
1272 : Real64 totalZoneEqHt = 0.0;
1273 : Real64 totalZoneEqCl = 0.0;
1274 : Real64 totalHvacATUHt = 0.0;
1275 : Real64 totalHvacATUCl = 0.0;
1276 : Real64 totalSurfHt = 0.0;
1277 : Real64 totalSurfCl = 0.0;
1278 : Real64 totalPeoplAdd = 0.0;
1279 : Real64 totalLiteAdd = 0.0;
1280 : Real64 totalEquipAdd = 0.0;
1281 : Real64 totalWindAdd = 0.0;
1282 : Real64 totalIzaAdd = 0.0;
1283 : Real64 totalInfilAdd = 0.0;
1284 : Real64 totalOtherAdd = 0.0;
1285 : Real64 totalEquipRem = 0.0;
1286 : Real64 totalWindRem = 0.0;
1287 : Real64 totalIzaRem = 0.0;
1288 : Real64 totalInfilRem = 0.0;
1289 : Real64 totalOtherRem = 0.0;
1290 : Real64 curConversionOffset = 0.0;
1291 : Real64 leedSiteIntLite = 0.0;
1292 : Real64 leedSiteSpHeat = 0.0;
1293 : Real64 leedSiteSpCool = 0.0;
1294 : Real64 leedSiteFanInt = 0.0;
1295 : Real64 leedSiteSrvWatr = 0.0;
1296 : Real64 leedSiteRecept = 0.0;
1297 : Real64 leedSiteTotal = 0.0;
1298 : Real64 m2_unitConv = 0.0;
1299 : int unitConvIndexWCCT = 0;
1300 : int grandTotal = 1;
1301 : int condTotal = 2;
1302 : int uncondTotal = 3;
1303 : int notpartTotal = 4;
1304 : int unitConvIndexWVST = 0;
1305 : Real64 m_unitConv = 0.0;
1306 : Real64 m2_unitConvWVST = 0.0;
1307 : Real64 m3_unitConv = 0.0;
1308 : Real64 Wm2_unitConv = 0.0;
1309 : Array1D<Real64> zstArea = Array1D<Real64>(4);
1310 : Array1D<Real64> zstVolume = Array1D<Real64>(4);
1311 : Array1D<Real64> zstWallArea = Array1D<Real64>(4);
1312 : Array1D<Real64> zstUndWallArea = Array1D<Real64>(4);
1313 : Array1D<Real64> zstWindowArea = Array1D<Real64>(4);
1314 : Array1D<Real64> zstOpeningArea = Array1D<Real64>(4);
1315 : Array1D<Real64> zstLight = Array1D<Real64>(4);
1316 : Array1D<Real64> zstPeople = Array1D<Real64>(4);
1317 : Array1D<Real64> zstPlug = Array1D<Real64>(4);
1318 : int indexUnitConvWCS = 0;
1319 : Real64 curValueSIWCS = 0.0;
1320 : Real64 curValueWCS = 0.0;
1321 : int ZoneNumCLCDC = 0;
1322 : int SurfNumCLCDC = 0;
1323 : int TimeStepCLCDC = 0;
1324 : int TimeOfPulseCLCDC = 0;
1325 : int CoolDesSelectedCLCDC = 0; // design day selected for cooling
1326 : int HeatDesSelectedCLCDC = 0; // design day selected for heating
1327 : int iSurfGCLS = 0;
1328 : int ZoneNumGCLS = 0;
1329 : int TimeStepInDayGCLS = 0;
1330 : int iZoneGCLH = 0;
1331 : int TimeStepInDayGCLH = 0;
1332 : Array3D_bool adjFenDone;
1333 : Real64 BigNumRMG = 0.0;
1334 : int foundGsui = 0;
1335 : int iUnitGsui = 0;
1336 : int foundGsum = 0;
1337 : int iUnitGsum = 0;
1338 : std::string footnote;
1339 : std::string m_unitName;
1340 : std::string m2_unitName;
1341 : std::string m3_unitName;
1342 : std::string Wm2_unitName;
1343 : std::string curColHeadWithSI;
1344 : std::string curColHead;
1345 :
1346 0 : void clear_state() override
1347 : {
1348 0 : this->unitsStyle = OutputReportTabular::UnitsStyle::None;
1349 0 : this->unitsStyle_SQLite = OutputReportTabular::UnitsStyle::NotFound;
1350 0 : this->OutputTableBinnedCount = 0;
1351 0 : this->BinResultsTableCount = 0;
1352 0 : this->BinResultsIntervalCount = 0;
1353 0 : this->MonthlyInputCount = 0;
1354 0 : this->sizeMonthlyInput = 0;
1355 0 : this->MonthlyFieldSetInputCount = 0;
1356 0 : this->sizeMonthlyFieldSetInput = 0;
1357 0 : this->MonthlyTablesCount = 0;
1358 0 : this->MonthlyColumnsCount = 0;
1359 0 : this->IsMonthGathered = Array1D_bool(12, false);
1360 0 : this->TOCEntriesCount = 0;
1361 0 : this->TOCEntriesSize = 0;
1362 0 : this->UnitConvSize = 0;
1363 0 : this->WriteTabularFiles = false;
1364 0 : this->GetInput = true;
1365 0 : this->numStyles = 0;
1366 0 : this->TabularOutputFile = Array1D<std::ofstream *>(
1367 0 : OutputReportTabular::maxNumStyles, {&this->csv_stream, &this->tab_stream, &this->fix_stream, &this->htm_stream, &this->xml_stream});
1368 0 : this->del = Array1D_string(OutputReportTabular::maxNumStyles);
1369 0 : this->TableStyle = Array1D<OutputReportTabular::TableStyle>(OutputReportTabular::maxNumStyles, OutputReportTabular::TableStyle::Invalid);
1370 0 : this->timeInYear = 0.0;
1371 0 : this->displayTabularBEPS = false;
1372 0 : this->displayLEEDSummary = false;
1373 0 : this->displayTabularCompCosts = false;
1374 0 : this->displayTabularVeriSum = false;
1375 0 : this->displayComponentSizing = false;
1376 0 : this->displaySurfaceShadowing = false;
1377 0 : this->displayDemandEndUse = false;
1378 0 : this->displayAdaptiveComfort = false;
1379 0 : this->displaySourceEnergyEndUseSummary = false;
1380 0 : this->displayZoneComponentLoadSummary = false;
1381 0 : this->displayAirLoopComponentLoadSummary = false;
1382 0 : this->displayFacilityComponentLoadSummary = false;
1383 0 : this->displayLifeCycleCostReport = false;
1384 0 : this->displayTariffReport = false;
1385 0 : this->displayEconomicResultSummary = false;
1386 0 : this->displayHeatEmissionsSummary = false;
1387 0 : this->displayEioSummary = false;
1388 0 : this->displayThermalResilienceSummary = false;
1389 0 : this->displayCO2ResilienceSummary = false;
1390 0 : this->displayVisualResilienceSummary = false;
1391 0 : this->displayThermalResilienceSummaryExplicitly = false;
1392 0 : this->displayCO2ResilienceSummaryExplicitly = false;
1393 0 : this->displayVisualResilienceSummaryExplicitly = false;
1394 0 : this->meterNumTotalsBEPS = Array1D_int(OutputReportTabular::numResourceTypes, 0);
1395 0 : this->meterNumTotalsSource = Array1D_int(OutputReportTabular::numSourceTypes, 0);
1396 0 : this->fuelfactorsused = Array1D_bool(OutputReportTabular::numSourceTypes, false);
1397 0 : this->ffUsed = Array1D_bool(OutputReportTabular::numResourceTypes, false);
1398 0 : this->SourceFactors = Array1D<Real64>(OutputReportTabular::numResourceTypes, 0.0);
1399 0 : this->ffSchedUsed = Array1D_bool(OutputReportTabular::numResourceTypes, false);
1400 0 : this->ffSchedIndex = Array1D_int(OutputReportTabular::numResourceTypes, 0);
1401 0 : this->meterNumEndUseBEPS = Array2D_int(OutputReportTabular::numResourceTypes, DataGlobalConstantsData::iEndUseSize, 0);
1402 0 : this->meterNumEndUseSubBEPS.deallocate();
1403 0 : this->meterNumEndUseSpTypeBEPS.deallocate();
1404 0 : this->resourceTypeNames = Array1D_string(OutputReportTabular::numResourceTypes);
1405 0 : this->sourceTypeNames = Array1D_string(OutputReportTabular::numSourceTypes);
1406 0 : this->endUseNames = Array1D_string(DataGlobalConstantsData::iEndUseSize);
1407 0 : this->gatherTotalsBEPS = Array1D<Real64>(OutputReportTabular::numResourceTypes, 0.0);
1408 0 : this->gatherTotalsBySourceBEPS = Array1D<Real64>(OutputReportTabular::numResourceTypes, 0.0);
1409 0 : this->gatherTotalsSource = Array1D<Real64>(OutputReportTabular::numSourceTypes, 0.0);
1410 0 : this->gatherTotalsBySource = Array1D<Real64>(OutputReportTabular::numSourceTypes, 0.0);
1411 0 : this->gatherEndUseBEPS = Array2D<Real64>(OutputReportTabular::numResourceTypes, DataGlobalConstantsData::iEndUseSize, 0.0);
1412 0 : this->gatherEndUseBySourceBEPS = Array2D<Real64>(OutputReportTabular::numResourceTypes, DataGlobalConstantsData::iEndUseSize, 0.0);
1413 0 : this->gatherEndUseSubBEPS.deallocate();
1414 0 : this->gatherEndUseSpTypeBEPS.deallocate();
1415 0 : this->needOtherRowLEED45 = Array1D_bool(DataGlobalConstantsData::iEndUseSize);
1416 0 : this->needOtherRowEndUse = Array1D_bool(DataGlobalConstantsData::iEndUseSize);
1417 0 : this->gatherDemandTotal = Array1D<Real64>(OutputReportTabular::numResourceTypes, 0.0);
1418 0 : this->gatherDemandEndUse = Array2D<Real64>(OutputReportTabular::numResourceTypes, DataGlobalConstantsData::iEndUseSize, 0.0);
1419 0 : this->gatherDemandIndEndUse = Array2D<Real64>(OutputReportTabular::numResourceTypes, DataGlobalConstantsData::iEndUseSize, 0.0);
1420 0 : this->gatherDemandEndUseSub.deallocate();
1421 0 : this->gatherDemandIndEndUseSub.deallocate();
1422 0 : this->gatherDemandTimeStamp = Array1D_int(OutputReportTabular::numResourceTypes, 0);
1423 0 : this->gatherElapsedTimeBEPS = 0.0;
1424 0 : this->buildingGrossFloorArea = 0.0;
1425 0 : this->buildingConditionedFloorArea = 0.0;
1426 0 : this->fuelFactorSchedulesUsed = false;
1427 0 : this->meterNumPowerFuelFireGen = 0;
1428 0 : this->gatherPowerFuelFireGen = 0.0;
1429 0 : this->meterNumPowerPV = 0;
1430 0 : this->gatherPowerPV = 0.0;
1431 0 : this->meterNumPowerWind = 0;
1432 0 : this->gatherPowerWind = 0.0;
1433 0 : this->OverallNetEnergyFromStorage = 0.0;
1434 0 : this->meterNumPowerHTGeothermal = 0;
1435 0 : this->gatherPowerHTGeothermal = 0.0;
1436 0 : this->meterNumElecProduced = 0;
1437 0 : this->gatherElecProduced = 0.0;
1438 0 : this->meterNumElecPurchased = 0;
1439 0 : this->gatherElecPurchased = 0.0;
1440 0 : this->meterNumElecSurplusSold = 0;
1441 0 : this->gatherElecSurplusSold = 0.0;
1442 0 : this->meterNumElecStorage = 0;
1443 0 : this->gatherElecStorage = 0.0;
1444 0 : this->meterNumPowerConversion = 0;
1445 0 : this->gatherPowerConversion = 0.0;
1446 0 : this->meterNumWaterHeatRecovery = 0;
1447 0 : this->gatherWaterHeatRecovery = 0.0;
1448 0 : this->meterNumAirHeatRecoveryCool = 0;
1449 0 : this->gatherAirHeatRecoveryCool = 0.0;
1450 0 : this->meterNumAirHeatRecoveryHeat = 0;
1451 0 : this->gatherAirHeatRecoveryHeat = 0.0;
1452 0 : this->meterNumHeatHTGeothermal = 0;
1453 0 : this->gatherHeatHTGeothermal = 0.0;
1454 0 : this->meterNumHeatSolarWater = 0;
1455 0 : this->gatherHeatSolarWater = 0.0;
1456 0 : this->meterNumHeatSolarAir = 0;
1457 0 : this->gatherHeatSolarAir = 0.0;
1458 0 : this->meterNumRainWater = 0;
1459 0 : this->gatherRainWater = 0.0;
1460 0 : this->meterNumCondensate = 0;
1461 0 : this->gatherCondensate = 0.0;
1462 0 : this->meterNumGroundwater = 0;
1463 0 : this->gatherWellwater = 0.0;
1464 0 : this->meterNumMains = 0;
1465 0 : this->gatherMains = 0.0;
1466 0 : this->meterNumWaterEndUseTotal = 0;
1467 0 : this->gatherWaterEndUseTotal = 0.0;
1468 0 : this->sourceFactorElectric = 0.0;
1469 0 : this->sourceFactorNaturalGas = 0.0;
1470 0 : this->efficiencyDistrictCooling = 0.0;
1471 0 : this->efficiencyDistrictHeating = 0.0;
1472 0 : this->sourceFactorSteam = 0.0;
1473 0 : this->sourceFactorGasoline = 0.0;
1474 0 : this->sourceFactorDiesel = 0.0;
1475 0 : this->sourceFactorCoal = 0.0;
1476 0 : this->sourceFactorFuelOil1 = 0.0;
1477 0 : this->sourceFactorFuelOil2 = 0.0;
1478 0 : this->sourceFactorPropane = 0.0;
1479 0 : this->sourceFactorOtherFuel1 = 0.0;
1480 0 : this->sourceFactorOtherFuel2 = 0.0;
1481 0 : this->td = Array1D_int(8);
1482 0 : this->DesignDayName.deallocate();
1483 0 : this->DesignDayCount = 0;
1484 0 : this->radiantPulseTimestep.deallocate();
1485 0 : this->radiantPulseReceived.deallocate();
1486 0 : this->loadConvectedNormal.deallocate();
1487 0 : this->loadConvectedWithPulse.deallocate();
1488 0 : this->netSurfRadSeq.deallocate();
1489 0 : this->decayCurveCool.deallocate();
1490 0 : this->decayCurveHeat.deallocate();
1491 0 : this->ITABSFseq.deallocate();
1492 0 : this->TMULTseq.deallocate();
1493 0 : this->peopleInstantSeq.deallocate();
1494 0 : this->peopleLatentSeq.deallocate();
1495 0 : this->peopleRadSeq.deallocate();
1496 0 : this->lightInstantSeq.deallocate();
1497 0 : this->lightRetAirSeq.deallocate();
1498 0 : this->lightLWRadSeq.deallocate();
1499 0 : this->lightSWRadSeq.deallocate();
1500 0 : this->equipInstantSeq.deallocate();
1501 0 : this->equipLatentSeq.deallocate();
1502 0 : this->equipRadSeq.deallocate();
1503 0 : this->refrigInstantSeq.deallocate();
1504 0 : this->refrigRetAirSeq.deallocate();
1505 0 : this->refrigLatentSeq.deallocate();
1506 0 : this->waterUseInstantSeq.deallocate();
1507 0 : this->waterUseLatentSeq.deallocate();
1508 0 : this->hvacLossInstantSeq.deallocate();
1509 0 : this->hvacLossRadSeq.deallocate();
1510 0 : this->powerGenInstantSeq.deallocate();
1511 0 : this->powerGenRadSeq.deallocate();
1512 0 : this->infilInstantSeq.deallocate();
1513 0 : this->infilLatentSeq.deallocate();
1514 0 : this->zoneVentInstantSeq.deallocate();
1515 0 : this->zoneVentLatentSeq.deallocate();
1516 0 : this->interZoneMixInstantSeq.deallocate();
1517 0 : this->interZoneMixLatentSeq.deallocate();
1518 0 : this->feneCondInstantSeq.deallocate();
1519 0 : this->feneSolarRadSeq.deallocate();
1520 0 : this->maxUniqueKeyCount = 0;
1521 0 : this->activeSubTableName.clear();
1522 0 : this->activeReportNameNoSpace.clear();
1523 0 : this->activeReportName.clear();
1524 0 : this->activeForName.clear();
1525 0 : this->prevReportName.clear();
1526 0 : this->OutputTableBinned.deallocate();
1527 0 : this->BinResults.deallocate();
1528 0 : this->BinResultsBelow.deallocate();
1529 0 : this->BinResultsAbove.deallocate();
1530 0 : this->BinObjVarID.deallocate();
1531 0 : this->BinStatistics.deallocate();
1532 0 : this->namedMonthly.deallocate();
1533 0 : this->MonthlyFieldSetInput.deallocate();
1534 0 : this->MonthlyInput.deallocate();
1535 0 : this->MonthlyTables.deallocate();
1536 0 : this->MonthlyColumns.deallocate();
1537 0 : this->TOCEntries.deallocate();
1538 0 : this->UnitConv.deallocate();
1539 0 : this->GatherMonthlyResultsForTimestepRunOnce = true;
1540 0 : this->UpdateTabularReportsGetInput = true;
1541 0 : this->GatherHeatGainReportfirstTime = true;
1542 0 : this->AllocateLoadComponentArraysDoAllocate = true;
1543 0 : this->initAdjFenDone = false;
1544 0 : this->numPeopleAdaptive = 0;
1545 :
1546 0 : this->BigNum = 0.0;
1547 0 : this->VarWarning = true;
1548 0 : this->ErrCount1 = 0;
1549 0 : this->MonthlyColumnsTypeOfVar.clear();
1550 0 : this->MonthlyColumnsStepType.clear();
1551 0 : this->MonthlyColumnsAggType.clear();
1552 0 : this->MonthlyColumnsVarNum.clear();
1553 0 : this->MonthlyTablesNumColumns.clear();
1554 0 : this->curFirstColumn = 0;
1555 0 : this->iZoneGHGR = 0;
1556 0 : this->iRadiantGHGR = 0;
1557 0 : this->iunitGHGR = 0;
1558 0 : this->curZoneGHGR = 0;
1559 0 : this->eqpSensGHGR = 0.0;
1560 0 : this->totalGHGR = 0.0;
1561 : // the following arrays store the radiant total for each timestep
1562 0 : this->radiantHeat.clear();
1563 0 : this->radiantCool.clear();
1564 0 : this->ATUHeat.clear();
1565 0 : this->ATUCool.clear();
1566 0 : this->timestepTimeStampGHGR = 0;
1567 0 : this->bldgHtPk = 0.0;
1568 0 : this->bldgClPk = 0.0;
1569 0 : this->timeStepRatio = 0.0;
1570 0 : this->totalVolume = 0.0;
1571 0 : this->numUncondZones = 0;
1572 0 : this->numCondZones = 0;
1573 0 : this->HrsPerWeek = 0.0;
1574 : // sensible heat gain report totals
1575 0 : this->totalZoneEqHt = 0.0;
1576 0 : this->totalZoneEqCl = 0.0;
1577 0 : this->totalHvacATUHt = 0.0;
1578 0 : this->totalHvacATUCl = 0.0;
1579 0 : this->totalSurfHt = 0.0;
1580 0 : this->totalSurfCl = 0.0;
1581 0 : this->totalPeoplAdd = 0.0;
1582 0 : this->totalLiteAdd = 0.0;
1583 0 : this->totalEquipAdd = 0.0;
1584 0 : this->totalWindAdd = 0.0;
1585 0 : this->totalIzaAdd = 0.0;
1586 0 : this->totalInfilAdd = 0.0;
1587 0 : this->totalOtherAdd = 0.0;
1588 0 : this->totalEquipRem = 0.0;
1589 0 : this->totalWindRem = 0.0;
1590 0 : this->totalIzaRem = 0.0;
1591 0 : this->totalInfilRem = 0.0;
1592 0 : this->totalOtherRem = 0.0;
1593 0 : this->curConversionOffset = 0.0;
1594 0 : this->leedSiteIntLite = 0.0;
1595 0 : this->leedSiteSpHeat = 0.0;
1596 0 : this->leedSiteSpCool = 0.0;
1597 0 : this->leedSiteFanInt = 0.0;
1598 0 : this->leedSiteSrvWatr = 0.0;
1599 0 : this->leedSiteRecept = 0.0;
1600 0 : this->leedSiteTotal = 0.0;
1601 0 : this->m2_unitConv = 0.0;
1602 0 : this->unitConvIndexWCCT = 0;
1603 0 : this->grandTotal = 1;
1604 0 : this->condTotal = 2;
1605 0 : this->uncondTotal = 3;
1606 0 : this->notpartTotal = 4;
1607 0 : this->unitConvIndexWVST = 0;
1608 0 : this->m_unitConv = 0.0;
1609 0 : this->m2_unitConvWVST = 0.0;
1610 0 : this->m3_unitConv = 0.0;
1611 0 : this->Wm2_unitConv = 0.0;
1612 0 : this->zstArea = Array1D<Real64>(4);
1613 0 : this->zstVolume = Array1D<Real64>(4);
1614 0 : this->zstWallArea = Array1D<Real64>(4);
1615 0 : this->zstUndWallArea = Array1D<Real64>(4);
1616 0 : this->zstWindowArea = Array1D<Real64>(4);
1617 0 : this->zstOpeningArea = Array1D<Real64>(4);
1618 0 : this->zstLight = Array1D<Real64>(4);
1619 0 : this->zstPeople = Array1D<Real64>(4);
1620 0 : this->zstPlug = Array1D<Real64>(4);
1621 0 : this->indexUnitConvWCS = 0;
1622 0 : this->curValueSIWCS = 0.0;
1623 0 : this->curValueWCS = 0.0;
1624 0 : this->ZoneNumCLCDC = 0;
1625 0 : this->SurfNumCLCDC = 0;
1626 0 : this->TimeStepCLCDC = 0;
1627 0 : this->TimeOfPulseCLCDC = 0;
1628 0 : this->CoolDesSelectedCLCDC = 0; // design day selected for cooling
1629 0 : this->HeatDesSelectedCLCDC = 0; // design day selected for heating
1630 0 : this->iSurfGCLS = 0;
1631 0 : this->ZoneNumGCLS = 0;
1632 0 : this->TimeStepInDayGCLS = 0;
1633 0 : this->iZoneGCLH = 0;
1634 0 : this->TimeStepInDayGCLH = 0;
1635 0 : this->adjFenDone.clear();
1636 0 : this->BigNumRMG = 0.0;
1637 0 : this->foundGsui = 0;
1638 0 : this->iUnitGsui = 0;
1639 0 : this->foundGsum = 0;
1640 0 : this->iUnitGsum = 0;
1641 0 : this->footnote.clear();
1642 0 : this->m_unitName.clear();
1643 0 : this->m2_unitName.clear();
1644 0 : this->m3_unitName.clear();
1645 0 : this->Wm2_unitName.clear();
1646 0 : this->curColHeadWithSI.clear();
1647 0 : this->curColHead.clear();
1648 0 : }
1649 : };
1650 :
1651 : } // namespace EnergyPlus
1652 :
1653 : #endif
|