LCOV - code coverage report
Current view: top level - EnergyPlus - SingleDuct.hh (source / functions) Hit Total Coverage
Test: lcov.output.filtered Lines: 23 26 88.5 %
Date: 2024-08-24 18:31:18 Functions: 3 4 75.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 SingleDuct_hh_INCLUDED
      49             : #define SingleDuct_hh_INCLUDED
      50             : 
      51             : #include <unordered_map>
      52             : 
      53             : // ObjexxFCL Headers
      54             : #include <ObjexxFCL/Array1D.hh>
      55             : #include <ObjexxFCL/Optional.hh>
      56             : 
      57             : // EnergyPlus Headers
      58             : #include <EnergyPlus/Data/BaseData.hh>
      59             : #include <EnergyPlus/DataGlobals.hh>
      60             : #include <EnergyPlus/DataZoneEquipment.hh>
      61             : #include <EnergyPlus/EnergyPlus.hh>
      62             : #include <EnergyPlus/Plant/Enums.hh>
      63             : #include <EnergyPlus/Plant/PlantLocation.hh>
      64             : 
      65             : namespace EnergyPlus {
      66             : 
      67             : // Forward declarations
      68             : struct EnergyPlusData;
      69             : 
      70             : namespace SingleDuct {
      71             : 
      72             :     enum class Action
      73             :     {
      74             :         Invalid = -1,
      75             :         Normal,
      76             :         Reverse,
      77             :         ReverseWithLimits,
      78             :         HeatingNotUsed,
      79             :         Num
      80             :     };
      81             :     enum class SysType
      82             :     {
      83             :         Invalid = -1,
      84             :         SingleDuctVAVReheat,
      85             :         SingleDuctConstVolReheat,
      86             :         SingleDuctConstVolNoReheat,
      87             :         SingleDuctVAVNoReheat,
      88             :         SingleDuctVAVReheatVSFan,
      89             :         SingleDuctCBVAVReheat,
      90             :         SingleDuctCBVAVNoReheat,
      91             :         Num,
      92             :     };
      93             :     enum class HeatingCoilType : int
      94             :     {
      95             :         Invalid = -1,
      96             :         None,
      97             :         Gas,
      98             :         Electric,
      99             :         SimpleHeating,
     100             :         SteamAirHeating,
     101             :         Num,
     102             :     };
     103             :     enum class MinFlowFraction
     104             :     {
     105             :         Invalid = -1,
     106             :         Constant,
     107             :         Scheduled,
     108             :         Fixed,
     109             :         MinFracNotUsed,
     110             :         Num
     111             :     };
     112             : 
     113             :     struct SingleDuctAirTerminalFlowConditions
     114             :     {
     115             :         // Members
     116             :         Real64 AirMassFlowRate;         // MassFlow through the Sys being Simulated [kg/Sec]
     117             :         Real64 AirMassFlowRateMaxAvail; // MassFlow through the Sys being Simulated [kg/Sec]
     118             :         Real64 AirMassFlowRateMinAvail; // MassFlow through the Sys being Simulated [kg/Sec]
     119             :         Real64 AirTemp;                 // (C)
     120             :         Real64 AirHumRat;               // (Kg/Kg)
     121             :         Real64 AirEnthalpy;             // (J/Kg)
     122             : 
     123             :         // Default Constructor
     124        1040 :         SingleDuctAirTerminalFlowConditions()
     125        1040 :             : AirMassFlowRate(0.0), AirMassFlowRateMaxAvail(0.0), AirMassFlowRateMinAvail(0.0), AirTemp(0.0), AirHumRat(0.0), AirEnthalpy(0.0)
     126             :         {
     127        1040 :         }
     128             :     };
     129             : 
     130             :     struct SingleDuctAirTerminal
     131             :     {
     132             :         // Members
     133             :         int SysNum;                                         // index to single duct air terminal unit
     134             :         std::string SysName;                                // Name of the Sys
     135             :         std::string sysType;                                // Type of Sys ie. VAV, Mixing, Inducing, etc.
     136             :         SysType SysType_Num;                                // Numeric Equivalent for System type
     137             :         std::string Schedule;                               // Sys Operation Schedule
     138             :         int SchedPtr;                                       // Pointer to the correct schedule
     139             :         std::string ReheatComp;                             // Type of the Reheat Coil Object
     140             :         HeatingCoilType ReheatComp_Num;                     // Numeric Equivalent in this module for Coil type
     141             :         int ReheatComp_Index;                               // Returned Index number from other routines
     142             :         std::string ReheatName;                             // name of reheat coil
     143             :         DataPlant::PlantEquipmentType ReheatComp_PlantType; // typeOf_ number for plant type of heating coil
     144             :         HVAC::FanType fanType;                              // Numeric Equivalent in this module for fan type
     145             :         int Fan_Index;                                      // Returned Index number from other routines
     146             :         int ControlCompTypeNum;
     147             :         int CompErrIndex;
     148             :         std::string FanName;                  // name of fan
     149             :         Real64 MaxAirVolFlowRate;             // Max Specified Volume Flow Rate of Sys (cooling max) [m3/sec]
     150             :         Real64 AirMassFlowRateMax;            // Max Specified Mass Flow Rate of Sys (cooling max) [kg/sec]
     151             :         Real64 MaxHeatAirVolFlowRate;         // Max specified volume flow rate of unit at max heating [m3/s]
     152             :         Real64 HeatAirMassFlowRateMax;        // Max Specified Mass Flow Rate of unit at max heating [kg/sec]
     153             :         MinFlowFraction ZoneMinAirFracMethod; // parameter for what method is used for min flow fraction
     154             :         Real64 ZoneMinAirFracDes;             // Fraction of supply air used as design minimum flow
     155             :         Real64 ZoneMinAirFrac;                // Fraction of supply air used as current minimum flow
     156             :         Real64 ZoneMinAirFracReport;          // Fraction of supply air used as minimum flow for reporting (zero if terminal unit flow is zero)
     157             :         Real64 ZoneFixedMinAir;               // Absolute minimum supply air flow
     158             :         int ZoneMinAirFracSchPtr;             // pointer to the schedule for min flow fraction
     159             :         bool ConstantMinAirFracSetByUser;     // record if user left field blank for constant min fraction.
     160             :         bool FixedMinAirSetByUser;            // record if user left field blank for constant min fraction.
     161             :         Real64 DesignMinAirFrac;              // store user entered constant min flow fract for design
     162             :         Real64 DesignFixedMinAir;             // store user entered constant min flow for design
     163             :         int InletNodeNum;                     // terminal unit inlet node number; damper inlet node number
     164             :         int OutletNodeNum;                    // damper outlet node number for VAV; unused by CV; coil air inlet node for VAV
     165             :         // fan outlet node, coil inlet node for VAV VS Fan
     166             :         int ReheatControlNode;        // hot water inlet node for heating coil
     167             :         int ReheatCoilOutletNode;     // outlet node for heating coil
     168             :         Real64 ReheatCoilMaxCapacity; // heating coil capacity, W
     169             :         int ReheatAirOutletNode;      // terminal unit outlet node; heating coil air outlet node
     170             :         Real64 MaxReheatWaterVolFlow; // m3/s
     171             :         Real64 MaxReheatSteamVolFlow; // m3/s
     172             :         Real64 MaxReheatWaterFlow;    // kg/s
     173             :         Real64 MaxReheatSteamFlow;    // kg/s
     174             :         Real64 MinReheatWaterVolFlow; // m3/s
     175             :         Real64 MinReheatSteamVolFlow; // m3/s
     176             :         Real64 MinReheatWaterFlow;    // kg/s
     177             :         Real64 MinReheatSteamFlow;    // kg/s
     178             :         Real64 ControllerOffset;
     179             :         Real64 MaxReheatTemp; // C
     180             :         bool MaxReheatTempSetByUser;
     181             :         Action DamperHeatingAction;
     182             :         Real64 DamperPosition;
     183             :         int ADUNum;                           // index of corresponding air distribution unit
     184             :         int FluidIndex;                       // Refrigerant index
     185             :         int ErrCount1;                        // iteration limit exceeded in Hot Water Flow Calc
     186             :         int ErrCount1c;                       // iteration limit exceeded in Hot Water Flow Calc - continue
     187             :         int ErrCount2;                        // bad iterations limits in hot water flow calc
     188             :         Real64 ZoneFloorArea;                 // Zone floor area
     189             :         int CtrlZoneNum;                      // Pointer to CtrlZone data structure
     190             :         int CtrlZoneInNodeIndex;              // which controlled zone inlet node number corresponds with this unit
     191             :         Real64 MaxAirVolFlowRateDuringReheat; // Maximum vol flow during reheat
     192             :         Real64 MaxAirVolFractionDuringReheat; // Maximum vol flow fraction during reheat
     193             :         Real64 AirMassFlowDuringReheatMax;    // Maximum mass flow during reheat
     194             :         int ZoneOutdoorAirMethod;             // Outdoor air method
     195             :         Real64 OutdoorAirFlowRate;            // report variable for TU outdoor air flow rate
     196             :         bool NoOAFlowInputFromUser;           // avoids OA calculation if no input specified by user
     197             :         int OARequirementsPtr;                // - Index to DesignSpecification:OutdoorAir object
     198             :         int AirLoopNum;
     199             :         PlantLocation HWplantLoc;     // plant topology, Component location
     200             :         std::string ZoneHVACUnitType; // type of Zone HVAC unit for air terminal mixer units
     201             :         std::string ZoneHVACUnitName; // name of Zone HVAC unit for air terminal mixer units
     202             :         int SecInNode;                // zone or zone unit air node number
     203             :         // warning variables
     204             :         int IterationLimit;                                       // Used for RegulaFalsi error -1
     205             :         int IterationFailed;                                      // Used for RegulaFalsi error -2
     206             :         DataZoneEquipment::PerPersonVentRateMode OAPerPersonMode; // mode for how per person rates are determined, DCV or design.
     207             :         bool EMSOverrideAirFlow;                                  // if true, EMS is calling to override flow rate
     208             :         Real64 EMSMassFlowRateValue;                              // value EMS is directing to use for flow rate [kg/s]
     209             :         int ZoneTurndownMinAirFracSchPtr;                         // pointer to the schedule for turndown minimum airflow fraction
     210             :         Real64 ZoneTurndownMinAirFrac;       // turndown minimum airflow fraction value, multiplier of zone design minimum air flow
     211             :         bool ZoneTurndownMinAirFracSchExist; // if true, if zone turndown min air frac schedule exist
     212             :         bool MyEnvrnFlag;
     213             :         bool MySizeFlag;
     214             :         bool GetGasElecHeatCoilCap; // Gets autosized value of coil capacity
     215             :         bool PlantLoopScanFlag;     // plant loop scan flag, false if scanned
     216             :         Real64 MassFlow1;           // previous value of the terminal unit mass flow rate
     217             :         Real64 MassFlow2;           // previous value of the previous value of the mass flow rate
     218             :         Real64 MassFlow3;
     219             :         Real64 MassFlowDiff;
     220             :         SingleDuctAirTerminalFlowConditions sd_airterminalInlet;
     221             :         SingleDuctAirTerminalFlowConditions sd_airterminalOutlet;
     222             : 
     223             :         // Default Constructor
     224         520 :         SingleDuctAirTerminal()
     225        2080 :             : SysNum(-1), SysType_Num(SysType::Invalid), SchedPtr(0), ReheatComp_Num(HeatingCoilType::None), ReheatComp_Index(0),
     226         520 :               ReheatComp_PlantType(DataPlant::PlantEquipmentType::Invalid), fanType(HVAC::FanType::Invalid), Fan_Index(0), ControlCompTypeNum(0),
     227        1040 :               CompErrIndex(0), MaxAirVolFlowRate(0.0), AirMassFlowRateMax(0.0), MaxHeatAirVolFlowRate(0.0), HeatAirMassFlowRateMax(0.0),
     228         520 :               ZoneMinAirFracMethod(MinFlowFraction::Constant), ZoneMinAirFracDes(0.0), ZoneMinAirFrac(0.0), ZoneMinAirFracReport(0.0),
     229         520 :               ZoneFixedMinAir(0.0), ZoneMinAirFracSchPtr(0), ConstantMinAirFracSetByUser(false), FixedMinAirSetByUser(false), DesignMinAirFrac(0.0),
     230         520 :               DesignFixedMinAir(0.0), InletNodeNum(0), OutletNodeNum(0), ReheatControlNode(0), ReheatCoilOutletNode(0), ReheatCoilMaxCapacity(0.0),
     231         520 :               ReheatAirOutletNode(0), MaxReheatWaterVolFlow(0.0), MaxReheatSteamVolFlow(0.0), MaxReheatWaterFlow(0.0), MaxReheatSteamFlow(0.0),
     232         520 :               MinReheatWaterVolFlow(0.0), MinReheatSteamVolFlow(0.0), MinReheatWaterFlow(0.0), MinReheatSteamFlow(0.0), ControllerOffset(0.0),
     233         520 :               MaxReheatTemp(0.0), MaxReheatTempSetByUser(false), DamperHeatingAction(Action::HeatingNotUsed), DamperPosition(0.0), ADUNum(0),
     234         520 :               FluidIndex(0), ErrCount1(0), ErrCount1c(0), ErrCount2(0), ZoneFloorArea(0.0), CtrlZoneNum(0), CtrlZoneInNodeIndex(0),
     235         520 :               MaxAirVolFlowRateDuringReheat(0.0), MaxAirVolFractionDuringReheat(0.0), AirMassFlowDuringReheatMax(0.0), ZoneOutdoorAirMethod(0),
     236         520 :               OutdoorAirFlowRate(0.0), NoOAFlowInputFromUser(true), OARequirementsPtr(0), AirLoopNum(0), HWplantLoc{}, SecInNode(0),
     237         520 :               IterationLimit(0), IterationFailed(0), OAPerPersonMode(DataZoneEquipment::PerPersonVentRateMode::Invalid), EMSOverrideAirFlow(false),
     238         520 :               EMSMassFlowRateValue(0.0), ZoneTurndownMinAirFracSchPtr(0), ZoneTurndownMinAirFrac(1.0), ZoneTurndownMinAirFracSchExist(false),
     239         520 :               MyEnvrnFlag(true), MySizeFlag(true), GetGasElecHeatCoilCap(true), PlantLoopScanFlag(true), MassFlow1(0.0), MassFlow2(0.0),
     240        1040 :               MassFlow3(0.0), MassFlowDiff(0.0)
     241             :         {
     242         520 :         }
     243             : 
     244             :         void InitSys(EnergyPlusData &state, bool FirstHVACIteration);
     245             : 
     246             :         void SizeSys(EnergyPlusData &state);
     247             : 
     248             :         void SimVAV(EnergyPlusData &state, bool FirstHVACIteration, int ZoneNum, int ZoneNodeNum);
     249             : 
     250             :         void CalcOAMassFlow(EnergyPlusData &state, Real64 &SAMassFlow, Real64 &AirLoopOAFrac) const;
     251             : 
     252             :         void SimCBVAV(EnergyPlusData &state, bool FirstHVACIteration, int ZoneNum, int ZoneNodeNum);
     253             : 
     254             :         void SimVAVVS(EnergyPlusData &state, bool FirstHVACIteration, int ZoneNum, int ZoneNodeNum);
     255             : 
     256             :         void SimConstVol(EnergyPlusData &state, bool FirstHVACIteration, int ZoneNum, int ZoneNodeNum);
     257             : 
     258             :         void CalcVAVVS(EnergyPlusData &state,
     259             :                        bool FirstHVACIteration,
     260             :                        int ZoneNode,
     261             :                        Real64 HWFlow,
     262             :                        Real64 HCoilReq,
     263             :                        HVAC::FanType fanType,
     264             :                        Real64 AirFlow,
     265             :                        int FanOn,
     266             :                        Real64 &LoadMet);
     267             : 
     268             :         void SimConstVolNoReheat(EnergyPlusData &state);
     269             : 
     270             :         void CalcOutdoorAirVolumeFlowRate(EnergyPlusData &state);
     271             : 
     272             :         void reportTerminalUnit(EnergyPlusData &state);
     273             : 
     274             :         void UpdateSys(EnergyPlusData &state) const;
     275             : 
     276             :         void ReportSys(EnergyPlusData &state);
     277             :     };
     278             : 
     279             :     struct AirTerminalMixerData
     280             :     {
     281             :         // Members
     282             :         // Input data
     283             :         std::string Name;                                // name of unit
     284             :         HVAC::MixerType type = HVAC::MixerType::Invalid; // type of inlet mixer, 1 = inlet side, 2 = supply side
     285             :         int ZoneHVACUnitType = 0;                        // type of Zone HVAC unit. ZoneHVAC:WaterToAirHeatPump =1, ZoneHVAC:FourPipeFanCoil = 2
     286             :         std::string ZoneHVACUnitName;                    // name of Zone HVAC unit
     287             :         int SecInNode = 0;                               // secondary air inlet node number
     288             :         int PriInNode = 0;                               // primary air inlet node number
     289             :         int MixedAirOutNode = 0;                         // mixed air outlet node number
     290             :         int ZoneInletNode = 0;                           // zone inlet node that ultimately receives air from this mixer
     291             :         Real64 MixedAirTemp = 0.0;                       // mixed air in temp
     292             :         Real64 MixedAirHumRat = 0.0;                     // mixed air in hum rat
     293             :         Real64 MixedAirEnthalpy = 0.0;                   // mixed air in enthalpy
     294             :         Real64 MixedAirPressure = 0.0;                   // mixed air in pressure
     295             :         Real64 MixedAirMassFlowRate = 0.0;               // mixed air in mass flow rate
     296             :         Real64 MassFlowRateMaxAvail = 0.0;               // maximum air mass flow rate allowed through component
     297             :         int ADUNum = 0;                                  // index of Air Distribution Unit
     298             :         int TermUnitSizingIndex = 0;                     // Pointer to TermUnitSizing and TermUnitFinalZoneSizing data for this terminal unit
     299             :         bool OneTimeInitFlag = true;                     // true if one-time inits should be done
     300             :         bool OneTimeInitFlag2 = true;                    // true if more one-time inits should be done
     301             :         int CtrlZoneInNodeIndex = 0;                     // which controlled zone inlet node number corresponds with this unit
     302             :         int ZoneNum = 0;
     303             :         bool NoOAFlowInputFromUser = true;    // avoids OA calculation if no input specified by user
     304             :         int OARequirementsPtr = 0;            // - Index to DesignSpecification:OutdoorAir object
     305             :         int AirLoopNum = 0;                   // System sizing adjustments
     306             :         Real64 DesignPrimaryAirVolRate = 0.0; // System sizing adjustments, filled from design OA spec using sizing mode flags.
     307             :         DataZoneEquipment::PerPersonVentRateMode OAPerPersonMode =
     308             :             DataZoneEquipment::PerPersonVentRateMode::Invalid; // mode for how per person rates are determined, DCV or design.
     309             :         bool printWarning = true;                              // flag to print warnings only once
     310             : 
     311             :         void InitATMixer(EnergyPlusData &state, bool FirstHVACIteration);
     312             :     };
     313             : 
     314             :     void SimulateSingleDuct(EnergyPlusData &state, std::string_view CompName, bool FirstHVACIteration, int ZoneNum, int ZoneNodeNum, int &CompIndex);
     315             : 
     316             :     void GetSysInput(EnergyPlusData &state);
     317             : 
     318             :     void GetHVACSingleDuctSysIndex(EnergyPlusData &state,
     319             :                                    std::string const &SDSName,
     320             :                                    int &SDSIndex,
     321             :                                    bool &ErrorsFound,
     322             :                                    std::string_view const ThisObjectType = {},
     323             :                                    ObjexxFCL::Optional_int DamperInletNode = _, // Damper inlet node number
     324             :                                    ObjexxFCL::Optional_int DamperOutletNode = _ // Damper outlet node number
     325             :     );
     326             : 
     327             :     void SimATMixer(EnergyPlusData &state, std::string const &SysName, bool FirstHVACIteration, int &SysIndex);
     328             : 
     329             :     void GetATMixers(EnergyPlusData &state);
     330             : 
     331             :     void CalcATMixer(EnergyPlusData &state, int SysNum);
     332             : 
     333             :     void UpdateATMixer(EnergyPlusData &state, int SysNum);
     334             : 
     335             :     void GetATMixer(EnergyPlusData &state,
     336             :                     std::string const &ZoneEquipName, // zone unit name name
     337             :                     std::string &ATMixerName,         // air terminal mixer name
     338             :                     int &ATMixerNum,                  // air terminal mixer index
     339             :                     HVAC::MixerType &ATMixerType,     // air teminal mixer type
     340             :                     int &ATMixerPriNode,              // air terminal mixer primary air node number
     341             :                     int &ATMixerSecNode,              // air terminal mixer secondary air node number
     342             :                     int &ATMixerOutNode,              // air terminal mixer outlet air node number
     343             :                     int ZoneEquipOutletNode           // zone equipment outlet node (used with inlet side mixers)
     344             :     );
     345             : 
     346             :     void SetATMixerPriFlow(EnergyPlusData &state,
     347             :                            int ATMixerNum,                                          // Air terminal mixer index
     348             :                            ObjexxFCL::Optional<Real64 const> PriAirMassFlowRate = _ // Air terminal mixer primary air mass flow rate [kg/s]
     349             :     );
     350             : 
     351             :     void setATMixerSizingProperties(EnergyPlusData &state,
     352             :                                     int inletATMixerIndex, // index to ATMixer at inlet of zone equipment
     353             :                                     int controlledZoneNum, // controlled zone number
     354             :                                     int curZoneEqNum       // current zone equipment being simulated
     355             :     );
     356             : 
     357             : } // namespace SingleDuct
     358             : 
     359             : struct SingleDuctData : BaseGlobalStruct
     360             : {
     361             : 
     362             :     EPVector<SingleDuct::AirTerminalMixerData> SysATMixer;
     363             :     Array1D<SingleDuct::SingleDuctAirTerminal> sd_airterminal;
     364             :     std::unordered_map<std::string, std::string> SysUniqueNames;
     365             :     Array1D_bool CheckEquipName;
     366             :     int NumATMixers = 0;
     367             :     int NumConstVolSys = 0;
     368             :     int NumSDAirTerminal = 0;              // The Number of single duct air terminals found in the Input
     369             :     bool GetInputFlag = true;              // Flag set to make sure you get input once
     370             :     bool GetATMixerFlag = true;            // Flag set to make sure you get input once
     371             :     bool InitSysFlag = true;               // Flag set to make sure you do begin simulation initializaztions once
     372             :     bool InitATMixerFlag = true;           // Flag set to make sure you do begin simulation initializaztions once for mixer
     373             :     bool ZoneEquipmentListChecked = false; // True after the Zone Equipment List has been checked for items
     374             : 
     375             :     int SysNumGSI = 0;   // The Sys that you are currently loading input into
     376             :     int SysIndexGSI = 0; // The Sys that you are currently loading input into
     377             :     int NumVAVSysGSI = 0;
     378             :     int NumNoRHVAVSysGSI = 0;
     379             :     int NumVAVVSGSI = 0;
     380             :     int NumCBVAVSysGSI = 0;
     381             :     int NumNoRHCBVAVSysGSI = 0;
     382             :     int NumAlphasGSI = 0;
     383             :     int NumNumsGSI = 0;
     384             :     int NumCVNoReheatSysGSI = 0;
     385             :     int MaxNumsGSI = 0;   // Maximum number of numeric input fields
     386             :     int MaxAlphasGSI = 0; // Maximum number of alpha input fields
     387             :     int TotalArgsGSI = 0; // Total number of alpha and numeric arguments  = max for a
     388             :     Real64 CoilInTempSS = 0.0;
     389             :     Real64 DesCoilLoadSS = 0.0;
     390             :     Real64 DesZoneHeatLoadSS = 0.0;
     391             :     Real64 ZoneDesTempSS = 0.0;
     392             :     Real64 ZoneDesHumRatSS = 0.0;
     393             :     int CoilWaterInletNodeSS = 0;
     394             :     int CoilWaterOutletNodeSS = 0;
     395             :     int CoilSteamInletNodeSS = 0;
     396             :     int CoilSteamOutletNodeSS = 0;
     397             :     int DummyWaterIndexSS = 1;
     398             :     Real64 UserInputMaxHeatAirVolFlowRateSS = 0.0; // user input for MaxHeatAirVolFlowRate
     399             :     Real64 MinAirMassFlowRevActSVAV = 0.0;         // minimum air mass flow rate used in "reverse action" air mass flow rate calculation
     400             :     Real64 MaxAirMassFlowRevActSVAV = 0.0;         // maximum air mass flow rate used in "reverse action" air mass flow rate calculation
     401             :     Real64 ZoneTempSCBVAV = 0.0;                   // zone air temperature [C]
     402             :     Real64 MaxHeatTempSCBVAV = 0.0;                // maximum supply air temperature [C]
     403             :     Real64 MassFlowReqSCBVAV = 0.0;                // air mass flow rate required to meet the coil heating load [W]
     404             :     Real64 MassFlowActualSCBVAV = 0.0;             // air mass flow rate actually used [W]
     405             :     Real64 QZoneMaxSCBVAV = 0.0;                   // maximum zone heat addition rate given constraints of MaxHeatTemp and max        /
     406             :                                                    // available air mass flow rate [W]
     407             :     Real64 MinMassAirFlowSCBVAV = 0.0;             // the air flow rate during heating for normal acting damper
     408             :     Real64 QZoneMax2SCBVAV = 0.0;                  // temporary variable
     409             :     Real64 QZoneMax3SCBVAV = 0.0;                  // temporary variable
     410             :     Real64 TAirMaxSCV = 0.0;                       // Maximum zone supply air temperature [C]
     411             :     Real64 QMaxSCV = 0.0;                          // Maximum heat addition rate imposed by the max zone supply air temperature [W]
     412             :     Real64 ZoneTempSCV = 0.0;                      // Zone temperature [C]
     413             :     Real64 QMax2SCV = 0.0;
     414             :     int SysNumSATM = 0;
     415             :     Real64 PriMassFlowRateCATM = 0.0;
     416             :     Real64 PriEnthalpyCATM = 0.0;
     417             :     Real64 PriHumRatCATM = 0.0;
     418             :     Real64 PriTempCATM = 0.0;
     419             : 
     420             :     Real64 SecAirMassFlowRateCATM = 0.0;
     421             :     Real64 SecAirEnthalpyCATM = 0.0;
     422             :     Real64 SecAirHumRatCATM = 0.0;
     423             :     Real64 SecAirTempCATM = 0.0;
     424             : 
     425             :     Real64 MixedAirMassFlowRateCATM = 0.0;
     426             :     Real64 MixedAirEnthalpyCATM = 0.0;
     427             :     Real64 MixedAirHumRatCATM = 0.0;
     428             :     Real64 MixedAirTempCATM = 0.0;
     429             : 
     430             :     Real64 ZoneTempSDAT = 0.0;                      // zone air temperature [C]
     431             :     Real64 MaxHeatTempSDAT = 0.0;                   // maximum supply air temperature [C]
     432             :     Real64 MaxDeviceAirMassFlowReheatSDAT = 0.0;    // air mass flow rate required to meet the coil heating load [W]
     433             :     Real64 MassFlowReqToLimitLeavingTempSDAT = 0.0; // air mass flow rate actually used [W]
     434             :     Real64 QZoneMaxRHTempLimitSDAT = 0.0;           // maximum zone heat addition rate given constraints of MaxHeatTemp and max
     435             :                                                     // available air mass flow rate [W]
     436             :     Real64 MinMassAirFlowSDAT = 0.0;                // the air flow rate during heating for normal acting damper
     437             :     Real64 QZoneMax2SDAT = 0.0;                     // temporary variable
     438             : 
     439         796 :     void init_state([[maybe_unused]] EnergyPlusData &state) override
     440             :     {
     441         796 :     }
     442             : 
     443           0 :     void clear_state() override
     444             :     {
     445           0 :         new (this) SingleDuctData();
     446           0 :     }
     447             : };
     448             : 
     449             : } // namespace EnergyPlus
     450             : 
     451             : #endif

Generated by: LCOV version 1.14