LCOV - code coverage report
Current view: top level - EnergyPlus - SetPointManager.hh (source / functions) Hit Total Coverage
Test: lcov.output.filtered Lines: 125 231 54.1 %
Date: 2023-01-17 19:17:23 Functions: 111 141 78.7 %

          Line data    Source code
       1             : // EnergyPlus, Copyright (c) 1996-2023, The Board of Trustees of the University of Illinois,
       2             : // The Regents of the University of California, through Lawrence Berkeley National Laboratory
       3             : // (subject to receipt of any required approvals from the U.S. Dept. of Energy), Oak Ridge
       4             : // National Laboratory, managed by UT-Battelle, Alliance for Sustainable Energy, LLC, and other
       5             : // contributors. All rights reserved.
       6             : //
       7             : // NOTICE: This Software was developed under funding from the U.S. Department of Energy and the
       8             : // U.S. Government consequently retains certain rights. As such, the U.S. Government has been
       9             : // granted for itself and others acting on its behalf a paid-up, nonexclusive, irrevocable,
      10             : // worldwide license in the Software to reproduce, distribute copies to the public, prepare
      11             : // derivative works, and perform publicly and display publicly, and to permit others to do so.
      12             : //
      13             : // Redistribution and use in source and binary forms, with or without modification, are permitted
      14             : // provided that the following conditions are met:
      15             : //
      16             : // (1) Redistributions of source code must retain the above copyright notice, this list of
      17             : //     conditions and the following disclaimer.
      18             : //
      19             : // (2) Redistributions in binary form must reproduce the above copyright notice, this list of
      20             : //     conditions and the following disclaimer in the documentation and/or other materials
      21             : //     provided with the distribution.
      22             : //
      23             : // (3) Neither the name of the University of California, Lawrence Berkeley National Laboratory,
      24             : //     the University of Illinois, U.S. Dept. of Energy nor the names of its contributors may be
      25             : //     used to endorse or promote products derived from this software without specific prior
      26             : //     written permission.
      27             : //
      28             : // (4) Use of EnergyPlus(TM) Name. If Licensee (i) distributes the software in stand-alone form
      29             : //     without changes from the version obtained under this License, or (ii) Licensee makes a
      30             : //     reference solely to the software portion of its product, Licensee must refer to the
      31             : //     software as "EnergyPlus version X" software, where "X" is the version number Licensee
      32             : //     obtained under this License and may not use a different name for the software. Except as
      33             : //     specifically required in this Section (4), Licensee shall not use in a company name, a
      34             : //     product name, in advertising, publicity, or other promotional activities any name, trade
      35             : //     name, trademark, logo, or other designation of "EnergyPlus", "E+", "e+" or confusingly
      36             : //     similar designation, without the U.S. Department of Energy's prior written consent.
      37             : //
      38             : // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
      39             : // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
      40             : // AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
      41             : // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
      42             : // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
      43             : // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
      44             : // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
      45             : // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
      46             : // POSSIBILITY OF SUCH DAMAGE.
      47             : 
      48             : #ifndef SetPointManager_hh_INCLUDED
      49             : #define SetPointManager_hh_INCLUDED
      50             : 
      51             : #include <map>
      52             : 
      53             : // ObjexxFCL Headers
      54             : #include <ObjexxFCL/Array1D.hh>
      55             : #include <ObjexxFCL/Optional.hh>
      56             : 
      57             : // EnergyPlus Headers
      58             : #include <EnergyPlus/DataGlobals.hh>
      59             : #include <EnergyPlus/DataLoopNode.hh>
      60             : #include <EnergyPlus/EnergyPlus.hh>
      61             : #include <EnergyPlus/Plant/Enums.hh>
      62             : 
      63             : namespace EnergyPlus {
      64             : 
      65             : // Forward declarations
      66             : struct EnergyPlusData;
      67             : 
      68             : namespace SetPointManager {
      69             : 
      70             :     enum class CtrlNodeType
      71             :     {
      72             :         Invalid = -1,
      73             :         Control,
      74             :         Reference,
      75             :         Num
      76             :     };
      77             : 
      78             :     enum class SupplyFlowTempStrategy
      79             :     {
      80             :         Invalid = -1,
      81             :         MaxTemp,
      82             :         MinTemp,
      83             :         Num
      84             :     };
      85             :     enum class ControlStrategy
      86             :     {
      87             :         Invalid = -1,
      88             :         TempFirst,
      89             :         FlowFirst,
      90             :         Num
      91             :     };
      92             :     enum class ReferenceTempType
      93             :     {
      94             :         Invalid = -1,
      95             :         WetBulb,
      96             :         DryBulb,
      97             :         Num
      98             :     };
      99             :     enum class ReferenceGroundTempObjectType
     100             :     {
     101             :         Invalid = -1,
     102             :         BuildingSurface,
     103             :         Shallow,
     104             :         Deep,
     105             :         FCFactorMethod,
     106             :         Num
     107             :     };
     108             : 
     109             :     enum class CtrlVarType
     110             :     {
     111             :         Invalid = -1,
     112             :         Temp,
     113             :         MaxTemp,
     114             :         MinTemp,
     115             :         HumRat,
     116             :         MaxHumRat,
     117             :         MinHumRat,
     118             :         MassFlow,
     119             :         MaxMassFlow,
     120             :         MinMassFlow,
     121             :         Num
     122             :     };
     123             : 
     124             :     enum class SetPointManagerType
     125             :     {
     126             :         Invalid = -1,
     127             :         Scheduled,
     128             :         ScheduledDual,
     129             :         OutsideAir,
     130             :         SZReheat,
     131             :         SZHeating,
     132             :         SZCooling,
     133             :         SZMinHum,
     134             :         SZMaxHum,
     135             :         MixedAir,
     136             :         OutsideAirPretreat,
     137             :         Warmest,
     138             :         Coldest,
     139             :         WarmestTempFlow,
     140             :         RAB,
     141             :         MZCoolingAverage,
     142             :         MZHeatingAverage,
     143             :         MZMinHumAverage,
     144             :         MZMaxHumAverage,
     145             :         MZMinHum,
     146             :         MZMaxHum,
     147             :         FollowOATemp,
     148             :         FollowSysNodeTemp,
     149             :         GroundTemp,
     150             :         CondEntReset,
     151             :         IdealCondEntReset,
     152             :         SZOneStageCooling,
     153             :         SZOneStageHeating,
     154             :         ReturnWaterResetChW,
     155             :         ReturnWaterResetHW,
     156             :         TESScheduled,
     157             :         SystemNodeResetTemp,
     158             :         SystemNodeResetHum,
     159             :         Num
     160             :     };
     161             : 
     162       20037 :     struct SPBase
     163             :     {
     164             :         std::string Name;
     165             :         CtrlVarType CtrlTypeMode; // set to CtrlVarType::*
     166             :         std::string ctrlVarType;
     167        1825 :         SPBase() : CtrlTypeMode(CtrlVarType::Invalid)
     168             :         {
     169        1825 :         }
     170             : 
     171             :         Real64 calcSetPointLinInt(Real64 LowVal, Real64 HighVal, Real64 RefVal, Real64 SetptAtLowVal, Real64 SetptAtHighVal);
     172             :     };
     173             : 
     174        9659 :     struct DataSetPointManager : SPBase // Derived type for all Setpoint Managers
     175             :     {
     176             :         // Members
     177             :         SetPointManagerType SPMType; // integer representing type of setpoint manager
     178             :         int SPMIndex;                // index to specific set point manager
     179             :         int NumCtrlNodes;            // number of control nodes
     180             :         Array1D_int CtrlNodes;       // index to control node
     181             :         int AirLoopNum;              // index to air loop
     182             :         std::string AirLoopName;     // name of air loop
     183             :         int RefNode;                 // index to reference node
     184             : 
     185             :         // Default Constructor
     186         541 :         DataSetPointManager() : SPMType(SetPointManagerType::Invalid), SPMIndex(0), NumCtrlNodes(0), AirLoopNum(0), RefNode(0)
     187             :         {
     188         541 :         }
     189             :     };
     190             : 
     191        4174 :     struct DefineScheduledSetPointManager : SPBase // Derived type for Scheduled Setpoint Manager data
     192             :     {
     193             :         // Members
     194             :         std::string Sched;
     195             :         int SchedPtr;
     196             :         int NumCtrlNodes;
     197             :         std::string CtrlNodeListName;
     198             :         Array1D_int CtrlNodes;
     199             :         Real64 SetPt;
     200             : 
     201             :         // Default Constructor
     202         450 :         DefineScheduledSetPointManager() : SchedPtr(0), NumCtrlNodes(0), SetPt(0.0)
     203             :         {
     204         450 :         }
     205             : 
     206             :         void calculate(EnergyPlusData &state);
     207             :     };
     208             : 
     209          59 :     struct DefineSchedDualSetPointManager : SPBase // Derived type for Scheduled Dual Setpoint Manager
     210             :     {
     211             :         // Members
     212             :         std::string SchedHi;
     213             :         std::string SchedLo;
     214             :         int SchedPtrHi;
     215             :         int SchedPtrLo;
     216             :         int NumCtrlNodes;
     217             :         std::string CtrlNodeListName;
     218             :         Array1D_int CtrlNodes;
     219             :         Real64 SetPtHi;
     220             :         Real64 SetPtLo;
     221             : 
     222             :         // Default Constructor
     223          15 :         DefineSchedDualSetPointManager() : SchedPtrHi(0), SchedPtrLo(0), NumCtrlNodes(0), SetPtHi(0.0), SetPtLo(0.0)
     224             :         {
     225          15 :         }
     226             : 
     227             :         void calculate(EnergyPlusData &state);
     228             :     };
     229             : 
     230         296 :     struct DefineOutsideAirSetPointManager : SPBase // Derived type for Outside Air Setpoint Manager Data
     231             :     {
     232             :         // Members
     233             :         Real64 OutLowSetPt1 = 0.0;         // 1st setpoint at outside low
     234             :         Real64 OutLow1 = 0.0;              // 1st Outside low
     235             :         Real64 OutHighSetPt1 = 0.0;        // 1st setpoint at outside high
     236             :         Real64 OutHigh1 = 0.0;             // 1st Outside high
     237             :         int SchedPtr = 0;                  // Schedule index
     238             :         int invalidSchedValErrorIndex = 0; // index for recurring error when schedule is not 1 or 2
     239             :         int setPtErrorCount = 0;           // countfor recurring error when schedule is not 1 or 2
     240             :         Real64 OutLowSetPt2 = 0.0;         // 2nd setpoint at outside low (optional)
     241             :         Real64 OutLow2 = 0.0;              // 2nd Outside low (optional)
     242             :         Real64 OutHighSetPt2 = 0.0;        // 2nd setpoint at outside high (optional)
     243             :         Real64 OutHigh2 = 0.0;             // 2nd Outside high (optional)
     244             :         int NumCtrlNodes = 0;
     245             :         std::string CtrlNodeListName;
     246             :         Array1D_int CtrlNodes;
     247             :         Real64 SetPt = 0.0; // current setpoint value
     248             : 
     249             :         void calculate(EnergyPlusData &state);
     250             :     };
     251             : 
     252         644 :     struct DefineSZReheatSetPointManager : SPBase // Derived type for the Single Zone Reheat Setpoint Manager data
     253             :     {
     254             :         // Members
     255             :         std::string ControlZoneName; // name of the control zone (zone with main thermostat)
     256             :         int ControlZoneNum;          // number (index into Zone array) of control zone
     257             :         int ZoneNodeNum;             // zone node number
     258             :         int ZoneInletNodeNum;        // inlet node number for the SZRH air
     259             :         Real64 MinSetTemp;           // minimum supply air setpoint temperature
     260             :         Real64 MaxSetTemp;           // maximum supply air setpoint temperature
     261             :         int MixedAirNode;            // mixed air node number
     262             :         int FanNodeIn;               // fan inlet node number
     263             :         int FanNodeOut;              // fan outlet node number
     264             :         int AirLoopNum;              // air loop index of air loop associated with this setpoint manager
     265             :         int OAInNode;                // outside airstream inlet node to the OA mixer
     266             :         int RetNode;                 // return node inlet to OA mixer
     267             :         int LoopInNode;              // Primary Air System inlet node
     268             :         int NumCtrlNodes;
     269             :         Array1D_int CtrlNodes; // node numbers of nodes where setpoint is to be set
     270             :         Real64 SetPt;          // the setpoint
     271             : 
     272             :         // Default Constructor
     273          72 :         DefineSZReheatSetPointManager()
     274          72 :             : ControlZoneNum(0), ZoneNodeNum(0), ZoneInletNodeNum(0), MinSetTemp(0.0), MaxSetTemp(0.0), MixedAirNode(0), FanNodeIn(0), FanNodeOut(0),
     275          72 :               AirLoopNum(0), OAInNode(0), RetNode(0), LoopInNode(0), NumCtrlNodes(0), SetPt(0.0)
     276             :         {
     277          72 :         }
     278             : 
     279             :         void calculate(EnergyPlusData &state);
     280             :     };
     281             : 
     282         194 :     struct DefineSZHeatingSetPointManager : SPBase // Derived type for the Single Zone Heating Setpoint Manager data
     283             :     {
     284             :         // Members
     285             :         std::string ControlZoneName; // name of the control zone (zone with main thermostat)
     286             :         int ControlZoneNum;          // number (index into Zone array) of control zone
     287             :         int ZoneNodeNum;             // zone node number
     288             :         int ZoneInletNodeNum;        // inlet node number for the supply air
     289             :         Real64 MinSetTemp;           // minimum supply air setpoint temperature
     290             :         Real64 MaxSetTemp;           // maximum supply air setpoint temperature
     291             :         int NumCtrlNodes;
     292             :         Array1D_int CtrlNodes; // node numbers of nodes where setpoint is to be set
     293             :         Real64 SetPt;          // the setpoint
     294             : 
     295             :         // Default Constructor
     296          20 :         DefineSZHeatingSetPointManager()
     297          20 :             : ControlZoneNum(0), ZoneNodeNum(0), ZoneInletNodeNum(0), MinSetTemp(0.0), MaxSetTemp(0.0), NumCtrlNodes(0), SetPt(0.0)
     298             :         {
     299          20 :         }
     300             : 
     301             :         void calculate(EnergyPlusData &state);
     302             :     };
     303             : 
     304         458 :     struct DefineSZCoolingSetPointManager : SPBase // Derived type for the Single Zone Cooling Setpoint Manager data
     305             :     {
     306             :         // Members
     307             :         std::string ControlZoneName; // name of the control zone (zone with main thermostat)
     308             :         int ControlZoneNum;          // number (index into Zone array) of control zone
     309             :         int ZoneNodeNum;             // zone node number
     310             :         int ZoneInletNodeNum;        // inlet node number for the supply air
     311             :         Real64 MinSetTemp;           // minimum supply air setpoint temperature
     312             :         Real64 MaxSetTemp;           // maximum supply air setpoint temperature
     313             :         int NumCtrlNodes;
     314             :         Array1D_int CtrlNodes; // node numbers of nodes where setpoint is to be set
     315             :         Real64 SetPt;          // the setpoint
     316             : 
     317             :         // Default Constructor
     318          50 :         DefineSZCoolingSetPointManager()
     319          50 :             : ControlZoneNum(0), ZoneNodeNum(0), ZoneInletNodeNum(0), MinSetTemp(0.0), MaxSetTemp(0.0), NumCtrlNodes(0), SetPt(0.0)
     320             :         {
     321          50 :         }
     322             : 
     323             :         void calculate(EnergyPlusData &state);
     324             :     };
     325             : 
     326          69 :     struct DefineSZMinHumSetPointManager : SPBase // Derived Type for Single Zone Minimum Humidity Setpoint Manager data
     327             :     {
     328             :         // Members
     329             :         int NumZones;            // number of zones whose humidity is being controlled
     330             :         int NumCtrlNodes;        // number of nodes whose humidity ratio is being set
     331             :         Array1D_int ZoneNodes;   // zone node numbers of zones being controlled
     332             :         Array1D_int CtrlZoneNum; // index into ZoneEquipConfig
     333             :         Array1D_int CtrlNodes;   // nodes where humidity ratio is being set
     334             :         Real64 SetPt;            // the setpoint
     335             : 
     336             :         // Default Constructor
     337          17 :         DefineSZMinHumSetPointManager() : NumZones(0), NumCtrlNodes(0), SetPt(0.0)
     338             :         {
     339          17 :         }
     340             : 
     341             :         void calculate(EnergyPlusData &state);
     342             :     };
     343             : 
     344         111 :     struct DefineSZMaxHumSetPointManager : SPBase // Derived Type for Single Zone Maximum Humidity Setpoint Manager data
     345             :     {
     346             :         // Members
     347             :         int NumZones;            // number of zones whose humidity is being controlled
     348             :         int NumCtrlNodes;        // number of nodes whose humidity ratio is being set
     349             :         Array1D_int ZoneNodes;   // zone node numbers of zones being controlled
     350             :         Array1D_int CtrlZoneNum; // index into ZoneEquipConfig
     351             :         Array1D_int CtrlNodes;   // nodes where humidity ratio is being set
     352             :         Real64 SetPt;            // the setpoint
     353             : 
     354             :         // Default Constructor
     355          23 :         DefineSZMaxHumSetPointManager() : NumZones(0), NumCtrlNodes(0), SetPt(0.0)
     356             :         {
     357          23 :         }
     358             : 
     359             :         void calculate(EnergyPlusData &state);
     360             :     };
     361             : 
     362        3512 :     struct DefineMixedAirSetPointManager : SPBase
     363             :     {
     364             :         // Members
     365             :         int RefNode;               // reference node number
     366             :         int FanInNode;             // supply fan inlet node number
     367             :         int FanOutNode;            // Supplt fan outlet node number
     368             :         int NumCtrlNodes;          // number of nodes whose humidity ratio is being set
     369             :         Array1D_int CtrlNodes;     // node numbers of nodes where setpoint is to be set
     370             :         Real64 SetPt;              // the setpoint
     371             :         bool MySetPointCheckFlag;  // used for mixed air SPM test for missing SP
     372             :         bool FreezeCheckEnable;    // Enable freezing check
     373             :         int CoolCoilInNode;        // Cooling coil inlet node number
     374             :         int CoolCoilOutNode;       // Cooling coil outlet node number
     375             :         Real64 MinCoolCoilOutTemp; // The minimum temperature at cooling coil outlet node
     376             : 
     377             :         // Default Constructor
     378         298 :         DefineMixedAirSetPointManager()
     379         298 :             : RefNode(0), FanInNode(0), FanOutNode(0), NumCtrlNodes(0), SetPt(0.0), MySetPointCheckFlag(true), FreezeCheckEnable(false),
     380         298 :               CoolCoilInNode(0), CoolCoilOutNode(0), MinCoolCoilOutTemp(7.2)
     381             : 
     382             :         {
     383         298 :         }
     384             : 
     385             :         void calculate(EnergyPlusData &state);
     386             :     };
     387             : 
     388          24 :     struct DefineOAPretreatSetPointManager : SPBase
     389             :     {
     390             :         // Members
     391             :         int RefNode;              // reference node number
     392             :         int MixedOutNode;         // mixed air outlet node number
     393             :         int OAInNode;             // outside air inlet node number
     394             :         int ReturnInNode;         // return air inlet node number
     395             :         Real64 MinSetTemp;        // minimum supply air setpoint temperature [C]
     396             :         Real64 MaxSetTemp;        // maximum supply air setpoint temperature [C]
     397             :         Real64 MinSetHumRat;      // minimum supply air setpoint humidity ratio [kg/kg]
     398             :         Real64 MaxSetHumRat;      // maximum supply air setpoint humidity ratio [kg/kg]
     399             :         int NumCtrlNodes;         // number of nodes whose humidity ratio is being set
     400             :         Array1D_int CtrlNodes;    // node numbers of nodes where setpoint is to be set
     401             :         Real64 SetPt;             // the setpoint
     402             :         bool MySetPointCheckFlag; // used for DOAS SPM test for missing SP
     403             : 
     404             :         // Default Constructor
     405           6 :         DefineOAPretreatSetPointManager()
     406           6 :             : RefNode(0), MixedOutNode(0), OAInNode(0), ReturnInNode(0), MinSetTemp(0.0), MaxSetTemp(0.0), MinSetHumRat(0.0), MaxSetHumRat(0.0),
     407           6 :               NumCtrlNodes(0), SetPt(0.0), MySetPointCheckFlag(true)
     408             :         {
     409           6 :         }
     410             : 
     411             :         void calculate(EnergyPlusData &state);
     412             :     };
     413             : 
     414          67 :     struct DefineWarmestSetPointManager : SPBase
     415             :     {
     416             :         // Members
     417             :         std::string AirLoopName;         // name of air loop that will use "warmest zone" strategy
     418             :         int AirLoopNum;                  // index of named air loop
     419             :         Real64 MinSetTemp;               // minimum supply air setpoint temperature
     420             :         Real64 MaxSetTemp;               // maximum supply air setpoint temperature
     421             :         SupplyFlowTempStrategy Strategy; // supply flow and temperature set strategy
     422             :         // 1 = MaxTemp
     423             :         int NumCtrlNodes;      // number of nodes whose temperature is being set
     424             :         Array1D_int CtrlNodes; // nodes where temperature is being set
     425             :         Real64 SetPt;          // the setpoint
     426             : 
     427             :         // Default Constructor
     428          23 :         DefineWarmestSetPointManager()
     429          23 :             : AirLoopNum(0), MinSetTemp(0.0), MaxSetTemp(0.0), Strategy(SupplyFlowTempStrategy::Invalid), NumCtrlNodes(0), SetPt(0.0)
     430             :         {
     431          23 :         }
     432             : 
     433             :         void calculate(EnergyPlusData &state);
     434             :     };
     435             : 
     436           3 :     struct DefineColdestSetPointManager : SPBase
     437             :     {
     438             :         // Members
     439             :         std::string AirLoopName;         // name of air loop that will use "coldest zone" strategy
     440             :         int AirLoopNum;                  // index of named air loop
     441             :         Real64 MinSetTemp;               // minimum supply air setpoint temperature
     442             :         Real64 MaxSetTemp;               // maximum supply air setpoint temperature
     443             :         SupplyFlowTempStrategy Strategy; // supply flow and temperature set strategy
     444             :         // 2 = MinTemp
     445             :         int NumCtrlNodes;      // number of nodes whose temperature is being set
     446             :         Array1D_int CtrlNodes; // nodes where temperature is being set
     447             :         Real64 SetPt;          // the setpoint
     448             : 
     449             :         // Default Constructor
     450           1 :         DefineColdestSetPointManager()
     451           1 :             : AirLoopNum(0), MinSetTemp(0.0), MaxSetTemp(0.0), Strategy(SupplyFlowTempStrategy::Invalid), NumCtrlNodes(0), SetPt(0.0)
     452             :         {
     453           1 :         }
     454             : 
     455             :         void calculate(EnergyPlusData &state);
     456             :     };
     457             : 
     458          12 :     struct DefWarmestSetPtManagerTempFlow : SPBase
     459             :     {
     460             :         // Members
     461             :         std::string AirLoopName;  // name of air loop that will use "warmest zone" strategy
     462             :         int AirLoopNum;           // index of named air loop
     463             :         Real64 MinSetTemp;        // minimum supply air setpoint temperature
     464             :         Real64 MaxSetTemp;        // maximum supply air setpoint temperature
     465             :         ControlStrategy Strategy; // supply flow and temperature set strategy
     466             :         // 1 = TempFirst, 2 = FlowFirst
     467             :         int NumCtrlNodes;      // number of nodes whose temperature is being set
     468             :         Array1D_int CtrlNodes; // nodes where temperature is being set
     469             :         Real64 SetPt;          // the setpoint
     470             :         Real64 MinTurndown;    // minimum fractional flow rate
     471             :         Real64 Turndown;       // fractional flow rate
     472             :         int CritZoneNum;
     473             :         bool SimReady;
     474             : 
     475             :         // Default Constructor
     476           4 :         DefWarmestSetPtManagerTempFlow()
     477           4 :             : AirLoopNum(0), MinSetTemp(0.0), MaxSetTemp(0.0), Strategy(ControlStrategy::Invalid), NumCtrlNodes(0), SetPt(0.0), MinTurndown(0.0),
     478           4 :               Turndown(0.0), CritZoneNum(0), SimReady(false)
     479             :         {
     480           4 :         }
     481             : 
     482             :         void calculate(EnergyPlusData &state);
     483             :     };
     484             : 
     485           3 :     struct DefRABFlowSetPointManager : SPBase
     486             :     {
     487             :         // Members
     488             :         int NumCtrlNodes;        // number of nodes whose temperature is being set
     489             :         Array1D_int CtrlNodes;   // nodes where temperature is being set
     490             :         std::string AirLoopName; // name of air loop that will use "warmest zone" strategy
     491             :         int AirLoopNum;          // index of named air loop
     492             :         std::string Sched;       // name of a schedule of supply air setpoint temperatures
     493             :         int SchedPtr;            // index of the above schedule
     494             :         Real64 FlowSetPt;        // mass flow rate setpoint (kg/s)
     495             :         int RABMixInNode;
     496             :         int SupMixInNode;
     497             :         int MixOutNode;
     498             :         int RABSplitOutNode;
     499             :         int SysOutNode;
     500             :         int AllSetPtMgrIndex; // index of RAB SP manager in AllSetPtMgr structure
     501             : 
     502             :         // Default Constructor
     503           1 :         DefRABFlowSetPointManager()
     504           1 :             : NumCtrlNodes(0), AirLoopNum(0), SchedPtr(0), FlowSetPt(0.0), RABMixInNode(0), SupMixInNode(0), MixOutNode(0), RABSplitOutNode(0),
     505           1 :               SysOutNode(0), AllSetPtMgrIndex(0)
     506             :         {
     507           1 :         }
     508             : 
     509             :         void calculate(EnergyPlusData &state);
     510             :     };
     511             : 
     512           3 :     struct DefMultiZoneAverageCoolingSetPointManager : SPBase // derived type for SetpointManager:Multizone:Cooling:Average data
     513             :     {
     514             :         // Members
     515             :         std::string AirLoopName; // name of air loop that will use "MultiZone:Cooling:Average" strategy
     516             :         int AirLoopNum;          // index of named air loop
     517             :         Real64 MinSetTemp;       // minimum supply air setpoint temperature [C]
     518             :         Real64 MaxSetTemp;       // maximum supply air setpoint temperature [C]
     519             :         int NumCtrlNodes;        // number of nodes whose temperature is being set
     520             :         Array1D_int CtrlNodes;   // nodes where temperature is being set
     521             :         Real64 SetPt;            // the temperature setpoint [C]
     522             : 
     523             :         // Default Constructor
     524           1 :         DefMultiZoneAverageCoolingSetPointManager() : AirLoopNum(0), MinSetTemp(0.0), MaxSetTemp(0.0), NumCtrlNodes(0), SetPt(0.0)
     525             :         {
     526           1 :         }
     527             : 
     528             :         void calculate(EnergyPlusData &state);
     529             :     };
     530             : 
     531           3 :     struct DefMultiZoneAverageHeatingSetPointManager : SPBase // derived type for SetpointManager:Multizone:Heating:Average data
     532             :     {
     533             :         // Members
     534             :         std::string AirLoopName; // name of air loop that will use "MultiZone:Heating:Average" strategy
     535             :         int AirLoopNum;          // index of named air loop
     536             :         Real64 MinSetTemp;       // minimum supply air setpoint temperature [C]
     537             :         Real64 MaxSetTemp;       // maximum supply air setpoint temperature [C]
     538             :         int NumCtrlNodes;        // number of nodes whose temperature is being set
     539             :         Array1D_int CtrlNodes;   // nodes where temperature is being set
     540             :         Real64 SetPt;            // the temperature setpoint [C]
     541             : 
     542             :         // Default Constructor
     543           1 :         DefMultiZoneAverageHeatingSetPointManager() : AirLoopNum(0), MinSetTemp(0.0), MaxSetTemp(0.0), NumCtrlNodes(0), SetPt(0.0)
     544             :         {
     545           1 :         }
     546             : 
     547             :         void calculate(EnergyPlusData &state);
     548             :     };
     549             : 
     550           3 :     struct DefMultiZoneAverageMinHumSetPointManager : SPBase // derived type for SetpointManager:MultiZone:MinimumHumidity:Average data
     551             :     {
     552             :         // Members
     553             :         std::string AirLoopName; // name of air loop using MultiZone:MinimumHumidity:Average strategy
     554             :         int AirLoopNum;          // index of named air loop
     555             :         Real64 MinSetHum;        // minimum supply air humidity ratio [kg/kg]
     556             :         Real64 MaxSetHum;        // maximum supply air humidity ratio [kg/kg]
     557             :         int NumCtrlNodes;        // number of nodes whose humidity ratio is being set
     558             :         Array1D_int CtrlNodes;   // nodes where humidity ratio is being set
     559             :         Real64 SetPt;            // the humidity ratio setpoint [kg/kg]
     560             : 
     561             :         // Default Constructor
     562           1 :         DefMultiZoneAverageMinHumSetPointManager() : AirLoopNum(0), MinSetHum(0.0), MaxSetHum(0.0), NumCtrlNodes(0), SetPt(0.0)
     563             :         {
     564           1 :         }
     565             : 
     566             :         void calculate(EnergyPlusData &state);
     567             :     };
     568             : 
     569           3 :     struct DefMultiZoneAverageMaxHumSetPointManager : SPBase // derived type for SetpointManager:MultiZone:MaximumHumidity:Average data
     570             :     {
     571             :         // Members
     572             :         std::string AirLoopName; // name of air loop using MultiZone:MaximumHumidity:Average strategy
     573             :         int AirLoopNum;          // index of named air loop
     574             :         Real64 MinSetHum;        // minimum supply air humidity ratio [kg/kg]
     575             :         Real64 MaxSetHum;        // maximum supply air humidity ratio [kg/kg]
     576             :         int NumCtrlNodes;        // number of nodes whose humidity ratio is being set
     577             :         Array1D_int CtrlNodes;   // nodes where humidity ratio is being set
     578             :         Real64 SetPt;            // the humidity ratio setpoint [kg/kg]
     579             : 
     580             :         // Default Constructor
     581           1 :         DefMultiZoneAverageMaxHumSetPointManager() : AirLoopNum(0), MinSetHum(0.0), MaxSetHum(0.0), NumCtrlNodes(0), SetPt(0.0)
     582             :         {
     583           1 :         }
     584             : 
     585             :         void calculate(EnergyPlusData &state);
     586             :     };
     587             : 
     588          20 :     struct DefMultiZoneMinHumSetPointManager : SPBase // derived type for SetpointManager:MultiZone:Humidity:Minimum data
     589             :     {
     590             :         // Members
     591             :         std::string AirLoopName; // name of air loop using SetpointManager:MultiZone:Humidity:Minimum
     592             :         int AirLoopNum;          // index of named air loop
     593             :         Real64 MinSetHum;        // minimum supply air humidity ratio [kg/kg]
     594             :         Real64 MaxSetHum;        // maximum supply air humidity ratio [kg/kg]
     595             :         int NumCtrlNodes;        // number of nodes whose humidity ratio is being set
     596             :         Array1D_int CtrlNodes;   // nodes where humidity ratio is being set
     597             :         Real64 SetPt;            // the humidity ratio setpoint [kg/kg]
     598             : 
     599             :         // Default Constructor
     600           4 :         DefMultiZoneMinHumSetPointManager() : AirLoopNum(0), MinSetHum(0.0), MaxSetHum(0.0), NumCtrlNodes(0), SetPt(0.0)
     601             :         {
     602           4 :         }
     603             : 
     604             :         void calculate(EnergyPlusData &state);
     605             :     };
     606             : 
     607          38 :     struct DefMultiZoneMaxHumSetPointManager : SPBase // derived type for SetpointManager:MultiZone:Humidity:Maximum data
     608             :     {
     609             :         // Members
     610             :         std::string AirLoopName; // name of air loop using SetpointManager:MultiZone:Humidity:Maximum
     611             :         int AirLoopNum;          // index of named air loop
     612             :         Real64 MinSetHum;        // minimum supply air humidity ratio [kg/kg]
     613             :         Real64 MaxSetHum;        // maximum supply air humidity ratio [kg/kg]
     614             :         int NumCtrlNodes;        // number of nodes whose humidity ratio is being set
     615             :         Array1D_int CtrlNodes;   // nodes where humidity ratio is being set
     616             :         Real64 SetPt;            // the humidity ratio setpoint [kg/kg]
     617             : 
     618             :         // Default Constructor
     619          10 :         DefMultiZoneMaxHumSetPointManager() : AirLoopNum(0), MinSetHum(0.0), MaxSetHum(0.0), NumCtrlNodes(0), SetPt(0.0)
     620             :         {
     621          10 :         }
     622             : 
     623             :         void calculate(EnergyPlusData &state);
     624             :     };
     625             : 
     626         609 :     struct DefineFollowOATempSetPointManager : SPBase
     627             :     {
     628             :         // Members
     629             :         std::string RefTempType;       // Reference Temperature type (choice OutdoorAirWetBulb/OutdoorAirDryBulb)
     630             :         ReferenceTempType RefTypeMode; // set to iRefTempType_WetBulb or iRefTempType_DryBulb
     631             :         Real64 Offset;                 // Offset temperature difference
     632             :         Real64 MinSetTemp;             // Minimum supply air setpoint temperature
     633             :         Real64 MaxSetTemp;             // Maximum supply air setpoint temperature
     634             :         int NumCtrlNodes;              // number of nodes whose temperature is being set
     635             :         Array1D_int CtrlNodes;         // nodes where temperature is being set
     636             :         Real64 SetPt;                  // the setpoint
     637             : 
     638             :         // Default Constructor
     639         203 :         DefineFollowOATempSetPointManager()
     640         203 :             : RefTypeMode(ReferenceTempType::Invalid), Offset(0.0), MinSetTemp(0.0), MaxSetTemp(0.0), NumCtrlNodes(0), SetPt(0.0)
     641             :         {
     642         203 :         }
     643             : 
     644             :         void calculate(EnergyPlusData &state);
     645             :     };
     646             : 
     647           3 :     struct DefineFollowSysNodeTempSetPointManager : SPBase
     648             :     {
     649             :         // Members
     650             :         int RefNodeNum;                // reference node number
     651             :         std::string RefTempType;       // Reference Temperature type (choice OutdoorAirWetBulb/OutdoorAirDryBulb)
     652             :         ReferenceTempType RefTypeMode; // set to iRefTempType_WetBulb or iRefTempType_DryBulb
     653             :         Real64 Offset;                 // Offset temperature difference
     654             :         Real64 MinSetTemp;             // Minimum supply air setpoint temperature
     655             :         Real64 MaxSetTemp;             // Maximum supply air setpoint temperature
     656             :         int NumCtrlNodes;              // number of nodes whose temperature is being set
     657             :         Array1D_int CtrlNodes;         // nodes where temperature is being set
     658             :         Real64 SetPt;                  // the setpoint
     659             : 
     660             :         // Default Constructor
     661           1 :         DefineFollowSysNodeTempSetPointManager()
     662           1 :             : RefNodeNum(0), RefTypeMode(ReferenceTempType::Invalid), Offset(0.0), MinSetTemp(0.0), MaxSetTemp(0.0), NumCtrlNodes(0), SetPt(0.0)
     663             :         {
     664           1 :         }
     665             : 
     666             :         void calculate(EnergyPlusData &state);
     667             :     };
     668             : 
     669          57 :     struct DefineGroundTempSetPointManager : SPBase
     670             :     {
     671             :         // Members
     672             :         std::string RefGroundTempObjType; // Reference Temperature type (Available choices are listed below)
     673             :         // Site:GroundTemperature:BuildingSurface
     674             :         // Site:GroundTemperature:Shallow
     675             :         // Site:GroundTemperature:Deep
     676             :         // Site:GroundTemperature:FCfactorMethod
     677             :         ReferenceGroundTempObjectType RefTypeMode; // set to iRefGroundTempObjType_xxxx based on RefGroundTempObjType
     678             :         Real64 Offset;                             // Offset temperature difference
     679             :         Real64 MinSetTemp;                         // Minimum supply air setpoint temperature
     680             :         Real64 MaxSetTemp;                         // Maximum supply air setpoint temperature
     681             :         int NumCtrlNodes;                          // number of nodes whose temperature is being set
     682             :         Array1D_int CtrlNodes;                     // nodes where temperature is being set
     683             :         Real64 SetPt;                              // the setpoint
     684             : 
     685             :         // Default Constructor
     686          19 :         DefineGroundTempSetPointManager()
     687          19 :             : RefTypeMode(ReferenceGroundTempObjectType::Invalid), Offset(0.0), MinSetTemp(0.0), MaxSetTemp(0.0), NumCtrlNodes(0), SetPt(0.0)
     688             :         {
     689          19 :         }
     690             : 
     691             :         void calculate(EnergyPlusData &state);
     692             :     };
     693             : 
     694           9 :     struct DefineCondEntSetPointManager : SPBase // derived type for SetpointManager:CondenserEnteringReset data
     695             :     {
     696             :         // Members
     697             :         std::string CondEntTempSched;   // Optional schedule
     698             :         int CondEntTempSchedPtr;        // default condenser entering water temperature schedule Index
     699             :         Real64 TowerDsnInletAirWetBulb; // cooling tower design inlet air wetbulb temperature
     700             :         int MinTwrWbCurve;              // minimum design wetbulb temperature curve name
     701             :         int MinOaWbCurve;               // minimum outside air wetbulb temperature curve name
     702             :         int OptCondEntCurve;            // optimized condenser entering water temperature curve name
     703             :         Real64 MinimumLiftTD;           // minimum lift
     704             :         Real64 MaxCondEntTemp;          // maximum condenser entering water temp
     705             :         int NumCtrlNodes;               // number of nodes whose temperature is being set
     706             :         std::string CtrlNodeListName;
     707             :         Array1D_int CtrlNodes;              // nodes where temperature is being set
     708             :         Real64 SetPt;                       // the temperature set point [C]
     709             :         int ChillerIndexPlantSide;          // plant side chiller index
     710             :         int ChillerIndexDemandSide;         // demand side chiller index
     711             :         int BranchIndexPlantSide;           // plant side branch index
     712             :         int BranchIndexDemandSide;          // demand side branch index
     713             :         int LoopIndexPlantSide;             // plant side loop index
     714             :         int LoopIndexDemandSide;            // deand side loop index
     715             :         DataPlant::PlantEquipmentType Type; // chiller type number
     716             : 
     717             :         // Default Constructor
     718           3 :         DefineCondEntSetPointManager()
     719           3 :             : CondEntTempSchedPtr(0), TowerDsnInletAirWetBulb(0.0), MinTwrWbCurve(0), MinOaWbCurve(0), OptCondEntCurve(0), MinimumLiftTD(0.0),
     720             :               MaxCondEntTemp(0.0), NumCtrlNodes(0), SetPt(0.0), ChillerIndexPlantSide(0), ChillerIndexDemandSide(0), BranchIndexPlantSide(0),
     721           3 :               BranchIndexDemandSide(0), LoopIndexPlantSide(0), LoopIndexDemandSide(0), Type(DataPlant::PlantEquipmentType::Invalid)
     722             :         {
     723           3 :         }
     724             : 
     725             :         void calculate(EnergyPlusData &state);
     726             :     };
     727             : 
     728           6 :     struct DefineIdealCondEntSetPointManager : SPBase // derived type for SetpointManager:CondenserEnteringReset:Ideal data
     729             :     {
     730             :         // Members
     731             :         // type of variable to be set
     732             :         Real64 MinimumLiftTD;  // minimum lift
     733             :         Real64 MaxCondEntTemp; // maximum condenser entering water temp
     734             :         int NumCtrlNodes;      // number of nodes whose temperature is being set
     735             :         std::string CtrlNodeListName;
     736             :         Array1D_int CtrlNodes;                                 // nodes where temperature is being set
     737             :         Real64 SetPt;                                          // the temperature set point [C]
     738             :         int ChillerIndexPlantSide;                             // plant side chiller index
     739             :         int BranchIndexPlantSide;                              // plant side branch index
     740             :         int LoopIndexPlantSide;                                // plant side loop index
     741             :         OutputProcessor::VariableType ChllrVarType;            // report variable type
     742             :         int ChllrVarIndex;                                     // report variable index
     743             :         OutputProcessor::VariableType ChlPumpVarType;          // report variable type
     744             :         int ChlPumpVarIndex;                                   // report variable index
     745             :         Array1D<OutputProcessor::VariableType> ClTowerVarType; // report variable type
     746             :         Array1D_int ClTowerVarIndex;                           // report variable index
     747             :         OutputProcessor::VariableType CndPumpVarType;          // report variable type
     748             :         int CndPumpVarIndex;                                   // report variable index
     749             :         DataPlant::PlantEquipmentType Type;                    // chiller type number
     750             :         Array1D_int TowerNum;                                  // cooling tower number
     751             :         int CondLoopNum;                                       // condenser loop number
     752             :         Array1D_int CondTowerBranchNum;                        // condenser branch number
     753             :         int numTowers;                                         // number of towers to query
     754             :         int CondPumpNum;                                       // condenser pump number
     755             :         int CondPumpBranchNum;                                 // condenser branch number for pump
     756             :         int ChilledPumpNum;                                    // chilled water pump number
     757             :         int ChilledPumpBranchNum;                              // chilled water branch number for pump
     758             :         bool SetupIdealCondEntSetPtVars;                       // flag for initialization of meters and such
     759             : 
     760             :         // Default Constructor
     761           2 :         DefineIdealCondEntSetPointManager()
     762           2 :             : MinimumLiftTD(0.0), MaxCondEntTemp(0.0), NumCtrlNodes(0), SetPt(0.0), ChillerIndexPlantSide(0), BranchIndexPlantSide(0),
     763             :               LoopIndexPlantSide(0), ChllrVarType(OutputProcessor::VariableType::NotFound), ChllrVarIndex(0),
     764             :               ChlPumpVarType(OutputProcessor::VariableType::NotFound), ChlPumpVarIndex(0), CndPumpVarType(OutputProcessor::VariableType::NotFound),
     765             :               CndPumpVarIndex(0), Type(DataPlant::PlantEquipmentType::Invalid), CondLoopNum(0), numTowers(0), CondPumpNum(0), CondPumpBranchNum(0),
     766           2 :               ChilledPumpNum(0), ChilledPumpBranchNum(0), SetupIdealCondEntSetPtVars(true)
     767             :         {
     768           2 :         }
     769             : 
     770             :         void calculate(EnergyPlusData &state);
     771             : 
     772             :         void SetupMeteredVarsForSetPt(EnergyPlusData &state);
     773             : 
     774             :         Real64 calculateCurrentEnergyUsage(EnergyPlusData &state);
     775             : 
     776             :         void setupSetPointAndFlags(Real64 &TotEnergy,
     777             :                                    Real64 &TotEnergyPre,
     778             :                                    Real64 &CondWaterSetPoint,
     779             :                                    Real64 &CondTempLimit,
     780             :                                    bool &RunOptCondEntTemp,
     781             :                                    bool &RunSubOptCondEntTemp,
     782             :                                    bool &RunFinalOptCondEntTemp) const;
     783             :     };
     784             : 
     785           9 :     struct DefineSZOneStageCoolinggSetPointManager : SPBase // Derived type for the Single Zone One Stage Cooling Setpoint Manager data
     786             :     {
     787             :         // Members
     788             :         std::string ControlZoneName; // name of the control zone (zone with main thermostat)
     789             :         int ControlZoneNum;          // number (index into Zone array) of control zone
     790             :         int ZoneNodeNum;             // zone node number
     791             :         Real64 CoolingOnTemp;        // minimum supply air setpoint temperature
     792             :         Real64 CoolingOffTemp;       // maximum supply air setpoint temperature
     793             :         int NumCtrlNodes;
     794             :         Array1D_int CtrlNodes; // node numbers of nodes where setpoint is to be set
     795             :         Real64 SetPt;          // the setpoint
     796             : 
     797             :         // Default Constructor
     798           1 :         DefineSZOneStageCoolinggSetPointManager()
     799           1 :             : ControlZoneNum(0), ZoneNodeNum(0), CoolingOnTemp(0.0), CoolingOffTemp(0.0), NumCtrlNodes(0), SetPt(0.0)
     800             :         {
     801           1 :         }
     802             : 
     803             :         void calculate(EnergyPlusData &state);
     804             :     };
     805             : 
     806           9 :     struct DefineSZOneStageHeatingSetPointManager : SPBase // Derived type for the Single Zone One Stage Heating Setpoint Manager data
     807             :     {
     808             :         // Members
     809             :         std::string ControlZoneName; // name of the control zone (zone with main thermostat)
     810             :         int ControlZoneNum;          // number (index into Zone array) of control zone
     811             :         int ZoneNodeNum;             // zone node number
     812             :         Real64 HeatingOnTemp;        // minimum supply air setpoint temperature
     813             :         Real64 HeatingOffTemp;       // maximum supply air setpoint temperature
     814             :         int NumCtrlNodes;
     815             :         Array1D_int CtrlNodes; // node numbers of nodes where setpoint is to be set
     816             :         Real64 SetPt;          // the setpoint
     817             : 
     818             :         // Default Constructor
     819           1 :         DefineSZOneStageHeatingSetPointManager()
     820           1 :             : ControlZoneNum(0), ZoneNodeNum(0), HeatingOnTemp(0.0), HeatingOffTemp(0.0), NumCtrlNodes(0), SetPt(0.0)
     821             :         {
     822           1 :         }
     823             : 
     824             :         void calculate(EnergyPlusData &state);
     825             :     };
     826             : 
     827           9 :     struct DefineReturnWaterChWSetPointManager : SPBase // derived type for SetpointManager:SupplyResetForReturnTemperature:ChilledWater data
     828             :     {
     829             :         // Members
     830             :         int returnNodeIndex;                    // node ID for the plant supply-side return node
     831             :         int supplyNodeIndex;                    // node ID for the plant supply-side supply node
     832             :         Real64 minimumChilledWaterSetpoint;     // the minimum reset temperature for the chilled water setpoint
     833             :         Real64 maximumChilledWaterSetpoint;     // the maximum reset temperature for the chilled water setpoint
     834             :         int returnTemperatureScheduleIndex;     // the index in Schedules array for the scheduled return temperature; zero if not used
     835             :         Real64 returnTemperatureConstantTarget; // the constant value used as the return temperature target; used if schedule index is zero
     836             :         Real64 currentSupplySetPt;              // the current supply setpoint temperature
     837             :         int plantLoopIndex;                     // the index for the plant loop for this manager, zero if not initialized
     838             :         int plantSetpointNodeIndex;             // the index for the node where the plant setpoint is set, need to look up after Plant is established
     839             :         bool useReturnTempSetpoint;             // only true if the target return temperature should be looked up as the Node(returnNode).TempSetPoint
     840             : 
     841             :         // Default Constructor
     842           3 :         DefineReturnWaterChWSetPointManager()
     843           3 :             : returnNodeIndex(0), supplyNodeIndex(0), minimumChilledWaterSetpoint(0.0), maximumChilledWaterSetpoint(0.0),
     844             :               returnTemperatureScheduleIndex(0), returnTemperatureConstantTarget(0.0), currentSupplySetPt(0.0), plantLoopIndex(0),
     845           3 :               plantSetpointNodeIndex(0), useReturnTempSetpoint(false)
     846             :         {
     847           3 :         }
     848             : 
     849             :         // Calculation method
     850             :         void calculate(EnergyPlusData &state, DataLoopNode::NodeData &returnNode, DataLoopNode::NodeData &supplyNode);
     851             :     };
     852             : 
     853           3 :     struct DefineReturnWaterHWSetPointManager : SPBase // derived type for SetpointManager:SupplyResetForReturnTemperature:HotWater data
     854             :     {
     855             :         // Members
     856             :         int returnNodeIndex;                    // node ID for the plant supply-side return node
     857             :         int supplyNodeIndex;                    // node ID for the plant supply-side supply node
     858             :         Real64 maximumHotWaterSetpoint;         // the maximum reset temperature for the hot water setpoint
     859             :         Real64 minimumHotWaterSetpoint;         // the minimum reset temperature for the hot water setpoint
     860             :         int returnTemperatureScheduleIndex;     // the index in Schedules array for the scheduled return temperature; zero if not used
     861             :         Real64 returnTemperatureConstantTarget; // the constant value used as the return temperature target; used if schedule index is zero
     862             :         Real64 currentSupplySetPt;              // the current supply setpoint temperature
     863             :         int plantLoopIndex;                     // the index for the plant loop for this manager, zero if not initialized
     864             :         int plantSetpointNodeIndex;             // the index for the node where the plant setpoint is set, need to look up after Plant is established
     865             :         bool useReturnTempSetpoint;             // only true if the target return temperature should be looked up as the Node(returnNode).TempSetPoint
     866             : 
     867             :         // Default Constructor
     868           1 :         DefineReturnWaterHWSetPointManager()
     869           1 :             : returnNodeIndex(0), supplyNodeIndex(0), maximumHotWaterSetpoint(0.0), minimumHotWaterSetpoint(0.0), returnTemperatureScheduleIndex(0),
     870             :               returnTemperatureConstantTarget(0.0), currentSupplySetPt(0.0), plantLoopIndex(0), plantSetpointNodeIndex(0),
     871           1 :               useReturnTempSetpoint(false)
     872             :         {
     873           1 :         }
     874             : 
     875             :         // Calculation method
     876             :         void calculate(EnergyPlusData &state, DataLoopNode::NodeData &returnNode, DataLoopNode::NodeData &supplyNode);
     877             :     };
     878             : 
     879           8 :     struct DefineScheduledTESSetPointManager : SPBase // Derived type for Scheduled TES Setpoint Manager data
     880             :     {
     881             :         // Members
     882             :         int SchedPtr;
     883             :         int SchedPtrCharge;
     884             :         int CtrlNodeNum;
     885             :         Real64 NonChargeCHWTemp;
     886             :         Real64 ChargeCHWTemp;
     887             :         DataPlant::CtrlType CompOpType;
     888             :         Real64 SetPt;
     889             : 
     890             :         // Default Constructor
     891           2 :         DefineScheduledTESSetPointManager()
     892           2 :             : SchedPtr(0), SchedPtrCharge(0), CtrlNodeNum(0), NonChargeCHWTemp(0.0), ChargeCHWTemp(0.0), CompOpType(DataPlant::CtrlType::Invalid),
     893           2 :               SetPt(0.0)
     894             :         {
     895           2 :         }
     896             : 
     897             :         // Calculation method
     898             :         void calculate(EnergyPlusData &state);
     899             :     };
     900             : 
     901          10 :     struct DefineSysNodeResetSetPointManager : SPBase // Derived type for System Node Reset Setpoint Manager Data
     902             :     {
     903             :         // Members
     904             :         Real64 SpAtLowRef = 0.0;  // Setpoint at Low Reference Temperature or Humidity Ratio (i.e., Maximum Temperature/Humidity Ratio Setpoint)
     905             :         Real64 SpAtHighRef = 0.0; // Setpoint at High Reference Temperature or Humidity Ratio (i.e., Maximum Temperature/Humidity Ratio Setpoint)
     906             :         Real64 LowRef = 0.0;      // Low Reference Temperature or Humidity Ratio
     907             :         Real64 HighRef = 0.0;     // High Reference Temperature or Humidity Ratio
     908             :         int RefNodeNum = 0;       // Reference Node Number
     909             :         int NumCtrlNodes = 0;
     910             :         std::string CtrlNodeListName;
     911             :         Array1D_int CtrlNodes;
     912             :         Real64 SetPt = 0.0; // current setpoint value
     913             : 
     914             :         void calculate(EnergyPlusData &state);
     915             :     };
     916             : 
     917             :     void ManageSetPoints(EnergyPlusData &state);
     918             : 
     919             :     void GetSetPointManagerInputs(EnergyPlusData &state); // wrapper for GetInput to accomodate unit testing
     920             : 
     921             :     void GetSetPointManagerInputData(EnergyPlusData &state, bool &ErrorsFound);
     922             : 
     923             :     void VerifySetPointManagers(EnergyPlusData &state, bool &ErrorsFound); // flag to denote node conflicts in input. !unused1208
     924             : 
     925             :     void InitSetPointManagers(EnergyPlusData &state);
     926             : 
     927             :     void SimSetPointManagers(EnergyPlusData &state);
     928             : 
     929             :     void UpdateSetPointManagers(EnergyPlusData &state);
     930             : 
     931             :     void UpdateMixedAirSetPoints(EnergyPlusData &state);
     932             : 
     933             :     void UpdateOAPretreatSetPoints(EnergyPlusData &state);
     934             : 
     935             :     int getSPMBasedOnNode(EnergyPlusData &state, int NodeNum, CtrlVarType SetPtType, SetPointManagerType SMPType, CtrlNodeType ctrlOrRefNode);
     936             : 
     937             :     bool IsNodeOnSetPtManager(EnergyPlusData &state, int NodeNum, CtrlVarType SetPtType);
     938             : 
     939             :     bool NodeHasSPMCtrlVarType(EnergyPlusData &state, int NodeNum, CtrlVarType CtrlVarType);
     940             : 
     941             :     void ResetHumidityRatioCtrlVarType(EnergyPlusData &state, int NodeNum);
     942             : 
     943             :     void CheckIfAnyIdealCondEntSetPoint(EnergyPlusData &state);
     944             : 
     945             :     CtrlVarType GetHumidityRatioVariableType(EnergyPlusData &state, int CntrlNodeNum);
     946             : 
     947             :     void SetUpNewScheduledTESSetPtMgr(EnergyPlusData &state,
     948             :                                       int SchedPtr,
     949             :                                       int SchedPtrCharge,
     950             :                                       Real64 NonChargeCHWTemp,
     951             :                                       Real64 ChargeCHWTemp,
     952             :                                       DataPlant::CtrlType CompOpType,
     953             :                                       int ControlNodeNum);
     954             : 
     955             :     bool GetCoilFreezingCheckFlag(EnergyPlusData &state, int MixedAirSPMNum);
     956             : 
     957             :     int GetMixedAirNumWithCoilFreezingCheck(EnergyPlusData &state, int MixedAirNode);
     958             : 
     959             : } // namespace SetPointManager
     960             : 
     961        1542 : struct SetPointManagerData : BaseGlobalStruct
     962             : {
     963             :     // MODULE VARIABLE DECLARATIONS:
     964             :     int NumAllSetPtMgrs = 0;                 // Number of all Setpoint Managers found in input
     965             :     int NumSchSetPtMgrs = 0;                 // Number of Scheduled Setpoint Managers found in input
     966             :     int NumDualSchSetPtMgrs = 0;             // Number of Scheduled Dual Setpoint Managers found in input
     967             :     int NumOutAirSetPtMgrs = 0;              // Number of Outside Air Setpoint Managers found in input
     968             :     int NumSZRhSetPtMgrs = 0;                // number of single zone reheat setpoint managers
     969             :     int NumSZHtSetPtMgrs = 0;                // number of single zone heating setpoint managers
     970             :     int NumSZClSetPtMgrs = 0;                // number of single zone cooling setpoint managers
     971             :     int NumSZMinHumSetPtMgrs = 0;            // number of Single Zone Minimum Humidity Setpoint Managers
     972             :     int NumSZMaxHumSetPtMgrs = 0;            // number of Single Zone Maximum Humidity Setpoint Managers
     973             :     int NumMixedAirSetPtMgrs = 0;            // number of mixed air setpoint managers
     974             :     int NumOAPretreatSetPtMgrs = 0;          // number of outside air pretreat setpoint managers
     975             :     int NumWarmestSetPtMgrs = 0;             // number of Warmest setpoint managers
     976             :     int NumColdestSetPtMgrs = 0;             // number of Coldest setpoint managers
     977             :     int NumWarmestSetPtMgrsTempFlow = 0;     // number of Warmest Temp Flow setpoint managers
     978             :     int NumRABFlowSetPtMgrs = 0;             // number of return air bypass temperature-based flow setpoint manager
     979             :     int NumMZClgAverageSetPtMgrs = 0;        // number of Multizone:Cooling:Average setpoint managers
     980             :     int NumMZHtgAverageSetPtMgrs = 0;        // number of Multizone:Heating:Average setpoint managers
     981             :     int NumMZAverageMinHumSetPtMgrs = 0;     // number of MultiZone:MinimumHumidity:Average setpoint managers
     982             :     int NumMZAverageMaxHumSetPtMgrs = 0;     // number of MultiZone:MaximumHumidity:Average setpoint managers
     983             :     int NumMZMinHumSetPtMgrs = 0;            // number of MultiZone:Humidity:Minimum setpoint managers
     984             :     int NumMZMaxHumSetPtMgrs = 0;            // number of MultiZone:Humidity:Maximum setpoint managers
     985             :     int NumFollowOATempSetPtMgrs = 0;        // number of SetpointManager:FollowOutdoorAirTemperature setpoint managers
     986             :     int NumFollowSysNodeTempSetPtMgrs = 0;   // number of SetpointManager:FollowSystemNodeTemperature setpoint managers
     987             :     int NumGroundTempSetPtMgrs = 0;          // number of SetpointManager:FollowGroundTemperature setpoint managers
     988             :     int NumCondEntSetPtMgrs = 0;             // number of Condenser Entering Reset setpoint managers
     989             :     int NumIdealCondEntSetPtMgrs = 0;        // number of Ideal Condenser Entering Temperature setpoint managers
     990             :     int NumSZOneStageCoolingSetPtMgrs = 0;   // number of single zone one stage cooling setpoint managers
     991             :     int NumSZOneStageHeatingSetPtMgrs = 0;   // number of singel zone one stage heating setpoint managers
     992             :     int NumReturnWaterResetChWSetPtMgrs = 0; // number of return water reset setpoint managers
     993             :     int NumReturnWaterResetHWSetPtMgrs = 0;  // number of hot-water return water reset setpoint managers
     994             :     int NumSchTESSetPtMgrs = 0;              // number of TES scheduled setpoint managers (created internally, not by user input)
     995             :     int NumSystemNodeResetTempSetPtMgrs = 0; // Number of SystemNodeReset:Temperature setpoint managers
     996             :     int NumSystemNodeResetHumSetPtMgrs = 0;  // Number of SystemNodeReset:Humidity setpoint managers
     997             : 
     998             :     Real64 TSupNoHC = 0.0;     // supply temperature with no heating or cooling
     999             :     Real64 ExtrRateNoHC = 0.0; // the heating (>0) or cooling (<0) that can be done by supply air at TSupNoHC [W]
    1000             : 
    1001             :     int GetSetPointManagerInputMaxNumAlphas = 0;  // argument for call to GetObjectDefMaxArgs
    1002             :     int GetSetPointManagerInputMaxNumNumbers = 0; // argument for call to GetObjectDefMaxArgs
    1003             :     DataPlant::PlantEquipmentType ChillerType = DataPlant::PlantEquipmentType::Invalid;
    1004             :     int InitSetPointManagerNumChiller = 0;
    1005             :     DataPlant::PlantEquipmentType InitType = DataPlant::PlantEquipmentType::Invalid;
    1006             : 
    1007             :     bool ManagerOn = false;
    1008             :     bool GetInputFlag = true; // First time, input is "gotten"
    1009             : 
    1010             :     bool InitSetPointManagersOneTimeFlag = true;
    1011             :     bool InitSetPointManagersOneTimeFlag2 = true;
    1012             :     Real64 DCESPMDsn_EntCondTemp = 0.0;
    1013             :     Real64 DCESPMDsn_MinCondSetpt = 0.0;
    1014             :     Real64 DCESPMCur_MinLiftTD = 0.0;
    1015             :     Real64 DCESPMDesign_Load_Sum = 0.0;
    1016             :     Real64 DCESPMActual_Load_Sum = 0.0;
    1017             :     Real64 DCESPMWeighted_Actual_Load_Sum = 0.0;
    1018             :     Real64 DCESPMWeighted_Design_Load_Sum = 0.0;
    1019             :     Real64 DCESPMWeighted_Ratio = 0.0;
    1020             :     Real64 DCESPMMin_DesignWB = 0.0;
    1021             :     Real64 DCESPMMin_ActualWb = 0.0;
    1022             :     Real64 DCESPMOpt_CondEntTemp = 0.0;
    1023             :     Real64 DCESPMDesignClgCapacity_Watts = 0.0;
    1024             :     Real64 DCESPMCurrentLoad_Watts = 0.0;
    1025             :     Real64 DCESPMCondInletTemp = 0.0;
    1026             :     Real64 DCESPMEvapOutletTemp = 0.0;
    1027             :     bool NoSurfaceGroundTempObjWarning = true; // This will cause a warning to be issued if no "surface" ground
    1028             :     // temperature object was input.
    1029             :     bool NoShallowGroundTempObjWarning = true; // This will cause a warning to be issued if no "shallow" ground
    1030             :     // temperature object was input.
    1031             :     bool NoDeepGroundTempObjWarning = true; // This will cause a warning to be issued if no "deep" ground
    1032             :     // temperature object was input.
    1033             :     bool NoFCGroundTempObjWarning = true; // This will cause a warning to be issued if no ground
    1034             :     // temperature object was input for FC Factor method
    1035             :     bool InitSetPointManagersMyEnvrnFlag = true; // flag for init once at start of environment
    1036             :     bool RunSubOptCondEntTemp = false;
    1037             :     bool RunFinalOptCondEntTemp = false;
    1038             : 
    1039             :     // Object Data
    1040             :     Array1D<SetPointManager::DataSetPointManager> AllSetPtMgr;                                    // Array for all Setpoint Manager data(warnings)
    1041             :     Array1D<SetPointManager::DefineScheduledSetPointManager> SchSetPtMgr;                         // Array for Scheduled Setpoint Manager data
    1042             :     Array1D<SetPointManager::DefineSchedDualSetPointManager> DualSchSetPtMgr;                     // Dual Scheduled Setpoint Manager data
    1043             :     Array1D<SetPointManager::DefineOutsideAirSetPointManager> OutAirSetPtMgr;                     // Array for Outside Air Setpoint Manager data
    1044             :     Array1D<SetPointManager::DefineSZReheatSetPointManager> SingZoneRhSetPtMgr;                   // Array for SZRH Set Pt Mgr
    1045             :     Array1D<SetPointManager::DefineSZHeatingSetPointManager> SingZoneHtSetPtMgr;                  // Array for SZ Heating Set Pt Mgr
    1046             :     Array1D<SetPointManager::DefineSZCoolingSetPointManager> SingZoneClSetPtMgr;                  // Array for SZ Cooling Set Pt Mgr
    1047             :     Array1D<SetPointManager::DefineSZMinHumSetPointManager> SZMinHumSetPtMgr;                     // Array for SZ Min Hum Set Pt Mgr
    1048             :     Array1D<SetPointManager::DefineSZMaxHumSetPointManager> SZMaxHumSetPtMgr;                     // Array for SZ Max Hum Set Pt Mgr
    1049             :     Array1D<SetPointManager::DefineMixedAirSetPointManager> MixedAirSetPtMgr;                     // Array for Mixed Air Set Pt Mgr
    1050             :     Array1D<SetPointManager::DefineOAPretreatSetPointManager> OAPretreatSetPtMgr;                 // Array for OA Pretreat Set Pt Mgr
    1051             :     Array1D<SetPointManager::DefineWarmestSetPointManager> WarmestSetPtMgr;                       // Array for Warmest Set Pt Mgr
    1052             :     Array1D<SetPointManager::DefineColdestSetPointManager> ColdestSetPtMgr;                       // Array for Coldest Set Pt Mgr
    1053             :     Array1D<SetPointManager::DefWarmestSetPtManagerTempFlow> WarmestSetPtMgrTempFlow;             // Array for Warmest Set Pt Mgr
    1054             :     Array1D<SetPointManager::DefRABFlowSetPointManager> RABFlowSetPtMgr;                          // Array for return air bypass
    1055             :     Array1D<SetPointManager::DefMultiZoneAverageCoolingSetPointManager> MZAverageCoolingSetPtMgr; // Array for MultiZone
    1056             :     Array1D<SetPointManager::DefMultiZoneAverageHeatingSetPointManager> MZAverageHeatingSetPtMgr; // Array for MultiZone
    1057             :     Array1D<SetPointManager::DefMultiZoneAverageMinHumSetPointManager> MZAverageMinHumSetPtMgr;   // Array for MultiZone
    1058             :     Array1D<SetPointManager::DefMultiZoneAverageMaxHumSetPointManager> MZAverageMaxHumSetPtMgr;   // Array for MultiZone
    1059             :     Array1D<SetPointManager::DefMultiZoneMinHumSetPointManager> MZMinHumSetPtMgr;                 // Multizone min humidity rat Set Pt Mgr
    1060             :     Array1D<SetPointManager::DefMultiZoneMaxHumSetPointManager> MZMaxHumSetPtMgr;                 // Multizone max humidity rat Set Pt Mgr
    1061             :     Array1D<SetPointManager::DefineFollowOATempSetPointManager> FollowOATempSetPtMgr;             // Array for Follow Outdoor Air
    1062             :     Array1D<SetPointManager::DefineFollowSysNodeTempSetPointManager> FollowSysNodeTempSetPtMgr;   // Array for Follow System
    1063             :     Array1D<SetPointManager::DefineGroundTempSetPointManager> GroundTempSetPtMgr;                 // Array for Ground Temp Setpoint
    1064             :     Array1D<SetPointManager::DefineCondEntSetPointManager> CondEntSetPtMgr;                       // Condenser Entering Water Set Pt Mgr
    1065             :     Array1D<SetPointManager::DefineIdealCondEntSetPointManager> IdealCondEntSetPtMgr;             // Ideal Condenser Entering Set Pt Mgr
    1066             :     Array1D<SetPointManager::DefineSZOneStageCoolinggSetPointManager> SZOneStageCoolingSetPtMgr;  // single zone 1 stage cool
    1067             :     Array1D<SetPointManager::DefineSZOneStageHeatingSetPointManager> SZOneStageHeatingSetPtMgr;   // single zone 1 stage heat
    1068             :     Array1D<SetPointManager::DefineReturnWaterChWSetPointManager> ReturnWaterResetChWSetPtMgr;    // return water reset
    1069             :     Array1D<SetPointManager::DefineReturnWaterHWSetPointManager> ReturnWaterResetHWSetPtMgr;      // hot-water return water reset
    1070             :     Array1D<SetPointManager::DefineScheduledTESSetPointManager> SchTESSetPtMgr;                   // Array for TES Scheduled Setpoint Manager data
    1071             :     Array1D<SetPointManager::DefineSysNodeResetSetPointManager> SystemNodeResetSetPtMgr;          // Array for System Node Reset Setpoint Manager data
    1072             : 
    1073             :     Real64 CondWaterSetPoint = 0; // Condenser entering water temperature setpoint this timestep, C
    1074             :     Real64 EvapOutletTemp = 0;    // Evaporator water outlet temperature (C)
    1075             :     Real64 CondTempLimit = 0;     // Condenser entering water temperature setpoint lower limit
    1076             :     Real64 CurLoad = 0;           // Current cooling load, W
    1077             :     Real64 TotEnergy = 0;         // Total energy consumptions at this time step
    1078             :     Real64 TotEnergyPre = 0;      // Total energy consumptions at the previous time step
    1079             : 
    1080           0 :     void clear_state() override
    1081             :     {
    1082             : 
    1083           0 :         NumAllSetPtMgrs = 0;                 // Number of all Setpoint Managers found in input
    1084           0 :         NumSchSetPtMgrs = 0;                 // Number of Scheduled Setpoint Managers found in input
    1085           0 :         NumDualSchSetPtMgrs = 0;             // Number of Scheduled Dual Setpoint Managers found in input
    1086           0 :         NumOutAirSetPtMgrs = 0;              // Number of Outside Air Setpoint Managers found in input
    1087           0 :         NumSZRhSetPtMgrs = 0;                // number of single zone reheat setpoint managers
    1088           0 :         NumSZHtSetPtMgrs = 0;                // number of single zone heating setpoint managers
    1089           0 :         NumSZClSetPtMgrs = 0;                // number of single zone cooling setpoint managers
    1090           0 :         NumSZMinHumSetPtMgrs = 0;            // number of Single Zone Minimum Humidity Setpoint Managers
    1091           0 :         NumSZMaxHumSetPtMgrs = 0;            // number of Single Zone Maximum Humidity Setpoint Managers
    1092           0 :         NumMixedAirSetPtMgrs = 0;            // number of mixed air setpoint managers
    1093           0 :         NumOAPretreatSetPtMgrs = 0;          // number of outside air pretreat setpoint managers
    1094           0 :         NumWarmestSetPtMgrs = 0;             // number of Warmest setpoint managers
    1095           0 :         NumColdestSetPtMgrs = 0;             // number of Coldest setpoint managers
    1096           0 :         NumWarmestSetPtMgrsTempFlow = 0;     // number of Warmest Temp Flow setpoint managers
    1097           0 :         NumRABFlowSetPtMgrs = 0;             // number of return air bypass temperature-based flow setpoint manager
    1098           0 :         NumMZClgAverageSetPtMgrs = 0;        // number of Multizone:Cooling:Average setpoint managers
    1099           0 :         NumMZHtgAverageSetPtMgrs = 0;        // number of Multizone:Heating:Average setpoint managers
    1100           0 :         NumMZAverageMinHumSetPtMgrs = 0;     // number of MultiZone:MinimumHumidity:Average setpoint managers
    1101           0 :         NumMZAverageMaxHumSetPtMgrs = 0;     // number of MultiZone:MaximumHumidity:Average setpoint managers
    1102           0 :         NumMZMinHumSetPtMgrs = 0;            // number of MultiZone:Humidity:Minimum setpoint managers
    1103           0 :         NumMZMaxHumSetPtMgrs = 0;            // number of MultiZone:Humidity:Maximum setpoint managers
    1104           0 :         NumFollowOATempSetPtMgrs = 0;        // number of SetpointManager:FollowOutdoorAirTemperature setpoint managers
    1105           0 :         NumFollowSysNodeTempSetPtMgrs = 0;   // number of SetpointManager:FollowSystemNodeTemperature setpoint managers
    1106           0 :         NumGroundTempSetPtMgrs = 0;          // number of SetpointManager:FollowGroundTemperature setpoint managers
    1107           0 :         NumCondEntSetPtMgrs = 0;             // number of Condenser Entering Reset setpoint managers
    1108           0 :         NumIdealCondEntSetPtMgrs = 0;        // number of Ideal Condenser Entering Temperature setpoint managers
    1109           0 :         NumSZOneStageCoolingSetPtMgrs = 0;   // number of single zone one stage cooling setpoint managers
    1110           0 :         NumSZOneStageHeatingSetPtMgrs = 0;   // number of singel zone one stage heating setpoint managers
    1111           0 :         NumReturnWaterResetChWSetPtMgrs = 0; // number of return water reset setpoint managers
    1112           0 :         NumReturnWaterResetHWSetPtMgrs = 0;  // number of hot-water return water reset setpoint managers
    1113           0 :         NumSchTESSetPtMgrs = 0;              // number of TES Scheduled setpoint Managers
    1114           0 :         NumSystemNodeResetTempSetPtMgrs = 0; // Number of SystemNodeReset:Temperature setpoint managers
    1115           0 :         NumSystemNodeResetHumSetPtMgrs = 0;  // Number of SystemNodeReset:Humidity setpoint managers
    1116             : 
    1117           0 :         DCESPMDsn_EntCondTemp = 0.0;
    1118           0 :         DCESPMDsn_MinCondSetpt = 0.0;
    1119           0 :         DCESPMCur_MinLiftTD = 0.0;
    1120           0 :         DCESPMDesign_Load_Sum = 0.0;
    1121           0 :         DCESPMActual_Load_Sum = 0.0;
    1122           0 :         DCESPMWeighted_Actual_Load_Sum = 0.0;
    1123           0 :         DCESPMWeighted_Design_Load_Sum = 0.0;
    1124           0 :         DCESPMWeighted_Ratio = 0.0;
    1125           0 :         DCESPMMin_DesignWB = 0.0;
    1126           0 :         DCESPMMin_ActualWb = 0.0;
    1127           0 :         DCESPMOpt_CondEntTemp = 0.0;
    1128           0 :         DCESPMDesignClgCapacity_Watts = 0.0;
    1129           0 :         DCESPMCurrentLoad_Watts = 0.0;
    1130           0 :         DCESPMCondInletTemp = 0.0;
    1131           0 :         DCESPMEvapOutletTemp = 0.0;
    1132             : 
    1133           0 :         TSupNoHC = 0.0;     // supply temperature with no heating or cooling
    1134           0 :         ExtrRateNoHC = 0.0; // the heating (>0) or cooling (<0) that can be done by supply air at TSupNoHC [W]
    1135             : 
    1136           0 :         GetSetPointManagerInputMaxNumAlphas = 0;  // argument for call to GetObjectDefMaxArgs
    1137           0 :         GetSetPointManagerInputMaxNumNumbers = 0; // argument for call to GetObjectDefMaxArgs
    1138           0 :         ChillerType = DataPlant::PlantEquipmentType::Invalid;
    1139           0 :         InitSetPointManagerNumChiller = 0;
    1140           0 :         InitType = DataPlant::PlantEquipmentType::Invalid;
    1141             : 
    1142           0 :         ManagerOn = false;
    1143           0 :         GetInputFlag = true; // First time, input is "gotten"
    1144             :         // Object Data
    1145           0 :         InitSetPointManagersOneTimeFlag = true;
    1146           0 :         InitSetPointManagersOneTimeFlag2 = true;
    1147           0 :         AllSetPtMgr.deallocate();                 // Array for all Setpoint Manager data(warnings)
    1148           0 :         SchSetPtMgr.deallocate();                 // Array for Scheduled Setpoint Manager data
    1149           0 :         DualSchSetPtMgr.deallocate();             // Dual Scheduled Setpoint Manager data
    1150           0 :         OutAirSetPtMgr.deallocate();              // Array for Outside Air Setpoint Manager data
    1151           0 :         SingZoneRhSetPtMgr.deallocate();          // Array for SZRH Set Pt Mgr
    1152           0 :         SingZoneHtSetPtMgr.deallocate();          // Array for SZ Heating Set Pt Mgr
    1153           0 :         SingZoneClSetPtMgr.deallocate();          // Array for SZ Cooling Set Pt Mgr
    1154           0 :         SZMinHumSetPtMgr.deallocate();            // Array for SZ Min Hum Set Pt Mgr
    1155           0 :         SZMaxHumSetPtMgr.deallocate();            // Array for SZ Max Hum Set Pt Mgr
    1156           0 :         MixedAirSetPtMgr.deallocate();            // Array for Mixed Air Set Pt Mgr
    1157           0 :         OAPretreatSetPtMgr.deallocate();          // Array for OA Pretreat Set Pt Mgr
    1158           0 :         WarmestSetPtMgr.deallocate();             // Array for Warmest Set Pt Mgr
    1159           0 :         ColdestSetPtMgr.deallocate();             // Array for Coldest Set Pt Mgr
    1160           0 :         WarmestSetPtMgrTempFlow.deallocate();     // Array for Warmest Set Pt Mgr
    1161           0 :         RABFlowSetPtMgr.deallocate();             // Array for return air bypass
    1162           0 :         MZAverageCoolingSetPtMgr.deallocate();    // Array for MultiZone
    1163           0 :         MZAverageHeatingSetPtMgr.deallocate();    // Array for MultiZone
    1164           0 :         MZAverageMinHumSetPtMgr.deallocate();     // Array for MultiZone
    1165           0 :         MZAverageMaxHumSetPtMgr.deallocate();     // Array for MultiZone
    1166           0 :         MZMinHumSetPtMgr.deallocate();            // Multizone min humidity rat Set Pt Mgr
    1167           0 :         MZMaxHumSetPtMgr.deallocate();            // Multizone max humidity rat Set Pt Mgr
    1168           0 :         FollowOATempSetPtMgr.deallocate();        // Array for Follow Outdoor Air
    1169           0 :         FollowSysNodeTempSetPtMgr.deallocate();   // Array for Follow System
    1170           0 :         GroundTempSetPtMgr.deallocate();          // Array for Ground Temp Setpoint
    1171           0 :         CondEntSetPtMgr.deallocate();             // Condenser Entering Water Set Pt Mgr
    1172           0 :         IdealCondEntSetPtMgr.deallocate();        // Ideal Condenser Entering Set Pt Mgr
    1173           0 :         SZOneStageCoolingSetPtMgr.deallocate();   // single zone 1 stage cool
    1174           0 :         SZOneStageHeatingSetPtMgr.deallocate();   // single zone 1 stage heat
    1175           0 :         ReturnWaterResetChWSetPtMgr.deallocate(); // return water reset
    1176           0 :         ReturnWaterResetHWSetPtMgr.deallocate();  // hot-water return water reset
    1177           0 :         SchTESSetPtMgr.deallocate();              // TES Scheduled setpoint Managers
    1178           0 :         SystemNodeResetSetPtMgr.deallocate();     // Array for System Node Reset Temperature and Humidity Ratio setpoint manager
    1179             : 
    1180           0 :         NoSurfaceGroundTempObjWarning = true;
    1181           0 :         NoShallowGroundTempObjWarning = true;
    1182           0 :         NoDeepGroundTempObjWarning = true;
    1183           0 :         NoFCGroundTempObjWarning = true;
    1184           0 :         InitSetPointManagersMyEnvrnFlag = true;
    1185           0 :         RunSubOptCondEntTemp = false;
    1186           0 :         RunFinalOptCondEntTemp = false;
    1187           0 :         CondWaterSetPoint = 0;
    1188           0 :         EvapOutletTemp = 0;
    1189           0 :         CondTempLimit = 0;
    1190           0 :         CurLoad = 0;
    1191           0 :         TotEnergy = 0;
    1192           0 :         TotEnergyPre = 0;
    1193           0 :     }
    1194             : };
    1195             : 
    1196             : } // namespace EnergyPlus
    1197             : 
    1198             : #endif

Generated by: LCOV version 1.13