Skip to content

Commit

Permalink
Merge pull request #8347 from energy-plus/window-struct2
Browse files Browse the repository at this point in the history
Heat balance surface data structure refactoring
  • Loading branch information
mjwitte authored Nov 18, 2020
2 parents 4c52948 + 53c182c commit 5fbd15c
Show file tree
Hide file tree
Showing 56 changed files with 1,875 additions and 2,431 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -623,7 +623,7 @@ \subsubsection{Interior Solar Radiation Absorbed by Opaque Surfaces}\label{inter

\begin{equation}
\begin{array}{l}
QD(ZoneNum) = DBZone(ZoneNum)*BeamSolarRad \\
QD(ZoneNum) = EnclSolDB(ZoneNum)*BeamSolarRad \\
\quad \quad \quad + InitialDifSolDistReflectedW(ZoneNum)
\end{array}
\end{equation}
Expand All @@ -632,14 +632,14 @@ \subsubsection{Interior Solar Radiation Absorbed by Opaque Surfaces}\label{inter

\emph{BeamSolarRad} is the outside beam normal solar irradiance {[}W/m\(^{2}\){]}

\emph{DBZone(ZoneNum)} is the diffuse solar radiation originating from beam solar that passes through the exterior windows in the zone and reflects diffusely from inside zone surfaces plus beam solar entering the zone as diffuse radiation from windows with shading devices or diffusing glass (all divided by BeamSolarRad)~~ {[}m\(^{2}\){]}
\emph{EnclSolDB(ZoneNum)} is the diffuse solar radiation originating from beam solar that passes through the exterior windows in the zone and reflects diffusely from inside zone surfaces plus beam solar entering the zone as diffuse radiation from windows with shading devices or diffusing glass (all divided by BeamSolarRad)~~ {[}m\(^{2}\){]}

\emph{InitialDifSolDistReflectedW(ZoneNum)} is the diffuse solar radiation originating from sky and sun related diffuse solar transmitted through the zone's exterior or interior windows into the zone, and reflected diffusely from inside zone surfaces.

\emph{DBZone(ZoneNum)} is calculated as:
\emph{EnclSolDB(ZoneNum)} is calculated as:

\begin{equation}
DBZone(ZoneNum) = BTOTZone - BABSZone{\rm{ [}}{{\rm{m}}^{\rm{2}}}]
EnclSolDB(ZoneNum) = BTOTZone - BABSZone{\rm{ [}}{{\rm{m}}^{\rm{2}}}]
\end{equation}

where
Expand Down
45 changes: 22 additions & 23 deletions src/EnergyPlus/AirflowNetworkBalanceManager.cc
Original file line number Diff line number Diff line change
Expand Up @@ -170,9 +170,7 @@ namespace AirflowNetworkBalanceManager {
using DataSurfaces::ExternalEnvironment;
using DataSurfaces::OtherSideCoefNoCalcExt;
using DataSurfaces::Surface;
using DataSurfaces::SurfaceClass_Door;
using DataSurfaces::SurfaceClass_GlassDoor;
using DataSurfaces::SurfaceClass_Window;
using DataSurfaces::SurfaceClass;
using DataSurfaces::TotSurfaces;
using DataSurfaces::WorldCoordSystem;
using DataZoneEquipment::ZoneEquipConfig;
Expand Down Expand Up @@ -3204,8 +3202,8 @@ namespace AirflowNetworkBalanceManager {
// Assign occupant ventilation control number from zone to surface
for (int i = 1; i <= AirflowNetworkNumOfSurfaces; ++i) {
j = MultizoneSurfaceData(i).SurfNum;
if (SurfWinOriginalClass(j) == SurfaceClass_Window || SurfWinOriginalClass(j) == SurfaceClass_Door ||
SurfWinOriginalClass(j) == SurfaceClass_GlassDoor) {
if (SurfWinOriginalClass(j) == SurfaceClass::Window || SurfWinOriginalClass(j) == SurfaceClass::Door ||
SurfWinOriginalClass(j) == SurfaceClass::GlassDoor) {
for (n = 1; n <= AirflowNetworkNumOfZones; ++n) {
if (MultizoneZoneData(n).ZoneNum == Surface(j).Zone) {
if (MultizoneZoneData(n).OccupantVentilationControlNum > 0 && MultizoneSurfaceData(i).OccupantVentilationControlNum == 0) {
Expand Down Expand Up @@ -4191,17 +4189,17 @@ namespace AirflowNetworkBalanceManager {
ShowContinueError(state, "10 deg of being horizontal. Airflows through large horizontal openings are poorly");
ShowContinueError(state, "modeled in the AirflowNetwork model resulting in only one-way airflow.");
}
if (!(SurfWinOriginalClass(MultizoneSurfaceData(count).SurfNum) == SurfaceClass_Window ||
SurfWinOriginalClass(MultizoneSurfaceData(count).SurfNum) == SurfaceClass_GlassDoor ||
SurfWinOriginalClass(MultizoneSurfaceData(count).SurfNum) == SurfaceClass_Door ||
if (!(SurfWinOriginalClass(MultizoneSurfaceData(count).SurfNum) == SurfaceClass::Window ||
SurfWinOriginalClass(MultizoneSurfaceData(count).SurfNum) == SurfaceClass::GlassDoor ||
SurfWinOriginalClass(MultizoneSurfaceData(count).SurfNum) == SurfaceClass::Door ||
Surface(MultizoneSurfaceData(count).SurfNum).IsAirBoundarySurf)) {
ShowSevereError(state, RoutineName +
"AirflowNetworkComponent: The opening must be assigned to a window, door, glassdoor or air boundary at " +
AirflowNetworkLinkageData(count).Name);
ErrorsFound = true;
}
if (SurfWinOriginalClass(MultizoneSurfaceData(count).SurfNum) == SurfaceClass_Door ||
SurfWinOriginalClass(MultizoneSurfaceData(count).SurfNum) == SurfaceClass_GlassDoor) {
if (SurfWinOriginalClass(MultizoneSurfaceData(count).SurfNum) == SurfaceClass::Door ||
SurfWinOriginalClass(MultizoneSurfaceData(count).SurfNum) == SurfaceClass::GlassDoor) {
if (MultizoneCompDetOpeningData(AirflowNetworkCompData(compnum).TypeNum).LVOType == 2) {
ShowSevereError(state, RoutineName +
"AirflowNetworkComponent: The opening with horizontally pivoted type must be assigned to a "
Expand All @@ -4221,9 +4219,10 @@ namespace AirflowNetworkBalanceManager {
ShowContinueError(state, "AirflowNetwork:Multizone:Component:SimpleOpening = " + AirflowNetworkCompData(compnum).Name);
ErrorsFound = true;
}
if (!(SurfWinOriginalClass(MultizoneSurfaceData(count).SurfNum) == SurfaceClass_Window ||
SurfWinOriginalClass(MultizoneSurfaceData(count).SurfNum) == SurfaceClass_GlassDoor ||
SurfWinOriginalClass(MultizoneSurfaceData(count).SurfNum) == SurfaceClass_Door ||

if (!(SurfWinOriginalClass(MultizoneSurfaceData(count).SurfNum) == SurfaceClass::Window ||
SurfWinOriginalClass(MultizoneSurfaceData(count).SurfNum) == SurfaceClass::GlassDoor ||
SurfWinOriginalClass(MultizoneSurfaceData(count).SurfNum) == SurfaceClass::Door ||
Surface(MultizoneSurfaceData(count).SurfNum).IsAirBoundarySurf)) {
ShowSevereError(state, RoutineName +
"AirflowNetworkComponent: The opening must be assigned to a window, door, glassdoor or air boundary at " +
Expand Down Expand Up @@ -4268,9 +4267,9 @@ namespace AirflowNetworkBalanceManager {
ShowContinueError(state, "with the object of AirflowNetwork:Multizone:Component:HorizontalOpening = " +
AirflowNetworkCompData(compnum).Name);
}
if (!(SurfWinOriginalClass(MultizoneSurfaceData(count).SurfNum) == SurfaceClass_Window ||
SurfWinOriginalClass(MultizoneSurfaceData(count).SurfNum) == SurfaceClass_GlassDoor ||
SurfWinOriginalClass(MultizoneSurfaceData(count).SurfNum) == SurfaceClass_Door ||
if (!(SurfWinOriginalClass(MultizoneSurfaceData(count).SurfNum) == SurfaceClass::Window ||
SurfWinOriginalClass(MultizoneSurfaceData(count).SurfNum) == SurfaceClass::GlassDoor ||
SurfWinOriginalClass(MultizoneSurfaceData(count).SurfNum) == SurfaceClass::Door ||
Surface(MultizoneSurfaceData(count).SurfNum).IsAirBoundarySurf)) {
ShowSevereError(state, RoutineName +
"AirflowNetworkComponent: The opening must be assigned to a window, door, glassdoor or air boundary at " +
Expand Down Expand Up @@ -5803,8 +5802,8 @@ namespace AirflowNetworkBalanceManager {
if (i > AirflowNetworkNumOfSurfaces - NumOfLinksIntraZone) continue;
if (MultizoneSurfaceData(i).OccupantVentilationControlNum == 0) MultizoneSurfaceData(i).OpenFactor = 0.0;
j = MultizoneSurfaceData(i).SurfNum;
if (SurfWinOriginalClass(j) == SurfaceClass_Window || SurfWinOriginalClass(j) == SurfaceClass_Door ||
SurfWinOriginalClass(j) == SurfaceClass_GlassDoor || Surface(j).IsAirBoundarySurf) {
if (SurfWinOriginalClass(j) == SurfaceClass::Window || SurfWinOriginalClass(j) == SurfaceClass::Door ||
SurfWinOriginalClass(j) == SurfaceClass::GlassDoor || Surface(j).IsAirBoundarySurf) {
if (MultizoneSurfaceData(i).OccupantVentilationControlNum > 0) {
if (MultizoneSurfaceData(i).OpeningStatus == OpenStatus::FreeOperation) {
if (MultizoneSurfaceData(i).OpeningProbStatus == ProbabilityCheck::ForceChange) {
Expand Down Expand Up @@ -5880,8 +5879,8 @@ namespace AirflowNetworkBalanceManager {
for (i = 1; i <= AirflowNetworkNumOfSurfaces; ++i) {
if (i > AirflowNetworkNumOfSurfaces - NumOfLinksIntraZone) continue;
j = MultizoneSurfaceData(i).SurfNum;
if (SurfWinOriginalClass(j) == SurfaceClass_Window || SurfWinOriginalClass(j) == SurfaceClass_Door ||
SurfWinOriginalClass(j) == SurfaceClass_GlassDoor) {
if (SurfWinOriginalClass(j) == SurfaceClass::Window || SurfWinOriginalClass(j) == SurfaceClass::Door ||
SurfWinOriginalClass(j) == SurfaceClass::GlassDoor) {
if (MultizoneSurfaceData(i).HybridCtrlGlobal) {
MultizoneSurfaceData(i).OpenFactor = GlobalOpenFactor;
}
Expand Down Expand Up @@ -10510,9 +10509,9 @@ namespace AirflowNetworkBalanceManager {
if (ControlType == GlobalCtrlType) {
MultizoneSurfaceData(ANSurfaceNum).HybridCtrlGlobal = true;
if (HybridVentSysAvailMaster(SysAvailNum) == ActualZoneNum) {
if ((DataSurfaces::SurfWinOriginalClass(SurfNum) == SurfaceClass_Window ||
DataSurfaces::SurfWinOriginalClass(SurfNum) == SurfaceClass_Door ||
DataSurfaces::SurfWinOriginalClass(SurfNum) == SurfaceClass_GlassDoor) &&
if ((DataSurfaces::SurfWinOriginalClass(SurfNum) == SurfaceClass::Window ||
DataSurfaces::SurfWinOriginalClass(SurfNum) == SurfaceClass::Door ||
DataSurfaces::SurfWinOriginalClass(SurfNum) == SurfaceClass::GlassDoor) &&
Surface(SurfNum).ExtBoundCond == ExternalEnvironment) {
MultizoneSurfaceData(ANSurfaceNum).HybridCtrlMaster = true;
Found = true;
Expand Down
3 changes: 1 addition & 2 deletions src/EnergyPlus/ChilledCeilingPanelSimple.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1704,7 +1704,6 @@ namespace CoolingPanelSimple {
using DataSurfaces::IntBlindOn;
using DataSurfaces::IntShadeOn;
using DataSurfaces::Surface;
using DataSurfaces::SurfaceClass_Window;
using DataSurfaces::SurfWinShadingFlag;
using DataSurfaces::SurfWinFrameArea;
using DataSurfaces::SurfWinProjCorrFrIn;
Expand All @@ -1731,7 +1730,7 @@ namespace CoolingPanelSimple {

Area = ThisSurf.Area;

if (ThisSurf.Class == SurfaceClass_Window) {
if (ThisSurf.Class == DataSurfaces::SurfaceClass::Window) {

if (SurfWinShadingFlag(SurfNum) == IntShadeOn || SurfWinShadingFlag(SurfNum) == IntBlindOn) {
// The area is the shade or blind area = the sum of the glazing area and the divider area (which is zero if no divider)
Expand Down
Loading

6 comments on commit 5fbd15c

@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.

develop (mjwitte) - x86_64-Linux-Ubuntu-18.04-gcc-7.5: OK (2297 of 2297 tests passed, 0 test warnings)

Build Badge Test Badge

@nrel-bot-3
Copy link

Choose a reason for hiding this comment

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

develop (mjwitte) - x86_64-MacOS-10.15-clang-11.0.0: OK (2277 of 2277 tests passed, 0 test warnings)

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.

develop (mjwitte) - x86_64-Linux-Ubuntu-18.04-gcc-7.5-UnitTestsCoverage-Debug: OK (1558 of 1558 tests passed, 0 test warnings)

Build Badge Test Badge Coverage Badge

@nrel-bot
Copy link

Choose a reason for hiding this comment

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

develop (mjwitte) - Win64-Windows-10-VisualStudio-16: Build Failed

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.

develop (mjwitte) - x86_64-Linux-Ubuntu-18.04-gcc-7.5-IntegrationCoverage-Debug: OK (721 of 722 tests passed, 0 test warnings)

Failures:\n

integration Test Summary

  • Passed: 721
  • Timeout: 1

Build Badge Test Badge Coverage Badge

@nrel-bot
Copy link

Choose a reason for hiding this comment

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

develop (mjwitte) - Win64-Windows-10-VisualStudio-16: OK (2250 of 2250 tests passed, 0 test warnings)

Build Badge Test Badge

Please sign in to comment.