diff --git a/src/EnergyPlus/AirflowNetwork/src/Solver.cpp b/src/EnergyPlus/AirflowNetwork/src/Solver.cpp index 5201bb94b7f..8fa0bd86646 100644 --- a/src/EnergyPlus/AirflowNetwork/src/Solver.cpp +++ b/src/EnergyPlus/AirflowNetwork/src/Solver.cpp @@ -4802,7 +4802,7 @@ namespace AirflowNetwork { n = AirflowNetworkNodeData(i).EPlusZoneNum; AirflowNetworkNodeData(i).NumOfLinks = 0; if (n > 0 && AirflowNetworkNodeData(i).RAFNNodeNum > 0) { - m_state.dataRoomAirMod->AFNZoneInfo(n).Node(AirflowNetworkNodeData(i).RAFNNodeNum).AirflowNetworkNodeID = i; + m_state.dataRoomAirMod->AFNZoneInfo(n).Node(AirflowNetworkNodeData(i).RAFNNodeNum).AFNNodeID = i; for (j = 1; j <= AirflowNetworkNumOfSurfaces; ++j) { if (AirflowNetworkLinkageData(j).NodeNums[0] == i) { AirflowNetworkNodeData(i).NumOfLinks = AirflowNetworkNodeData(i).NumOfLinks + 1; @@ -4814,20 +4814,20 @@ namespace AirflowNetwork { } if (AirflowNetworkNodeData(i).RAFNNodeNum > 0) { for (j = 1; j <= m_state.dataRoomAirMod->AFNZoneInfo(n).NumOfAirNodes; ++j) { - if (m_state.dataRoomAirMod->AFNZoneInfo(n).Node(j).AirflowNetworkNodeID == i) { + if (m_state.dataRoomAirMod->AFNZoneInfo(n).Node(j).AFNNodeID == i) { m_state.dataRoomAirMod->AFNZoneInfo(n).Node(j).NumOfAirflowLinks = AirflowNetworkNodeData(i).NumOfLinks; m_state.dataRoomAirMod->AFNZoneInfo(n).Node(j).Link.allocate(AirflowNetworkNodeData(i).NumOfLinks); k = 1; for (int m = 1; m <= AirflowNetworkNumOfSurfaces; ++m) { if (AirflowNetworkLinkageData(m).NodeNums[0] == i) { - m_state.dataRoomAirMod->AFNZoneInfo(n).Node(j).Link(k).AirflowNetworkLinkSimuID = m; - m_state.dataRoomAirMod->AFNZoneInfo(n).Node(j).Link(k).AirflowNetworkLinkageDataID = m; + m_state.dataRoomAirMod->AFNZoneInfo(n).Node(j).Link(k).AFNSimuID = m; + m_state.dataRoomAirMod->AFNZoneInfo(n).Node(j).Link(k).AFNDataID = m; k = k + 1; if (k > AirflowNetworkNodeData(i).NumOfLinks) break; } if (AirflowNetworkLinkageData(m).NodeNums[1] == i) { - m_state.dataRoomAirMod->AFNZoneInfo(n).Node(j).Link(k).AirflowNetworkLinkSimuID = m; - m_state.dataRoomAirMod->AFNZoneInfo(n).Node(j).Link(k).AirflowNetworkLinkageDataID = m; + m_state.dataRoomAirMod->AFNZoneInfo(n).Node(j).Link(k).AFNSimuID = m; + m_state.dataRoomAirMod->AFNZoneInfo(n).Node(j).Link(k).AFNDataID = m; k = k + 1; if (k > AirflowNetworkNodeData(i).NumOfLinks) break; } @@ -5471,7 +5471,7 @@ namespace AirflowNetwork { ZoneNum = AirflowNetworkNodeData(i).EPlusZoneNum; if (m_state.dataRoomAirMod->AFNZoneInfo(ZoneNum) .Node(AirflowNetworkNodeData(i).RAFNNodeNum) - .AirflowNetworkNodeID == i) { + .AFNNodeID == i) { AirflowNetworkNodeSimu(i).TZ = m_state.dataRoomAirMod->AFNZoneInfo(ZoneNum).Node(AirflowNetworkNodeData(i).RAFNNodeNum).AirTemp; AirflowNetworkNodeSimu(i).WZ = @@ -7736,7 +7736,7 @@ namespace AirflowNetwork { if (AirflowNetworkNodeData(i).RAFNNodeNum > 0 && MA((i - 1) * AirflowNetworkNumOfNodes + i) < 0.9e10) { MA((i - 1) * AirflowNetworkNumOfNodes + i) = 1.0e10; ZoneNum = AirflowNetworkNodeData(i).EPlusZoneNum; - if (m_state.dataRoomAirMod->AFNZoneInfo(ZoneNum).Node(AirflowNetworkNodeData(i).RAFNNodeNum).AirflowNetworkNodeID == + if (m_state.dataRoomAirMod->AFNZoneInfo(ZoneNum).Node(AirflowNetworkNodeData(i).RAFNNodeNum).AFNNodeID == i) { MV(i) = m_state.dataRoomAirMod->AFNZoneInfo(ZoneNum).Node(AirflowNetworkNodeData(i).RAFNNodeNum).AirTemp * 1.0e10; } @@ -8030,7 +8030,7 @@ namespace AirflowNetwork { if (AirflowNetworkNodeData(i).RAFNNodeNum > 0 && MA((i - 1) * AirflowNetworkNumOfNodes + i) < 0.9e10) { MA((i - 1) * AirflowNetworkNumOfNodes + i) = 1.0e10; ZoneNum = AirflowNetworkNodeData(i).EPlusZoneNum; - if (m_state.dataRoomAirMod->AFNZoneInfo(ZoneNum).Node(AirflowNetworkNodeData(i).RAFNNodeNum).AirflowNetworkNodeID == + if (m_state.dataRoomAirMod->AFNZoneInfo(ZoneNum).Node(AirflowNetworkNodeData(i).RAFNNodeNum).AFNNodeID == i) { MV(i) = m_state.dataRoomAirMod->AFNZoneInfo(ZoneNum).Node(AirflowNetworkNodeData(i).RAFNNodeNum).HumRat * 1.0e10; } diff --git a/src/EnergyPlus/DataRoomAirModel.hh b/src/EnergyPlus/DataRoomAirModel.hh index 0642b71b163..a53f7a6911c 100644 --- a/src/EnergyPlus/DataRoomAirModel.hh +++ b/src/EnergyPlus/DataRoomAirModel.hh @@ -395,9 +395,9 @@ namespace RoomAir { { // Members // user variables - int AirflowNetworkLinkSimuID = 0; // point to this linkage in AirflowNetworkLinkSimu structure - int AirflowNetworkLinkageDataID = 0; // point to this linkage in AirflowNetworkLinkageData structure - int AirflowNetworkLinkReportID = 0; // point to this linkage in AirflowNetworkLinkReport structure + int AFNSimuID = 0; // point to this linkage in AirflowNetworkLinkSimu structure + int AFNDataID = 0; // point to this linkage in AirflowNetworkLinkageData structure + int AFNReportID = 0; // point to this linkage in AirflowNetworkLinkReport structure Real64 MdotIn = 0.0; // mass flow rate of air into control volume(neg means leaving control volume) (kg / s) Real64 TempIn = 0.0; // drybulb temperature of air into control volume Real64 HumRatIn = 0.0; // humidity ratio of air into control volume @@ -450,7 +450,7 @@ namespace RoomAir { bool HasHVACAssigned = false; // True if HVAC systems are assigned to this node int NumHVACs = 0; // Number of HVAC systems Array1D HVAC; // HVAC struct - int AirflowNetworkNodeID = 0; // pointer to AirflowNetworkNodeData structure + int AFNNodeID = 0; // pointer to AirflowNetworkNodeData structure int NumOfAirflowLinks = 0; // Number of intra zone links Array1D Link; // Linkage struct Real64 AirVolume = 0.0; // air volume in control volume associated with this node(m3 / s) @@ -458,30 +458,18 @@ namespace RoomAir { Real64 CpAir = 0.0; // current heat capacity of air for nodal control volume Real64 AirTemp = 0.0; // node air temperature - Real64 AirTempX1 = 0.0; // node air temperature at t minus 1 zone timestep - Real64 AirTempX2 = 0.0; // node air temperature at t minus 2 zone timestep - Real64 AirTempX3 = 0.0; // node air temperature at t minus 3 zone timestep - Real64 AirTempX4 = 0.0; // node air temperature at t minus 4 zone timestep - Real64 AirTempDSX1 = 0.0; // node air temperature at t minus 1 system timestep - Real64 AirTempDSX2 = 0.0; // node air temperature at t minus 2 system timestep - Real64 AirTempDSX3 = 0.0; // node air temperature at t minus 3 system timestep - Real64 AirTempDSX4 = 0.0; // node air temperature at t minus 4 system timestep + std::array AirTempX = {0.0, 0.0, 0.0, 0.0}; // node air temperature at t minus X zone timestep + std::array AirTempDSX = {0.0, 0.0, 0.0, 0.0}; // node air temperature at t minus X system timestep Real64 AirTempT1 = 0.0; // node air temperature at the previous time step used in Exact and Euler method - Real64 AirTempTMX = 0.0; // temporary node air temperature to test convergence used in Exact and Euler method - Real64 AirTempTM2 = 0.0; // node air temperature at time step t-2 used in Exact and Euler method + Real64 AirTempTX = 0.0; // temporary node air temperature to test convergence used in Exact and Euler method + Real64 AirTempT2 = 0.0; // node air temperature at time step t-2 used in Exact and Euler method Real64 HumRat = 0.0; // node air humidity ratio - Real64 HumRatX1 = 0.0; // node air humidity ratio at t minus 1 zone timestep - Real64 HumRatX2 = 0.0; // node air humidity ratio at t minus 2 zone timestep - Real64 HumRatX3 = 0.0; // node air humidity ratio at t minus 3 zone timestep - Real64 HumRatX4 = 0.0; // node air humidity ratio at t minus 4 zone timestep - Real64 HumRatDSX1 = 0.0; // node air humidity ratio at t minus 1 system timestep - Real64 HumRatDSX2 = 0.0; // node air humidity ratio at t minus 2 system timestep - Real64 HumRatDSX3 = 0.0; // node air humidity ratio at t minus 3 system timestep - Real64 HumRatDSX4 = 0.0; // node air humidity ratio at t minus 4 system timestep - Real64 HumRatW1 = 0.0; // node air humidity ratio at the previous time step used in Exact and Euler method - Real64 HumRatWMX = 0.0; // temporary node air humidity ratio to test convergence used in Exact and Euler method - Real64 HumRatWM2 = 0.0; // node air humidity ratio at time step t-2 used in Exact and Euler method + std::array HumRatX = {0.0, 0.0, 0.0, 0.0}; // node air humidity ratio at t minus X zone timestep + std::array HumRatDSX = {0.0, 0.0, 0.0, 0.0}; // node air humidity ratio at t minus 1 system timestep + Real64 HumRatT1 = 0.0; // node air humidity ratio at the previous time step used in Exact and Euler method + Real64 HumRatTX = 0.0; // temporary node air humidity ratio to test convergence used in Exact and Euler method + Real64 HumRatT2 = 0.0; // node air humidity ratio at time step t-2 used in Exact and Euler method Real64 RelHumidity = 0.0; // node air relative humidity @@ -568,59 +556,17 @@ struct RoomAirModelData : BaseGlobalStruct Array1D ZoneCeilingHeight1; Array1D ZoneCeilingHeight2; Array1D MATFloor; // [C] floor level mean air temp - Array1D> XMATFloor; // [C] floor level mean air temp at t minus 1 zone time step -#ifdef GET_OUT - Array1D XM2TFloor; // [C] floor level mean air temp at t minus 2 zone time step - Array1D XM3TFloor; // [C] floor level mean air temp at t minus 3 zone time step - Array1D XM4TFloor; // [C] floor level mean air temp at t minus 4 zone time step -#endif // - Array1D> DSXMATFloor; // [C] floor level mean air temp at t minus 1 system time step -#ifdef GET_OUT - Array1D DSXM2TFloor; // [C] floor level mean air temp at t minus 2 system time step - Array1D DSXM3TFloor; // [C] floor level mean air temp at t minus 3 system time step - Array1D DSXM4TFloor; // [C] floor level mean air temp at t minus 4 system time step -#endif // + Array1D> XMATFloor; // [C] floor level mean air temp at t minus X zone time step + Array1D> DSXMATFloor; // [C] floor level mean air temp at t minus X system time step Array1D MATOC; // [C] occupied mean air temp - Array1D> XMATOC; // [C] occupied mean air temp at t minus 1 zone time step -#ifdef GET_OUT - Array1D XM2TOC; // [C] occupied mean air temp at t minus 2 zone time step - Array1D XM3TOC; // [C] occupied mean air temp at t minus 3 zone time step - Array1D XM4TOC; // [C] occupied mean air temp at t minus 4 zone time step -#endif // - Array1D> DSXMATOC; // [C] occupied mean air temp at t minus 1 system time step -#ifdef GET_OUT - Array1D DSXM2TOC; // [C] occupied mean air temp at t minus 2 system time step - Array1D DSXM3TOC; // [C] occupied mean air temp at t minus 3 system time step - Array1D DSXM4TOC; // [C] occupied mean air temp at t minus 4 system time step -#endif // + Array1D> XMATOC; // [C] occupied mean air temp at t minus X zone time step + Array1D> DSXMATOC; // [C] occupied mean air temp at t minus X system time step Array1D MATMX; // [C] mixed (upper) mean air temp - Array1D> XMATMX; // [C] mixed (upper) mean air temp at t minus 1 zone time step -#ifdef GET_OUT - Array1D XM2TMX; // [C] mixed (upper) mean air temp at t minus 2 zone time step - Array1D XM3TMX; // [C] mixed (upper) mean air temp at t minus 3 zone time step - Array1D XM4TMX; // [C] mixed (upper) mean air temp at t minus 4 zone time step -#endif // - Array1D> DSXMATMX; // [C] mixed mean air temp at t minus 1 system time step -#ifdef GET_OUT - Array1D DSXM2TMX; // [C] mixed mean air temp at t minus 2 system time step - Array1D DSXM3TMX; // [C] mixed mean air temp at t minus 3 system time step - Array1D DSXM4TMX; // [C] mixed mean air temp at t minus 4 system time step -#endif // - Array1D> ZTMFloor; // [C] difference equation's Floor air temp at t minus 1 -#ifdef GET_OUT - Array1D ZTM2Floor; // [C] difference equation's Floor air temp at t minus 2 - Array1D ZTM3Floor; // [C] difference equation's Floor air temp at t minus 3 -#endif // - Array1D> ZTMOC; // [C] difference equation's Occupied air temp at t minus 1 -#ifdef GET_OUT - Array1D ZTM2OC; // [C] difference equation's Occupied air temp at t minus 2 - Array1D ZTM3OC; // [C] difference equation's Occupied air temp at t minus 3 -#endif // - Array1D> ZTMMX; // [C] difference equation's Mixed air temp at t minus 1 -#ifdef GET_OUT - Array1D ZTM2MX; // [C] difference equation's Mixed air temp at t minus 1 - Array1D ZTM3MX; // [C] difference equation's Mixed air temp at t minus 1 -#endif // + Array1D> XMATMX; // [C] mixed (upper) mean air temp at t minus X zone time step + Array1D> DSXMATMX; // [C] mixed mean air temp at t minus X system time step + Array1D> ZTMFloor; // [C] difference equation's Floor air temp at t minus X + Array1D> ZTMOC; // [C] difference equation's Occupied air temp at t minus X + Array1D> ZTMMX; // [C] difference equation's Mixed air temp at t minus X Array1D AIRRATFloor; Array1D AIRRATOC; Array1D AIRRATMX; @@ -711,7 +657,7 @@ struct RoomAirModelData : BaseGlobalStruct // End User-defined patterns // RoomAirflowNetwork - int NumOfRoomAirflowNetControl = 0; // count of RoomAirSettings:AirflowNetwork + int NumOfRoomAFNControl = 0; // count of RoomAirSettings:AirflowNetwork // Object Data Array1D AirModel; @@ -891,7 +837,7 @@ struct RoomAirModelData : BaseGlobalStruct // End User-defined patterns // RoomAirflowNetwork - NumOfRoomAirflowNetControl = 0; // count of RoomAirSettings:AirflowNetwork + NumOfRoomAFNControl = 0; // count of RoomAirSettings:AirflowNetwork // Object Data AirModel.clear(); diff --git a/src/EnergyPlus/RoomAirModelAirflowNetwork.cc b/src/EnergyPlus/RoomAirModelAirflowNetwork.cc index 6f535a3b852..99f6c425f97 100644 --- a/src/EnergyPlus/RoomAirModelAirflowNetwork.cc +++ b/src/EnergyPlus/RoomAirModelAirflowNetwork.cc @@ -187,7 +187,7 @@ namespace RoomAir { // state.dataRoomAirflowNetModel->LoadPredictionRoomAirModelAirflowNetworkOneTimeFlag //////////////////////////////////////////////////////////////////////////////////// if (state.dataRoomAirflowNetModel->LoadPredictionRoomAirModelAirflowNetworkOneTimeFlag) { - state.dataRoomAirflowNetModel->RAFN.allocate(state.dataRoomAirMod->NumOfRoomAirflowNetControl); + state.dataRoomAirflowNetModel->RAFN.allocate(state.dataRoomAirMod->NumOfRoomAFNControl); state.dataRoomAirflowNetModel->LoadPredictionRoomAirModelAirflowNetworkOneTimeFlag = false; } @@ -543,38 +543,27 @@ namespace RoomAir { } // End of InitRoomAirModelAirflowNetworkOneTimeFlagConf if (state.dataGlobal->BeginEnvrnFlag && state.dataRoomAirflowNetModel->InitRoomAirModelAirflowNetworkEnvrnFlag) { - for (LoopZone = 1; LoopZone <= state.dataGlobal->NumOfZones; ++LoopZone) { - if (!state.dataRoomAirMod->AFNZoneInfo(LoopZone).IsUsed) continue; - for (LoopAirNode = 1; LoopAirNode <= state.dataRoomAirMod->AFNZoneInfo(LoopZone).NumOfAirNodes; - ++LoopAirNode) { // loop over all the modeled room air nodes - state.dataRoomAirMod->AFNZoneInfo(LoopZone).Node(LoopAirNode).AirTemp = 23.0; - state.dataRoomAirMod->AFNZoneInfo(LoopZone).Node(LoopAirNode).AirTempX1 = 23.0; - state.dataRoomAirMod->AFNZoneInfo(LoopZone).Node(LoopAirNode).AirTempX2 = 23.0; - state.dataRoomAirMod->AFNZoneInfo(LoopZone).Node(LoopAirNode).AirTempX3 = 23.0; - state.dataRoomAirMod->AFNZoneInfo(LoopZone).Node(LoopAirNode).AirTempX4 = 23.0; - state.dataRoomAirMod->AFNZoneInfo(LoopZone).Node(LoopAirNode).AirTempDSX1 = 23.0; - state.dataRoomAirMod->AFNZoneInfo(LoopZone).Node(LoopAirNode).AirTempDSX2 = 23.0; - state.dataRoomAirMod->AFNZoneInfo(LoopZone).Node(LoopAirNode).AirTempDSX3 = 23.0; - state.dataRoomAirMod->AFNZoneInfo(LoopZone).Node(LoopAirNode).AirTempDSX4 = 23.0; - state.dataRoomAirMod->AFNZoneInfo(LoopZone).Node(LoopAirNode).AirTempT1 = 23.0; - state.dataRoomAirMod->AFNZoneInfo(LoopZone).Node(LoopAirNode).AirTempTMX = 23.0; - state.dataRoomAirMod->AFNZoneInfo(LoopZone).Node(LoopAirNode).AirTempTM2 = 23.0; - - state.dataRoomAirMod->AFNZoneInfo(LoopZone).Node(LoopAirNode).HumRat = 0.0; - state.dataRoomAirMod->AFNZoneInfo(LoopZone).Node(LoopAirNode).HumRatX1 = 0.0; - state.dataRoomAirMod->AFNZoneInfo(LoopZone).Node(LoopAirNode).HumRatX2 = 0.0; - state.dataRoomAirMod->AFNZoneInfo(LoopZone).Node(LoopAirNode).HumRatX3 = 0.0; - state.dataRoomAirMod->AFNZoneInfo(LoopZone).Node(LoopAirNode).HumRatX4 = 0.0; - state.dataRoomAirMod->AFNZoneInfo(LoopZone).Node(LoopAirNode).HumRatDSX1 = 0.0; - state.dataRoomAirMod->AFNZoneInfo(LoopZone).Node(LoopAirNode).HumRatDSX2 = 0.0; - state.dataRoomAirMod->AFNZoneInfo(LoopZone).Node(LoopAirNode).HumRatDSX3 = 0.0; - state.dataRoomAirMod->AFNZoneInfo(LoopZone).Node(LoopAirNode).HumRatDSX4 = 0.0; - state.dataRoomAirMod->AFNZoneInfo(LoopZone).Node(LoopAirNode).HumRatW1 = 0.0; - state.dataRoomAirMod->AFNZoneInfo(LoopZone).Node(LoopAirNode).HumRatWMX = 0.0; - state.dataRoomAirMod->AFNZoneInfo(LoopZone).Node(LoopAirNode).HumRatWM2 = 0.0; - - state.dataRoomAirMod->AFNZoneInfo(LoopZone).Node(LoopAirNode).SysDepZoneLoadsLagged = 0.0; - state.dataRoomAirMod->AFNZoneInfo(LoopZone).Node(LoopAirNode).SysDepZoneLoadsLaggedOld = 0.0; + for (int LoopZone = 1; LoopZone <= state.dataGlobal->NumOfZones; ++LoopZone) { + auto &afnZoneInfo = state.dataRoomAirMod->AFNZoneInfo(LoopZone); + if (!afnZoneInfo.IsUsed) continue; + for (int LoopAirNode = 1; LoopAirNode <= afnZoneInfo.NumOfAirNodes; ++LoopAirNode) { // loop over all the modeled room air nodes + auto &afnNode = afnZoneInfo.Node(LoopAirNode); + afnNode.AirTemp = 23.0; + afnNode.AirTempX = {23.0, 23.0, 23.0, 23.0}; + afnNode.AirTempDSX = {23.0, 23.0, 23.0, 23.0}; + afnNode.AirTempT1 = 23.0; + afnNode.AirTempTX = 23.0; + afnNode.AirTempT2 = 23.0; + + afnNode.HumRat = 0.0; + afnNode.HumRatX = {0.0, 0.0, 0.0, 0.0}; + afnNode.HumRatDSX = {0.0, 0.0, 0.0, 0.0}; + afnNode.HumRatT1 = 0.0; + afnNode.HumRatTX = 0.0; + afnNode.HumRatT2 = 0.0; + + afnNode.SysDepZoneLoadsLagged = 0.0; + afnNode.SysDepZoneLoadsLaggedOld = 0.0; } } state.dataRoomAirflowNetModel->InitRoomAirModelAirflowNetworkEnvrnFlag = false; @@ -590,10 +579,10 @@ namespace RoomAir { // latent gains. auto &afnZoneInfo = state.dataRoomAirMod->AFNZoneInfo(ZoneNum); - auto &ThisRAFNNode = afnZoneInfo.Node(RoomAirNode); + auto &afnNode = afnZoneInfo.Node(RoomAirNode); - if (allocated(ThisRAFNNode.SurfMask)) { - CalcSurfaceMoistureSums(state, RoomAirNode, ThisRAFNNode.SumHmAW, ThisRAFNNode.SumHmARa, ThisRAFNNode.SumHmARaW, ThisRAFNNode.SurfMask); + if (allocated(afnNode.SurfMask)) { + CalcSurfaceMoistureSums(state, RoomAirNode, afnNode.SumHmAW, afnNode.SumHmARa, afnNode.SumHmARaW, afnNode.SurfMask); } // prepare AirflowNetwor flow rates and temperatures @@ -602,28 +591,28 @@ namespace RoomAir { SumLinkM = 0.0; SumLinkMW = 0.0; - NodeNum = ThisRAFNNode.AirflowNetworkNodeID; + NodeNum = afnNode.AFNNodeID; if (NodeNum > 0) { - for (linkNum = 1; linkNum <= ThisRAFNNode.NumOfAirflowLinks; ++linkNum) { - Link = ThisRAFNNode.Link(linkNum).AirflowNetworkLinkSimuID; + for (linkNum = 1; linkNum <= afnNode.NumOfAirflowLinks; ++linkNum) { + Link = afnNode.Link(linkNum).AFNSimuID; if (state.afn->AirflowNetworkLinkageData(Link).NodeNums[0] == NodeNum) { // incoming flow NodeIn = state.afn->AirflowNetworkLinkageData(Link).NodeNums[1]; - ThisRAFNNode.Link(linkNum).TempIn = state.afn->AirflowNetworkNodeSimu(NodeIn).TZ; - ThisRAFNNode.Link(linkNum).HumRatIn = state.afn->AirflowNetworkNodeSimu(NodeIn).WZ; - ThisRAFNNode.Link(linkNum).MdotIn = state.afn->AirflowNetworkLinkSimu(Link).FLOW2; + afnNode.Link(linkNum).TempIn = state.afn->AirflowNetworkNodeSimu(NodeIn).TZ; + afnNode.Link(linkNum).HumRatIn = state.afn->AirflowNetworkNodeSimu(NodeIn).WZ; + afnNode.Link(linkNum).MdotIn = state.afn->AirflowNetworkLinkSimu(Link).FLOW2; } if (state.afn->AirflowNetworkLinkageData(Link).NodeNums[1] == NodeNum) { // outgoing flow NodeIn = state.afn->AirflowNetworkLinkageData(Link).NodeNums[0]; - ThisRAFNNode.Link(linkNum).TempIn = state.afn->AirflowNetworkNodeSimu(NodeIn).TZ; - ThisRAFNNode.Link(linkNum).HumRatIn = state.afn->AirflowNetworkNodeSimu(NodeIn).WZ; - ThisRAFNNode.Link(linkNum).MdotIn = state.afn->AirflowNetworkLinkSimu(Link).FLOW; + afnNode.Link(linkNum).TempIn = state.afn->AirflowNetworkNodeSimu(NodeIn).TZ; + afnNode.Link(linkNum).HumRatIn = state.afn->AirflowNetworkNodeSimu(NodeIn).WZ; + afnNode.Link(linkNum).MdotIn = state.afn->AirflowNetworkLinkSimu(Link).FLOW; } } - for (linkNum = 1; linkNum <= ThisRAFNNode.NumOfAirflowLinks; ++linkNum) { - LinkInTemp = ThisRAFNNode.Link(linkNum).TempIn; - LinkInHumRat = ThisRAFNNode.Link(linkNum).HumRatIn; - LinkInMdot = ThisRAFNNode.Link(linkNum).MdotIn; + for (linkNum = 1; linkNum <= afnNode.NumOfAirflowLinks; ++linkNum) { + LinkInTemp = afnNode.Link(linkNum).TempIn; + LinkInHumRat = afnNode.Link(linkNum).HumRatIn; + LinkInMdot = afnNode.Link(linkNum).MdotIn; CpAir = PsyCpAirFnW(LinkInHumRat); SumLinkMCp = SumLinkMCp + CpAir * LinkInMdot; SumLinkMCpT = SumLinkMCpT + CpAir * LinkInMdot * LinkInTemp; @@ -632,16 +621,16 @@ namespace RoomAir { } } - ThisRAFNNode.SumLinkMCp = SumLinkMCp; - ThisRAFNNode.SumLinkMCpT = SumLinkMCpT; - ThisRAFNNode.SumLinkM = SumLinkM; - ThisRAFNNode.SumLinkMW = SumLinkMW; - ThisRAFNNode.SysDepZoneLoadsLagged = ThisRAFNNode.SysDepZoneLoadsLaggedOld; + afnNode.SumLinkMCp = SumLinkMCp; + afnNode.SumLinkMCpT = SumLinkMCpT; + afnNode.SumLinkM = SumLinkM; + afnNode.SumLinkMW = SumLinkMW; + afnNode.SysDepZoneLoadsLagged = afnNode.SysDepZoneLoadsLaggedOld; - ThisRAFNNode.RhoAir = - PsyRhoAirFnPbTdbW(state, state.dataEnvrn->OutBaroPress, ThisRAFNNode.AirTemp, ThisRAFNNode.HumRat, "InitRoomAirModelAirflowNetwork"); + afnNode.RhoAir = + PsyRhoAirFnPbTdbW(state, state.dataEnvrn->OutBaroPress, afnNode.AirTemp, afnNode.HumRat, "InitRoomAirModelAirflowNetwork"); - ThisRAFNNode.CpAir = PsyCpAirFnW(ThisRAFNNode.HumRat); + afnNode.CpAir = PsyCpAirFnW(afnNode.HumRat); } // InitRoomAirModelAirflowNetwork @@ -674,12 +663,8 @@ namespace RoomAir { // SUBROUTINE LOCAL VARIABLE DECLARATIONS: Real64 H2OHtOfVap; Real64 HumRatTmp; - Real64 NodeTempX1; - Real64 NodeTempX2; - Real64 NodeTempX3; - Real64 NodeHumRatX1; - Real64 NodeHumRatX2; - Real64 NodeHumRatX3; + std::array NodeTempX; + std::array NodeHumRatX; Real64 TempDepCoef; Real64 TempIndCoef; Real64 AirCap; @@ -688,39 +673,39 @@ namespace RoomAir { Real64 B; Real64 C; Real64 AirTempT1; - Real64 HumRatW1; + Real64 HumRatT1; auto &afnZoneInfo = state.dataRoomAirMod->AFNZoneInfo(ZoneNum); - auto &ThisRAFNNode = afnZoneInfo.Node(RoomAirNode); + auto &afnNode = afnZoneInfo.Node(RoomAirNode); if (state.dataHVACGlobal->UseZoneTimeStepHistory) { - NodeTempX1 = ThisRAFNNode.AirTempX1; - NodeTempX2 = ThisRAFNNode.AirTempX2; - NodeTempX3 = ThisRAFNNode.AirTempX3; + NodeTempX[0] = afnNode.AirTempX[0]; + NodeTempX[1] = afnNode.AirTempX[1]; + NodeTempX[2] = afnNode.AirTempX[2]; - NodeHumRatX1 = ThisRAFNNode.HumRatX1; - NodeHumRatX2 = ThisRAFNNode.HumRatX2; - NodeHumRatX3 = ThisRAFNNode.HumRatX3; + NodeHumRatX[0] = afnNode.HumRatX[0]; + NodeHumRatX[1] = afnNode.HumRatX[1]; + NodeHumRatX[2] = afnNode.HumRatX[2]; } else { // use down - stepped history - NodeTempX1 = ThisRAFNNode.AirTempDSX1; - NodeTempX2 = ThisRAFNNode.AirTempDSX2; - NodeTempX3 = ThisRAFNNode.AirTempDSX3; + NodeTempX[0] = afnNode.AirTempDSX[0]; + NodeTempX[1] = afnNode.AirTempDSX[1]; + NodeTempX[2] = afnNode.AirTempDSX[2]; - NodeHumRatX1 = ThisRAFNNode.HumRatDSX1; - NodeHumRatX2 = ThisRAFNNode.HumRatDSX2; - NodeHumRatX3 = ThisRAFNNode.HumRatDSX3; + NodeHumRatX[0] = afnNode.HumRatDSX[0]; + NodeHumRatX[1] = afnNode.HumRatDSX[1]; + NodeHumRatX[2] = afnNode.HumRatDSX[2]; } if (state.dataHeatBal->ZoneAirSolutionAlgo != DataHeatBalance::SolutionAlgo::ThirdOrder) { - AirTempT1 = ThisRAFNNode.AirTempT1; - HumRatW1 = ThisRAFNNode.HumRatW1; + AirTempT1 = afnNode.AirTempT1; + HumRatT1 = afnNode.HumRatT1; } // solve for node drybulb temperature - TempDepCoef = ThisRAFNNode.SumHA + ThisRAFNNode.SumLinkMCp + ThisRAFNNode.SumSysMCp; - TempIndCoef = ThisRAFNNode.SumIntSensibleGain + ThisRAFNNode.SumHATsurf - ThisRAFNNode.SumHATref + ThisRAFNNode.SumLinkMCpT + - ThisRAFNNode.SumSysMCpT + ThisRAFNNode.NonAirSystemResponse + ThisRAFNNode.SysDepZoneLoadsLagged; + TempDepCoef = afnNode.SumHA + afnNode.SumLinkMCp + afnNode.SumSysMCp; + TempIndCoef = afnNode.SumIntSensibleGain + afnNode.SumHATsurf - afnNode.SumHATref + afnNode.SumLinkMCpT + + afnNode.SumSysMCpT + afnNode.NonAirSystemResponse + afnNode.SysDepZoneLoadsLagged; AirCap = - ThisRAFNNode.AirVolume * state.dataHeatBal->Zone(ZoneNum).ZoneVolCapMultpSens * ThisRAFNNode.RhoAir * ThisRAFNNode.CpAir / TimeStepSysSec; + afnNode.AirVolume * state.dataHeatBal->Zone(ZoneNum).ZoneVolCapMultpSens * afnNode.RhoAir * afnNode.CpAir / TimeStepSysSec; if (state.dataHeatBal->ZoneAirSolutionAlgo == DataHeatBalance::SolutionAlgo::AnalyticalSolution) { if (TempDepCoef == 0.0) { // B=0 @@ -731,37 +716,37 @@ namespace RoomAir { } else if (state.dataHeatBal->ZoneAirSolutionAlgo == DataHeatBalance::SolutionAlgo::EulerMethod) { TempTmp = (AirCap * AirTempT1 + TempIndCoef) / (AirCap + TempDepCoef); } else { - TempTmp = (TempIndCoef + AirCap * (3.0 * NodeTempX1 - (3.0 / 2.0) * NodeTempX2 + (1.0 / 3.0) * NodeTempX3)) / + TempTmp = (TempIndCoef + AirCap * (3.0 * NodeTempX[0] - (3.0 / 2.0) * NodeTempX[1] + (1.0 / 3.0) * NodeTempX[2])) / ((11.0 / 6.0) * AirCap + TempDepCoef); } - ThisRAFNNode.AirTemp = TempTmp; + afnNode.AirTemp = TempTmp; // solve for node humidity ratio using 3 algorithms - H2OHtOfVap = PsyHgAirFnWTdb(ThisRAFNNode.HumRat, ThisRAFNNode.AirTemp); - A = ThisRAFNNode.SumLinkM + ThisRAFNNode.SumHmARa + ThisRAFNNode.SumSysM; - B = (ThisRAFNNode.SumIntLatentGain / H2OHtOfVap) + ThisRAFNNode.SumSysMW + ThisRAFNNode.SumLinkMW + ThisRAFNNode.SumHmARaW; - C = ThisRAFNNode.RhoAir * ThisRAFNNode.AirVolume * state.dataHeatBal->Zone(ZoneNum).ZoneVolCapMultpMoist / TimeStepSysSec; + H2OHtOfVap = PsyHgAirFnWTdb(afnNode.HumRat, afnNode.AirTemp); + A = afnNode.SumLinkM + afnNode.SumHmARa + afnNode.SumSysM; + B = (afnNode.SumIntLatentGain / H2OHtOfVap) + afnNode.SumSysMW + afnNode.SumLinkMW + afnNode.SumHmARaW; + C = afnNode.RhoAir * afnNode.AirVolume * state.dataHeatBal->Zone(ZoneNum).ZoneVolCapMultpMoist / TimeStepSysSec; // Exact solution if (state.dataHeatBal->ZoneAirSolutionAlgo == DataHeatBalance::SolutionAlgo::AnalyticalSolution) { if (A == 0.0) { // B=0 - HumRatTmp = HumRatW1 + B / C; + HumRatTmp = HumRatT1 + B / C; } else { - HumRatTmp = (HumRatW1 - B / A) * std::exp(min(700., -A / C)) + B / A; + HumRatTmp = (HumRatT1 - B / A) * std::exp(min(700., -A / C)) + B / A; } } else if (state.dataHeatBal->ZoneAirSolutionAlgo == DataHeatBalance::SolutionAlgo::EulerMethod) { - HumRatTmp = (C * HumRatW1 + B) / (C + A); + HumRatTmp = (C * HumRatT1 + B) / (C + A); } else { - HumRatTmp = (B + C * (3.0 * NodeHumRatX1 - (3.0 / 2.0) * NodeHumRatX2 + (1.0 / 3.0) * NodeHumRatX3)) / ((11.0 / 6.0) * C + A); + HumRatTmp = (B + C * (3.0 * NodeHumRatX[0] - (3.0 / 2.0) * NodeHumRatX[1] + (1.0 / 3.0) * NodeHumRatX[2])) / ((11.0 / 6.0) * C + A); } - ThisRAFNNode.HumRat = HumRatTmp; + afnNode.HumRat = HumRatTmp; - ThisRAFNNode.AirCap = AirCap; - ThisRAFNNode.AirHumRat = C; + afnNode.AirCap = AirCap; + afnNode.AirHumRat = C; - ThisRAFNNode.RelHumidity = PsyRhFnTdbWPb(state, TempTmp, HumRatTmp, state.dataEnvrn->OutBaroPress, "CalcRoomAirModelAirflowNetwork") * 100.0; + afnNode.RelHumidity = PsyRhFnTdbWPb(state, TempTmp, HumRatTmp, state.dataEnvrn->OutBaroPress, "CalcRoomAirModelAirflowNetwork") * 100.0; } // CalcRoomAirModelAirflowNetwork diff --git a/src/EnergyPlus/RoomAirModelManager.cc b/src/EnergyPlus/RoomAirModelManager.cc index fc64342b64b..ae60a9e02a7 100644 --- a/src/EnergyPlus/RoomAirModelManager.cc +++ b/src/EnergyPlus/RoomAirModelManager.cc @@ -1266,9 +1266,9 @@ namespace RoomAir { auto &ipsc = state.dataIPShortCut; ipsc->cCurrentModuleObject = "RoomAirSettings:AirflowNetwork"; - state.dataRoomAirMod->NumOfRoomAirflowNetControl = state.dataInputProcessing->inputProcessor->getNumObjectsFound(state, ipsc->cCurrentModuleObject); - if (state.dataRoomAirMod->NumOfRoomAirflowNetControl == 0) return; - if (state.dataRoomAirMod->NumOfRoomAirflowNetControl > state.dataGlobal->NumOfZones) { + state.dataRoomAirMod->NumOfRoomAFNControl = state.dataInputProcessing->inputProcessor->getNumObjectsFound(state, ipsc->cCurrentModuleObject); + if (state.dataRoomAirMod->NumOfRoomAFNControl == 0) return; + if (state.dataRoomAirMod->NumOfRoomAFNControl > state.dataGlobal->NumOfZones) { ShowSevereError(state, format("Too many {} objects in input file", ipsc->cCurrentModuleObject)); ShowContinueError(state, format("There cannot be more {} objects than number of zones.", ipsc->cCurrentModuleObject)); ErrorsFound = true; @@ -1277,8 +1277,7 @@ namespace RoomAir { if (!allocated(state.dataRoomAirMod->AFNZoneInfo)) { state.dataRoomAirMod->AFNZoneInfo.allocate(state.dataGlobal->NumOfZones); } - - for (int Loop = 1; Loop <= state.dataRoomAirMod->NumOfRoomAirflowNetControl; ++Loop) { + for (int Loop = 1; Loop <= state.dataRoomAirMod->NumOfRoomAFNControl; ++Loop) { state.dataInputProcessing->inputProcessor->getObjectItem(state, ipsc->cCurrentModuleObject, Loop, @@ -2083,58 +2082,16 @@ namespace RoomAir { // Allocate histories of displacement ventilation temperatures PH 3/5/04 state.dataRoomAirMod->MATFloor.allocate(state.dataGlobal->NumOfZones); state.dataRoomAirMod->XMATFloor.allocate(state.dataGlobal->NumOfZones); -#ifdef GET_OUT - state.dataRoomAirMod->XM2TFloor.allocate(state.dataGlobal->NumOfZones); - state.dataRoomAirMod->XM3TFloor.allocate(state.dataGlobal->NumOfZones); - state.dataRoomAirMod->XM4TFloor.allocate(state.dataGlobal->NumOfZones); -#endif // state.dataRoomAirMod->DSXMATFloor.allocate(state.dataGlobal->NumOfZones); -#ifdef GET_OUT - state.dataRoomAirMod->DSXM2TFloor.allocate(state.dataGlobal->NumOfZones); - state.dataRoomAirMod->DSXM3TFloor.allocate(state.dataGlobal->NumOfZones); - state.dataRoomAirMod->DSXM4TFloor.allocate(state.dataGlobal->NumOfZones); -#endif // state.dataRoomAirMod->MATOC.allocate(state.dataGlobal->NumOfZones); state.dataRoomAirMod->XMATOC.allocate(state.dataGlobal->NumOfZones); -#ifdef GET_OUT - state.dataRoomAirMod->XM2TOC.allocate(state.dataGlobal->NumOfZones); - state.dataRoomAirMod->XM3TOC.allocate(state.dataGlobal->NumOfZones); - state.dataRoomAirMod->XM4TOC.allocate(state.dataGlobal->NumOfZones); -#endif // state.dataRoomAirMod->DSXMATOC.allocate(state.dataGlobal->NumOfZones); -#ifdef GET_OUT - state.dataRoomAirMod->DSXM2TOC.allocate(state.dataGlobal->NumOfZones); - state.dataRoomAirMod->DSXM3TOC.allocate(state.dataGlobal->NumOfZones); - state.dataRoomAirMod->DSXM4TOC.allocate(state.dataGlobal->NumOfZones); -#endif // state.dataRoomAirMod->MATMX.allocate(state.dataGlobal->NumOfZones); state.dataRoomAirMod->XMATMX.allocate(state.dataGlobal->NumOfZones); -#ifdef GET_OUT - state.dataRoomAirMod->XM2TMX.allocate(state.dataGlobal->NumOfZones); - state.dataRoomAirMod->XM3TMX.allocate(state.dataGlobal->NumOfZones); - state.dataRoomAirMod->XM4TMX.allocate(state.dataGlobal->NumOfZones); -#endif // state.dataRoomAirMod->DSXMATMX.allocate(state.dataGlobal->NumOfZones); -#ifdef GET_OUT - state.dataRoomAirMod->DSXM2TMX.allocate(state.dataGlobal->NumOfZones); - state.dataRoomAirMod->DSXM3TMX.allocate(state.dataGlobal->NumOfZones); - state.dataRoomAirMod->DSXM4TMX.allocate(state.dataGlobal->NumOfZones); -#endif // state.dataRoomAirMod->ZTMFloor.allocate(state.dataGlobal->NumOfZones); -#ifdef GET_OUT - state.dataRoomAirMod->ZTM2Floor.allocate(state.dataGlobal->NumOfZones); - state.dataRoomAirMod->ZTM3Floor.allocate(state.dataGlobal->NumOfZones); -#endif // state.dataRoomAirMod->ZTMOC.allocate(state.dataGlobal->NumOfZones); -#ifdef GET_OUT - state.dataRoomAirMod->ZTM2OC.allocate(state.dataGlobal->NumOfZones); - state.dataRoomAirMod->ZTM3OC.allocate(state.dataGlobal->NumOfZones); -#endif // state.dataRoomAirMod->ZTMMX.allocate(state.dataGlobal->NumOfZones); -#ifdef GET_OUT - state.dataRoomAirMod->ZTM2MX.allocate(state.dataGlobal->NumOfZones); - state.dataRoomAirMod->ZTM3MX.allocate(state.dataGlobal->NumOfZones); -#endif // state.dataRoomAirMod->AIRRATFloor.allocate(state.dataGlobal->NumOfZones); state.dataRoomAirMod->AIRRATOC.allocate(state.dataGlobal->NumOfZones); state.dataRoomAirMod->AIRRATMX.allocate(state.dataGlobal->NumOfZones); @@ -2162,58 +2119,16 @@ namespace RoomAir { // ZoneDVMixedFlag=0 state.dataRoomAirMod->MATFloor = 23.0; state.dataRoomAirMod->XMATFloor = {23.0, 23.0, 23.0, 23.0}; -#ifdef GET_OUT - state.dataRoomAirMod->XM2TFloor = 23.0; - state.dataRoomAirMod->XM3TFloor = 23.0; - state.dataRoomAirMod->XM4TFloor = 23.0; -#endif // state.dataRoomAirMod->DSXMATFloor = {23.0, 23.0, 23.0, 23.0}; -#ifdef GET_OUT - state.dataRoomAirMod->DSXM2TFloor = 23.0; - state.dataRoomAirMod->DSXM3TFloor = 23.0; - state.dataRoomAirMod->DSXM4TFloor = 23.0; -#endif // state.dataRoomAirMod->MATOC = {23.0, 23.0, 23.0, 23.0}; state.dataRoomAirMod->XMATOC = {23.0, 23.0, 23.0, 23.0}; -#ifdef GET_OUT - state.dataRoomAirMod->XM2TOC = 23.0; - state.dataRoomAirMod->XM3TOC = 23.0; - state.dataRoomAirMod->XM4TOC = 23.0; -#endif // state.dataRoomAirMod->DSXMATOC = {23.0, 23.0, 23.0, 23.0}; -#ifdef GET_OUT - state.dataRoomAirMod->DSXM2TOC = 23.0; - state.dataRoomAirMod->DSXM3TOC = 23.0; - state.dataRoomAirMod->DSXM4TOC = 23.0; -#endif // state.dataRoomAirMod->MATMX = {23.0, 23.0, 23.0, 23.0}; state.dataRoomAirMod->XMATMX = {23.0, 23.0, 23.0, 23.0}; -#ifdef GET_OUT - state.dataRoomAirMod->XM2TMX = 23.0; - state.dataRoomAirMod->XM3TMX = 23.0; - state.dataRoomAirMod->XM4TMX = 23.0; -#endif // state.dataRoomAirMod->DSXMATMX = {23.0, 23.0, 23.0, 23.0}; -#ifdef GET_OUT - state.dataRoomAirMod->DSXM2TMX = 23.0; - state.dataRoomAirMod->DSXM3TMX = 23.0; - state.dataRoomAirMod->DSXM4TMX = 23.0; -#endif // state.dataRoomAirMod->ZTMFloor = {23.0, 23.0, 23.0}; -#ifdef GET_OUT - state.dataRoomAirMod->ZTM2Floor = 23.0; - state.dataRoomAirMod->ZTM3Floor = 23.0; -#endif // state.dataRoomAirMod->ZTMOC = {23.0, 23.0, 23.0}; -#ifdef GET_OUT - state.dataRoomAirMod->ZTM2OC = 23.0; - state.dataRoomAirMod->ZTM3OC = 23.0; -#endif // state.dataRoomAirMod->ZTMMX = {23.0, 23.0, 23.0}; -#ifdef GET_OUT - state.dataRoomAirMod->ZTM2MX = 23.0; - state.dataRoomAirMod->ZTM3MX = 23.0; -#endif // state.dataRoomAirMod->Zone1Floor = 23.0; state.dataRoomAirMod->ZoneMXFloor = 23.0; state.dataRoomAirMod->ZoneM2Floor = 23.0; @@ -2667,64 +2582,22 @@ namespace RoomAir { state.dataRoomAirMod->ZoneAirSystemON(ZoneNum) = false; state.dataRoomAirMod->MATFloor(ZoneNum) = 23.0; state.dataRoomAirMod->XMATFloor(ZoneNum) = {23.0, 23.0, 23.0, 23.0}; -#ifdef GET_OUT - state.dataRoomAirMod->XM2TFloor(ZoneNum) = 23.0; - state.dataRoomAirMod->XM3TFloor(ZoneNum) = 23.0; - state.dataRoomAirMod->XM4TFloor(ZoneNum) = 23.0; -#endif // state.dataRoomAirMod->DSXMATFloor(ZoneNum) = {23.0, 23.0, 23.0, 23.0}; -#ifdef GET_OUT - state.dataRoomAirMod->DSXM2TFloor(ZoneNum) = 23.0; - state.dataRoomAirMod->DSXM3TFloor(ZoneNum) = 23.0; - state.dataRoomAirMod->DSXM4TFloor(ZoneNum) = 23.0; -#endif // state.dataRoomAirMod->MATOC(ZoneNum) = 23.0; state.dataRoomAirMod->XMATOC(ZoneNum) = {23.0, 23.0, 23.0, 23.0}; -#ifdef GET_OUT - state.dataRoomAirMod->XM2TOC(ZoneNum) = 23.0; - state.dataRoomAirMod->XM3TOC(ZoneNum) = 23.0; - state.dataRoomAirMod->XM4TOC(ZoneNum) = 23.0; -#endif // state.dataRoomAirMod->DSXMATOC(ZoneNum) = {23.0, 23.0, 23.0, 23.0}; -#ifdef GET_OUT - state.dataRoomAirMod->DSXM2TOC(ZoneNum) = 23.0; - state.dataRoomAirMod->DSXM3TOC(ZoneNum) = 23.0; - state.dataRoomAirMod->DSXM4TOC(ZoneNum) = 23.0; -#endif // state.dataRoomAirMod->MATMX(ZoneNum) = 23.0; state.dataRoomAirMod->XMATMX(ZoneNum) = {23.0, 23.0, 23.0, 23.0}; -#ifdef GET_OUT - state.dataRoomAirMod->XM2TMX(ZoneNum) = 23.0; - state.dataRoomAirMod->XM3TMX(ZoneNum) = 23.0; - state.dataRoomAirMod->XM4TMX(ZoneNum) = 23.0; -#endif // state.dataRoomAirMod->DSXMATMX(ZoneNum) = {23.0, 23.0, 23.0, 23.0}; -#ifdef GET_OUT - state.dataRoomAirMod->DSXM2TMX(ZoneNum) = 23.0; - state.dataRoomAirMod->DSXM3TMX(ZoneNum) = 23.0; - state.dataRoomAirMod->DSXM4TMX(ZoneNum) = 23.0; -#endif // state.dataRoomAirMod->ZTMFloor(ZoneNum) = {23.0, 23.0, 23.0}; -#ifdef GET_OUT - state.dataRoomAirMod->ZTM2Floor(ZoneNum) = 23.0; - state.dataRoomAirMod->ZTM3Floor(ZoneNum) = 23.0; -#endif // state.dataRoomAirMod->Zone1Floor(ZoneNum) = 23.0; state.dataRoomAirMod->ZoneMXFloor(ZoneNum) = 23.0; state.dataRoomAirMod->ZoneM2Floor(ZoneNum) = 23.0; state.dataRoomAirMod->ZTMOC(ZoneNum) = {23.0, 23.0, 23.0}; -#ifdef GET_OUT - state.dataRoomAirMod->ZTM2OC(ZoneNum) = 23.0; - state.dataRoomAirMod->ZTM3OC(ZoneNum) = 23.0; -#endif // state.dataRoomAirMod->Zone1OC(ZoneNum) = 23.0; state.dataRoomAirMod->ZoneMXOC(ZoneNum) = 23.0; state.dataRoomAirMod->ZoneM2OC(ZoneNum) = 23.0; state.dataRoomAirMod->ZTMMX(ZoneNum) = {23.0, 23.0, 23.0}; -#ifdef GET_OUT - state.dataRoomAirMod->ZTM2MX(ZoneNum) = 23.0; - state.dataRoomAirMod->ZTM3MX(ZoneNum) = 23.0; -#endif // state.dataRoomAirMod->Zone1MX(ZoneNum) = 23.0; state.dataRoomAirMod->ZoneMXMX(ZoneNum) = 23.0; state.dataRoomAirMod->ZoneM2MX(ZoneNum) = 23.0; diff --git a/src/EnergyPlus/ZoneTempPredictorCorrector.cc b/src/EnergyPlus/ZoneTempPredictorCorrector.cc index 4a8dcb6750a..2203a1d948e 100644 --- a/src/EnergyPlus/ZoneTempPredictorCorrector.cc +++ b/src/EnergyPlus/ZoneTempPredictorCorrector.cc @@ -3620,9 +3620,9 @@ void ZoneSpaceHeatBalanceData::predictSystemLoad( this->ZoneW1 = this->ZoneWM2; if (state.dataRoomAirMod->AirModel(zoneNum).AirModel == RoomAir::RoomAirModel::AirflowNetwork) { auto &afnZoneInfo = state.dataRoomAirMod->AFNZoneInfo(zoneNum); - for (int LoopNode = 1; LoopNode <= afnZoneInfo.NumOfAirNodes; ++LoopNode) { - afnZoneInfo.Node(LoopNode).AirTempT1 = afnZoneInfo.Node(LoopNode).AirTempTM2; - afnZoneInfo.Node(LoopNode).HumRatW1 = afnZoneInfo.Node(LoopNode).HumRatWM2; + for (auto &afnNode : afnZoneInfo.Node) { + afnNode.AirTempT1 = afnNode.AirTempT2; + afnNode.HumRatT1 = afnNode.HumRatT2; } } } else { @@ -3630,9 +3630,9 @@ void ZoneSpaceHeatBalanceData::predictSystemLoad( this->ZoneW1 = this->ZoneWMX; if (state.dataRoomAirMod->AirModel(zoneNum).AirModel == RoomAir::RoomAirModel::AirflowNetwork) { auto &afnZoneInfo = state.dataRoomAirMod->AFNZoneInfo(zoneNum); - for (int LoopNode = 1; LoopNode <= afnZoneInfo.NumOfAirNodes; ++LoopNode) { - afnZoneInfo.Node(LoopNode).AirTempT1 = afnZoneInfo.Node(LoopNode).AirTempTMX; - afnZoneInfo.Node(LoopNode).HumRatW1 = afnZoneInfo.Node(LoopNode).HumRatWMX; + for (auto &afnNode : afnZoneInfo.Node) { + afnNode.AirTempT1 = afnNode.AirTempTX; + afnNode.HumRatT1 = afnNode.HumRatTX; } } } @@ -3642,9 +3642,9 @@ void ZoneSpaceHeatBalanceData::predictSystemLoad( this->ZoneW1 = this->ZoneAirHumRat; if (state.dataRoomAirMod->AirModel(zoneNum).AirModel == RoomAir::RoomAirModel::AirflowNetwork) { auto &afnZoneInfo = state.dataRoomAirMod->AFNZoneInfo(zoneNum); - for (int LoopNode = 1; LoopNode <= afnZoneInfo.NumOfAirNodes; ++LoopNode) { - afnZoneInfo.Node(LoopNode).AirTempT1 = afnZoneInfo.Node(LoopNode).AirTemp; - afnZoneInfo.Node(LoopNode).HumRatW1 = afnZoneInfo.Node(LoopNode).HumRat; + for (auto &afnNode : afnZoneInfo.Node) { + afnNode.AirTempT1 = afnNode.AirTemp; + afnNode.HumRatT1 = afnNode.HumRat; } } } @@ -4623,17 +4623,16 @@ void ZoneSpaceHeatBalanceData::pushZoneTimestepHistory(EnergyPlusData &state, in // for RoomAirflowNetwork model if (thisAirModel.AirModel == RoomAir::RoomAirModel::AirflowNetwork) { - for (int LoopNode = 1; LoopNode <= state.dataRoomAirMod->AFNZoneInfo(zoneNum).NumOfAirNodes; ++LoopNode) { - auto &afnZoneInfo = state.dataRoomAirMod->AFNZoneInfo(zoneNum).Node(LoopNode); - afnZoneInfo.AirTempX4 = afnZoneInfo.AirTempX3; - afnZoneInfo.AirTempX3 = afnZoneInfo.AirTempX2; - afnZoneInfo.AirTempX2 = afnZoneInfo.AirTempX1; - afnZoneInfo.AirTempX1 = afnZoneInfo.AirTemp; + for (auto &afnNode : state.dataRoomAirMod->AFNZoneInfo(zoneNum).Node) { + afnNode.AirTempX[3] = afnNode.AirTempX[2]; + afnNode.AirTempX[2] = afnNode.AirTempX[1]; + afnNode.AirTempX[1] = afnNode.AirTempX[0]; + afnNode.AirTempX[0] = afnNode.AirTemp; - afnZoneInfo.HumRatX4 = afnZoneInfo.HumRatX3; - afnZoneInfo.HumRatX3 = afnZoneInfo.HumRatX2; - afnZoneInfo.HumRatX2 = afnZoneInfo.HumRatX1; - afnZoneInfo.HumRatX1 = afnZoneInfo.HumRat; + afnNode.HumRatX[3] = afnNode.HumRatX[2]; + afnNode.HumRatX[2] = afnNode.HumRatX[1]; + afnNode.HumRatX[1] = afnNode.HumRatX[0]; + afnNode.HumRatX[0] = afnNode.HumRat; } } } @@ -4657,13 +4656,12 @@ void ZoneSpaceHeatBalanceData::pushZoneTimestepHistory(EnergyPlusData &state, in } if (thisAirModel.AirModel == RoomAir::RoomAirModel::AirflowNetwork) { - for (int LoopNode = 1; LoopNode <= state.dataRoomAirMod->AFNZoneInfo(zoneNum).NumOfAirNodes; ++LoopNode) { - auto &afnZoneInfo = state.dataRoomAirMod->AFNZoneInfo(zoneNum).Node(LoopNode); - afnZoneInfo.AirTempTM2 = afnZoneInfo.AirTempTMX; - afnZoneInfo.AirTempTMX = afnZoneInfo.AirTemp; + for (auto &afnNode : state.dataRoomAirMod->AFNZoneInfo(zoneNum).Node) { + afnNode.AirTempT2 = afnNode.AirTempTX; + afnNode.AirTempTX = afnNode.AirTemp; - afnZoneInfo.HumRatWM2 = afnZoneInfo.HumRatWMX; - afnZoneInfo.HumRatWMX = afnZoneInfo.HumRat; + afnNode.HumRatT2 = afnNode.HumRatTX; + afnNode.HumRatTX = afnNode.HumRat; } } } @@ -4719,17 +4717,16 @@ void ZoneSpaceHeatBalanceData::pushSystemTimestepHistory(EnergyPlusData &state, state.dataRoomAirMod->DSXMATMX(zoneNum)[0] = state.dataRoomAirMod->MATMX(zoneNum); } if (state.dataRoomAirMod->AirModel(zoneNum).AirModel == RoomAir::RoomAirModel::AirflowNetwork) { - for (int LoopNode = 1; LoopNode <= state.dataRoomAirMod->AFNZoneInfo(zoneNum).NumOfAirNodes; ++LoopNode) { - auto &afnZoneInfo = state.dataRoomAirMod->AFNZoneInfo(zoneNum).Node(LoopNode); - afnZoneInfo.AirTempDSX4 = afnZoneInfo.AirTempDSX3; - afnZoneInfo.AirTempDSX3 = afnZoneInfo.AirTempDSX2; - afnZoneInfo.AirTempDSX2 = afnZoneInfo.AirTempDSX1; - afnZoneInfo.AirTempDSX1 = afnZoneInfo.AirTemp; + for (auto &afnNode : state.dataRoomAirMod->AFNZoneInfo(zoneNum).Node) { + afnNode.AirTempDSX[3] = afnNode.AirTempDSX[2]; + afnNode.AirTempDSX[2] = afnNode.AirTempDSX[1]; + afnNode.AirTempDSX[1] = afnNode.AirTempDSX[0]; + afnNode.AirTempDSX[0] = afnNode.AirTemp; - afnZoneInfo.HumRatDSX4 = afnZoneInfo.HumRatDSX3; - afnZoneInfo.HumRatDSX3 = afnZoneInfo.HumRatDSX2; - afnZoneInfo.HumRatDSX2 = afnZoneInfo.HumRatDSX1; - afnZoneInfo.HumRatDSX1 = afnZoneInfo.HumRat; + afnNode.HumRatDSX[3] = afnNode.HumRatDSX[2]; + afnNode.HumRatDSX[2] = afnNode.HumRatDSX[1]; + afnNode.HumRatDSX[1] = afnNode.HumRatDSX[0]; + afnNode.HumRatDSX[0] = afnNode.HumRat; } } } @@ -4754,12 +4751,12 @@ void ZoneSpaceHeatBalanceData::pushSystemTimestepHistory(EnergyPlusData &state, } if (state.dataRoomAirMod->AirModel(zoneNum).AirModel == RoomAir::RoomAirModel::AirflowNetwork) { for (int LoopNode = 1; LoopNode <= state.dataRoomAirMod->AFNZoneInfo(zoneNum).NumOfAirNodes; ++LoopNode) { - auto &afnZoneInfo = state.dataRoomAirMod->AFNZoneInfo(zoneNum).Node(LoopNode); - afnZoneInfo.AirTempTM2 = afnZoneInfo.AirTempTMX; - afnZoneInfo.AirTempTMX = afnZoneInfo.AirTemp; + auto &afnNode = state.dataRoomAirMod->AFNZoneInfo(zoneNum).Node(LoopNode); + afnNode.AirTempT2 = afnNode.AirTempTX; + afnNode.AirTempTX = afnNode.AirTemp; - afnZoneInfo.HumRatWM2 = afnZoneInfo.HumRatWMX; - afnZoneInfo.HumRatWMX = afnZoneInfo.HumRat; + afnNode.HumRatT2 = afnNode.HumRatTX; + afnNode.HumRatTX = afnNode.HumRat; } } } @@ -4814,15 +4811,14 @@ void ZoneSpaceHeatBalanceData::revertZoneTimestepHistory(EnergyPlusData &state, } if (state.dataRoomAirMod->AirModel(zoneNum).AirModel == RoomAir::RoomAirModel::AirflowNetwork) { - for (int LoopNode = 1; LoopNode <= state.dataRoomAirMod->AFNZoneInfo(zoneNum).NumOfAirNodes; ++LoopNode) { - auto &afnZoneInfo = state.dataRoomAirMod->AFNZoneInfo(zoneNum).Node(LoopNode); - afnZoneInfo.AirTempX1 = afnZoneInfo.AirTempX2; - afnZoneInfo.AirTempX2 = afnZoneInfo.AirTempX3; - afnZoneInfo.AirTempX3 = afnZoneInfo.AirTempX4; + for (auto &afnNode : state.dataRoomAirMod->AFNZoneInfo(zoneNum).Node) { + afnNode.AirTempX[0] = afnNode.AirTempX[1]; + afnNode.AirTempX[1] = afnNode.AirTempX[2]; + afnNode.AirTempX[2] = afnNode.AirTempX[3]; - afnZoneInfo.HumRatX1 = afnZoneInfo.HumRatX2; - afnZoneInfo.HumRatX2 = afnZoneInfo.HumRatX3; - afnZoneInfo.HumRatX3 = afnZoneInfo.HumRatX4; + afnNode.HumRatX[0] = afnNode.HumRatX[1]; + afnNode.HumRatX[1] = afnNode.HumRatX[2]; + afnNode.HumRatX[2] = afnNode.HumRatX[3]; } } } @@ -7146,28 +7142,16 @@ void ZoneSpaceHeatBalanceData::updateTemperatures(EnergyPlusData &state, } if (state.dataRoomAirMod->AirModel(zoneNum).AirModel == RoomAir::RoomAirModel::AirflowNetwork) { - for (int LoopNode = 1; LoopNode <= state.dataRoomAirMod->AFNZoneInfo(zoneNum).NumOfAirNodes; ++LoopNode) { - auto &ThisRAFNNode(state.dataRoomAirMod->AFNZoneInfo(zoneNum).Node(LoopNode)); - DownInterpolate4HistoryValues(PriorTimeStep, - TimeStepSys, - ThisRAFNNode.AirTempX1, - ThisRAFNNode.AirTempX2, - ThisRAFNNode.AirTempX3, - ThisRAFNNode.AirTemp, - ThisRAFNNode.AirTempDSX1, - ThisRAFNNode.AirTempDSX2, - ThisRAFNNode.AirTempDSX3, - ThisRAFNNode.AirTempDSX4); - DownInterpolate4HistoryValues(PriorTimeStep, - TimeStepSys, - ThisRAFNNode.HumRatX1, - ThisRAFNNode.HumRatX2, - ThisRAFNNode.HumRatX3, - ThisRAFNNode.HumRat, - ThisRAFNNode.HumRatDSX1, - ThisRAFNNode.HumRatDSX2, - ThisRAFNNode.HumRatDSX3, - ThisRAFNNode.HumRatDSX4); + for (auto &afnNode : state.dataRoomAirMod->AFNZoneInfo(zoneNum).Node) { + afnNode.AirTemp = DownInterpolate4HistoryValues(PriorTimeStep, + TimeStepSys, + afnNode.AirTempX, + afnNode.AirTempDSX); + + afnNode.HumRat = DownInterpolate4HistoryValues(PriorTimeStep, + TimeStepSys, + afnNode.HumRatX, + afnNode.HumRatDSX); } } } diff --git a/tst/EnergyPlus/unit/RoomAirflowNetwork.unit.cc b/tst/EnergyPlus/unit/RoomAirflowNetwork.unit.cc index 8b2c1ad30eb..1ee74f10e90 100644 --- a/tst/EnergyPlus/unit/RoomAirflowNetwork.unit.cc +++ b/tst/EnergyPlus/unit/RoomAirflowNetwork.unit.cc @@ -202,16 +202,16 @@ TEST_F(RoomAirflowNetworkTest, RAFNTest) state->dataRoomAirMod->AFNZoneInfo(ZoneNum).Node(2).SurfMask(2) = true; state->dataRoomAirMod->AFNZoneInfo(ZoneNum).Node(1).NumOfAirflowLinks = 3; state->dataRoomAirMod->AFNZoneInfo(ZoneNum).Node(1).Link.allocate(3); - state->dataRoomAirMod->AFNZoneInfo(ZoneNum).Node(1).Link(1).AirflowNetworkLinkSimuID = 1; - state->dataRoomAirMod->AFNZoneInfo(ZoneNum).Node(1).Link(2).AirflowNetworkLinkSimuID = 2; - state->dataRoomAirMod->AFNZoneInfo(ZoneNum).Node(1).Link(3).AirflowNetworkLinkSimuID = 3; - state->dataRoomAirMod->AFNZoneInfo(ZoneNum).Node(1).AirflowNetworkNodeID = 1; + state->dataRoomAirMod->AFNZoneInfo(ZoneNum).Node(1).Link(1).AFNSimuID = 1; + state->dataRoomAirMod->AFNZoneInfo(ZoneNum).Node(1).Link(2).AFNSimuID = 2; + state->dataRoomAirMod->AFNZoneInfo(ZoneNum).Node(1).Link(3).AFNSimuID = 3; + state->dataRoomAirMod->AFNZoneInfo(ZoneNum).Node(1).AFNNodeID = 1; state->dataRoomAirMod->AFNZoneInfo(ZoneNum).Node(2).NumOfAirflowLinks = 3; state->dataRoomAirMod->AFNZoneInfo(ZoneNum).Node(2).Link.allocate(3); - state->dataRoomAirMod->AFNZoneInfo(ZoneNum).Node(2).Link(1).AirflowNetworkLinkSimuID = 3; - state->dataRoomAirMod->AFNZoneInfo(ZoneNum).Node(2).Link(2).AirflowNetworkLinkSimuID = 4; - state->dataRoomAirMod->AFNZoneInfo(ZoneNum).Node(2).Link(3).AirflowNetworkLinkSimuID = 5; - state->dataRoomAirMod->AFNZoneInfo(ZoneNum).Node(2).AirflowNetworkNodeID = 2; + state->dataRoomAirMod->AFNZoneInfo(ZoneNum).Node(2).Link(1).AFNSimuID = 3; + state->dataRoomAirMod->AFNZoneInfo(ZoneNum).Node(2).Link(2).AFNSimuID = 4; + state->dataRoomAirMod->AFNZoneInfo(ZoneNum).Node(2).Link(3).AFNSimuID = 5; + state->dataRoomAirMod->AFNZoneInfo(ZoneNum).Node(2).AFNNodeID = 2; state->afn->AirflowNetworkLinkageData(1).NodeNums[0] = 1; state->afn->AirflowNetworkLinkageData(2).NodeNums[0] = 1;