LCOV - code coverage report
Current view: top level - EnergyPlus - ThermalComfort.hh (source / functions) Coverage Total Hit
Test: lcov.output.filtered Lines: 100.0 % 26 26
Test Date: 2025-05-22 16:09:37 Functions: 100.0 % 7 7

            Line data    Source code
       1              : // EnergyPlus, Copyright (c) 1996-2025, The Board of Trustees of the University of Illinois,
       2              : // The Regents of the University of California, through Lawrence Berkeley National Laboratory
       3              : // (subject to receipt of any required approvals from the U.S. Dept. of Energy), Oak Ridge
       4              : // National Laboratory, managed by UT-Battelle, Alliance for Sustainable Energy, LLC, and other
       5              : // contributors. All rights reserved.
       6              : //
       7              : // NOTICE: This Software was developed under funding from the U.S. Department of Energy and the
       8              : // U.S. Government consequently retains certain rights. As such, the U.S. Government has been
       9              : // granted for itself and others acting on its behalf a paid-up, nonexclusive, irrevocable,
      10              : // worldwide license in the Software to reproduce, distribute copies to the public, prepare
      11              : // derivative works, and perform publicly and display publicly, and to permit others to do so.
      12              : //
      13              : // Redistribution and use in source and binary forms, with or without modification, are permitted
      14              : // provided that the following conditions are met:
      15              : //
      16              : // (1) Redistributions of source code must retain the above copyright notice, this list of
      17              : //     conditions and the following disclaimer.
      18              : //
      19              : // (2) Redistributions in binary form must reproduce the above copyright notice, this list of
      20              : //     conditions and the following disclaimer in the documentation and/or other materials
      21              : //     provided with the distribution.
      22              : //
      23              : // (3) Neither the name of the University of California, Lawrence Berkeley National Laboratory,
      24              : //     the University of Illinois, U.S. Dept. of Energy nor the names of its contributors may be
      25              : //     used to endorse or promote products derived from this software without specific prior
      26              : //     written permission.
      27              : //
      28              : // (4) Use of EnergyPlus(TM) Name. If Licensee (i) distributes the software in stand-alone form
      29              : //     without changes from the version obtained under this License, or (ii) Licensee makes a
      30              : //     reference solely to the software portion of its product, Licensee must refer to the
      31              : //     software as "EnergyPlus version X" software, where "X" is the version number Licensee
      32              : //     obtained under this License and may not use a different name for the software. Except as
      33              : //     specifically required in this Section (4), Licensee shall not use in a company name, a
      34              : //     product name, in advertising, publicity, or other promotional activities any name, trade
      35              : //     name, trademark, logo, or other designation of "EnergyPlus", "E+", "e+" or confusingly
      36              : //     similar designation, without the U.S. Department of Energy's prior written consent.
      37              : //
      38              : // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
      39              : // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
      40              : // AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
      41              : // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
      42              : // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
      43              : // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
      44              : // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
      45              : // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
      46              : // POSSIBILITY OF SUCH DAMAGE.
      47              : 
      48              : #ifndef ThermalComfort_hh_INCLUDED
      49              : #define ThermalComfort_hh_INCLUDED
      50              : 
      51              : // ObjexxFCL Headers
      52              : #include <ObjexxFCL/Optional.hh>
      53              : 
      54              : // EnergyPlus Headers
      55              : #include <EnergyPlus/Data/BaseData.hh>
      56              : #include <EnergyPlus/DataGlobals.hh>
      57              : #include <EnergyPlus/EnergyPlus.hh>
      58              : 
      59              : namespace EnergyPlus {
      60              : 
      61              : // Forward declarations
      62              : struct EnergyPlusData;
      63              : 
      64              : namespace ThermalComfort {
      65              : 
      66              :     Real64 constexpr TAbsConv = Constant::Kelvin; // Converter for absolute temperature
      67              :     Real64 constexpr ActLevelConv = 58.2;         // Converter for activity level (1Met = 58.2 W/m2)
      68              :     Real64 constexpr BodySurfArea = 1.8;          // Dubois body surface area of the human body (m2)
      69              :     Real64 constexpr BodySurfAreaPierce = 1.8258; // Pierce two node body surface area of the human body (m2)
      70              :     Real64 constexpr RadSurfEff = 0.72;           // Fraction of surface effective for radiation
      71              :     Real64 constexpr StefanBoltz = 5.6697e-8;     // Stefan-Boltzmann constant (W/m2K4)
      72              : 
      73              :     struct ThermalComfortDataType
      74              :     {
      75              :         // Members
      76              :         Real64 FangerPMV;
      77              :         Real64 FangerPPD;
      78              :         Real64 CloSurfTemp; // clothing surface temp from iteration in FANGER calcs
      79              :         Real64 PiercePMVET;
      80              :         Real64 PiercePMVSET;
      81              :         Real64 PierceDISC;
      82              :         Real64 PierceTSENS;
      83              :         Real64 PierceSET;
      84              :         Real64 KsuTSV;
      85              :         Real64 ThermalComfortMRT;
      86              :         Real64 ThermalComfortOpTemp;
      87              :         Real64 ClothingValue;
      88              :         int ThermalComfortAdaptiveASH5590;
      89              :         int ThermalComfortAdaptiveASH5580;
      90              :         int ThermalComfortAdaptiveCEN15251CatI;
      91              :         int ThermalComfortAdaptiveCEN15251CatII;
      92              :         int ThermalComfortAdaptiveCEN15251CatIII;
      93              :         Real64 TComfASH55;
      94              :         Real64 TComfCEN15251;
      95              :         Real64 ASHRAE55RunningMeanOutdoorTemp;
      96              :         Real64 CEN15251RunningMeanOutdoorTemp;
      97              :         Real64 CoolingEffectASH55;
      98              :         Real64 CoolingEffectAdjustedPMVASH55;
      99              :         Real64 CoolingEffectAdjustedPPDASH55;
     100              :         Real64 AnkleDraftPPDASH55;
     101              : 
     102              :         // Default Constructor
     103          160 :         ThermalComfortDataType()
     104          160 :             : FangerPMV(0.0), FangerPPD(0.0), CloSurfTemp(0.0), PiercePMVET(0.0), PiercePMVSET(0.0), PierceDISC(0.0), PierceTSENS(0.0),
     105          160 :               PierceSET(0.0), KsuTSV(0.0), ThermalComfortMRT(0.0), ThermalComfortOpTemp(0.0), ClothingValue(0.0), ThermalComfortAdaptiveASH5590(0),
     106          160 :               ThermalComfortAdaptiveASH5580(0), ThermalComfortAdaptiveCEN15251CatI(0), ThermalComfortAdaptiveCEN15251CatII(0),
     107          160 :               ThermalComfortAdaptiveCEN15251CatIII(0), TComfASH55(0.0), TComfCEN15251(0.0), ASHRAE55RunningMeanOutdoorTemp(0.0),
     108          160 :               CEN15251RunningMeanOutdoorTemp(0.0), CoolingEffectASH55(0.0), CoolingEffectAdjustedPMVASH55(0.0), CoolingEffectAdjustedPPDASH55(0.0),
     109          160 :               AnkleDraftPPDASH55(0.0)
     110              :         {
     111          160 :         }
     112              :     };
     113              : 
     114              :     struct ThermalComfortInASH55Type
     115              :     {
     116              :         // Members
     117              :         // for debugging
     118              :         // REAL(r64)    :: dCurAirTemp
     119              :         // REAL(r64)    :: dCurMeanRadiantTemp
     120              :         // REAL(r64)    :: dOperTemp
     121              :         // REAL(r64)    :: dHumidRatio
     122              :         Real64 timeNotSummer;      // time when not in summer comfort range based on ASHRAE 55 simplified
     123              :         Real64 timeNotWinter;      // time when not in winter comfort range based on ASHRAE 55 simplified
     124              :         Real64 timeNotEither;      // time when  not in summer or winter comfort range based on ASHRAE 55 simplified
     125              :         Real64 totalTimeNotSummer; // sum for simulation for summer
     126              :         Real64 totalTimeNotWinter; // sum for simulation for winter
     127              :         Real64 totalTimeNotEither; // sum for simulation for either
     128              :         bool ZoneIsOccupied;       // flag if zone has people
     129              :         int warningIndex;          // variable to store pointer to the recurring warning
     130              :         int warningIndex2;         // variable to store pointer to the recurring warning
     131              :         bool Enable55Warning;      // flag if the warning should be able to be shown if appropriate
     132              : 
     133              :         // Default Constructor
     134          230 :         ThermalComfortInASH55Type()
     135          230 :             : timeNotSummer(0.0), timeNotWinter(0.0), timeNotEither(0.0), totalTimeNotSummer(0.0), totalTimeNotWinter(0.0), totalTimeNotEither(0.0),
     136          230 :               ZoneIsOccupied(false), warningIndex(0), warningIndex2(0), Enable55Warning(false)
     137              :         {
     138          230 :         }
     139              :     };
     140              : 
     141              :     struct ThermalComfortSetPointType
     142              :     {
     143              :         // Members
     144              :         Real64 notMetHeating;
     145              :         Real64 notMetCooling;
     146              :         Real64 notMetHeatingOccupied;
     147              :         Real64 notMetCoolingOccupied;
     148              :         Real64 totalNotMetHeating;
     149              :         Real64 totalNotMetCooling;
     150              :         Real64 totalNotMetHeatingOccupied;
     151              :         Real64 totalNotMetCoolingOccupied;
     152              : 
     153              :         // Default Constructor
     154          230 :         ThermalComfortSetPointType()
     155          230 :             : notMetHeating(0.0), notMetCooling(0.0), notMetHeatingOccupied(0.0), notMetCoolingOccupied(0.0), totalNotMetHeating(0.0),
     156          230 :               totalNotMetCooling(0.0), totalNotMetHeatingOccupied(0.0), totalNotMetCoolingOccupied(0.0)
     157              :         {
     158          230 :         }
     159              :     };
     160              : 
     161              :     struct AngleFactorData
     162              :     {
     163              :         // Members
     164              :         EPVector<Real64> AngleFactor;      // Angle factor of each surface
     165              :         std::string Name;                  // Angle factor list name
     166              :         EPVector<std::string> SurfaceName; // Names of the Surfces
     167              :         EPVector<int> SurfacePtr;          // Surface indexes
     168              :         int TotAngleFacSurfaces = 0;       // Total number of surfaces
     169              :         int EnclosurePtr = 0;              // Enclosure index for the first surface
     170              :     };
     171              : 
     172              :     void ManageThermalComfort(EnergyPlusData &state,
     173              :                               bool const InitializeOnly); // when called from ZTPC and calculations aren't needed
     174              : 
     175              :     void InitThermalComfort(EnergyPlusData &state);
     176              : 
     177              :     void CalcThermalComfortFanger(EnergyPlusData &state,
     178              :                                   ObjexxFCL::Optional_int_const PNum = _,     // People number for thermal comfort control
     179              :                                   ObjexxFCL::Optional<Real64 const> Tset = _, // Temperature setpoint for thermal comfort control
     180              :                                   ObjexxFCL::Optional<Real64> PMVResult = _   // PMV value for thermal comfort control
     181              :     );
     182              :     Real64 CalcFangerPMV(
     183              :         EnergyPlusData &state, Real64 AirTemp, Real64 RadTemp, Real64 RelHum, Real64 AirVel, Real64 ActLevel, Real64 CloUnit, Real64 WorkEff);
     184              : 
     185              :     Real64 CalcFangerPPD(Real64 PMV);
     186              : 
     187              :     Real64 CalcRelativeAirVelocity(Real64 AirVel, Real64 ActMet);
     188              : 
     189              :     void GetThermalComfortInputsASHRAE(EnergyPlusData &state);
     190              : 
     191              :     Real64 CalcStandardEffectiveTemp(
     192              :         EnergyPlusData &state, Real64 AirTemp, Real64 RadTemp, Real64 RelHum, Real64 AirVel, Real64 ActMet, Real64 CloUnit, Real64 WorkEff);
     193              : 
     194              :     void CalcCoolingEffectAdjustedPMV(EnergyPlusData &state, Real64 &CoolingEffect, Real64 &CoolingEffectAdjustedPMV);
     195              : 
     196              :     void CalcThermalComfortPierceASHRAE(EnergyPlusData &state);
     197              : 
     198              :     void CalcThermalComfortCoolingEffectASH(EnergyPlusData &state);
     199              : 
     200              :     void CalcThermalComfortAnkleDraftASH(EnergyPlusData &state);
     201              : 
     202              :     void CalcThermalComfortKSU(EnergyPlusData &state);
     203              : 
     204              :     void DERIV(EnergyPlusData &state,
     205              :                int &TempIndiceNum,         // Number of temperature indices  unused1208
     206              :                Array1D<Real64> &Temp,      // Temperature unused1208
     207              :                Array1D<Real64> &TempChange // Change of temperature
     208              :     );
     209              : 
     210              :     void RKG(EnergyPlusData &state, int &NEQ, Real64 const H, Real64 &X, Array1D<Real64> &Y, Array1D<Real64> &DY, Array1D<Real64> &C);
     211              : 
     212              :     void GetAngleFactorList(EnergyPlusData &state);
     213              : 
     214              :     Real64 CalcAngleFactorMRT(EnergyPlusData &state, int const AngleFacNum);
     215              : 
     216              :     Real64 CalcSurfaceWeightedMRT(EnergyPlusData &state, int const SurfNum, bool AveragewithSurface = true);
     217              : 
     218              :     Real64 CalcSatVapPressFromTemp(Real64 const Temp);
     219              : 
     220              :     Real64 CalcSatVapPressFromTempTorr(Real64 const Temp);
     221              : 
     222              :     Real64 CalcRadTemp(EnergyPlusData &state, int const PeopleListNum);
     223              : 
     224              :     void CalcThermalComfortSimpleASH55(EnergyPlusData &state);
     225              : 
     226              :     void ResetThermalComfortSimpleASH55(EnergyPlusData &state);
     227              : 
     228              :     void CalcIfSetPointMet(EnergyPlusData &state);
     229              : 
     230              :     void ResetSetPointMet(EnergyPlusData &state);
     231              : 
     232              :     void CalcThermalComfortAdaptiveASH55(
     233              :         EnergyPlusData &state,
     234              :         bool const initiate,                             // true if supposed to initiate
     235              :         ObjexxFCL::Optional_bool_const wthrsim = _,      // true if this is a weather simulation
     236              :         ObjexxFCL::Optional<Real64 const> avgdrybulb = _ // approximate avg drybulb for design day.  will be used as previous period in design day
     237              :     );
     238              : 
     239              :     void CalcThermalComfortAdaptiveCEN15251(
     240              :         EnergyPlusData &state,
     241              :         bool const initiate,                             // true if supposed to initiate
     242              :         ObjexxFCL::Optional_bool_const wthrsim = _,      // true if this is a weather simulation
     243              :         ObjexxFCL::Optional<Real64 const> avgdrybulb = _ // approximate avg drybulb for design day.  will be used as previous period in design day
     244              :     );
     245              : 
     246              :     void DynamicClothingModel(EnergyPlusData &state);
     247              : 
     248              : } // namespace ThermalComfort
     249              : 
     250              : struct ThermalComfortsData : BaseGlobalStruct
     251              : {
     252              : 
     253              :     bool FirstTimeFlag = true;                // Flag set to make sure you get input once
     254              :     bool FirstTimeSurfaceWeightedFlag = true; // Flag set to make sure certain calcs related to surface weighted option are only done once
     255              :     int CoolingEffectWarningInd = 0;          // Counter for ankle draft invalid air velocity warnings.
     256              :     int AnkleDraftAirVelWarningInd = 0;       // Counter for ankle draft invalid air velocity warnings.
     257              :     int AnkleDraftCloUnitWarningInd = 0;      // Counter for ankle draft invalid clothing unit warnings.
     258              :     int AnkleDraftActMetWarningInd = 0;       // Counter for ankle draft invalid activity level warnings.
     259              : 
     260              :     // MODULE VARIABLE DECLARATIONS:
     261              :     Real64 AbsAirTemp = 0.0;                // Absolute air temperature; K
     262              :     Real64 AbsCloSurfTemp = 0.0;            // Absolute clothing surface temperature; K
     263              :     Real64 AbsRadTemp = 0.0;                // Absolute radiant temperature; K
     264              :     Real64 AcclPattern = 0.0;               // The pattern of acclimation
     265              :     Real64 ActLevel = 0.0;                  // Metabolic rate; w/m2
     266              :     Real64 ActMet = 0.0;                    // Metabolic rate; []
     267              :     Real64 AirVel = 0.0;                    // Air velocity; m/s
     268              :     Real64 AirTemp = 0.0;                   // Air temperature; C
     269              :     Real64 CloBodyRat = 0.0;                // Ratio of clothed body
     270              :     Real64 CloInsul = 0.0;                  // Clothing insulation
     271              :     Real64 CloPermeatEff = 0.0;             // Clothing permeation efficiency
     272              :     Real64 CloSurfTemp = 0.0;               // Clothing surface temperature; K
     273              :     Real64 CloThermEff = 0.0;               // The Burton thermal efficiency factor for clothing
     274              :     Real64 CloUnit = 0.0;                   // Clothing unit; CLO
     275              :     Real64 ConvHeatLoss = 0.0;              // Convective heat loss
     276              :     Real64 CoreTempChange = 0.0;            // Temperature change of core in 1 minute
     277              :     Real64 CoreTemp = 0.0;                  // Body core temperature
     278              :     Real64 CoreTempNeut = 0.0;              // Body core temperature of neutral state
     279              :     Real64 CoreThermCap = 0.0;              // Thermal capacity of core
     280              :     Real64 DryHeatLoss = 0.0;               // Heat loss from clothing surface due to both convection and radiation
     281              :     Real64 DryHeatLossET = 0.0;             // Effective heat loss from clothing surface due to both convection and radiation
     282              :     Real64 DryHeatLossSET = 0.0;            // Standard effective heat loss from clothing surface due to both convection and radiation
     283              :     Real64 DryRespHeatLoss = 0.0;           // Dry respiration heat loss
     284              :     Real64 EvapHeatLoss = 0.0;              // Evaporative heat loss from skin
     285              :     Real64 EvapHeatLossDiff = 0.0;          // Evaporative heat loss due to moisture diffusion through skin
     286              :     Real64 EvapHeatLossMax = 0.0;           // Maximum evaporative heat loss
     287              :     Real64 EvapHeatLossRegComf = 0.0;       // Evaporative heat loss due to regulatory sweating at the state of comfort
     288              :     Real64 EvapHeatLossRegSweat = 0.0;      // Evaporative heat loss from regulatory sweating
     289              :     Real64 EvapHeatLossSweat = 0.0;         // Evaporative heat loss from the sweat secreted
     290              :     Real64 EvapHeatLossSweatPrev = 0.0;     // Old value of evaporative heat loss from the sweat secreted (KSU)
     291              :     Real64 H = 0.0;                         // Combined heat transfer coefficient
     292              :     Real64 Hc = 0.0;                        // Convective heat transfer coeffiency
     293              :     Real64 HcFor = 0.0;                     // Convective heat transfer coeffiency - Forced
     294              :     Real64 HcNat = 0.0;                     // Convective heat transfer coeffiency - Natural
     295              :     Real64 HeatFlow = 0.0;                  // Heat flow from core to skin
     296              :     Real64 Hr = 0.0;                        // Radiant heat transfer coeffiency
     297              :     Real64 IntHeatProd = 0.0;               // Internal heat production
     298              :     int IterNum = 0;                        // Number of iteration
     299              :     Real64 LatRespHeatLoss = 0.0;           // Latent respiration heat loss
     300              :     int MaxZoneNum = 0;                     // Number of zones
     301              :     Real64 OpTemp = 0.0;                    // Operative temperature
     302              :     Real64 EffTemp = 0.0;                   // Effective temperature
     303              :     int PeopleNum = 0;                      // People number
     304              :     Real64 RadHeatLoss = 0.0;               // Radiant heat loss
     305              :     Real64 RadTemp = 0.0;                   // Radiant temperature; C
     306              :     Real64 RelHum = 0.0;                    // Relative humidity; Fraction
     307              :     Real64 RespHeatLoss = 0.0;              // The rate of respiratory heat loss
     308              :     Real64 SatSkinVapPress = 0.0;           // Saturated vapor pressure at skin temperature
     309              :     Real64 ShivResponse = 0.0;              // Metalbolic heat production due to shivering
     310              :     Real64 SkinComfTemp = 0.0;              // Skin temperature required to achieve thermal comfort; C
     311              :     Real64 SkinComfVPress = 0.0;            // Saturated water vapor pressure at required skin temperature; Torr
     312              :     Real64 SkinTemp = 0.0;                  // Skin temperature
     313              :     Real64 SkinTempChange = 0.0;            // Temperature change of skin in 1 minute
     314              :     Real64 SkinTempNeut = 0.0;              // Skin temperature at neutral state
     315              :     Real64 SkinThermCap = 0.0;              // Thermal capacity of Skin
     316              :     Real64 SkinWetDiff = 0.0;               // Skin wettedness for nonsweating portion of skin
     317              :     Real64 SkinWetSweat = 0.0;              // Skin wettedness required to evaporate regulatory sweat
     318              :     Real64 SkinWetTot = 0.0;                // Total skin wettedness
     319              :     Real64 SkinVapPress = 0.0;              // Vapor pressure at skin
     320              :     Real64 SurfaceTemp = 0.0;               // Surface temperature when MRTType is 'SurfaceWeighted'
     321              :     Real64 AvgBodyTemp = 0.0;               // Weighted average body temperature considering core and skin temperature
     322              :     Real64 ThermCndct = 0.0;                // Thermal conductance of skin
     323              :     Real64 ThermSensTransCoef = 0.0;        // Theraml sensation coefficient for PMV
     324              :     Real64 Time = 0.0;                      // Time, hr
     325              :     Real64 TimeChange = 0.0;                // Change of time, hr
     326              :     Real64 VapPress = 0.0;                  // Vapor pressure; Torr  ?? BG Oct 2005 humm, this should be kPa
     327              :     Real64 VasoconstrictFac = 0.0;          // Constriction factor of blood vessel
     328              :     Real64 VasodilationFac = 0.0;           // Dilation factor of blood vessel
     329              :     Real64 WorkEff = 0.0;                   // Energy cosumption by external work; w/m2
     330              :     int ZoneNum = 0;                        // Zone number
     331              :     Real64 TemporarySixAMTemperature = 0.0; // Temperature at 6am
     332              : 
     333              :     // time that any zone is not comfortable based on simple ASHRAE 55 using summer clothes
     334              :     Real64 AnyZoneTimeNotSimpleASH55Summer = 0.0;
     335              :     // time that any zone is not comfortable based on simple ASHRAE 55 using winter clothes
     336              :     Real64 AnyZoneTimeNotSimpleASH55Winter = 0.0;
     337              :     // time that any zone is not comfortable based on simple ASHRAE 55 using summer or winter clothes
     338              :     Real64 AnyZoneTimeNotSimpleASH55Either = 0.0;
     339              : 
     340              :     // time that any zone has unmet met loads
     341              :     Real64 AnyZoneNotMetHeating = 0.0;
     342              :     Real64 AnyZoneNotMetCooling = 0.0;
     343              :     Real64 AnyZoneNotMetHeatingOccupied = 0.0;
     344              :     Real64 AnyZoneNotMetCoolingOccupied = 0.0;
     345              :     Real64 AnyZoneNotMetOccupied = 0.0;
     346              :     // total time from beginning of simulation AnyZoneTimeNotSimpleASH55
     347              :     Real64 TotalAnyZoneTimeNotSimpleASH55Summer = 0.0;
     348              :     Real64 TotalAnyZoneTimeNotSimpleASH55Winter = 0.0;
     349              :     Real64 TotalAnyZoneTimeNotSimpleASH55Either = 0.0;
     350              :     // total time from beginning of simulation any zone not met
     351              :     Real64 TotalAnyZoneNotMetHeating = 0.0;
     352              :     Real64 TotalAnyZoneNotMetCooling = 0.0;
     353              :     Real64 TotalAnyZoneNotMetHeatingOccupied = 0.0;
     354              :     Real64 TotalAnyZoneNotMetCoolingOccupied = 0.0;
     355              :     Real64 TotalAnyZoneNotMetOccupied = 0.0;
     356              :     Array1D<Real64> ZoneOccHrs;
     357              :     bool useEpwData = false;
     358              :     Array1D<Real64> DailyAveOutTemp;
     359              : 
     360              :     EPVector<ThermalComfort::ThermalComfortInASH55Type> ThermalComfortInASH55;
     361              :     EPVector<ThermalComfort::ThermalComfortSetPointType> ThermalComfortSetPoint;
     362              :     EPVector<ThermalComfort::ThermalComfortDataType> ThermalComfortData;
     363              :     EPVector<ThermalComfort::AngleFactorData> AngleFactorList; // Angle Factor List data for each Angle Factor List
     364              : 
     365              :     Real64 runningAverageASH = 0.0;
     366              : 
     367              :     Array1D<Real64> Coeff = Array1D<Real64>(2);      // Coefficients used in Range-Kutta's Method
     368              :     Array1D<Real64> Temp = Array1D<Real64>(2);       // Temperature
     369              :     Array1D<Real64> TempChange = Array1D<Real64>(2); // Change of temperature
     370              :     bool FirstTimeError = true;                      // Only report the error message one time
     371              :     Real64 avgDryBulbASH = 0.0;
     372         4247 :     Array1D<Real64> monthlyTemp = Array1D<Real64>(12, 0.0);
     373              :     bool useStatData = false;
     374              :     Real64 avgDryBulbCEN = 0.0;
     375              :     Real64 runningAverageCEN = 0.0;
     376              :     bool useEpwDataCEN = false;
     377              :     bool firstDaySet = false; // first day is set with initiate -- so do not update
     378              : 
     379         2126 :     void init_constant_state([[maybe_unused]] EnergyPlusData &state) override
     380              :     {
     381         2126 :     }
     382              : 
     383         1152 :     void init_state([[maybe_unused]] EnergyPlusData &state) override
     384              :     {
     385         1152 :     }
     386              : 
     387         2118 :     void clear_state() override
     388              :     {
     389         2118 :         new (this) ThermalComfortsData();
     390         2118 :     }
     391              : 
     392              :     // Default Constructor
     393         4247 :     ThermalComfortsData() : DailyAveOutTemp(30, 0.0)
     394              :     {
     395         4247 :     }
     396              : };
     397              : } // namespace EnergyPlus
     398              : 
     399              : #endif
        

Generated by: LCOV version 2.0-1