LCOV - code coverage report
Current view: top level - EnergyPlus - OutputReportTabular.hh (source / functions) Hit Total Coverage
Test: lcov.output.filtered Lines: 49 348 14.1 %
Date: 2023-01-17 19:17:23 Functions: 36 55 65.5 %

          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

Generated by: LCOV version 1.13