Skip to content

Commit

Permalink
Additional cleanup, continue unifying RefPt structures
Browse files Browse the repository at this point in the history
  • Loading branch information
amirroth committed Dec 28, 2023
1 parent fca0071 commit c0c5465
Show file tree
Hide file tree
Showing 12 changed files with 827 additions and 820 deletions.
78 changes: 39 additions & 39 deletions src/EnergyPlus/AirflowNetwork/src/Solver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3582,9 +3582,8 @@ namespace AirflowNetwork {
// Assign occupant ventilation control number from zone to surface
for (int i = 1; i <= AirflowNetworkNumOfSurfaces; ++i) {
int j = MultizoneSurfaceData(i).SurfNum;
if (m_state.dataSurface->SurfWinOriginalClass(j) == SurfaceClass::Window ||
m_state.dataSurface->SurfWinOriginalClass(j) == SurfaceClass::Door ||
m_state.dataSurface->SurfWinOriginalClass(j) == SurfaceClass::GlassDoor) {
auto const &surf = m_state.dataSurface->Surface(j);
if (surf.OriginalClass == SurfaceClass::Window || surf.OriginalClass == SurfaceClass::Door || surf.OriginalClass == SurfaceClass::GlassDoor) {
for (n = 1; n <= AirflowNetworkNumOfZones; ++n) {
if (MultizoneZoneData(n).ZoneNum == m_state.dataSurface->Surface(j).Zone) {
if (MultizoneZoneData(n).OccupantVentilationControlNum > 0 && MultizoneSurfaceData(i).OccupantVentilationControlNum == 0) {
Expand Down Expand Up @@ -4621,6 +4620,8 @@ namespace AirflowNetwork {
int compnum = compnum_iter->second;
AirflowNetworkLinkageData(count).CompNum = compnum;

auto &surf = m_state.dataSurface->Surface(MultizoneSurfaceData(count).SurfNum);

switch (AirflowNetworkLinkageData(count).element->type()) {
case ComponentType::DOP: {
// if (AirflowNetworkLinkageData(count).CompName ==
Expand All @@ -4630,26 +4631,25 @@ namespace AirflowNetwork {
// if (AirflowNetworkCompData(i).CompTypeNum == iComponentTypeNum::DOP) {
++j;
AirflowNetworkLinkageData(count).DetOpenNum = j;
MultizoneSurfaceData(count).Multiplier = m_state.dataSurface->Surface(MultizoneSurfaceData(count).SurfNum).Multiplier;
if (m_state.dataSurface->Surface(MultizoneSurfaceData(count).SurfNum).Tilt < 10.0 ||
m_state.dataSurface->Surface(MultizoneSurfaceData(count).SurfNum).Tilt > 170.0) {
MultizoneSurfaceData(count).Multiplier = surf.Multiplier;
if (surf.Tilt < 10.0 || surf.Tilt > 170.0) {
ShowWarningError(m_state, "An AirflowNetwork:Multizone:Surface object has an air-flow opening corresponding to");
ShowContinueError(m_state, "window or door = " + MultizoneSurfaceData(count).SurfName + ", which is within ");
ShowContinueError(m_state, "10 deg of being horizontal. Airflows through large horizontal openings are poorly");
ShowContinueError(m_state, "modeled in the AirflowNetwork model resulting in only one-way airflow.");
}
if (!(m_state.dataSurface->SurfWinOriginalClass(MultizoneSurfaceData(count).SurfNum) == SurfaceClass::Window ||
m_state.dataSurface->SurfWinOriginalClass(MultizoneSurfaceData(count).SurfNum) == SurfaceClass::GlassDoor ||
m_state.dataSurface->SurfWinOriginalClass(MultizoneSurfaceData(count).SurfNum) == SurfaceClass::Door ||
m_state.dataSurface->Surface(MultizoneSurfaceData(count).SurfNum).IsAirBoundarySurf)) {
if (!(surf.OriginalClass == SurfaceClass::Window ||
surf.OriginalClass == SurfaceClass::GlassDoor ||
surf.OriginalClass == SurfaceClass::Door ||
surf.IsAirBoundarySurf)) {
ShowSevereError(m_state,
format(RoutineName) +
"AirflowNetworkComponent: The opening must be assigned to a window, door, glassdoor or air boundary at " +
AirflowNetworkLinkageData(count).Name);
ErrorsFound = true;
}
if (m_state.dataSurface->SurfWinOriginalClass(MultizoneSurfaceData(count).SurfNum) == SurfaceClass::Door ||
m_state.dataSurface->SurfWinOriginalClass(MultizoneSurfaceData(count).SurfNum) == SurfaceClass::GlassDoor) {

if (surf.OriginalClass == SurfaceClass::Door || surf.OriginalClass == SurfaceClass::GlassDoor) {
if (MultizoneCompDetOpeningData(AirflowNetworkCompData(compnum).TypeNum).LVOType == 2) {
ShowSevereError(m_state,
format(RoutineName) +
Expand All @@ -4662,20 +4662,19 @@ namespace AirflowNetwork {
} break;
case ComponentType::SOP: {
// if (AirflowNetworkCompData(i).CompTypeNum == iComponentTypeNum::SOP) {
MultizoneSurfaceData(count).Multiplier = m_state.dataSurface->Surface(MultizoneSurfaceData(count).SurfNum).Multiplier;
if (m_state.dataSurface->Surface(MultizoneSurfaceData(count).SurfNum).Tilt < 10.0 ||
m_state.dataSurface->Surface(MultizoneSurfaceData(count).SurfNum).Tilt > 170.0) {
MultizoneSurfaceData(count).Multiplier = surf.Multiplier;
if (surf.Tilt < 10.0 || surf.Tilt > 170.0) {
ShowSevereError(m_state, "An AirflowNetwork:Multizone:Surface object has an air-flow opening corresponding to");
ShowContinueError(m_state, "window or door = " + MultizoneSurfaceData(count).SurfName + ", which is within");
ShowContinueError(m_state, "10 deg of being horizontal. Airflows through horizontal openings are not allowed.");
ShowContinueError(m_state, "AirflowNetwork:Multizone:Component:SimpleOpening = " + AirflowNetworkCompData(compnum).Name);
ErrorsFound = true;
}

if (!(m_state.dataSurface->SurfWinOriginalClass(MultizoneSurfaceData(count).SurfNum) == SurfaceClass::Window ||
m_state.dataSurface->SurfWinOriginalClass(MultizoneSurfaceData(count).SurfNum) == SurfaceClass::GlassDoor ||
m_state.dataSurface->SurfWinOriginalClass(MultizoneSurfaceData(count).SurfNum) == SurfaceClass::Door ||
m_state.dataSurface->Surface(MultizoneSurfaceData(count).SurfNum).IsAirBoundarySurf)) {
if (!(surf.OriginalClass == SurfaceClass::Window ||
surf.OriginalClass == SurfaceClass::GlassDoor ||
surf.OriginalClass == SurfaceClass::Door ||
surf.IsAirBoundarySurf)) {
ShowSevereError(m_state,
format(RoutineName) +
"AirflowNetworkComponent: The opening must be assigned to a window, door, glassdoor or air boundary at " +
Expand All @@ -4685,7 +4684,7 @@ namespace AirflowNetwork {
} break;
case ComponentType::HOP: {
// if (AirflowNetworkCompData(i).CompTypeNum == iComponentTypeNum::HOP) {
MultizoneSurfaceData(count).Multiplier = m_state.dataSurface->Surface(MultizoneSurfaceData(count).SurfNum).Multiplier;
MultizoneSurfaceData(count).Multiplier = surf.Multiplier;
// Get linkage height from upper and lower zones
if (MultizoneZoneData(AirflowNetworkLinkageData(count).NodeNums[0]).ZoneNum > 0) {
AirflowNetworkLinkageData(count).NodeHeights[0] =
Expand Down Expand Up @@ -4714,21 +4713,18 @@ namespace AirflowNetwork {
ErrorsFound = true;
}
}
if (!(m_state.dataSurface->Surface(MultizoneSurfaceData(count).SurfNum).Tilt > 170.0 &&
m_state.dataSurface->Surface(MultizoneSurfaceData(count).SurfNum).Tilt < 190.0) &&
!(m_state.dataSurface->Surface(MultizoneSurfaceData(count).SurfNum).Tilt > -10.0 &&
m_state.dataSurface->Surface(MultizoneSurfaceData(count).SurfNum).Tilt < 10.0)) {
if (!(surf.Tilt > 170.0 && surf.Tilt < 190.0) && !(surf.Tilt > -10.0 && surf.Tilt < 10.0)) {
ShowWarningError(m_state, "An AirflowNetwork:Multizone:Surface object has an air-flow opening corresponding to");
ShowContinueError(m_state, "window or door = " + MultizoneSurfaceData(count).SurfName + ", which is above");
ShowContinueError(m_state, "10 deg of being horizontal. Airflows through non-horizontal openings are not modeled");
ShowContinueError(m_state,
"with the object of AirflowNetwork:Multizone:Component:HorizontalOpening = " +
AirflowNetworkCompData(compnum).Name);
}
if (!(m_state.dataSurface->SurfWinOriginalClass(MultizoneSurfaceData(count).SurfNum) == SurfaceClass::Window ||
m_state.dataSurface->SurfWinOriginalClass(MultizoneSurfaceData(count).SurfNum) == SurfaceClass::GlassDoor ||
m_state.dataSurface->SurfWinOriginalClass(MultizoneSurfaceData(count).SurfNum) == SurfaceClass::Door ||
m_state.dataSurface->Surface(MultizoneSurfaceData(count).SurfNum).IsAirBoundarySurf)) {
if (!(surf.OriginalClass == SurfaceClass::Window ||
surf.OriginalClass == SurfaceClass::GlassDoor ||
surf.OriginalClass == SurfaceClass::Door ||
surf.IsAirBoundarySurf)) {
ShowSevereError(m_state,
format(RoutineName) +
"AirflowNetworkComponent: The opening must be assigned to a window, door, glassdoor or air boundary at " +
Expand Down Expand Up @@ -6432,9 +6428,10 @@ namespace AirflowNetwork {
}
if (MultizoneSurfaceData(i).OccupantVentilationControlNum == 0) MultizoneSurfaceData(i).OpenFactor = 0.0;
j = MultizoneSurfaceData(i).SurfNum;
if (m_state.dataSurface->SurfWinOriginalClass(j) == SurfaceClass::Window ||
m_state.dataSurface->SurfWinOriginalClass(j) == SurfaceClass::Door ||
m_state.dataSurface->SurfWinOriginalClass(j) == SurfaceClass::GlassDoor || m_state.dataSurface->Surface(j).IsAirBoundarySurf) {
auto const &surf = m_state.dataSurface->Surface(j);
if (surf.OriginalClass == SurfaceClass::Window ||
surf.OriginalClass == SurfaceClass::Door ||
surf.OriginalClass == SurfaceClass::GlassDoor || surf.IsAirBoundarySurf) {
if (MultizoneSurfaceData(i).OccupantVentilationControlNum > 0) {
if (MultizoneSurfaceData(i).OpeningStatus == OpenStatus::FreeOperation) {
if (MultizoneSurfaceData(i).OpeningProbStatus == ProbabilityCheck::ForceChange) {
Expand Down Expand Up @@ -6513,9 +6510,10 @@ namespace AirflowNetwork {
for (i = 1; i <= AirflowNetworkNumOfSurfaces; ++i) {
if (i > AirflowNetworkNumOfSurfaces - NumOfLinksIntraZone) continue;
j = MultizoneSurfaceData(i).SurfNum;
if (m_state.dataSurface->SurfWinOriginalClass(j) == SurfaceClass::Window ||
m_state.dataSurface->SurfWinOriginalClass(j) == SurfaceClass::Door ||
m_state.dataSurface->SurfWinOriginalClass(j) == SurfaceClass::GlassDoor) {
auto const &surf = m_state.dataSurface->Surface(j);
if (surf.OriginalClass == SurfaceClass::Window ||
surf.OriginalClass == SurfaceClass::Door ||
surf.OriginalClass == SurfaceClass::GlassDoor) {
if (MultizoneSurfaceData(i).HybridCtrlGlobal) {
MultizoneSurfaceData(i).OpenFactor = GlobalOpenFactor;
}
Expand Down Expand Up @@ -11302,7 +11300,9 @@ namespace AirflowNetwork {
if (ActualZoneNum > 0) {
for (ANSurfaceNum = 1; ANSurfaceNum <= AirflowNetworkNumOfSurfaces; ++ANSurfaceNum) {
SurfNum = MultizoneSurfaceData(ANSurfaceNum).SurfNum;
if (m_state.dataSurface->Surface(SurfNum).Zone == ActualZoneNum) {
auto const &surf = m_state.dataSurface->Surface(SurfNum);

if (surf.Zone == ActualZoneNum) {
if (VentilationCtrl == HybridVentCtrl_Close) {
MultizoneSurfaceData(ANSurfaceNum).HybridVentClose = true;
} else {
Expand All @@ -11312,10 +11312,10 @@ namespace AirflowNetwork {
if (ControlType == GlobalCtrlType) {
MultizoneSurfaceData(ANSurfaceNum).HybridCtrlGlobal = true;
if (HybridVentSysAvailMaster(SysAvailNum) == ActualZoneNum) {
if ((m_state.dataSurface->SurfWinOriginalClass(SurfNum) == SurfaceClass::Window ||
m_state.dataSurface->SurfWinOriginalClass(SurfNum) == SurfaceClass::Door ||
m_state.dataSurface->SurfWinOriginalClass(SurfNum) == SurfaceClass::GlassDoor) &&
m_state.dataSurface->Surface(SurfNum).ExtBoundCond == ExternalEnvironment) {
if ((surf.OriginalClass == SurfaceClass::Window ||
surf.OriginalClass == SurfaceClass::Door ||
surf.OriginalClass == SurfaceClass::GlassDoor) &&
surf.ExtBoundCond == ExternalEnvironment) {
MultizoneSurfaceData(ANSurfaceNum).HybridCtrlMaster = true;
Found = true;
}
Expand Down
Loading

4 comments on commit c0c5465

@nrel-bot
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dayltg3 (amirroth) - Win64-Windows-10-VisualStudio-16: OK (2759 of 2759 tests passed, 0 test warnings)

Build Badge Test Badge

@nrel-bot-2b
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dayltg3 (amirroth) - x86_64-Linux-Ubuntu-22.04-gcc-11.4: OK (3583 of 3587 tests passed, 6 test warnings)

Messages:\n

  • 5 tests had: EIO diffs.
  • 4 tests had: ESO big diffs.
  • 2 tests had: SSZ big diffs.
  • 2 tests had: ZSZ big diffs.
  • 1 test had: MTR big diffs.
  • 5 tests had: MAP diffs.

Failures:\n

regression Test Summary

  • Passed: 802
  • Failed: 4

Build Badge Test Badge

@nrel-bot-2
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dayltg3 (amirroth) - x86_64-Linux-Ubuntu-22.04-gcc-11.4-UnitTestsCoverage-Debug: OK (1972 of 1972 tests passed, 0 test warnings)

Build Badge Test Badge Coverage Badge

@nrel-bot-2c
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dayltg3 (amirroth) - x86_64-Linux-Ubuntu-22.04-gcc-11.4-IntegrationCoverage-Debug: OK (785 of 790 tests passed, 0 test warnings)

Failures:\n

integration Test Summary

  • Passed: 785
  • Failed: 5

Build Badge Test Badge Coverage Badge

Please sign in to comment.