LCOV - code coverage report
Current view: top level - EnergyPlus - DataHVACGlobals.hh (source / functions) Hit Total Coverage
Test: lcov.output.filtered Lines: 2 5 40.0 %
Date: 2024-08-23 23:50:59 Functions: 1 2 50.0 %

          Line data    Source code
       1             : // EnergyPlus, Copyright (c) 1996-2024, 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 DataHVACGlobals_hh_INCLUDED
      49             : #define DataHVACGlobals_hh_INCLUDED
      50             : 
      51             : // ObjexxFCL Headers
      52             : #include <ObjexxFCL/Array1D.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             : namespace HVAC {
      62             : 
      63             :     // Using/Aliasing
      64             : 
      65             :     // Data
      66             :     // -only module should be available to other modules and routines.
      67             :     // Thus, all variables in this module must be PUBLIC.
      68             : 
      69             :     enum class CtrlVarType
      70             :     {
      71             :         Invalid = -1,
      72             :         Temp,
      73             :         MaxTemp,
      74             :         MinTemp,
      75             :         HumRat,
      76             :         MaxHumRat,
      77             :         MinHumRat,
      78             :         MassFlowRate,
      79             :         MaxMassFlowRate,
      80             :         MinMassFlowRate,
      81             :         Num
      82             :     };
      83             : 
      84             :     // MODULE PARAMETER DEFINITIONS:
      85             : 
      86             :     Real64 constexpr SmallHumRatDiff(1.0E-7);
      87             :     Real64 constexpr SmallTempDiff(1.0E-5);
      88             :     Real64 constexpr SmallMassFlow(0.001);
      89             :     Real64 constexpr VerySmallMassFlow(1.0E-30);
      90             :     Real64 constexpr SmallLoad(1.0);
      91             :     Real64 constexpr TempControlTol(0.1); // temperature control tolerance for packaged equip. [deg C]
      92             :     Real64 constexpr SmallAirVolFlow(0.001);
      93             :     Real64 constexpr SmallWaterVolFlow(1.0E-9);
      94             :     Real64 constexpr BlankNumeric(-99999.0);      // indicates numeric input field was blank
      95             :     Real64 constexpr RetTempMax(60.0);            // maximum return air temperature [deg C]
      96             :     Real64 constexpr RetTempMin(-30.0);           // minimum return air temperature [deg C]
      97             :     Real64 constexpr DesCoilHWInletTempMin(46.0); // minimum heating water coil water inlet temp for UA sizing only. [deg C]
      98             : 
      99             :     int constexpr NumOfSizingTypes(35); // request sizing for cooling air flow rate
     100             : 
     101             :     // Sizing types
     102             :     int constexpr CoolingAirflowSizing(1);                // request sizing for cooling air flow rate
     103             :     int constexpr CoolingWaterDesWaterInletTempSizing(6); // request sizing for cooling water coil inlet water temp
     104             :     int constexpr HeatingAirflowSizing(14);               // request sizing for heating air flow rate
     105             :     int constexpr SystemAirflowSizing(16);                // request sizing for system air flow rate
     106             :     int constexpr CoolingCapacitySizing(17);              // request sizing for cooling capacity
     107             :     int constexpr HeatingCapacitySizing(18);              // request sizing for heating capacity
     108             :     int constexpr SystemCapacitySizing(21);               // request sizing for system capacity
     109             :     int constexpr AutoCalculateSizing(25);                // identifies an autocalulate input
     110             : 
     111             :     // The following parameters describe the setpoint types in TempControlType(ActualZoneNum)
     112             :     enum class ThermostatType
     113             :     {
     114             :         Invalid = -1,
     115             :         Uncontrolled,
     116             :         SingleHeating,
     117             :         SingleCooling,
     118             :         SingleHeatCool,
     119             :         DualSetPointWithDeadBand,
     120             :         Num
     121             :     };
     122             : 
     123             :     static constexpr std::array<std::string_view, static_cast<int>(ThermostatType::Num)> thermostatTypeNames = {
     124             :         "Uncontrolled", "SingleHeating", "SingleCooling", "SingleHeatCool", "DualSetPointWithDeadBand"};
     125             : 
     126             :     enum class AirDuctType
     127             :     // parameters describing air duct type
     128             :     {
     129             :         Invalid = -1,
     130             :         Main,
     131             :         Cooling,
     132             :         Heating,
     133             :         Other,
     134             :         RAB,
     135             :         Num
     136             :     };
     137             : 
     138             :     static constexpr std::array<std::string_view, static_cast<int>(AirDuctType::Num)> airDuctTypeNames = {
     139             :         "Main", "Cooling", "Heating", "Other", "Return Air Bypass"};
     140             : 
     141             :     int constexpr Cooling(2);
     142             :     int constexpr Heating(3);
     143             : 
     144             :     enum class FanType
     145             :     {
     146             :         Invalid = -1,
     147             :         Constant,
     148             :         VAV,
     149             :         OnOff,
     150             :         Exhaust,
     151             :         ComponentModel,
     152             :         SystemModel,
     153             :         Num
     154             :     };
     155             : 
     156             :     extern const std::array<std::string_view, (int)FanType::Num> fanTypeNames;
     157             :     extern const std::array<std::string_view, (int)FanType::Num> fanTypeNamesUC;
     158             : 
     159             :     // Fan mode
     160             : 
     161             :     enum class FanOp
     162             :     {
     163             :         Invalid = -1,
     164             :         Cycling,
     165             :         Continuous,
     166             :         Num
     167             :     };
     168             : 
     169             :     // Fan placement
     170             :     enum class FanPlace
     171             :     {
     172             :         Invalid = -1,
     173             :         BlowThru,
     174             :         DrawThru,
     175             :         Num
     176             :     };
     177             : 
     178             :     static constexpr std::array<std::string_view, (int)FanPlace::Num> fanPlaceNamesUC = {"BLOWTHROUGH", "DRAWTHROUGH"};
     179             : 
     180             :     // OA Controller Heat Recovery Bypass Control Types
     181             :     int constexpr BypassWhenWithinEconomizerLimits(0);   // heat recovery controlled by economizer limits
     182             :     int constexpr BypassWhenOAFlowGreaterThanMinimum(1); // heat recovery ON at minimum OA in economizer mode
     183             : 
     184             :     enum class EconomizerStagingType
     185             :     // OA Controller Economizer Staging
     186             :     {
     187             :         Invalid = -1,
     188             :         EconomizerFirst,                  // system air flow rate and economizer is ramped-up before using mechanical cooling
     189             :         InterlockedWithMechanicalCooling, // economizer operation (flow rate) depends on the cooling speed chosen by the system
     190             :         Num
     191             :     };
     192             : 
     193             :     static constexpr std::array<std::string_view, (int)EconomizerStagingType::Num> economizerStagingTypeNamesUC = {
     194             :         "ECONOMIZERFIRST",
     195             :         "INTERLOCKEDWITHMECHANICALCOOLING",
     196             :     };
     197             :     static constexpr std::array<std::string_view, (int)EconomizerStagingType::Num> economizerStagingTypeNames = {
     198             :         "EconomizerFirst",
     199             :         "InterlockedWithMechanicalCooling",
     200             :     };
     201             : 
     202             :     enum class UnitarySysType
     203             :     {
     204             :         Invalid = -1,
     205             :         Furnace_HeatOnly,
     206             :         Furnace_HeatCool,
     207             :         Unitary_HeatOnly,
     208             :         Unitary_HeatCool,
     209             :         Unitary_HeatPump_AirToAir,
     210             :         Unitary_HeatPump_WaterToAir,
     211             :         Unitary_AnyCoilType,
     212             :         Num
     213             :     };
     214             : 
     215             :     extern const std::array<std::string_view, (int)UnitarySysType::Num> unitarySysTypeNames;
     216             :     extern const std::array<std::string_view, (int)UnitarySysType::Num> unitarySysTypeNamesUC;
     217             : 
     218             :     enum class CoilType
     219             :     {
     220             :         Invalid = -1,
     221             :         DXCoolingSingleSpeed,
     222             :         DXHeatingEmpirical,
     223             :         DXCoolingTwoSpeed,
     224             :         DXCoolingHXAssisted,
     225             :         DXCoolingTwoStageWHumControl,
     226             :         DXHeatPumpWaterHeaterPumped,
     227             :         DXHeatPumpWaterHeaterWrapped,
     228             :         DXMultiSpeedCooling,
     229             :         DXMultiSpeedHeating,
     230             :         HeatingGasOrOtherFuel,
     231             :         HeatingGasMultiStage,
     232             :         HeatingElectric,
     233             :         HeatingElectricMultiStage,
     234             :         HeatingDesuperheater,
     235             :         CoolingWater,
     236             :         CoolingWaterDetailed,
     237             :         HeatingWater,
     238             :         HeatingSteam,
     239             :         WaterCoolingHXAssisted,
     240             :         CoolingWaterToAirHP,
     241             :         HeatingWaterToAirHP,
     242             :         CoolingWaterToAirHPSimple,
     243             :         HeatingWaterToAirHPSimple,
     244             :         VRFCooling,
     245             :         VRFHeating,
     246             :         UserDefined,
     247             :         DXPackagedThermalStorageCooling,
     248             :         CoolingWaterToAirHPVSEquationFit,
     249             :         HeatingWaterToAirHPVSEquationFit,
     250             :         CoolingAirToAirVariableSpeed,
     251             :         HeatingAirToAirVariableSpeed,
     252             :         DXHeatPumpWaterHeaterVariableSpeed,
     253             :         VRFFluidTCtrlCooling,
     254             :         VRFFluidTCtrlHeating,
     255             :         DXCooling,
     256             :         DXSubcoolReheat,
     257             :         DXCurveFitSpeed,
     258             :         Num
     259             :     };
     260             :     static constexpr std::array<std::string_view, static_cast<int>(CoilType::Num)> coilTypeNamesUC = {
     261             :         "COIL:COOLING:DX:SINGLESPEED",
     262             :         "COIL:HEATING:DX:SINGLESPEED",
     263             :         "COIL:COOLING:DX:TWOSPEED",
     264             :         "COILSYSTEM:COOLING:DX:HEATEXCHANGERASSISTED",
     265             :         "COIL:COOLING:DX:TWOSTAGEWITHHUMIDITYCONTROLMODE",
     266             :         "COIL:WATERHEATING:AIRTOWATERHEATPUMP:PUMPED",
     267             :         "COIL:WATERHEATING:AIRTOWATERHEATPUMP:WRAPPED",
     268             :         "COIL:COOLING:DX:MULTISPEED",
     269             :         "COIL:HEATING:DX:MULTISPEED",
     270             :         "COIL:HEATING:FUEL",
     271             :         "COIL:HEATING:GAS:MULTISTAGE",
     272             :         "COIL:HEATING:ELECTRIC",
     273             :         "COIL:HEATING:ELECTRIC:MULTISTAGE",
     274             :         "COIL:HEATING:DESUPERHEATER",
     275             :         "COIL:COOLING:WATER",
     276             :         "COIL:COOLING:WATER:DETAILEDGEOMETRY",
     277             :         "COIL:HEATING:WATER",
     278             :         "COIL:HEATING:STEAM",
     279             :         "COILSYSTEM:COOLING:WATER:HEATEXCHANGERASSISTED",
     280             :         "COIL:COOLING:WATERTOAIRHEATPUMP:PARAMETERESTIMATION",
     281             :         "COIL:HEATING:WATERTOAIRHEATPUMP:PARAMETERESTIMATION",
     282             :         "COIL:COOLING:WATERTOAIRHEATPUMP:EQUATIONFIT",
     283             :         "COIL:HEATING:WATERTOAIRHEATPUMP:EQUATIONFIT",
     284             :         "COIL:COOLING:DX:VARIABLEREFRIGERANTFLOW",
     285             :         "COIL:HEATING:DX:VARIABLEREFRIGERANTFLOW",
     286             :         "COIL:USERDEFINED",
     287             :         "COIL:COOLING:DX:SINGLESPEED:THERMALSTORAGE",
     288             :         "COIL:COOLING:WATERTOAIRHEATPUMP:VARIABLESPEEDEQUATIONFIT",
     289             :         "COIL:HEATING:WATERTOAIRHEATPUMP:VARIABLESPEEDEQUATIONFIT",
     290             :         "COIL:COOLING:DX:VARIABLESPEED",
     291             :         "COIL:HEATING:DX:VARIABLESPEED",
     292             :         "COIL:WATERHEATING:AIRTOWATERHEATPUMP:VARIABLESPEED",
     293             :         "COIL:COOLING:DX:VARIABLEREFRIGERANTFLOW:FLUIDTEMPERATURECONTROL",
     294             :         "COIL:HEATING:DX:VARIABLEREFRIGERANTFLOW:FLUIDTEMPERATURECONTROL",
     295             :         "COIL:COOLING:DX",
     296             :         "COIL:COOLING:DX:SUBCOOLREHEAT",
     297             :         "COIL:COOLING:DX:CURVEFIT:SPEED"};
     298             : 
     299             :     // parameters describing coil types
     300             :     int constexpr NumAllCoilTypes(37);
     301             :     int constexpr CoilDX_CoolingSingleSpeed(1);
     302             :     int constexpr CoilDX_HeatingEmpirical(2);
     303             :     int constexpr CoilDX_CoolingTwoSpeed(3);
     304             :     int constexpr CoilDX_CoolingHXAssisted(4);
     305             :     int constexpr CoilDX_CoolingTwoStageWHumControl(5);
     306             :     int constexpr CoilDX_HeatPumpWaterHeaterPumped(6);
     307             :     int constexpr CoilDX_HeatPumpWaterHeaterWrapped(7);
     308             :     int constexpr CoilDX_MultiSpeedCooling(8);
     309             :     int constexpr CoilDX_MultiSpeedHeating(9);
     310             :     int constexpr Coil_HeatingGasOrOtherFuel(10);
     311             :     int constexpr Coil_HeatingGas_MultiStage(11);
     312             :     int constexpr Coil_HeatingElectric(12);
     313             :     int constexpr Coil_HeatingElectric_MultiStage(13);
     314             :     int constexpr Coil_HeatingDesuperheater(14);
     315             :     int constexpr Coil_CoolingWater(15);
     316             :     int constexpr Coil_CoolingWaterDetailed(16);
     317             :     int constexpr Coil_HeatingWater(17);
     318             :     int constexpr Coil_HeatingSteam(18);
     319             :     int constexpr CoilWater_CoolingHXAssisted(19);
     320             :     int constexpr Coil_CoolingWaterToAirHP(20);
     321             :     int constexpr Coil_HeatingWaterToAirHP(21);
     322             :     int constexpr Coil_CoolingWaterToAirHPSimple(22);
     323             :     int constexpr Coil_HeatingWaterToAirHPSimple(23);
     324             :     int constexpr CoilVRF_Cooling(24);
     325             :     int constexpr CoilVRF_Heating(25);
     326             :     int constexpr Coil_UserDefined(26);
     327             :     int constexpr CoilDX_PackagedThermalStorageCooling(27);
     328             :     int constexpr Coil_CoolingWaterToAirHPVSEquationFit(28);
     329             :     int constexpr Coil_HeatingWaterToAirHPVSEquationFit(29);
     330             :     int constexpr Coil_CoolingAirToAirVariableSpeed(30);
     331             :     int constexpr Coil_HeatingAirToAirVariableSpeed(31);
     332             :     int constexpr CoilDX_HeatPumpWaterHeaterVariableSpeed(32);
     333             :     int constexpr CoilVRF_FluidTCtrl_Cooling(33);
     334             :     int constexpr CoilVRF_FluidTCtrl_Heating(34);
     335             :     int constexpr CoilDX_Cooling(35);
     336             :     //    int constexpr CoilDX_SubcoolReheat(36);
     337             :     int constexpr CoilDX_CurveFit_Speed(37);
     338             : 
     339             :     enum class CoilMode
     340             :     {
     341             :         Invalid = -1,
     342             :         Normal,
     343             :         Enhanced,
     344             :         SubcoolReheat,
     345             :         Num
     346             :     };
     347             : 
     348             :     enum class WaterFlow
     349             :     {
     350             :         Invalid = -1,
     351             :         Cycling,
     352             :         Constant,
     353             :         ConstantOnDemand,
     354             :         Num
     355             :     };
     356             : 
     357             :     extern const std::array<std::string_view, (int)WaterFlow::Num> waterFlowNames;
     358             :     extern const std::array<std::string_view, (int)WaterFlow::Num> waterFlowNamesUC;
     359             : 
     360             :     // parameters describing coil performance types
     361             :     int constexpr CoilPerfDX_CoolBypassEmpirical(100);
     362             : 
     363             :     // Airflow per total capacity range (Regular DX coils)
     364             :     Real64 constexpr MaxRatedVolFlowPerRatedTotCap1(0.00006041); // m3/s per watt = 450 cfm/ton
     365             :     Real64 constexpr MinRatedVolFlowPerRatedTotCap1(0.00004027); // m3/s per watt = 300 cfm/ton
     366             :     Real64 constexpr MaxHeatVolFlowPerRatedTotCap1(0.00008056);  // m3/s per watt = 600 cfm/ton
     367             :     Real64 constexpr MaxCoolVolFlowPerRatedTotCap1(0.00006713);  // m3/s per watt = 500 cfm/ton
     368             :     Real64 constexpr MinOperVolFlowPerRatedTotCap1(0.00002684);  // m3/s per watt = 200 cfm/ton
     369             : 
     370             :     // 100% DOAS DX coils Airflow per total capacity ratio
     371             :     Real64 constexpr MaxRatedVolFlowPerRatedTotCap2(0.00003355); // m3/s per watt = 250 cfm/ton
     372             :     Real64 constexpr MinRatedVolFlowPerRatedTotCap2(0.00001677); // m3/s per watt = 125 cfm/ton
     373             :     Real64 constexpr MaxHeatVolFlowPerRatedTotCap2(0.00004026);  // m3/s per watt = 300 cfm/ton
     374             :     Real64 constexpr MaxCoolVolFlowPerRatedTotCap2(0.00004026);  // m3/s per watt = 300 cfm/ton
     375             :     Real64 constexpr MinOperVolFlowPerRatedTotCap2(0.00001342);  // m3/s per watt = 100 cfm/ton
     376             : 
     377             :     constexpr std::array<Real64, 2> MaxRatedVolFlowPerRatedTotCap = {MaxRatedVolFlowPerRatedTotCap1, MaxRatedVolFlowPerRatedTotCap2};
     378             :     constexpr std::array<Real64, 2> MinRatedVolFlowPerRatedTotCap = {MinRatedVolFlowPerRatedTotCap1, MinRatedVolFlowPerRatedTotCap2};
     379             :     constexpr std::array<Real64, 2> MaxHeatVolFlowPerRatedTotCap = {MaxHeatVolFlowPerRatedTotCap1, MaxHeatVolFlowPerRatedTotCap2};
     380             :     constexpr std::array<Real64, 2> MaxCoolVolFlowPerRatedTotCap = {MaxCoolVolFlowPerRatedTotCap1, MaxCoolVolFlowPerRatedTotCap2};
     381             :     constexpr std::array<Real64, 2> MinOperVolFlowPerRatedTotCap = {MinOperVolFlowPerRatedTotCap1, MinOperVolFlowPerRatedTotCap2};
     382             : 
     383             :     // dx coil type (DXCT)
     384             :     enum class DXCoilType
     385             :     {
     386             :         Invalid = -1,
     387             :         Regular,
     388             :         DOAS,
     389             :         Num
     390             :     };
     391             : 
     392             :     enum class HXType
     393             :     {
     394             :         Invalid = -1,
     395             :         AirToAir_FlatPlate,
     396             :         AirToAir_Generic,
     397             :         Desiccant_Balanced,
     398             :         Num
     399             :     };
     400             : 
     401             :     extern const std::array<std::string_view, (int)HXType::Num> hxTypeNames;
     402             :     extern const std::array<std::string_view, (int)HXType::Num> hxTypeNamesUC;
     403             : 
     404             :     enum class MixerType
     405             :     {
     406             :         Invalid = -1,
     407             :         InletSide,
     408             :         SupplySide,
     409             :         Num
     410             :     };
     411             : 
     412             :     extern const std::array<std::string_view, (int)MixerType::Num> mixerTypeNames;
     413             :     extern const std::array<std::string_view, (int)MixerType::Num> mixerTypeNamesUC;
     414             : 
     415             :     extern const std::array<std::string_view, (int)MixerType::Num> mixerTypeLocNames;
     416             :     extern const std::array<std::string_view, (int)MixerType::Num> mixerTypeLocNamesUC;
     417             : 
     418             :     enum class OATType
     419             :     {
     420             :         Invalid = -1,
     421             :         WetBulb,
     422             :         DryBulb,
     423             :         Num
     424             :     };
     425             : 
     426             :     extern const std::array<std::string_view, (int)OATType::Num> oatTypeNames;
     427             :     extern const std::array<std::string_view, (int)OATType::Num> oatTypeNamesUC;
     428             : 
     429             :     // parameter concerning the amount of change in zone temperature is needed
     430             :     // for oscillation of zone temperature to be detected.
     431             :     Real64 constexpr OscillateMagnitude(0.15);
     432             : 
     433             :     int constexpr MaxSpeedLevels = 10;
     434             : 
     435             :     extern Array1D_string const cAllCoilTypes;
     436             :     extern Array1D_string const cCoolingCoilTypes;
     437             :     extern Array1D_string const cHeatingCoilTypes;
     438             : 
     439             :     struct ComponentSetPtData
     440             :     {
     441             :         // Members
     442             :         std::string EquipmentType;
     443             :         std::string EquipmentName;
     444             :         int NodeNumIn = 0;
     445             :         int NodeNumOut = 0;
     446             :         Real64 EquipDemand = 0.0;
     447             :         Real64 DesignFlowRate = 0.0;
     448             :         std::string HeatOrCool;
     449             :         int OpType = 0;
     450             :     };
     451             : 
     452             :     // Compressor operation
     453             :     enum class CompressorOp
     454             :     {
     455             :         Invalid = -1,
     456             :         Off, // signal DXCoil that compressor shouldn't run
     457             :         On,  // normal compressor operation
     458             :         Num
     459             :     };
     460             : } // namespace HVAC
     461             : 
     462             : struct HVACGlobalsData : BaseGlobalStruct
     463             : {
     464             :     // Object Data
     465             :     Array1D<HVAC::ComponentSetPtData> CompSetPtEquip;
     466             : 
     467             :     // For multispeed heat pump only
     468             :     Real64 MSHPMassFlowRateLow = 0.0;       // Mass flow rate at low speed
     469             :     Real64 MSHPMassFlowRateHigh = 0.0;      // Mass flow rate at high speed
     470             :     Real64 MSHPWasteHeat = 0.0;             // Waste heat
     471             :     Real64 PreviousTimeStep = 0.0;          // The time step length at the previous time step
     472             :     bool ShortenTimeStepSysRoomAir = false; // Logical flag that triggers shortening of system time step
     473             :     // For multispeed unitary systems
     474             :     Real64 MSUSEconoSpeedNum = 0; // Economizer speed
     475             : 
     476             :     Real64 deviationFromSetPtThresholdHtg = -0.2; // heating threshold for reporting setpoint deviation
     477             :     Real64 deviationFromSetPtThresholdClg = 0.2;  // cooling threshold for reporting setpoint deviation
     478             : 
     479             :     bool SimAirLoopsFlag = false;           // True when the air loops need to be (re)simulated
     480             :     bool SimElecCircuitsFlag = false;       // True when electic circuits need to be (re)simulated
     481             :     bool SimPlantLoopsFlag = false;         // True when the main plant loops need to be (re)simulated
     482             :     bool SimZoneEquipmentFlag = false;      // True when zone equipment components need to be (re)simulated
     483             :     bool SimNonZoneEquipmentFlag = false;   // True when non-zone equipment components need to be (re)simulated
     484             :     bool ZoneMassBalanceHVACReSim = false;  // True when zone air mass flow balance and air loop needs (re)simulated
     485             :     int MinAirLoopIterationsAfterFirst = 1; // minimum number of HVAC iterations after FirstHVACIteration
     486             : 
     487             :     HVAC::DXCoilType DXCT = HVAC::DXCoilType::Regular; // dx coil type: regular DX coil ==1, 100% DOAS DX coil = 2
     488             :     bool FirstTimeStepSysFlag = false;                 // Set to true at the start of each sub-time step
     489             : 
     490             :     Real64 TimeStepSys = 0.0;                  // System Time Increment - the adaptive time step used by the HVAC simulation (hours)
     491             :     Real64 TimeStepSysSec = 0.0;               // System Time Increment in seconds
     492             :     Real64 SysTimeElapsed = 0.0;               // elapsed system time in zone timestep (hours)
     493             :     Real64 FracTimeStepZone = 0.0;             // System time step divided by the zone time step
     494             :     bool ShortenTimeStepSys = false;           // Logical flag that triggers shortening of system time step
     495             :     int NumOfSysTimeSteps = 1;                 // for current zone time step, number of system timesteps inside  it
     496             :     int NumOfSysTimeStepsLastZoneTimeStep = 1; // previous zone time step, num of system timesteps inside
     497             :     int LimitNumSysSteps = 0;
     498             : 
     499             :     bool UseZoneTimeStepHistory = true;    // triggers use of zone time step history, else system time step history, for ZTM1, ZTMx
     500             :     int NumPlantLoops = 0;                 // Number of plant loops specified in simulation
     501             :     int NumCondLoops = 0;                  // Number of condenser plant loops specified in simulation
     502             :     int NumElecCircuits = 0;               // Number of electric circuits specified in simulation
     503             :     int NumGasMeters = 0;                  // Number of gas meters specified in simulation
     504             :     int NumPrimaryAirSys = 0;              // Number of primary HVAC air systems
     505             :     Real64 OnOffFanPartLoadFraction = 1.0; // fan part-load fraction (Fan:OnOff)
     506             :     Real64 DXCoilTotalCapacity = 0.0;      // DX coil total cooling capacity (eio report var for HPWHs)
     507             :     Real64 DXElecCoolingPower = 0.0;       // Electric power consumed by DX cooling coil last DX simulation
     508             :     Real64 DXElecHeatingPower = 0.0;       // Electric power consumed by DX heating coil last DX simulation
     509             :     Real64 ElecHeatingCoilPower = 0.0;     // Electric power consumed by electric heating coil
     510             :     Real64 SuppHeatingCoilPower = 0.0;     // Electric power consumed by electric supplemental heating coil
     511             :     Real64 AirToAirHXElecPower = 0.0;      // Electric power consumed by Heat Exchanger:Air To Air (Generic or Flat Plate)
     512             :     Real64 DefrostElecPower = 0.0;         // Electric power consumed by DX heating coil for defrosting (Resistive or ReverseCycle)
     513             :     // from last simulation in HeatRecovery.cc
     514             :     Real64 UnbalExhMassFlow = 0.0;      // unbalanced zone exhaust from a zone equip component [kg/s]
     515             :     Real64 BalancedExhMassFlow = 0.0;   // balanced zone exhaust (declared as so by user)  [kg/s]
     516             :     Real64 PlenumInducedMassFlow = 0.0; // secondary air mass flow rate induced from a return plenum [kg/s]
     517             :     bool TurnFansOn = false;            // If true overrides fan schedule and cycles fans on
     518             :     bool TurnFansOff = false;           // If True overides fan schedule and TurnFansOn and forces fans off
     519             :     bool SetPointErrorFlag = false;     // True if any needed setpoints not set; if true, program terminates
     520             :     bool DoSetPointTest = false;        // True one time only for sensed node setpoint test
     521             :     bool NightVentOn = false;           // set TRUE in SimAirServingZone if night ventilation is happening
     522             : 
     523             :     int NumTempContComps = 0;
     524             :     Real64 HPWHInletDBTemp = 0.0;     // Used by curve objects when calculating DX coil performance for HEAT PUMP:WATER HEATER
     525             :     Real64 HPWHInletWBTemp = 0.0;     // Used by curve objects when calculating DX coil performance for HEAT PUMP:WATER HEATER
     526             :     Real64 HPWHCrankcaseDBTemp = 0.0; // Used for HEAT PUMP:WATER HEATER crankcase heater ambient temperature calculations
     527             :     bool AirLoopInit = false;         // flag for whether InitAirLoops has been called
     528             :     bool AirLoopsSimOnce = false;     // True means that the air loops have been simulated once in this environment
     529             :     bool GetAirPathDataDone = false;  // True means that air loops inputs have been processed
     530             :     bool StandardRatingsMyOneTimeFlag = true;
     531             :     bool StandardRatingsMyCoolOneTimeFlag = true;
     532             :     bool StandardRatingsMyCoolOneTimeFlag2 = true;
     533             :     bool StandardRatingsMyCoolOneTimeFlag3 = true;
     534             :     bool StandardRatingsMyHeatOneTimeFlag = true;
     535             :     bool StandardRatingsMyHeatOneTimeFlag2 = true;
     536             : 
     537         796 :     void init_state([[maybe_unused]] EnergyPlusData &state) override
     538             :     {
     539         796 :     }
     540             : 
     541           0 :     void clear_state() override
     542             :     {
     543           0 :         new (this) HVACGlobalsData();
     544           0 :     }
     545             : };
     546             : 
     547             : } // namespace EnergyPlus
     548             : 
     549             : #endif

Generated by: LCOV version 1.14