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
|