@@ -138,8 +138,6 @@ namespace AirflowNetwork {
138
138
using DataSurfaces::OtherSideCoefNoCalcExt;
139
139
using DataSurfaces::SurfaceClass;
140
140
using Fans::GetFanIndex;
141
- using HVAC::ContFanCycCoil;
142
- using HVAC::CycFanCycCoil;
143
141
using Psychrometrics::PsyCpAirFnW;
144
142
using Psychrometrics::PsyHFnTdbW;
145
143
using Psychrometrics::PsyRhoAirFnPbTdbW;
@@ -207,7 +205,7 @@ namespace AirflowNetwork {
207
205
}
208
206
}
209
207
Real64 FanMassFlowRate = 0.0;
210
- int FanOperModeCyc = 0 ;
208
+ HVAC::FanOp FanOperModeCyc = HVAC::FanOp::Invalid ;
211
209
AFNSupplyFanType = HVAC::FanType::Invalid;
212
210
213
211
for (i = 1; i <= DisSysNumOfCVFs; i++) {
@@ -218,9 +216,10 @@ namespace AirflowNetwork {
218
216
AFNSupplyFanType = DisSysCompCVFData(i).fanType;
219
217
break;
220
218
}
221
- if (FanMassFlowRate > HVAC::VerySmallMassFlow && m_state.dataAirLoop->AirLoopAFNInfo(i).LoopFanOperationMode == CycFanCycCoil &&
219
+ if (FanMassFlowRate > HVAC::VerySmallMassFlow &&
220
+ m_state.dataAirLoop->AirLoopAFNInfo(i).LoopFanOperationMode == HVAC::FanOp::Cycling &&
222
221
m_state.dataAirLoop->AirLoopAFNInfo(i).LoopSystemOnMassFlowrate > 0.0) {
223
- FanOperModeCyc = CycFanCycCoil ;
222
+ FanOperModeCyc = HVAC::FanOp::Cycling ;
224
223
AFNSupplyFanType = DisSysCompCVFData(i).fanType;
225
224
if (AFNSupplyFanType == HVAC::FanType::OnOff) {
226
225
break;
@@ -229,7 +228,7 @@ namespace AirflowNetwork {
229
228
}
230
229
// Revised to meet heat exchanger requirement
231
230
if ((FanMassFlowRate > HVAC::VerySmallMassFlow) && (!FirstHVACIteration)) {
232
- if (AFNSupplyFanType == HVAC::FanType::OnOff && FanOperModeCyc == CycFanCycCoil ) {
231
+ if (AFNSupplyFanType == HVAC::FanType::OnOff && FanOperModeCyc == HVAC::FanOp::Cycling ) {
233
232
AirflowNetworkFanActivated = true;
234
233
} else if (AFNSupplyFanType == HVAC::FanType::VAV) {
235
234
if (present(Iter) && Iter > 1) AirflowNetworkFanActivated = true;
@@ -240,11 +239,11 @@ namespace AirflowNetwork {
240
239
}
241
240
}
242
241
}
243
- if (allocated(m_state.dataZoneEquip->ZoneEquipConfig) && m_state.dataHVACGlobal ->NumHybridVentSysAvailMgrs > 0 &&
242
+ if (allocated(m_state.dataZoneEquip->ZoneEquipConfig) && m_state.dataAvail ->NumHybridVentSysAvailMgrs > 0 &&
244
243
allocated(m_state.dataAirSystemsData->PrimaryAirSystems)) {
245
244
hybrid_ventilation_control();
246
245
}
247
- if (VentilationCtrl == 1 && m_state.dataHVACGlobal ->NumHybridVentSysAvailMgrs > 0) {
246
+ if (ventCtrlStatus == Avail::VentCtrlStatus::Open && m_state.dataAvail ->NumHybridVentSysAvailMgrs > 0) {
248
247
AirflowNetworkFanActivated = false;
249
248
}
250
249
@@ -6535,7 +6534,7 @@ namespace AirflowNetwork {
6535
6534
AirLoopNum = AirflowNetworkNodeData(PressureControllerData(1).AFNNodeNum).AirLoopNum;
6536
6535
MinExhaustMassFlowrate = 2.0 * VerySmallMassFlow;
6537
6536
MaxExhaustMassFlowrate = Node(PressureControllerData(1).OANodeNum).MassFlowRate;
6538
- if (m_state.dataAirLoop->AirLoopAFNInfo(AirLoopNum).LoopFanOperationMode == CycFanCycComp &&
6537
+ if (m_state.dataAirLoop->AirLoopAFNInfo(AirLoopNum).LoopFanOperationMode == HVAC::FanOp::Cycling &&
6539
6538
m_state.dataAirLoop->AirLoopAFNInfo(AirLoopNum).LoopOnOffFanPartLoadRatio > 0.0) {
6540
6539
MaxExhaustMassFlowrate = MaxExhaustMassFlowrate / m_state.dataAirLoop->AirLoopAFNInfo(AirLoopNum).LoopOnOffFanPartLoadRatio;
6541
6540
}
@@ -6622,7 +6621,7 @@ namespace AirflowNetwork {
6622
6621
AirLoopNum = AirflowNetworkNodeData(PressureControllerData(1).AFNNodeNum).AirLoopNum;
6623
6622
MinReliefMassFlowrate = 2.0 * VerySmallMassFlow;
6624
6623
MaxReliefMassFlowrate = Node(PressureControllerData(1).OANodeNum).MassFlowRate;
6625
- if (m_state.dataAirLoop->AirLoopAFNInfo(AirLoopNum).LoopFanOperationMode == CycFanCycComp &&
6624
+ if (m_state.dataAirLoop->AirLoopAFNInfo(AirLoopNum).LoopFanOperationMode == HVAC::FanOp::Cycling &&
6626
6625
m_state.dataAirLoop->AirLoopAFNInfo(AirLoopNum).LoopOnOffFanPartLoadRatio > 0.0) {
6627
6626
MaxReliefMassFlowrate = MaxReliefMassFlowrate / m_state.dataAirLoop->AirLoopAFNInfo(AirLoopNum).LoopOnOffFanPartLoadRatio;
6628
6627
}
@@ -9527,7 +9526,7 @@ namespace AirflowNetwork {
9527
9526
// Calculate the part load ratio, can't be greater than 1 for a simple ONOFF fan
9528
9527
if (DisSysCompCVFData(FanNum).fanType == HVAC::FanType::OnOff &&
9529
9528
Node(DisSysCompCVFData(FanNum).InletNode).MassFlowRate > VerySmallMassFlow &&
9530
- m_state.dataAirLoop->AirLoopAFNInfo(AirLoopNum).LoopFanOperationMode == CycFanCycCoil ) {
9529
+ m_state.dataAirLoop->AirLoopAFNInfo(AirLoopNum).LoopFanOperationMode == HVAC::FanOp::Cycling ) {
9531
9530
// Hard code here
9532
9531
PartLoadRatio = m_state.dataAirLoop->AirLoopAFNInfo(AirLoopNum).LoopOnOffFanPartLoadRatio;
9533
9532
LoopPartLoadRatio(AirLoopNum) = m_state.dataAirLoop->AirLoopAFNInfo(AirLoopNum).LoopOnOffFanPartLoadRatio;
@@ -9568,7 +9567,7 @@ namespace AirflowNetwork {
9568
9567
if (DisSysCompCVFData(FanNum).AirLoopNum == AirLoopNum) break;
9569
9568
}
9570
9569
if (DisSysCompCVFData(FanNum).fanType == HVAC::FanType::OnOff &&
9571
- m_state.dataAirLoop->AirLoopAFNInfo(AirLoopNum).LoopFanOperationMode == ContFanCycCoil ) {
9570
+ m_state.dataAirLoop->AirLoopAFNInfo(AirLoopNum).LoopFanOperationMode == HVAC::FanOp::Continuous ) {
9572
9571
OnOffRatio = std::abs((m_state.dataAirLoop->AirLoopAFNInfo(AirLoopNum).LoopSystemOnMassFlowrate -
9573
9572
m_state.dataAirLoop->AirLoopAFNInfo(AirLoopNum).LoopSystemOffMassFlowrate) /
9574
9573
m_state.dataAirLoop->AirLoopAFNInfo(AirLoopNum).LoopSystemOnMassFlowrate);
@@ -9810,7 +9809,7 @@ namespace AirflowNetwork {
9810
9809
exchangeData(i).SumMMHrGC *= OnOffFanRunTimeFraction;
9811
9810
}
9812
9811
}
9813
- if (m_state.dataAirLoop->AirLoopAFNInfo(AirLoopNum).LoopFanOperationMode == CycFanCycCoil ) {
9812
+ if (m_state.dataAirLoop->AirLoopAFNInfo(AirLoopNum).LoopFanOperationMode == HVAC::FanOp::Cycling ) {
9814
9813
for (int i = 1; i <= m_state.dataGlobal->NumOfZones; ++i) {
9815
9814
exchangeData(i).SumMCp += multiExchangeData(i).SumMCp * (1.0 - OnOffFanRunTimeFraction);
9816
9815
exchangeData(i).SumMCpT += multiExchangeData(i).SumMCpT * (1.0 - OnOffFanRunTimeFraction);
@@ -11243,16 +11242,7 @@ namespace AirflowNetwork {
11243
11242
// PURPOSE OF THIS SUBROUTINE:
11244
11243
// This subroutine performs hybrid ventilation control
11245
11244
11246
- auto &HybridVentSysAvailActualZoneNum = m_state.dataHVACGlobal->HybridVentSysAvailActualZoneNum;
11247
- auto &HybridVentSysAvailAirLoopNum = m_state.dataHVACGlobal->HybridVentSysAvailAirLoopNum;
11248
- auto &HybridVentSysAvailANCtrlStatus = m_state.dataHVACGlobal->HybridVentSysAvailANCtrlStatus;
11249
- auto &HybridVentSysAvailMaster = m_state.dataHVACGlobal->HybridVentSysAvailMaster;
11250
- auto &HybridVentSysAvailVentCtrl = m_state.dataHVACGlobal->HybridVentSysAvailVentCtrl;
11251
- auto &HybridVentSysAvailWindModifier = m_state.dataHVACGlobal->HybridVentSysAvailWindModifier;
11252
- auto &NumHybridVentSysAvailMgrs = m_state.dataHVACGlobal->NumHybridVentSysAvailMgrs;
11253
-
11254
11245
// SUBROUTINE PARAMETER DEFINITIONS:
11255
- int constexpr HybridVentCtrl_Close(2); // Open windows or doors
11256
11246
int constexpr IndividualCtrlType(0); // Individual window or door control
11257
11247
int constexpr GlobalCtrlType(1); // Global window or door control
11258
11248
static constexpr std::string_view RoutineName("AirflowNetwork::Solver::hybrid_ventilation_control: "); // include trailing blank space
@@ -11272,11 +11262,12 @@ namespace AirflowNetwork {
11272
11262
}
11273
11263
ControlType = IndividualCtrlType;
11274
11264
11275
- for (SysAvailNum = 1; SysAvailNum <= NumHybridVentSysAvailMgrs; ++SysAvailNum) {
11276
- int AirLoopNum = HybridVentSysAvailAirLoopNum(SysAvailNum);
11277
- VentilationCtrl = HybridVentSysAvailVentCtrl(SysAvailNum);
11278
- if (HybridVentSysAvailANCtrlStatus(SysAvailNum) > 0) {
11279
- ControlType = static_cast<int>(GetCurrentScheduleValue(m_state, HybridVentSysAvailANCtrlStatus(SysAvailNum)));
11265
+ for (SysAvailNum = 1; SysAvailNum <= m_state.dataAvail->NumHybridVentSysAvailMgrs; ++SysAvailNum) {
11266
+ auto &hybridVentMgr = m_state.dataAvail->HybridVentData(SysAvailNum);
11267
+ int AirLoopNum = hybridVentMgr.AirLoopNum;
11268
+ ventCtrlStatus = hybridVentMgr.ctrlStatus;
11269
+ if (hybridVentMgr.ANCtrlStatus > 0) {
11270
+ ControlType = static_cast<int>(GetCurrentScheduleValue(m_state, hybridVentMgr.ANCtrlStatus));
11280
11271
}
11281
11272
bool Found = false; // Logical to indicate whether a master surface is found or not
11282
11273
int ActualZoneNum = 0;
@@ -11290,8 +11281,8 @@ namespace AirflowNetwork {
11290
11281
break;
11291
11282
}
11292
11283
} else {
11293
- if (HybridVentSysAvailActualZoneNum(SysAvailNum) == ControlledZoneNum) {
11294
- ActualZoneNum = HybridVentSysAvailActualZoneNum(SysAvailNum) ;
11284
+ if (hybridVentMgr.ControlledZoneNum == ControlledZoneNum) {
11285
+ ActualZoneNum = hybridVentMgr.ControlledZoneNum ;
11295
11286
}
11296
11287
}
11297
11288
}
@@ -11301,15 +11292,15 @@ namespace AirflowNetwork {
11301
11292
auto const &surf = m_state.dataSurface->Surface(SurfNum);
11302
11293
11303
11294
if (surf.Zone == ActualZoneNum) {
11304
- if (VentilationCtrl == HybridVentCtrl_Close ) {
11295
+ if (ventCtrlStatus == Avail::VentCtrlStatus::Close ) {
11305
11296
MultizoneSurfaceData(ANSurfaceNum).HybridVentClose = true;
11306
11297
} else {
11307
- if (HybridVentSysAvailWindModifier(SysAvailNum) >= 0) {
11308
- MultizoneSurfaceData(ANSurfaceNum).WindModifier = HybridVentSysAvailWindModifier(SysAvailNum) ;
11298
+ if (hybridVentMgr.WindModifier >= 0) {
11299
+ MultizoneSurfaceData(ANSurfaceNum).WindModifier = hybridVentMgr.WindModifier ;
11309
11300
}
11310
11301
if (ControlType == GlobalCtrlType) {
11311
11302
MultizoneSurfaceData(ANSurfaceNum).HybridCtrlGlobal = true;
11312
- if (HybridVentSysAvailMaster(SysAvailNum) == ActualZoneNum) {
11303
+ if (hybridVentMgr.Master == ActualZoneNum) {
11313
11304
if ((surf.OriginalClass == SurfaceClass::Window || surf.OriginalClass == SurfaceClass::Door ||
11314
11305
surf.OriginalClass == SurfaceClass::GlassDoor) &&
11315
11306
surf.ExtBoundCond == ExternalEnvironment) {
@@ -11323,13 +11314,13 @@ namespace AirflowNetwork {
11323
11314
}
11324
11315
}
11325
11316
}
11326
- if (ControlType == GlobalCtrlType && !Found && !m_state.dataGlobal->WarmupFlag && VentilationCtrl != HybridVentCtrl_Close ) {
11317
+ if (ControlType == GlobalCtrlType && !Found && !m_state.dataGlobal->WarmupFlag && ventCtrlStatus != Avail::VentCtrlStatus::Close ) {
11327
11318
++HybridGlobalErrCount;
11328
11319
if (HybridGlobalErrCount < 2) {
11329
11320
ShowWarningError(m_state,
11330
11321
format("{}The hybrid ventilation control schedule value indicates global control in the controlled zone = {}",
11331
11322
RoutineName,
11332
- m_state.dataHeatBal->Zone(HybridVentSysAvailMaster(SysAvailNum) ).Name));
11323
+ m_state.dataHeatBal->Zone(hybridVentMgr.Master ).Name));
11333
11324
ShowContinueError(m_state,
11334
11325
"The exterior surface containing an opening component in the controlled zone is not found. No global control "
11335
11326
"will not be modeled.");
0 commit comments