LCOV - code coverage report
Current view: top level - EnergyPlus - HybridUnitaryAirConditioners.cc (source / functions) Hit Total Coverage
Test: lcov.output.filtered Lines: 556 631 88.1 %
Date: 2023-01-17 19:17:23 Functions: 10 10 100.0 %

          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             : // ObjexxFCL Headers
      49             : #include <ObjexxFCL/Array.functions.hh>
      50             : #include <ObjexxFCL/Fmath.hh>
      51             : 
      52             : // EnergyPlus Headers
      53             : #include <EnergyPlus/Autosizing/Base.hh>
      54             : #include <EnergyPlus/BranchNodeConnections.hh>
      55             : #include <EnergyPlus/Data/EnergyPlusData.hh>
      56             : #include <EnergyPlus/DataEnvironment.hh>
      57             : #include <EnergyPlus/DataHVACGlobals.hh>
      58             : #include <EnergyPlus/DataLoopNode.hh>
      59             : #include <EnergyPlus/DataSizing.hh>
      60             : #include <EnergyPlus/DataZoneEnergyDemands.hh>
      61             : #include <EnergyPlus/HybridEvapCoolingModel.hh>
      62             : #include <EnergyPlus/HybridUnitaryAirConditioners.hh>
      63             : #include <EnergyPlus/InputProcessing/InputProcessor.hh>
      64             : #include <EnergyPlus/NodeInputManager.hh>
      65             : #include <EnergyPlus/OutputProcessor.hh>
      66             : #include <EnergyPlus/Psychrometrics.hh>
      67             : #include <EnergyPlus/ScheduleManager.hh>
      68             : #include <EnergyPlus/UtilityRoutines.hh>
      69             : 
      70             : #define TEMP_CURVE 0
      71             : #define W_CURVE 1
      72             : #define POWER_CURVE 2
      73             : 
      74             : namespace EnergyPlus::HybridUnitaryAirConditioners {
      75             : 
      76             : // Begin routines for zone HVAC Hybrid Evaporative cooler unit
      77       12797 : void SimZoneHybridUnitaryAirConditioners(EnergyPlusData &state,
      78             :                                          std::string_view CompName,      // name of the packaged terminal heat pump
      79             :                                          int const ZoneNum,              // number of zone being served
      80             :                                          Real64 &SensibleOutputProvided, // sensible capacity delivered to zone cooling is negative
      81             :                                          Real64 &LatentOutputProvided,   // Latent add/removal  (kg/s), dehumid = negative
      82             :                                          int &CompIndex                  // index to zone hvac unit
      83             : )
      84             : {
      85             :     // SUBROUTINE INFORMATION:
      86             :     //       AUTHOR         Spencer Maxwell Dutton
      87             :     //       DATE WRITTEN   October 2017
      88             :     //       MODIFIED
      89             :     //       RE-ENGINEERED  na
      90             : 
      91             :     // SUBROUTINE LOCAL VARIABLE DECLARATIONS:
      92             :     int CompNum;
      93       12797 :     bool errorsfound = false;
      94       12797 :     if (state.dataHybridUnitaryAC->GetInputZoneHybridEvap) {
      95           1 :         GetInputZoneHybridUnitaryAirConditioners(state, errorsfound);
      96           1 :         state.dataHybridUnitaryAC->GetInputZoneHybridEvap = false;
      97             :     }
      98             : 
      99       12797 :     if (CompIndex == 0) {
     100           1 :         CompNum = UtilityRoutines::FindItemInList(CompName, state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner);
     101           1 :         if (CompNum == 0) {
     102           0 :             ShowFatalError(state, "SimZoneHybridUnitaryAirConditioners: ZoneHVAC:HybridUnitaryHVAC not found.");
     103             :         }
     104           1 :         CompIndex = CompNum;
     105             :     } else {
     106       12796 :         CompNum = CompIndex;
     107       12796 :         if (CompNum < 1 || CompNum > state.dataHybridUnitaryAC->NumZoneHybridEvap) {
     108           0 :             ShowFatalError(state,
     109           0 :                            format("SimZoneHybridUnitaryAirConditioners: Invalid CompIndex passed={}, Number of units ={}, Entered Unit name = {}",
     110             :                                   CompNum,
     111           0 :                                   state.dataHybridUnitaryAC->NumZoneHybridEvap,
     112           0 :                                   CompName));
     113             :         }
     114       12796 :         if (state.dataHybridUnitaryAC->CheckZoneHybridEvapName(CompNum)) {
     115           1 :             if (CompName != state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(CompNum).Name) {
     116           0 :                 ShowFatalError(
     117             :                     state,
     118           0 :                     format("SimZoneHybridUnitaryAirConditioners: Invalid CompIndex passed={}, Unit name={}, stored unit name for that index={}",
     119             :                            CompNum,
     120             :                            CompName,
     121           0 :                            state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(CompNum).Name));
     122             :             }
     123           1 :             state.dataHybridUnitaryAC->CheckZoneHybridEvapName(CompNum) = false;
     124             :         }
     125             :     }
     126             :     try {
     127       12797 :         InitZoneHybridUnitaryAirConditioners(state, CompNum, ZoneNum);
     128           0 :     } catch (int e) {
     129           0 :         ShowFatalError(state,
     130           0 :                        format("An exception occurred in InitZoneHybridUnitaryAirConditioners{}, Unit name={}, stored unit name for that "
     131             :                               "index={}. Please check idf.",
     132             :                               CompNum,
     133             :                               CompName,
     134           0 :                               state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(CompNum).Name));
     135           0 :         return;
     136             :     }
     137             :     try {
     138       12797 :         CalcZoneHybridUnitaryAirConditioners(state, CompNum, ZoneNum, SensibleOutputProvided, LatentOutputProvided);
     139           0 :     } catch (int e) {
     140           0 :         ShowFatalError(state,
     141           0 :                        format("An exception occurred in CalcZoneHybridUnitaryAirConditioners{}, Unit name={}, stored unit name for that "
     142             :                               "index={}. Please check idf.",
     143             :                               CompNum,
     144             :                               CompName,
     145           0 :                               state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(CompNum).Name));
     146           0 :         return;
     147             :     }
     148             :     try {
     149       12797 :         ReportZoneHybridUnitaryAirConditioners(state, CompNum);
     150           0 :     } catch (int e) {
     151           0 :         ShowFatalError(state,
     152           0 :                        format("An exception occurred in ReportZoneHybridUnitaryAirConditioners{}, Unit name={}, stored unit name for that "
     153             :                               "index={}. Please check idf.",
     154             :                               CompNum,
     155             :                               CompName,
     156           0 :                               state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(CompNum).Name));
     157           0 :         return;
     158             :     }
     159             : }
     160             : 
     161       12797 : void InitZoneHybridUnitaryAirConditioners(EnergyPlusData &state,
     162             :                                           int const UnitNum, // unit number
     163             :                                           int const ZoneNum  // number of zone being served
     164             : )
     165             : {
     166             :     // SUBROUTINE INFORMATION:
     167             :     //       AUTHOR         Spencer Maxwell Dutton
     168             :     //       DATE WRITTEN   October 2017
     169             :     //       MODIFIED
     170             :     //       RE-ENGINEERED  na
     171             : 
     172             :     // PURPOSE OF THIS SUBROUTINE:
     173             :     //
     174             : 
     175             :     // METHODOLOGY EMPLOYED:
     176             :     //
     177             : 
     178             :     // REFERENCES:
     179             :     // na
     180             : 
     181             :     // Using/Aliasing
     182             :     using namespace DataLoopNode;
     183             :     using namespace Psychrometrics;
     184       12797 :     auto &ZoneComp = state.dataHVACGlobal->ZoneComp;
     185             :     using DataZoneEquipment::CheckZoneEquipmentList;
     186             : 
     187             :     // Locals
     188             :     int Loop;
     189       12797 :     auto &MySizeFlag = state.dataHybridUnitaryAC->MySizeFlag;
     190       12797 :     auto &MyEnvrnFlag = state.dataHybridUnitaryAC->MyEnvrnFlag;
     191       12797 :     auto &MyFanFlag = state.dataHybridUnitaryAC->MyFanFlag;
     192       12797 :     auto &MyZoneEqFlag = state.dataHybridUnitaryAC->MyZoneEqFlag; // used to set up zone equipment availability managers
     193             : 
     194             :     int InletNode;
     195             : 
     196       12797 :     if (state.dataHybridUnitaryAC->HybridCoolOneTimeFlag) {
     197           1 :         MySizeFlag.dimension(state.dataHybridUnitaryAC->NumZoneHybridEvap, true);
     198           1 :         MyEnvrnFlag.dimension(state.dataHybridUnitaryAC->NumZoneHybridEvap, true);
     199           1 :         MyFanFlag.dimension(state.dataHybridUnitaryAC->NumZoneHybridEvap, true);
     200           1 :         MyZoneEqFlag.allocate(state.dataHybridUnitaryAC->NumZoneHybridEvap);
     201           1 :         MyZoneEqFlag = true;
     202           1 :         state.dataHybridUnitaryAC->HybridCoolOneTimeFlag = false;
     203             :     }
     204       12797 :     if (!state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).Initialized) {
     205           1 :         state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).Initialize(ZoneNum);
     206             :     }
     207       12797 :     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).RequestedLoadToHeatingSetpoint = 0;
     208       12797 :     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).RequestedLoadToCoolingSetpoint = 0;
     209       12797 :     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).RequestedHumdificationMass = 0;
     210       12797 :     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).RequestedHumdificationLoad = 0;
     211       12797 :     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).RequestedHumdificationEnergy = 0;
     212       12797 :     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).RequestedDeHumdificationMass = 0;
     213       12797 :     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).RequestedDeHumdificationLoad = 0;
     214       12797 :     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).RequestedDeHumdificationEnergy = 0;
     215             : 
     216       12797 :     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).UnitTotalCoolingRate = 0.0;
     217       12797 :     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).UnitTotalCoolingEnergy = 0.0;
     218             : 
     219       12797 :     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).UnitSensibleCoolingRate = 0.0;
     220       12797 :     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).UnitSensibleCoolingEnergy = 0.0;
     221       12797 :     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).UnitLatentCoolingRate = 0.0;
     222       12797 :     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).UnitLatentCoolingEnergy = 0.0;
     223       12797 :     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).AvailStatus = 0;
     224             : 
     225             :     // set the availability status based on the availability manager list name
     226       12797 :     if (allocated(ZoneComp)) {
     227       12797 :         if (MyZoneEqFlag(UnitNum)) { // initialize the name of each availability manager list and zone number
     228           2 :             ZoneComp(DataZoneEquipment::ZoneEquip::ZoneHybridEvaporativeCooler).ZoneCompAvailMgrs(UnitNum).AvailManagerListName =
     229           2 :                 state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).AvailManagerListName;
     230           1 :             ZoneComp(DataZoneEquipment::ZoneEquip::ZoneHybridEvaporativeCooler).ZoneCompAvailMgrs(UnitNum).ZoneNum = ZoneNum;
     231           1 :             MyZoneEqFlag(UnitNum) = false;
     232             :         }
     233       12797 :         state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).AvailStatus =
     234       12797 :             ZoneComp(DataZoneEquipment::ZoneEquip::ZoneHybridEvaporativeCooler).ZoneCompAvailMgrs(UnitNum).AvailStatus;
     235             :     }
     236             : 
     237             :     // need to check all zone outdoor air control units to see if they are on Zone Equipment List or issue warning
     238       12797 :     if (!state.dataHybridUnitaryAC->ZoneEquipmentListChecked && state.dataZoneEquip->ZoneEquipInputsFilled) {
     239           1 :         state.dataHybridUnitaryAC->ZoneEquipmentListChecked = true;
     240           2 :         for (Loop = 1; Loop <= state.dataHybridUnitaryAC->NumZoneHybridEvap; ++Loop) {
     241           1 :             if (CheckZoneEquipmentList(state, "ZoneHVAC:HybridUnitaryHVAC", state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(Loop).Name)) {
     242           1 :                 state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(Loop).ZoneNodeNum = state.dataZoneEquip->ZoneEquipConfig(ZoneNum).ZoneNode;
     243             :             } else {
     244           0 :                 ShowSevereError(state,
     245           0 :                                 "InitZoneHybridUnitaryAirConditioners: ZoneHVAC:HybridUnitaryHVAC = " +
     246           0 :                                     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(Loop).Name +
     247             :                                     ", is not on any ZoneHVAC:EquipmentList.  It will not be simulated.");
     248             :             }
     249             :         }
     250             :     }
     251             : 
     252       12797 :     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).InitializeModelParams();
     253             :     // Do the following initializations (every time step): This should be the info from
     254             :     // the previous components outlets or the node data in this section.
     255             : 
     256             :     // Transfer the node data to EvapCond data structure
     257       12797 :     InletNode = state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).InletNode;
     258       12797 :     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).InletMassFlowRate = state.dataLoopNodes->Node(InletNode).MassFlowRate;
     259             : 
     260             :     // Set the inlet volumetric flow rate from the mass flow rate
     261       12797 :     if (state.dataEnvrn->StdRhoAir > 1) {
     262       12797 :         state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).InletVolumetricFlowRate =
     263       12797 :             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).InletMassFlowRate / state.dataEnvrn->StdRhoAir;
     264             :     } else {
     265           0 :         state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).InletVolumetricFlowRate =
     266           0 :             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).InletMassFlowRate / 1.225;
     267             :     }
     268             : 
     269             :     // Set all of the inlet state variables from the inlet nodes
     270       12797 :     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).InletTemp = state.dataLoopNodes->Node(InletNode).Temp;
     271       12797 :     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).InletHumRat = state.dataLoopNodes->Node(InletNode).HumRat;
     272       12797 :     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).InletEnthalpy = state.dataLoopNodes->Node(InletNode).Enthalpy;
     273       12797 :     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).InletPressure = state.dataLoopNodes->Node(InletNode).Press;
     274       12797 :     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).InletRH =
     275       51188 :         PsyRhFnTdbWPb(state,
     276       12797 :                       state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).InletTemp,
     277       12797 :                       state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).InletHumRat,
     278       12797 :                       state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).InletPressure,
     279       12797 :                       "InitZoneHybridUnitaryAirConditioners");
     280             : 
     281             :     // Set default outlet state to inlet states, just to be safe
     282       12797 :     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).OutletTemp =
     283       12797 :         state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).InletTemp;
     284       12797 :     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).OutletHumRat =
     285       12797 :         state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).InletHumRat;
     286       12797 :     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).OutletEnthalpy =
     287       12797 :         state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).InletEnthalpy;
     288       12797 :     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).OutletPressure =
     289       12797 :         state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).InletPressure;
     290       12797 :     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).OutletRH =
     291       51188 :         PsyRhFnTdbWPb(state,
     292       12797 :                       state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).OutletTemp,
     293       12797 :                       state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).OutletHumRat,
     294       12797 :                       state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).OutletPressure,
     295       12797 :                       "InitZoneHybridUnitaryAirConditioners");
     296       12797 :     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).OutletMassFlowRate =
     297       12797 :         state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).InletMassFlowRate;
     298             : 
     299       12797 :     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).SecInletTemp =
     300       12797 :         state.dataLoopNodes->Node(state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).SecondaryInletNode).Temp;
     301       12797 :     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).SecInletHumRat =
     302       12797 :         state.dataLoopNodes->Node(state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).SecondaryInletNode).HumRat;
     303       12797 :     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).SecInletEnthalpy =
     304       12797 :         state.dataLoopNodes->Node(state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).SecondaryInletNode).Enthalpy;
     305       12797 :     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).SecInletPressure =
     306       12797 :         state.dataLoopNodes->Node(state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).SecondaryInletNode).Press;
     307       12797 :     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).SecInletRH =
     308       51188 :         PsyRhFnTdbWPb(state,
     309       12797 :                       state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).SecInletTemp,
     310       12797 :                       state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).SecInletHumRat,
     311       12797 :                       state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).SecInletPressure,
     312       12797 :                       "InitZoneHybridUnitaryAirConditioners");
     313       12797 :     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).SecInletMassFlowRate =
     314       12797 :         state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).SupplyVentilationAir;
     315             : 
     316       12797 :     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).SecOutletTemp =
     317       12797 :         state.dataLoopNodes->Node(state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).SecondaryInletNode).Temp;
     318       12797 :     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).SecOutletHumRat =
     319       12797 :         state.dataLoopNodes->Node(state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).SecondaryInletNode).HumRat;
     320       12797 :     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).SecOutletEnthalpy =
     321       12797 :         state.dataLoopNodes->Node(state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).SecondaryInletNode).Enthalpy;
     322       12797 :     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).SecOutletPressure =
     323       12797 :         state.dataLoopNodes->Node(state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).SecondaryInletNode).Press;
     324       12797 :     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).SecOutletRH =
     325       51188 :         PsyRhFnTdbWPb(state,
     326       12797 :                       state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).SecInletTemp,
     327       12797 :                       state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).SecInletHumRat,
     328       12797 :                       state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).SecInletPressure,
     329       12797 :                       "InitZoneHybridUnitaryAirConditioners");
     330       12797 : }
     331             : 
     332       12797 : void CalcZoneHybridUnitaryAirConditioners(EnergyPlusData &state,
     333             :                                           int const UnitNum,              // unit number
     334             :                                           int const ZoneNum,              // number of zone being served
     335             :                                           Real64 &SensibleOutputProvided, // sensible capacity delivered to zone cooling negitive
     336             :                                           Real64 &LatentOutputProvided    // Latent add/removal  (kg/s), dehumid = negative
     337             : )
     338             : {
     339             :     // SUBROUTINE INFORMATION:
     340             :     //       AUTHOR         Spencer Maxwell Dutton
     341             :     //       DATE WRITTEN   October 2017
     342             :     //       MODIFIED
     343             :     //       RE-ENGINEERED  na
     344             : 
     345             :     using namespace DataLoopNode;
     346             :     using namespace Psychrometrics;
     347             : 
     348             :     Real64 EnvDryBulbT, AirTempRoom, EnvRelHumm, RoomRelHum, DesignMinVR;
     349             : 
     350       12797 :     Real64 ZoneCoolingLoad = state.dataZoneEnergyDemand->ZoneSysEnergyDemand(ZoneNum)
     351       12797 :                                  .RemainingOutputReqToCoolSP; // Remaining load required to meet cooling setpoint (<0 is a cooling load)
     352       12797 :     Real64 ZoneHeatingLoad = state.dataZoneEnergyDemand->ZoneSysEnergyDemand(ZoneNum)
     353       12797 :                                  .RemainingOutputReqToHeatSP; // Remaining load required to meet heating setpoint (>0 is a heating load)
     354             :     Real64 OutputRequiredToHumidify =
     355       12797 :         state.dataZoneEnergyDemand->ZoneSysMoistureDemand(ZoneNum)
     356       12797 :             .OutputRequiredToHumidifyingSP; // Load required to meet humidifying setpoint (>0 = a humidify load) [kgWater/s]
     357             : 
     358             :     Real64 OutputRequiredToDehumidify =
     359       12797 :         state.dataZoneEnergyDemand->ZoneSysMoistureDemand(ZoneNum)
     360       12797 :             .OutputRequiredToDehumidifyingSP; // Load required to meet dehumidifying setpoint (<0 = a dehumidify load)  [kgWater/s]
     361             : 
     362       12797 :     SensibleOutputProvided = 0;
     363       12797 :     LatentOutputProvided = 0;
     364             :     // taking class members out of the object and then using them in the calcualtion is odd but its for clarity with unit testing.
     365       12797 :     EnvDryBulbT = state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).SecInletTemp; // degrees C
     366       12797 :     AirTempRoom = state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).InletTemp;    // degrees C
     367       12797 :     EnvRelHumm = state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).SecInletRH;    // RH
     368       12797 :     RoomRelHum = state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).InletRH;       // RH
     369             : 
     370       12797 :     bool UseOccSchFlag = true;
     371       12797 :     bool UseMinOASchFlag = true;
     372             : 
     373       25594 :     DesignMinVR = DataSizing::calcDesignSpecificationOutdoorAir(state,
     374       12797 :                                                                 state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).OARequirementsPtr,
     375             :                                                                 ZoneNum,
     376             :                                                                 UseOccSchFlag,
     377             :                                                                 UseMinOASchFlag); //[m3/s]
     378       12797 :     Real64 DesignMinVRMassFlow = 0;
     379       12797 :     if (state.dataEnvrn->StdRhoAir > 1) {
     380       12797 :         DesignMinVRMassFlow = DesignMinVR * state.dataEnvrn->StdRhoAir;
     381             :     } else {
     382           0 :         DesignMinVRMassFlow = DesignMinVR * 1.225;
     383             :     }
     384       12797 :     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).doStep(
     385             :         state, ZoneCoolingLoad, ZoneHeatingLoad, OutputRequiredToHumidify, OutputRequiredToDehumidify, DesignMinVRMassFlow);
     386       12797 :     SensibleOutputProvided = -state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).QSensZoneOut; // cooling negative
     387             : 
     388       12797 :     LatentOutputProvided = -state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).QLatentZoneOutMass; // dehumidification negative kg/s
     389       12797 : }
     390             : 
     391       12797 : void ReportZoneHybridUnitaryAirConditioners(EnergyPlusData &state, int const UnitNum)
     392             : {
     393             :     // SUBROUTINE INFORMATION:
     394             :     //       AUTHOR         Spencer Maxwell Dutton
     395             :     //       DATE WRITTEN   October 2017
     396             :     //       MODIFIED
     397             :     //       RE-ENGINEERED  na
     398             : 
     399             :     // Using/Aliasing
     400             :     using namespace DataLoopNode;
     401             :     using namespace Psychrometrics;
     402             : 
     403             :     // SUBROUTINE LOCAL VARIABLE DECLARATIONS:
     404             :     int ZoneNodeNum;
     405       12797 :     ZoneNodeNum = state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).ZoneNodeNum;
     406             : 
     407       12797 :     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).PrimaryMode =
     408       12797 :         state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).PrimaryMode;
     409             : 
     410       12797 :     state.dataLoopNodes->Node(state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).InletNode).Temp =
     411       12797 :         state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).InletTemp;
     412       12797 :     state.dataLoopNodes->Node(state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).InletNode).HumRat =
     413       12797 :         state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).InletHumRat;
     414       12797 :     state.dataLoopNodes->Node(state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).InletNode).MassFlowRate =
     415       12797 :         state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).InletMassFlowRate;
     416       12797 :     state.dataLoopNodes->Node(state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).InletNode).Enthalpy =
     417       12797 :         state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).InletEnthalpy;
     418             : 
     419       12797 :     state.dataLoopNodes->Node(state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).OutletNode).Temp =
     420       12797 :         state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).OutletTemp;
     421       12797 :     state.dataLoopNodes->Node(state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).OutletNode).HumRat =
     422       12797 :         state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).OutletHumRat;
     423       12797 :     state.dataLoopNodes->Node(state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).OutletNode).MassFlowRate =
     424       12797 :         state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).OutletMassFlowRate;
     425       12797 :     state.dataLoopNodes->Node(state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).OutletNode).Enthalpy =
     426       12797 :         state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).OutletEnthalpy;
     427             : 
     428       12797 :     state.dataLoopNodes->Node(state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).SecondaryInletNode).Temp =
     429       12797 :         state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).SecInletTemp;
     430       12797 :     state.dataLoopNodes->Node(state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).SecondaryInletNode).HumRat =
     431       12797 :         state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).SecInletHumRat;
     432       12797 :     state.dataLoopNodes->Node(state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).SecondaryInletNode).Enthalpy =
     433       12797 :         state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).SecInletEnthalpy;
     434       12797 :     state.dataLoopNodes->Node(state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).SecondaryInletNode).MassFlowRate =
     435       12797 :         state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).SecInletMassFlowRate;
     436             : 
     437       12797 :     state.dataLoopNodes->Node(state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).SecondaryOutletNode).Temp =
     438       12797 :         state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).SecOutletTemp;
     439       12797 :     state.dataLoopNodes->Node(state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).SecondaryOutletNode).HumRat =
     440       12797 :         state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).SecOutletHumRat;
     441       12797 :     state.dataLoopNodes->Node(state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).SecondaryOutletNode).Enthalpy =
     442       12797 :         state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).SecOutletEnthalpy;
     443       12797 :     state.dataLoopNodes->Node(state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).SecondaryOutletNode).MassFlowRate =
     444       12797 :         state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitNum).SecOutletMassFlowRate;
     445       12797 : }
     446             : 
     447           1 : void GetInputZoneHybridUnitaryAirConditioners(EnergyPlusData &state, bool &Errors)
     448             : {
     449             :     // SUBROUTINE INFORMATION:
     450             :     //       AUTHOR         Spencer Maxwell Dutton
     451             :     //       DATE WRITTEN   October 2017
     452             :     //       MODIFIED
     453             :     //       RE-ENGINEERED  na
     454             : 
     455             :     // Using/Aliasing
     456             :     using BranchNodeConnections::TestCompSet;
     457             :     using namespace ScheduleManager;
     458             :     using BranchNodeConnections::SetUpCompSets;
     459             :     using NodeInputManager::GetOnlySingleNode;
     460             :     using namespace DataLoopNode;
     461           2 :     std::string cCurrentModuleObject; // Object type for getting and error messages
     462           2 :     Array1D_string Alphas;            // Alpha items for object
     463           2 :     Array1D<Real64> Numbers;          // Numeric items for object
     464           2 :     Array1D_string cAlphaFields;      // Alpha field names
     465           2 :     Array1D_string cNumericFields;    // Numeric field names
     466           2 :     Array1D_bool lAlphaBlanks;        // Logical array, alpha field input BLANK = .TRUE.
     467           2 :     Array1D_bool lNumericBlanks;      // Logical array, numeric field input BLANK = .TRUE.
     468             :     int NumAlphas;                    // Number of Alphas for each GetObjectItem call
     469             :     int NumNumbers;                   // Number of Numbers for each GetObjectItem call
     470             :     int NumFields;                    // Total number of fields in object
     471             :     int IOStatus;                     // Used in GetObjectItem
     472           1 :     bool ErrorsFound(false);          // Set to true if errors in input, fatal at end of routine
     473             :     bool IsNotOK;                     // Flag to verify name
     474             :     bool IsBlank;                     // Flag for blank name
     475             :     int UnitLoop;
     476             : 
     477             :     // SUBROUTINE PARAMETER DEFINITIONS:
     478             :     static constexpr std::string_view RoutineName("GetInputZoneHybridUnitaryAirConditioners: ");
     479           1 :     cCurrentModuleObject = "ZoneHVAC:HybridUnitaryHVAC";
     480           1 :     state.dataHybridUnitaryAC->NumZoneHybridEvap = state.dataInputProcessing->inputProcessor->getNumObjectsFound(state, cCurrentModuleObject);
     481           1 :     state.dataInputProcessing->inputProcessor->getObjectDefMaxArgs(state, cCurrentModuleObject, NumFields, NumAlphas, NumNumbers);
     482           1 :     int MaxNumbers = max(0, NumNumbers); // Maximum number of numeric fields in all objects
     483           1 :     int MaxAlphas = max(0, NumAlphas);   // Maximum number of alpha fields in all objects
     484           1 :     Alphas.allocate(MaxAlphas);
     485           1 :     Numbers.dimension(MaxNumbers, 0.0);
     486           1 :     cAlphaFields.allocate(MaxAlphas);
     487           1 :     cNumericFields.allocate(MaxNumbers);
     488           1 :     lAlphaBlanks.dimension(MaxAlphas, true);
     489           1 :     lNumericBlanks.dimension(MaxNumbers, true);
     490           2 :     std::vector<std::string> test;
     491           2 :     std::vector<bool> blanks;
     492             : 
     493           1 :     if (state.dataHybridUnitaryAC->NumZoneHybridEvap > 0) {
     494           1 :         state.dataHybridUnitaryAC->CheckZoneHybridEvapName.dimension(state.dataHybridUnitaryAC->NumZoneHybridEvap, true);
     495           1 :         state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner.allocate(state.dataHybridUnitaryAC->NumZoneHybridEvap);
     496             : 
     497           2 :         for (UnitLoop = 1; UnitLoop <= state.dataHybridUnitaryAC->NumZoneHybridEvap; ++UnitLoop) {
     498           1 :             state.dataInputProcessing->inputProcessor->getObjectItem(state,
     499             :                                                                      cCurrentModuleObject,
     500             :                                                                      UnitLoop,
     501             :                                                                      Alphas,
     502             :                                                                      NumAlphas,
     503             :                                                                      Numbers,
     504             :                                                                      NumNumbers,
     505             :                                                                      IOStatus,
     506             :                                                                      lNumericBlanks,
     507             :                                                                      lAlphaBlanks,
     508             :                                                                      cAlphaFields,
     509             :                                                                      cNumericFields);
     510             : 
     511           1 :             IsNotOK = false;
     512           1 :             IsBlank = false;
     513           3 :             UtilityRoutines::VerifyName(state,
     514           1 :                                         Alphas(1),
     515           1 :                                         state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner,
     516             :                                         UnitLoop - 1,
     517             :                                         IsNotOK,
     518             :                                         IsBlank,
     519           2 :                                         cCurrentModuleObject + " Name");
     520             : 
     521             :             // A1, \field Name
     522           1 :             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name = Alphas(1);
     523             :             // A2, \field Availability Schedule Name
     524           1 :             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Schedule = Alphas(2);
     525           1 :             if (lAlphaBlanks(2)) {
     526           0 :                 state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).SchedPtr = DataGlobalConstants::ScheduleAlwaysOn;
     527             :             } else {
     528           1 :                 state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).SchedPtr = GetScheduleIndex(state, Alphas(2));
     529           1 :                 if (state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).SchedPtr == 0) {
     530           0 :                     ShowSevereError(state, "Invalid " + cAlphaFields(2) + '=' + Alphas(2));
     531           0 :                     ShowContinueError(state, "Entered in " + cCurrentModuleObject + '=' + Alphas(1));
     532           0 :                     ErrorsFound = true;
     533             :                 }
     534             :             }
     535             :             // A3, \field Availability Manager List Name
     536           1 :             if (!lAlphaBlanks(3)) {
     537           0 :                 state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).AvailManagerListName = Alphas(3);
     538             :             }
     539             : 
     540             :             // A4, \field Minimum Supply Air Temperature Schedule Named
     541           1 :             if (!lAlphaBlanks(4)) {
     542           1 :                 state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).TsaMin_schedule_pointer = GetScheduleIndex(state, Alphas(4));
     543           1 :                 if (state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).TsaMin_schedule_pointer == 0) {
     544           0 :                     ShowSevereError(state, "Invalid " + cAlphaFields(4) + '=' + Alphas(4));
     545           0 :                     ShowContinueError(state, "Entered in " + cCurrentModuleObject + '=' + Alphas(1));
     546           0 :                     ErrorsFound = true;
     547             :                 }
     548             :             }
     549             :             // A5, \field Maximum Supply Air Temperature Schedule Name
     550           1 :             if (!lAlphaBlanks(5)) {
     551           1 :                 state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).TsaMax_schedule_pointer = GetScheduleIndex(state, Alphas(5));
     552           1 :                 if (state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).TsaMax_schedule_pointer == 0) {
     553           0 :                     ShowSevereError(state, "Invalid " + cAlphaFields(5) + '=' + Alphas(5));
     554           0 :                     ShowContinueError(state, "Entered in " + cCurrentModuleObject + '=' + Alphas(1));
     555           0 :                     ErrorsFound = true;
     556             :                 }
     557             :             }
     558             :             // A6, \field Minimum Supply Air Humidity Ratio Schedule Name
     559           1 :             if (!lAlphaBlanks(6)) {
     560           1 :                 state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).RHsaMin_schedule_pointer = GetScheduleIndex(state, Alphas(6));
     561           1 :                 if (state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).RHsaMin_schedule_pointer == 0) {
     562           0 :                     ShowSevereError(state, "Invalid " + cAlphaFields(6) + '=' + Alphas(6));
     563           0 :                     ShowContinueError(state, "Entered in " + cCurrentModuleObject + '=' + Alphas(1));
     564           0 :                     ErrorsFound = true;
     565             :                 }
     566             :             }
     567             :             // A7, \field Maximum Supply Air Humidity Ratio Schedule Name
     568           1 :             if (!lAlphaBlanks(7)) {
     569           1 :                 state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).RHsaMax_schedule_pointer = GetScheduleIndex(state, Alphas(7));
     570           1 :                 if (state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).RHsaMax_schedule_pointer == 0) {
     571           0 :                     ShowSevereError(state, "Invalid " + cAlphaFields(7) + '=' + Alphas(7));
     572           0 :                     ShowContinueError(state, "Entered in " + cCurrentModuleObject + '=' + Alphas(1));
     573           0 :                     ErrorsFound = true;
     574             :                 }
     575             :             }
     576             : 
     577             :             // A8, \field Method to Choose Value of Controlled Inputs
     578             : 
     579             :             // A9, \field Return Air Node Name
     580             :             // A10, \field Outdoor Air Node Name
     581             :             // A11, \field Supply Air Node Name
     582             :             // A12, \field Relief Node Name
     583           1 :             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).InletNode =
     584           2 :                 GetOnlySingleNode(state,
     585           1 :                                   Alphas(9),
     586             :                                   ErrorsFound,
     587             :                                   DataLoopNode::ConnectionObjectType::ZoneHVACHybridUnitaryHVAC,
     588           1 :                                   Alphas(1),
     589             :                                   DataLoopNode::NodeFluidType::Air,
     590             :                                   DataLoopNode::ConnectionType::Inlet,
     591             :                                   NodeInputManager::CompFluidStream::Primary,
     592           1 :                                   ObjectIsNotParent);
     593           1 :             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).SecondaryInletNode =
     594           2 :                 GetOnlySingleNode(state,
     595           1 :                                   Alphas(10),
     596             :                                   ErrorsFound,
     597             :                                   DataLoopNode::ConnectionObjectType::ZoneHVACHybridUnitaryHVAC,
     598           1 :                                   Alphas(1),
     599             :                                   DataLoopNode::NodeFluidType::Air,
     600             :                                   DataLoopNode::ConnectionType::OutsideAir,
     601             :                                   NodeInputManager::CompFluidStream::Primary,
     602           1 :                                   ObjectIsNotParent);
     603           1 :             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).OutletNode =
     604           2 :                 GetOnlySingleNode(state,
     605           1 :                                   Alphas(11),
     606             :                                   ErrorsFound,
     607             :                                   DataLoopNode::ConnectionObjectType::ZoneHVACHybridUnitaryHVAC,
     608           1 :                                   Alphas(1),
     609             :                                   DataLoopNode::NodeFluidType::Air,
     610             :                                   DataLoopNode::ConnectionType::Outlet,
     611             :                                   NodeInputManager::CompFluidStream::Primary,
     612           1 :                                   ObjectIsNotParent);
     613           1 :             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).SecondaryOutletNode =
     614           2 :                 GetOnlySingleNode(state,
     615           1 :                                   Alphas(12),
     616             :                                   ErrorsFound,
     617             :                                   DataLoopNode::ConnectionObjectType::ZoneHVACHybridUnitaryHVAC,
     618           1 :                                   Alphas(1),
     619             :                                   DataLoopNode::NodeFluidType::Air,
     620             :                                   DataLoopNode::ConnectionType::ReliefAir,
     621             :                                   NodeInputManager::CompFluidStream::Primary,
     622           1 :                                   ObjectIsNotParent);
     623           1 :             TestCompSet(state, cCurrentModuleObject, Alphas(1), Alphas(9), Alphas(11), "Hybrid Evap Air Zone Nodes");
     624           1 :             TestCompSet(state, cCurrentModuleObject, Alphas(1), Alphas(10), Alphas(12), "Hybrid Evap Air Zone Secondary Nodes");
     625             : 
     626             :             // N1, \field System Maximum Supply AirFlow Rate
     627           1 :             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).SystemMaximumSupplyAirFlowRate = Numbers(1);
     628             : 
     629             :             // N2, \field External Static Pressure at System Maximum Supply Air Flow Rate
     630             : 
     631             :             // In each time step, the result for system power, fan power, gas use, water user, or supply airflow rate will be determined as :
     632             :             // TableValue * SysMaxSupply * ScalingFactor
     633             :             // A13, \field Fan Heat Included in Lookup Tables
     634           1 :             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).FanHeatGain = false;
     635           1 :             if (!lAlphaBlanks(13)) {
     636           1 :                 if (UtilityRoutines::SameString(Alphas(13), "Yes")) {
     637           1 :                     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).FanHeatGain = false;
     638           0 :                 } else if (UtilityRoutines::SameString(Alphas(13), "No")) {
     639           0 :                     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).FanHeatGain = true;
     640             :                 } else {
     641           0 :                     ShowSevereError(state, cCurrentModuleObject + " = " + state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
     642           0 :                     ShowContinueError(state, "Illegal " + cAlphaFields(13) + " = " + Alphas(13));
     643           0 :                     ErrorsFound = true;
     644             :                 }
     645             :             }
     646             :             // A14, \field Fan Heat Gain Location
     647           1 :             if (!lAlphaBlanks(14)) {
     648           0 :                 state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).FanHeatGainLocation = Alphas(14);
     649             :             }
     650             :             // N3, \field Fan Heat in Air Stream Fraction
     651           1 :             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).FanHeatInAirFrac = Numbers(3);
     652             :             // N4, \field Scaling Factor
     653           1 :             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).ScalingFactor = Numbers(4);
     654             :             // the two numbers above are used to generate a overall scaling factor
     655           1 :             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).ScaledSystemMaximumSupplyAirVolumeFlowRate = Numbers(1) * Numbers(4);
     656           1 :             if (state.dataEnvrn->StdRhoAir > 1) {
     657             :                 // SystemMaximumSupplyAirFlowRate*ScalingFactor*AirDensity;
     658           1 :                 state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).ScaledSystemMaximumSupplyAirMassFlowRate =
     659           2 :                     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).ScaledSystemMaximumSupplyAirVolumeFlowRate *
     660           1 :                     state.dataEnvrn->StdRhoAir;
     661             :             } else {
     662           0 :                 state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).ScaledSystemMaximumSupplyAirMassFlowRate =
     663           0 :                     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).ScaledSystemMaximumSupplyAirVolumeFlowRate * 1.225;
     664             :             }
     665             : 
     666             :             // N5, \field Minimum Time Between Mode Change
     667             :             // A15, \field First fuel type
     668           1 :             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).FirstFuelType = Alphas(15);
     669             :             // A16, \field Second fuel type
     670           1 :             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).SecondFuelType = Alphas(16);
     671             :             // A17, \field Third fuel type
     672           1 :             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).ThirdFuelType = Alphas(17);
     673             :             // A18, \field Objective Function Minimizes
     674             : 
     675             :             // A19, \ OA requirement pointer
     676           1 :             if (!lAlphaBlanks(19)) {
     677           1 :                 state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).OARequirementsPtr =
     678           1 :                     UtilityRoutines::FindItemInList(Alphas(19), state.dataSize->OARequirements);
     679           1 :                 if (state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).OARequirementsPtr == 0) {
     680           0 :                     ShowSevereError(state, std::string{RoutineName} + cCurrentModuleObject + " = " + Alphas(1) + " invalid data");
     681           0 :                     ShowContinueError(state, "Invalid-not found " + cAlphaFields(19) + "=\"" + Alphas(19) + "\".");
     682           0 :                     ErrorsFound = true;
     683             :                 } else {
     684           1 :                     state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).OutdoorAir = true;
     685             :                 }
     686             :             }
     687             : 
     688           1 :             int FirstModeAlphaNumber = 20;
     689           1 :             int NumberOfAlphasPerMode = 9;
     690           1 :             int Numberofoperatingmodes = 0;
     691           7 :             for (int i = FirstModeAlphaNumber; i <= NumAlphas; i = i + NumberOfAlphasPerMode) {
     692           6 :                 if (!lAlphaBlanks(i)) {
     693           6 :                     ++Numberofoperatingmodes;
     694             :                 } else {
     695           0 :                     break;
     696             :                 }
     697             :             }
     698             : 
     699           7 :             for (int modeIter = 0; modeIter <= Numberofoperatingmodes - 1; ++modeIter) {
     700           6 :                 ErrorsFound = state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).ParseMode(
     701             :                     state, Alphas, cAlphaFields, Numbers, cNumericFields, lAlphaBlanks, cCurrentModuleObject);
     702           6 :                 if (ErrorsFound) {
     703           0 :                     ShowFatalError(state, std::string{RoutineName} + "Errors found parsing modes");
     704           0 :                     ShowContinueError(state, "... Preceding condition causes termination.");
     705           0 :                     break;
     706             :                 }
     707             :             }
     708             :             // add the ZoneHVAC:HybridUnitaryHVAC Scaled Maximum Supply Air Volume Flow Rate to the Component Sizing Report Summary
     709           3 :             BaseSizer::reportSizerOutput(
     710             :                 state,
     711             :                 cCurrentModuleObject,
     712           1 :                 state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name,
     713             :                 "Scaled Maximum Supply Air Volume Flow Rate [m3/s]",
     714           2 :                 state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).ScaledSystemMaximumSupplyAirVolumeFlowRate);
     715             :         }
     716             :     }
     717             : 
     718             :     // setup output variables
     719           2 :     for (UnitLoop = 1; UnitLoop <= state.dataHybridUnitaryAC->NumZoneHybridEvap; ++UnitLoop) {
     720             : 
     721           4 :         SetUpCompSets(state,
     722             :                       cCurrentModuleObject,
     723           1 :                       state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name,
     724             :                       cCurrentModuleObject,
     725           1 :                       state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name,
     726           1 :                       state.dataLoopNodes->NodeID(state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).InletNode),
     727           1 :                       state.dataLoopNodes->NodeID(state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).OutletNode));
     728             : 
     729           4 :         SetUpCompSets(state,
     730             :                       cCurrentModuleObject,
     731           1 :                       state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name,
     732             :                       cCurrentModuleObject,
     733           1 :                       state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name,
     734           1 :                       state.dataLoopNodes->NodeID(state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).SecondaryInletNode),
     735           1 :                       state.dataLoopNodes->NodeID(state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).SecondaryOutletNode));
     736             : 
     737           4 :         SetupOutputVariable(state,
     738             :                             "Zone Hybrid Unitary HVAC System Total Cooling Rate",
     739             :                             OutputProcessor::Unit::W,
     740           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).SystemTotalCoolingRate,
     741             :                             OutputProcessor::SOVTimeStepType::System,
     742             :                             OutputProcessor::SOVStoreType::Average,
     743           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
     744           4 :         SetupOutputVariable(state,
     745             :                             "Zone Hybrid Unitary HVAC System Total Cooling Energy",
     746             :                             OutputProcessor::Unit::J,
     747           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).SystemTotalCoolingEnergy,
     748             :                             OutputProcessor::SOVTimeStepType::System,
     749             :                             OutputProcessor::SOVStoreType::Summed,
     750           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name,
     751             :                             _,
     752             :                             "ENERGYTRANSFER",
     753             :                             "COOLINGCOILS",
     754             :                             _,
     755           1 :                             "System");
     756           4 :         SetupOutputVariable(state,
     757             :                             "Zone Hybrid Unitary HVAC System Sensible Cooling Rate",
     758             :                             OutputProcessor::Unit::W,
     759           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).SystemSensibleCoolingRate,
     760             :                             OutputProcessor::SOVTimeStepType::System,
     761             :                             OutputProcessor::SOVStoreType::Average,
     762           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
     763           4 :         SetupOutputVariable(state,
     764             :                             "Zone Hybrid Unitary HVAC System Sensible Cooling Energy",
     765             :                             OutputProcessor::Unit::J,
     766           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).SystemSensibleCoolingEnergy,
     767             :                             OutputProcessor::SOVTimeStepType::System,
     768             :                             OutputProcessor::SOVStoreType::Summed,
     769           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
     770           4 :         SetupOutputVariable(state,
     771             :                             "Zone Hybrid Unitary HVAC System Latent Cooling Rate",
     772             :                             OutputProcessor::Unit::W,
     773           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).SystemLatentCoolingRate,
     774             :                             OutputProcessor::SOVTimeStepType::System,
     775             :                             OutputProcessor::SOVStoreType::Average,
     776           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
     777           4 :         SetupOutputVariable(state,
     778             :                             "Zone Hybrid Unitary HVAC System Latent Cooling Energy",
     779             :                             OutputProcessor::Unit::J,
     780           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).SystemLatentCoolingEnergy,
     781             :                             OutputProcessor::SOVTimeStepType::System,
     782             :                             OutputProcessor::SOVStoreType::Summed,
     783           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
     784             : 
     785           4 :         SetupOutputVariable(state,
     786             :                             "Zone Hybrid Unitary HVAC Zone Total Cooling Rate",
     787             :                             OutputProcessor::Unit::W,
     788           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).UnitTotalCoolingRate,
     789             :                             OutputProcessor::SOVTimeStepType::System,
     790             :                             OutputProcessor::SOVStoreType::Average,
     791           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
     792           4 :         SetupOutputVariable(state,
     793             :                             "Zone Hybrid Unitary HVAC Zone Total Cooling Energy",
     794             :                             OutputProcessor::Unit::J,
     795           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).UnitTotalCoolingEnergy,
     796             :                             OutputProcessor::SOVTimeStepType::System,
     797             :                             OutputProcessor::SOVStoreType::Summed,
     798           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
     799           4 :         SetupOutputVariable(state,
     800             :                             "Zone Hybrid Unitary HVAC Zone Sensible Cooling Rate",
     801             :                             OutputProcessor::Unit::W,
     802           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).UnitSensibleCoolingRate,
     803             :                             OutputProcessor::SOVTimeStepType::System,
     804             :                             OutputProcessor::SOVStoreType::Average,
     805           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
     806           4 :         SetupOutputVariable(state,
     807             :                             "Zone Hybrid Unitary HVAC Zone Sensible Cooling Energy",
     808             :                             OutputProcessor::Unit::J,
     809           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).UnitSensibleCoolingEnergy,
     810             :                             OutputProcessor::SOVTimeStepType::System,
     811             :                             OutputProcessor::SOVStoreType::Summed,
     812           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
     813           4 :         SetupOutputVariable(state,
     814             :                             "Zone Hybrid Unitary HVAC Zone Latent Cooling Rate",
     815             :                             OutputProcessor::Unit::W,
     816           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).UnitLatentCoolingRate,
     817             :                             OutputProcessor::SOVTimeStepType::System,
     818             :                             OutputProcessor::SOVStoreType::Average,
     819           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
     820           4 :         SetupOutputVariable(state,
     821             :                             "Zone Hybrid Unitary HVAC Zone Latent Cooling Energy",
     822             :                             OutputProcessor::Unit::J,
     823           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).UnitLatentCoolingEnergy,
     824             :                             OutputProcessor::SOVTimeStepType::System,
     825             :                             OutputProcessor::SOVStoreType::Summed,
     826           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
     827             : 
     828           4 :         SetupOutputVariable(state,
     829             :                             "Zone Hybrid Unitary HVAC System Total Heating Rate",
     830             :                             OutputProcessor::Unit::W,
     831           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).SystemTotalHeatingRate,
     832             :                             OutputProcessor::SOVTimeStepType::System,
     833             :                             OutputProcessor::SOVStoreType::Average,
     834           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
     835           4 :         SetupOutputVariable(state,
     836             :                             "Zone Hybrid Unitary HVAC System Total Heating Energy",
     837             :                             OutputProcessor::Unit::J,
     838           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).SystemTotalHeatingEnergy,
     839             :                             OutputProcessor::SOVTimeStepType::System,
     840             :                             OutputProcessor::SOVStoreType::Summed,
     841           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name,
     842             :                             _,
     843             :                             "ENERGYTRANSFER",
     844             :                             "HeatingCOILS",
     845             :                             _,
     846           1 :                             "System");
     847           4 :         SetupOutputVariable(state,
     848             :                             "Zone Hybrid Unitary HVAC System Sensible Heating Rate",
     849             :                             OutputProcessor::Unit::W,
     850           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).SystemSensibleHeatingRate,
     851             :                             OutputProcessor::SOVTimeStepType::System,
     852             :                             OutputProcessor::SOVStoreType::Average,
     853           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
     854           4 :         SetupOutputVariable(state,
     855             :                             "Zone Hybrid Unitary HVAC System Sensible Heating Energy",
     856             :                             OutputProcessor::Unit::J,
     857           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).SystemSensibleHeatingEnergy,
     858             :                             OutputProcessor::SOVTimeStepType::System,
     859             :                             OutputProcessor::SOVStoreType::Summed,
     860           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
     861           4 :         SetupOutputVariable(state,
     862             :                             "Zone Hybrid Unitary HVAC System Latent Heating Rate",
     863             :                             OutputProcessor::Unit::W,
     864           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).SystemLatentHeatingRate,
     865             :                             OutputProcessor::SOVTimeStepType::System,
     866             :                             OutputProcessor::SOVStoreType::Average,
     867           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
     868           4 :         SetupOutputVariable(state,
     869             :                             "Zone Hybrid Unitary HVAC System Latent Heating Energy",
     870             :                             OutputProcessor::Unit::J,
     871           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).SystemLatentHeatingEnergy,
     872             :                             OutputProcessor::SOVTimeStepType::System,
     873             :                             OutputProcessor::SOVStoreType::Summed,
     874           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
     875             : 
     876           4 :         SetupOutputVariable(state,
     877             :                             "Zone Hybrid Unitary HVAC Zone Total Heating Rate",
     878             :                             OutputProcessor::Unit::W,
     879           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).UnitTotalHeatingRate,
     880             :                             OutputProcessor::SOVTimeStepType::System,
     881             :                             OutputProcessor::SOVStoreType::Average,
     882           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
     883           4 :         SetupOutputVariable(state,
     884             :                             "Zone Hybrid Unitary HVAC Zone Total Heating Energy",
     885             :                             OutputProcessor::Unit::J,
     886           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).UnitTotalHeatingEnergy,
     887             :                             OutputProcessor::SOVTimeStepType::System,
     888             :                             OutputProcessor::SOVStoreType::Summed,
     889           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
     890           4 :         SetupOutputVariable(state,
     891             :                             "Zone Hybrid Unitary HVAC Zone Sensible Heating Rate",
     892             :                             OutputProcessor::Unit::W,
     893           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).UnitSensibleHeatingRate,
     894             :                             OutputProcessor::SOVTimeStepType::System,
     895             :                             OutputProcessor::SOVStoreType::Average,
     896           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
     897           4 :         SetupOutputVariable(state,
     898             :                             "Zone Hybrid Unitary HVAC Zone Sensible Heating Energy",
     899             :                             OutputProcessor::Unit::J,
     900           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).UnitSensibleHeatingEnergy,
     901             :                             OutputProcessor::SOVTimeStepType::System,
     902             :                             OutputProcessor::SOVStoreType::Summed,
     903           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
     904           4 :         SetupOutputVariable(state,
     905             :                             "Zone Hybrid Unitary HVAC Zone Latent Heating Rate",
     906             :                             OutputProcessor::Unit::W,
     907           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).UnitLatentHeatingRate,
     908             :                             OutputProcessor::SOVTimeStepType::System,
     909             :                             OutputProcessor::SOVStoreType::Average,
     910           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
     911           4 :         SetupOutputVariable(state,
     912             :                             "Zone Hybrid Unitary HVAC Zone Latent Heating Energy",
     913             :                             OutputProcessor::Unit::J,
     914           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).UnitLatentHeatingEnergy,
     915             :                             OutputProcessor::SOVTimeStepType::System,
     916             :                             OutputProcessor::SOVStoreType::Summed,
     917           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
     918             : 
     919           4 :         SetupOutputVariable(state,
     920             :                             "Zone Hybrid Unitary HVAC Predicted Sensible Load to Setpoint Heat Transfer Rate",
     921             :                             OutputProcessor::Unit::W,
     922           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).RequestedLoadToCoolingSetpoint,
     923             :                             OutputProcessor::SOVTimeStepType::System,
     924             :                             OutputProcessor::SOVStoreType::Average,
     925           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
     926           4 :         SetupOutputVariable(state,
     927             :                             "Zone Hybrid Unitary HVAC Error Code",
     928             :                             OutputProcessor::Unit::None,
     929           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).ErrorCode,
     930             :                             OutputProcessor::SOVTimeStepType::System,
     931             :                             OutputProcessor::SOVStoreType::Average,
     932           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
     933             : 
     934           4 :         SetupOutputVariable(state,
     935             :                             "Zone Hybrid Unitary HVAC Supply Air Temperature",
     936             :                             OutputProcessor::Unit::C,
     937           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).OutletTemp,
     938             :                             OutputProcessor::SOVTimeStepType::System,
     939             :                             OutputProcessor::SOVStoreType::Average,
     940           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
     941           4 :         SetupOutputVariable(state,
     942             :                             "Zone Hybrid Unitary HVAC Return Air Temperature",
     943             :                             OutputProcessor::Unit::C,
     944           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).InletTemp,
     945             :                             OutputProcessor::SOVTimeStepType::System,
     946             :                             OutputProcessor::SOVStoreType::Average,
     947           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
     948           4 :         SetupOutputVariable(state,
     949             :                             "Zone Hybrid Unitary HVAC Outdoor Air Temperature",
     950             :                             OutputProcessor::Unit::C,
     951           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).SecInletTemp,
     952             :                             OutputProcessor::SOVTimeStepType::System,
     953             :                             OutputProcessor::SOVStoreType::Average,
     954           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
     955           4 :         SetupOutputVariable(state,
     956             :                             "Zone Hybrid Unitary HVAC Relief Air Temperature",
     957             :                             OutputProcessor::Unit::C,
     958           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).SecOutletTemp,
     959             :                             OutputProcessor::SOVTimeStepType::System,
     960             :                             OutputProcessor::SOVStoreType::Average,
     961           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
     962             : 
     963           4 :         SetupOutputVariable(state,
     964             :                             "Zone Hybrid Unitary HVAC Supply Air Humidity Ratio",
     965             :                             OutputProcessor::Unit::kgWater_kgDryAir,
     966           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).OutletHumRat,
     967             :                             OutputProcessor::SOVTimeStepType::System,
     968             :                             OutputProcessor::SOVStoreType::Average,
     969           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
     970           4 :         SetupOutputVariable(state,
     971             :                             "Zone Hybrid Unitary HVAC Return Air Humidity Ratio",
     972             :                             OutputProcessor::Unit::kgWater_kgDryAir,
     973           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).InletHumRat,
     974             :                             OutputProcessor::SOVTimeStepType::System,
     975             :                             OutputProcessor::SOVStoreType::Average,
     976           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
     977           4 :         SetupOutputVariable(state,
     978             :                             "Zone Hybrid Unitary HVAC Outdoor Air Humidity Ratio",
     979             :                             OutputProcessor::Unit::kgWater_kgDryAir,
     980           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).SecInletHumRat,
     981             :                             OutputProcessor::SOVTimeStepType::System,
     982             :                             OutputProcessor::SOVStoreType::Average,
     983           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
     984           4 :         SetupOutputVariable(state,
     985             :                             "Zone Hybrid Unitary HVAC Relief Air Humidity Ratio",
     986             :                             OutputProcessor::Unit::kgWater_kgDryAir,
     987           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).SecOutletHumRat,
     988             :                             OutputProcessor::SOVTimeStepType::System,
     989             :                             OutputProcessor::SOVStoreType::Average,
     990           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
     991             : 
     992           4 :         SetupOutputVariable(state,
     993             :                             "Zone Hybrid Unitary HVAC Supply Air Relative Humidity",
     994             :                             OutputProcessor::Unit::Perc,
     995           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).OutletRH,
     996             :                             OutputProcessor::SOVTimeStepType::System,
     997             :                             OutputProcessor::SOVStoreType::Average,
     998           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
     999           4 :         SetupOutputVariable(state,
    1000             :                             "Zone Hybrid Unitary HVAC Return Air Relative Humidity",
    1001             :                             OutputProcessor::Unit::Perc,
    1002           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).InletRH,
    1003             :                             OutputProcessor::SOVTimeStepType::System,
    1004             :                             OutputProcessor::SOVStoreType::Average,
    1005           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
    1006           4 :         SetupOutputVariable(state,
    1007             :                             "Zone Hybrid Unitary HVAC Outdoor Air Relative Humidity",
    1008             :                             OutputProcessor::Unit::Perc,
    1009           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).SecInletRH,
    1010             :                             OutputProcessor::SOVTimeStepType::System,
    1011             :                             OutputProcessor::SOVStoreType::Average,
    1012           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
    1013           4 :         SetupOutputVariable(state,
    1014             :                             "Zone Hybrid Unitary HVAC Relief Air Relative Humidity",
    1015             :                             OutputProcessor::Unit::Perc,
    1016           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).SecOutletRH,
    1017             :                             OutputProcessor::SOVTimeStepType::System,
    1018             :                             OutputProcessor::SOVStoreType::Average,
    1019           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
    1020             : 
    1021           4 :         SetupOutputVariable(state,
    1022             :                             "Zone Hybrid Unitary HVAC Supply Air Mass Flow Rate",
    1023             :                             OutputProcessor::Unit::kg_s,
    1024           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).OutletMassFlowRate,
    1025             :                             OutputProcessor::SOVTimeStepType::System,
    1026             :                             OutputProcessor::SOVStoreType::Average,
    1027           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
    1028           4 :         SetupOutputVariable(state,
    1029             :                             "Zone Hybrid Unitary HVAC Supply Air Standard Density Volume Flow Rate",
    1030             :                             OutputProcessor::Unit::m3_s,
    1031           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).OutletVolumetricFlowRate,
    1032             :                             OutputProcessor::SOVTimeStepType::System,
    1033             :                             OutputProcessor::SOVStoreType::Average,
    1034           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
    1035           4 :         SetupOutputVariable(state,
    1036             :                             "Zone Hybrid Unitary HVAC Return Air Mass Flow Rate",
    1037             :                             OutputProcessor::Unit::kg_s,
    1038           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).InletMassFlowRate,
    1039             :                             OutputProcessor::SOVTimeStepType::System,
    1040             :                             OutputProcessor::SOVStoreType::Average,
    1041           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
    1042           4 :         SetupOutputVariable(state,
    1043             :                             "Zone Hybrid Unitary HVAC Return Air Standard Density Volume Flow Rate",
    1044             :                             OutputProcessor::Unit::m3_s,
    1045           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).InletVolumetricFlowRate,
    1046             :                             OutputProcessor::SOVTimeStepType::System,
    1047             :                             OutputProcessor::SOVStoreType::Average,
    1048           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
    1049           4 :         SetupOutputVariable(state,
    1050             :                             "Zone Hybrid Unitary HVAC Relief Air Mass Flow Rate",
    1051             :                             OutputProcessor::Unit::kg_s,
    1052           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).SecOutletMassFlowRate,
    1053             :                             OutputProcessor::SOVTimeStepType::System,
    1054             :                             OutputProcessor::SOVStoreType::Average,
    1055           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
    1056           4 :         SetupOutputVariable(state,
    1057             :                             "Zone Hybrid Unitary HVAC Relief Air Standard Density Volume Flow Rate",
    1058             :                             OutputProcessor::Unit::m3_s,
    1059           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).SecOutletVolumetricFlowRate,
    1060             :                             OutputProcessor::SOVTimeStepType::System,
    1061             :                             OutputProcessor::SOVStoreType::Average,
    1062           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
    1063           4 :         SetupOutputVariable(state,
    1064             :                             "Zone Hybrid Unitary HVAC Ventilation Air Standard Density Volume Flow Rate",
    1065             :                             OutputProcessor::Unit::m3_s,
    1066           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).SupplyVentilationVolume,
    1067             :                             OutputProcessor::SOVTimeStepType::System,
    1068             :                             OutputProcessor::SOVStoreType::Average,
    1069           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
    1070           4 :         SetupOutputVariable(state,
    1071             :                             "Zone Hybrid Unitary HVAC Electricity Rate",
    1072             :                             OutputProcessor::Unit::W,
    1073           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).FinalElectricalPower,
    1074             :                             OutputProcessor::SOVTimeStepType::System,
    1075             :                             OutputProcessor::SOVStoreType::Average,
    1076           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
    1077           4 :         SetupOutputVariable(state,
    1078             :                             "Zone Hybrid Unitary HVAC Electricity Energy",
    1079             :                             OutputProcessor::Unit::J,
    1080           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).FinalElectricalEnergy,
    1081             :                             OutputProcessor::SOVTimeStepType::System,
    1082             :                             OutputProcessor::SOVStoreType::Summed,
    1083           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name,
    1084             :                             _,
    1085             :                             "Electricity",
    1086             :                             "Cooling",
    1087             :                             "Hybrid HVAC Cooling",
    1088           1 :                             "System");
    1089             : 
    1090           4 :         SetupOutputVariable(state,
    1091             :                             "Zone Hybrid Unitary HVAC Requested Outdoor Air Ventilation Mass Flow Rate",
    1092             :                             OutputProcessor::Unit::kg_s,
    1093           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).MinOA_Msa,
    1094             :                             OutputProcessor::SOVTimeStepType::System,
    1095             :                             OutputProcessor::SOVStoreType::Average,
    1096           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
    1097           4 :         SetupOutputVariable(state,
    1098             :                             "Zone Hybrid Unitary HVAC Ventilation Air Mass Flow Rate",
    1099             :                             OutputProcessor::Unit::kg_s,
    1100           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).SupplyVentilationAir,
    1101             :                             OutputProcessor::SOVTimeStepType::System,
    1102             :                             OutputProcessor::SOVStoreType::Average,
    1103           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
    1104           4 :         SetupOutputVariable(state,
    1105             :                             "Zone Hybrid Unitary HVAC Availability Status",
    1106             :                             OutputProcessor::Unit::None,
    1107           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).UnitOn,
    1108             :                             OutputProcessor::SOVTimeStepType::System,
    1109             :                             OutputProcessor::SOVStoreType::Average,
    1110           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
    1111           4 :         SetupOutputVariable(state,
    1112             :                             "Zone Hybrid Unitary HVAC Outdoor Air Fraction",
    1113             :                             OutputProcessor::Unit::None,
    1114           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).averageOSAF,
    1115             :                             OutputProcessor::SOVTimeStepType::System,
    1116             :                             OutputProcessor::SOVStoreType::Average,
    1117           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
    1118             : 
    1119           4 :         SetupOutputVariable(state,
    1120             :                             "Zone Hybrid Unitary HVAC Dehumidification Load to Humidistat Setpoint Moisture Transfer Rate",
    1121             :                             OutputProcessor::Unit::kg_s,
    1122           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).RequestedDeHumdificationMass,
    1123             :                             OutputProcessor::SOVTimeStepType::System,
    1124             :                             OutputProcessor::SOVStoreType::Average,
    1125           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
    1126           4 :         SetupOutputVariable(state,
    1127             :                             "Zone Hybrid Unitary HVAC Dehumidification Load to Humidistat Setpoint Heat Transfer Rate",
    1128             :                             OutputProcessor::Unit::W,
    1129           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).RequestedDeHumdificationLoad,
    1130             :                             OutputProcessor::SOVTimeStepType::System,
    1131             :                             OutputProcessor::SOVStoreType::Average,
    1132           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
    1133           4 :         SetupOutputVariable(state,
    1134             :                             "Zone Hybrid Unitary HVAC DehumidificationLoad to Humidistat Setpoint Heat Tansfer Energy",
    1135             :                             OutputProcessor::Unit::J,
    1136           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).RequestedDeHumdificationEnergy,
    1137             :                             OutputProcessor::SOVTimeStepType::System,
    1138             :                             OutputProcessor::SOVStoreType::Average,
    1139           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
    1140             : 
    1141           4 :         SetupOutputVariable(state,
    1142             :                             "Zone Hybrid Unitary HVAC Humidification Load to Humidistat Setpoint Moisture Transfer Rate",
    1143             :                             OutputProcessor::Unit::kg_s,
    1144           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).RequestedHumdificationMass,
    1145             :                             OutputProcessor::SOVTimeStepType::System,
    1146             :                             OutputProcessor::SOVStoreType::Average,
    1147           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
    1148           4 :         SetupOutputVariable(state,
    1149             :                             "Zone Hybrid Unitary HVAC Humidification Load to Humidistat Setpoint Heat Transfer Rate",
    1150             :                             OutputProcessor::Unit::W,
    1151           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).RequestedHumdificationLoad,
    1152             :                             OutputProcessor::SOVTimeStepType::System,
    1153             :                             OutputProcessor::SOVStoreType::Average,
    1154           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
    1155           4 :         SetupOutputVariable(state,
    1156             :                             "Zone Hybrid Unitary HVAC Humidification Load to Humidistat Setpoint Heat Tansfer Energy",
    1157             :                             OutputProcessor::Unit::J,
    1158           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).RequestedHumdificationEnergy,
    1159             :                             OutputProcessor::SOVTimeStepType::System,
    1160             :                             OutputProcessor::SOVStoreType::Average,
    1161           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
    1162             : 
    1163           4 :         SetupOutputVariable(state,
    1164             :                             "Zone Hybrid Unitary HVAC Supply Fan Electricity Rate",
    1165             :                             OutputProcessor::Unit::W,
    1166           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).SupplyFanElectricPower,
    1167             :                             OutputProcessor::SOVTimeStepType::System,
    1168             :                             OutputProcessor::SOVStoreType::Average,
    1169           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
    1170           4 :         SetupOutputVariable(state,
    1171             :                             "Zone Hybrid Unitary HVAC Supply Fan Electricity Energy",
    1172             :                             OutputProcessor::Unit::J,
    1173           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).SupplyFanElectricEnergy,
    1174             :                             OutputProcessor::SOVTimeStepType::System,
    1175             :                             OutputProcessor::SOVStoreType::Summed,
    1176           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name,
    1177             :                             _,
    1178             :                             "Electricity",
    1179             :                             "Fans",
    1180             :                             "Hybrid HVAC Fans",
    1181           1 :                             "System");
    1182           1 :         if (state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).SecondFuelType != "NONE") {
    1183           4 :             SetupOutputVariable(state,
    1184             :                                 "Zone Hybrid Unitary HVAC Secondary Fuel Consumption Rate",
    1185             :                                 OutputProcessor::Unit::W,
    1186           1 :                                 state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).SecondaryFuelConsumptionRate,
    1187             :                                 OutputProcessor::SOVTimeStepType::System,
    1188             :                                 OutputProcessor::SOVStoreType::Average,
    1189           2 :                                 state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
    1190           5 :             SetupOutputVariable(state,
    1191             :                                 "Zone Hybrid Unitary HVAC Secondary Fuel Consumption",
    1192             :                                 OutputProcessor::Unit::J,
    1193           1 :                                 state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).SecondaryFuelConsumption,
    1194             :                                 OutputProcessor::SOVTimeStepType::System,
    1195             :                                 OutputProcessor::SOVStoreType::Summed,
    1196           1 :                                 state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name,
    1197             :                                 _,
    1198           1 :                                 state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).SecondFuelType,
    1199             :                                 "Cooling",
    1200             :                                 "Hybrid HVAC Cooling",
    1201           1 :                                 "System");
    1202             :         }
    1203           1 :         if (state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).ThirdFuelType != "NONE") {
    1204           4 :             SetupOutputVariable(state,
    1205             :                                 "Zone Hybrid Unitary HVAC Third Fuel Consumption Rate",
    1206             :                                 OutputProcessor::Unit::W,
    1207           1 :                                 state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).ThirdFuelConsumptionRate,
    1208             :                                 OutputProcessor::SOVTimeStepType::System,
    1209             :                                 OutputProcessor::SOVStoreType::Average,
    1210           2 :                                 state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
    1211           5 :             SetupOutputVariable(state,
    1212             :                                 "Zone Hybrid Unitary HVAC Third Fuel Consumption",
    1213             :                                 OutputProcessor::Unit::J,
    1214           1 :                                 state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).ThirdFuelConsumption,
    1215             :                                 OutputProcessor::SOVTimeStepType::System,
    1216             :                                 OutputProcessor::SOVStoreType::Summed,
    1217           1 :                                 state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name,
    1218             :                                 _,
    1219           1 :                                 state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).ThirdFuelType,
    1220             :                                 "Cooling",
    1221             :                                 "Hybrid HVAC Cooling",
    1222           1 :                                 "System");
    1223             :         }
    1224           4 :         SetupOutputVariable(state,
    1225             :                             "Zone Hybrid Unitary HVAC Water Consumption Rate",
    1226             :                             OutputProcessor::Unit::kgWater_s,
    1227           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).WaterConsumptionRate,
    1228             :                             OutputProcessor::SOVTimeStepType::System,
    1229             :                             OutputProcessor::SOVStoreType::Average,
    1230           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
    1231           4 :         SetupOutputVariable(state,
    1232             :                             "Zone Hybrid Unitary HVAC Water Consumption",
    1233             :                             OutputProcessor::Unit::m3,
    1234           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).WaterConsumption,
    1235             :                             OutputProcessor::SOVTimeStepType::System,
    1236             :                             OutputProcessor::SOVStoreType::Summed,
    1237           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name,
    1238             :                             _,
    1239             :                             "Water",
    1240             :                             "Cooling",
    1241             :                             "Hybrid HVAC Cooling",
    1242           1 :                             "System");
    1243           4 :         SetupOutputVariable(state,
    1244             :                             "Zone Hybrid Unitary HVAC External Static Pressure",
    1245             :                             OutputProcessor::Unit::Pa,
    1246           1 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).ExternalStaticPressure,
    1247             :                             OutputProcessor::SOVTimeStepType::System,
    1248             :                             OutputProcessor::SOVStoreType::Average,
    1249           2 :                             state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
    1250             : 
    1251           1 :         if (state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).FanHeatGain) {
    1252           0 :             SetupOutputVariable(state,
    1253             :                                 "Zone Hybrid Unitary HVAC Fan Rise in Air Temperature",
    1254             :                                 OutputProcessor::Unit::deltaC,
    1255           0 :                                 state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).FanHeatTemp,
    1256             :                                 OutputProcessor::SOVTimeStepType::System,
    1257             :                                 OutputProcessor::SOVStoreType::Average,
    1258           0 :                                 state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
    1259           0 :             SetupOutputVariable(state,
    1260             :                                 "Zone Hybrid Unitary HVAC Fan Heat Gain to Air",
    1261             :                                 OutputProcessor::Unit::W,
    1262           0 :                                 state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).PowerLossToAir,
    1263             :                                 OutputProcessor::SOVTimeStepType::System,
    1264             :                                 OutputProcessor::SOVStoreType::Average,
    1265           0 :                                 state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
    1266             :         }
    1267             : 
    1268           1 :         int index = 0;
    1269             : 
    1270           6 :         for (auto &thisSetting : state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).CurrentOperatingSettings) {
    1271          20 :             SetupOutputVariable(state,
    1272          10 :                                 format("Zone Hybrid Unitary HVAC Runtime Fraction in Setting {}", index),
    1273             :                                 OutputProcessor::Unit::None,
    1274             :                                 thisSetting.Runtime_Fraction,
    1275             :                                 OutputProcessor::SOVTimeStepType::Zone,
    1276             :                                 OutputProcessor::SOVStoreType::Average,
    1277           5 :                                 state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
    1278          20 :             SetupOutputVariable(state,
    1279          10 :                                 format("Zone Hybrid Unitary HVAC Mode in Setting {}", index),
    1280             :                                 OutputProcessor::Unit::None,
    1281             :                                 thisSetting.Mode,
    1282             :                                 OutputProcessor::SOVTimeStepType::Zone,
    1283             :                                 OutputProcessor::SOVStoreType::Average,
    1284           5 :                                 state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
    1285          20 :             SetupOutputVariable(state,
    1286          10 :                                 format("Zone Hybrid Unitary HVAC Outdoor Air Fraction in Setting {}", index),
    1287             :                                 OutputProcessor::Unit::kg_s,
    1288             :                                 thisSetting.Outdoor_Air_Fraction,
    1289             :                                 OutputProcessor::SOVTimeStepType::Zone,
    1290             :                                 OutputProcessor::SOVStoreType::Average,
    1291           5 :                                 state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
    1292          20 :             SetupOutputVariable(state,
    1293          10 :                                 format("Zone Hybrid Unitary HVAC Supply Air Mass Flow Rate in Setting {}", index),
    1294             :                                 OutputProcessor::Unit::kg_s,
    1295             :                                 thisSetting.Unscaled_Supply_Air_Mass_Flow_Rate,
    1296             :                                 OutputProcessor::SOVTimeStepType::Zone,
    1297             :                                 OutputProcessor::SOVStoreType::Average,
    1298           5 :                                 state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
    1299          20 :             SetupOutputVariable(state,
    1300          10 :                                 format("Zone Hybrid Unitary HVAC Supply Air Mass Flow Rate Ratio in Setting {}", index),
    1301             :                                 OutputProcessor::Unit::None,
    1302             :                                 thisSetting.Supply_Air_Mass_Flow_Rate_Ratio,
    1303             :                                 OutputProcessor::SOVTimeStepType::Zone,
    1304             :                                 OutputProcessor::SOVStoreType::Average,
    1305           5 :                                 state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(UnitLoop).Name);
    1306           5 :             index++;
    1307             :         }
    1308             :     }
    1309           1 :     Errors = ErrorsFound;
    1310           1 :     if (ErrorsFound) {
    1311           0 :         ShowFatalError(state, std::string{RoutineName} + "Errors found in getting input.");
    1312           0 :         ShowContinueError(state, "... Preceding condition causes termination.");
    1313             :     }
    1314           1 : }
    1315         735 : int GetHybridUnitaryACOutAirNode(EnergyPlusData &state, int const CompNum)
    1316             : {
    1317         735 :     bool errorsfound = false;
    1318         735 :     if (state.dataHybridUnitaryAC->GetInputZoneHybridEvap) {
    1319           0 :         GetInputZoneHybridUnitaryAirConditioners(state, errorsfound);
    1320           0 :         state.dataHybridUnitaryAC->GetInputZoneHybridEvap = false;
    1321             :     }
    1322             : 
    1323             :     int GetHybridUnitaryACOutAirNode;
    1324         735 :     GetHybridUnitaryACOutAirNode = 0;
    1325         735 :     if (CompNum > 0 && CompNum <= state.dataHybridUnitaryAC->NumZoneHybridEvap) {
    1326         735 :         GetHybridUnitaryACOutAirNode = state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(CompNum).SecondaryInletNode;
    1327             :     }
    1328             : 
    1329         735 :     return GetHybridUnitaryACOutAirNode;
    1330             : }
    1331             : 
    1332         735 : int GetHybridUnitaryACZoneInletNode(EnergyPlusData &state, int const CompNum)
    1333             : {
    1334         735 :     bool errorsfound = false;
    1335         735 :     if (state.dataHybridUnitaryAC->GetInputZoneHybridEvap) {
    1336           0 :         GetInputZoneHybridUnitaryAirConditioners(state, errorsfound);
    1337           0 :         state.dataHybridUnitaryAC->GetInputZoneHybridEvap = false;
    1338             :     }
    1339             : 
    1340             :     int GetHybridUnitaryACZoneInletNode;
    1341         735 :     GetHybridUnitaryACZoneInletNode = 0;
    1342         735 :     if (CompNum > 0 && CompNum <= state.dataHybridUnitaryAC->NumZoneHybridEvap) {
    1343         735 :         GetHybridUnitaryACZoneInletNode = state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(CompNum).OutletNode;
    1344             :     }
    1345             : 
    1346         735 :     return GetHybridUnitaryACZoneInletNode;
    1347             : }
    1348             : 
    1349         735 : int GetHybridUnitaryACReturnAirNode(EnergyPlusData &state, int const CompNum)
    1350             : {
    1351         735 :     bool errorsfound = false;
    1352         735 :     if (state.dataHybridUnitaryAC->GetInputZoneHybridEvap) {
    1353           0 :         GetInputZoneHybridUnitaryAirConditioners(state, errorsfound);
    1354           0 :         state.dataHybridUnitaryAC->GetInputZoneHybridEvap = false;
    1355             :     }
    1356             : 
    1357             :     int GetHybridUnitaryACReturnAirNode;
    1358         735 :     GetHybridUnitaryACReturnAirNode = 0;
    1359         735 :     if (CompNum > 0 && CompNum <= state.dataHybridUnitaryAC->NumZoneHybridEvap) {
    1360         735 :         GetHybridUnitaryACReturnAirNode = state.dataHybridUnitaryAC->ZoneHybridUnitaryAirConditioner(CompNum).InletNode;
    1361             :     }
    1362             : 
    1363         735 :     return GetHybridUnitaryACReturnAirNode;
    1364             : }
    1365             : 
    1366             : //*****************************************************************************************
    1367             : 
    1368        2313 : } // namespace EnergyPlus::HybridUnitaryAirConditioners

Generated by: LCOV version 1.13