Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TDD surface reordering and bug fixing #8540

Merged
merged 26 commits into from
Mar 4, 2021
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
c6ce40d
first
xuanluo113 Feb 9, 2021
4abec3a
Merge branch 'shading-flag' of https://github.com/energy-plus/EnergyP…
xuanluo113 Feb 15, 2021
8ecc60c
unit test
xuanluo113 Feb 16, 2021
6c4a305
Merge branch 'develop' of https://github.com/NREL/EnergyPlus into tdd…
xuanluo113 Feb 18, 2021
a355976
test index
xuanluo113 Feb 18, 2021
1106d34
merge
xuanluo113 Feb 18, 2021
6297ce4
bug fixing
xuanluo113 Feb 18, 2021
db0a019
Merge branch 'develop' of https://github.com/NREL/EnergyPlus into tdd…
xuanluo113 Feb 18, 2021
c7d1b0d
Merge branch 'develop' of https://github.com/NREL/EnergyPlus into tdd…
xuanluo113 Feb 19, 2021
eeed425
Merge branch 'develop' of https://github.com/NREL/EnergyPlus into tdd…
xuanluo113 Feb 20, 2021
22949e2
clean up
xuanluo113 Feb 20, 2021
b563dab
test reorder
xuanluo113 Feb 21, 2021
dedab55
Merge branch 'develop' of https://github.com/NREL/EnergyPlus into tdd…
xuanluo113 Feb 21, 2021
47e83ad
Merge branch 'develop' of https://github.com/NREL/EnergyPlus into tdd…
xuanluo113 Feb 24, 2021
6c618ad
clean up
xuanluo113 Feb 24, 2021
0e77c25
clean up
xuanluo113 Feb 24, 2021
336e2b4
index namings
xuanluo113 Mar 1, 2021
46290e1
Merge branch 'develop' of https://github.com/NREL/EnergyPlus into tdd…
xuanluo113 Mar 1, 2021
fb528cf
ht surface
xuanluo113 Mar 2, 2021
8b9fde0
address comments
xuanluo113 Mar 2, 2021
9e28029
Merge branch 'develop' of https://github.com/NREL/EnergyPlus into tdd…
xuanluo113 Mar 2, 2021
23c67e8
Merge develop; resolve conflicts
Myoldmopar Mar 2, 2021
411b382
a minor comments modification
xuanluo113 Mar 2, 2021
1dfd425
remove an if condition
xuanluo113 Mar 3, 2021
ebf3d3c
fix a unit test issue
xuanluo113 Mar 3, 2021
f951dd0
fix a unit test issue
xuanluo113 Mar 3, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 1 addition & 3 deletions src/EnergyPlus/ChilledCeilingPanelSimple.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1716,12 +1716,10 @@ namespace CoolingPanelSimple {

SumHATsurf = 0.0;

for (SurfNum = Zone(ZoneNum).HTSurfaceFirst; SurfNum <= Zone(ZoneNum).SurfaceLast; ++SurfNum) {
for (SurfNum = Zone(ZoneNum).HTSurfaceFirst; SurfNum <= Zone(ZoneNum).HTSurfaceLast; ++SurfNum) {

auto &ThisSurf(Surface(SurfNum));

if (!ThisSurf.HeatTransSurf) continue; // Skip non-heat transfer surfaces

Area = ThisSurf.Area;

if (ThisSurf.Class == DataSurfaces::SurfaceClass::Window) {
Expand Down
38 changes: 15 additions & 23 deletions src/EnergyPlus/ConvectionCoefficients.cc
Original file line number Diff line number Diff line change
Expand Up @@ -250,9 +250,7 @@ namespace ConvectionCoefficients {
}
for (ZoneNum = 1; ZoneNum <= state.dataGlobal->NumOfZones; ++ZoneNum) {

for (SurfNum = Zone(ZoneNum).HTSurfaceFirst; SurfNum <= Zone(ZoneNum).SurfaceLast; ++SurfNum) {

if (!Surface(SurfNum).HeatTransSurf) continue; // Skip non-heat transfer surfaces
for (SurfNum = Zone(ZoneNum).HTSurfaceFirst; SurfNum <= Zone(ZoneNum).HTSurfaceLast; ++SurfNum) {

if (present(ZoneToResimulate)) {
if ((ZoneNum != ZoneToResimulate) && (AdjacentZoneToSurface(SurfNum) != ZoneToResimulate)) {
Expand Down Expand Up @@ -2740,9 +2738,7 @@ namespace ConvectionCoefficients {

Real64 AirHumRat = DataHeatBalFanSys::ZoneAirHumRatAvg(ZoneNum);

for (auto SurfNum = Zone(ZoneNum).HTSurfaceFirst; SurfNum <= Zone(ZoneNum).SurfaceLast; ++SurfNum) {
if (!Surface(SurfNum).HeatTransSurf) continue; // Skip non-heat transfer surfaces

for (auto SurfNum = Zone(ZoneNum).HTSurfaceFirst; SurfNum <= Zone(ZoneNum).HTSurfaceLast; ++SurfNum) {
if (Surface(SurfNum).ExtBoundCond == DataSurfaces::KivaFoundation) {
state.dataSurfaceGeometry->kivaManager.surfaceConvMap[SurfNum].in = [=, &state](double Tsurf, double Tamb, double, double, double cosTilt) -> double {
return CalcCeilingDiffuserIntConvCoeff(
Expand Down Expand Up @@ -2826,9 +2822,7 @@ namespace ConvectionCoefficients {
}
}

for (SurfNum = Zone(ZoneNum).HTSurfaceFirst; SurfNum <= Zone(ZoneNum).SurfaceLast; ++SurfNum) {
if (!Surface(SurfNum).HeatTransSurf) continue; // Skip non-heat transfer surfaces

for (SurfNum = Zone(ZoneNum).HTSurfaceFirst; SurfNum <= Zone(ZoneNum).HTSurfaceLast; ++SurfNum) {
if (ACH <= 3.0) { // Use the other convection algorithm
if (!state.dataConstruction->Construct(Surface(SurfNum).Construction).TypeIsWindow) {
CalcASHRAEDetailedIntConvCoeff(state, SurfNum, SurfaceTemperatures(SurfNum), MAT(ZoneNum));
Expand Down Expand Up @@ -2922,7 +2916,7 @@ namespace ConvectionCoefficients {
HConvNet = 0.0;

// determine major width and minor width
for (SurfNum = Zone(ZoneNum).HTSurfaceFirst; SurfNum <= Zone(ZoneNum).SurfaceLast; ++SurfNum) {
for (SurfNum = Zone(ZoneNum).HTSurfaceFirst; SurfNum <= Zone(ZoneNum).HTSurfaceLast; ++SurfNum) {
if (Surface(SurfNum).Class != SurfaceClass::Wall) continue;

if (Surface(SurfNum).Width > majorW) {
Expand All @@ -2935,7 +2929,7 @@ namespace ConvectionCoefficients {
}

// assign major surfaces
for (SurfNum = Zone(ZoneNum).HTSurfaceFirst; SurfNum <= Zone(ZoneNum).SurfaceLast; ++SurfNum) {
for (SurfNum = Zone(ZoneNum).HTSurfaceFirst; SurfNum <= Zone(ZoneNum).HTSurfaceLast; ++SurfNum) {
if (Surface(SurfNum).Class != SurfaceClass::Wall) continue;

if (Surface(SurfNum).Width == majorW) {
Expand Down Expand Up @@ -2977,9 +2971,7 @@ namespace ConvectionCoefficients {
}

// Assign convection coefficients
for (SurfNum = Zone(ZoneNum).HTSurfaceFirst; SurfNum <= Zone(ZoneNum).SurfaceLast; ++SurfNum) {
if (!Surface(SurfNum).HeatTransSurf) continue; // Skip non-heat transfer surfaces

for (SurfNum = Zone(ZoneNum).HTSurfaceFirst; SurfNum <= Zone(ZoneNum).HTSurfaceLast; ++SurfNum) {
// Use ASHRAESimple correlation to give values for all the minor surfaces
CalcASHRAESimpleIntConvCoeff(state, SurfNum, SurfaceTemperatures(SurfNum), MAT(ZoneNum));

Expand Down Expand Up @@ -3496,7 +3488,7 @@ namespace ConvectionCoefficients {
thisWWR = -999.0; // throw error?
}
// first pass thru this zones surfaces to gather data
for (int SurfLoop = Zone(ZoneLoop).HTSurfaceFirst; SurfLoop <= Zone(ZoneLoop).SurfaceLast; ++SurfLoop) {
for (int SurfLoop = Zone(ZoneLoop).HTSurfaceFirst; SurfLoop <= Zone(ZoneLoop).HTSurfaceLast; ++SurfLoop) {
// first catch exterior walls and do summations
if ((Surface(SurfLoop).ExtBoundCond == ExternalEnvironment) && (Surface(SurfLoop).Class == SurfaceClass::Wall)) {
PerimExtLengthSum += Surface(SurfLoop).Width;
Expand All @@ -3509,7 +3501,7 @@ namespace ConvectionCoefficients {
}

// second pass thru zone surfs to fill data
for (int SurfLoop = Zone(ZoneLoop).HTSurfaceFirst; SurfLoop <= Zone(ZoneLoop).SurfaceLast; ++SurfLoop) {
for (int SurfLoop = Zone(ZoneLoop).HTSurfaceFirst; SurfLoop <= Zone(ZoneLoop).HTSurfaceLast; ++SurfLoop) {
// now fill values
Surface(SurfLoop).IntConvZoneWallHeight = Zone(ZoneLoop).CeilingHeight;
Surface(SurfLoop).IntConvZonePerimLength = PerimExtLengthSum;
Expand All @@ -3519,7 +3511,7 @@ namespace ConvectionCoefficients {

// third pass for window locations
if ((ExtWindowCount > 0) && (ExtWallCount > 0)) {
for (int SurfLoop = Zone(ZoneLoop).HTSurfaceFirst; SurfLoop <= Zone(ZoneLoop).SurfaceLast; ++SurfLoop) {
for (int SurfLoop = Zone(ZoneLoop).HTSurfaceFirst; SurfLoop <= Zone(ZoneLoop).HTSurfaceLast; ++SurfLoop) {
if ((Surface(SurfLoop).ExtBoundCond == ExternalEnvironment) &&
((Surface(SurfLoop).Class == SurfaceClass::Window) || (Surface(SurfLoop).Class == SurfaceClass::GlassDoor))) {
if (Surface(SurfLoop).IntConvWindowWallRatio < 0.5) {
Expand Down Expand Up @@ -4180,7 +4172,7 @@ namespace ConvectionCoefficients {
state.dataConvectionCoefficient->ActiveFloorCount = 0;
state.dataConvectionCoefficient->ActiveFloorArea = 0.0;

for (SurfLoop = Zone(ZoneLoop).HTSurfaceFirst; SurfLoop <= Zone(ZoneLoop).SurfaceLast; ++SurfLoop) {
for (SurfLoop = Zone(ZoneLoop).HTSurfaceFirst; SurfLoop <= Zone(ZoneLoop).HTSurfaceLast; ++SurfLoop) {
if (!Surface(SurfLoop).IntConvSurfHasActiveInIt) continue;
if (Surface(SurfLoop).Class == SurfaceClass::Wall || Surface(SurfLoop).Class == SurfaceClass::Door) {
++state.dataConvectionCoefficient->ActiveWallCount;
Expand Down Expand Up @@ -5164,7 +5156,7 @@ namespace ConvectionCoefficients {
} else if ((SELECT_CASE_var == VentilatedSlab_Num) || (SELECT_CASE_var == LoTempRadiant_Num)) {

if (state.dataZoneEquip->ZoneEquipConfig(ZoneNum).InFloorActiveElement) {
for (SurfLoop = Zone(ZoneNum).HTSurfaceFirst; SurfLoop <= Zone(ZoneNum).SurfaceLast; ++SurfLoop) {
for (SurfLoop = Zone(ZoneNum).HTSurfaceFirst; SurfLoop <= Zone(ZoneNum).HTSurfaceLast; ++SurfLoop) {
if (!Surface(SurfLoop).IntConvSurfHasActiveInIt) continue;
if (Surface(SurfLoop).Class == SurfaceClass::Floor) {
DeltaTemp = TH(2, 1, SurfLoop) - MAT(ZoneNum);
Expand All @@ -5183,7 +5175,7 @@ namespace ConvectionCoefficients {
}

if (state.dataZoneEquip->ZoneEquipConfig(ZoneNum).InCeilingActiveElement) {
for (SurfLoop = Zone(ZoneNum).HTSurfaceFirst; SurfLoop <= Zone(ZoneNum).SurfaceLast; ++SurfLoop) {
for (SurfLoop = Zone(ZoneNum).HTSurfaceFirst; SurfLoop <= Zone(ZoneNum).HTSurfaceLast; ++SurfLoop) {
if (!Surface(SurfLoop).IntConvSurfHasActiveInIt) continue;
if (Surface(SurfLoop).Class == SurfaceClass::Roof) {
DeltaTemp = TH(2, 1, SurfLoop) - MAT(ZoneNum);
Expand All @@ -5202,7 +5194,7 @@ namespace ConvectionCoefficients {
}

if (state.dataZoneEquip->ZoneEquipConfig(ZoneNum).InWallActiveElement) {
for (SurfLoop = Zone(ZoneNum).HTSurfaceFirst; SurfLoop <= Zone(ZoneNum).SurfaceLast; ++SurfLoop) {
for (SurfLoop = Zone(ZoneNum).HTSurfaceFirst; SurfLoop <= Zone(ZoneNum).HTSurfaceLast; ++SurfLoop) {
if (!Surface(SurfLoop).IntConvSurfHasActiveInIt) continue;
if (Surface(SurfLoop).Class == SurfaceClass::Wall || Surface(SurfLoop).Class == SurfaceClass::Door) {
DeltaTemp = TH(2, 1, SurfLoop) - MAT(ZoneNum);
Expand Down Expand Up @@ -5261,8 +5253,8 @@ namespace ConvectionCoefficients {

// Calculate Grashof, Reynolds, and Richardson numbers for the zone
// Grashof for zone air based on largest delta T between surfaces and zone height
Tmin = minval(TH(2, 1, {Zone(ZoneNum).HTSurfaceFirst, Zone(ZoneNum).SurfaceLast}));
Tmax = maxval(TH(2, 1, {Zone(ZoneNum).HTSurfaceFirst, Zone(ZoneNum).SurfaceLast}));
Tmin = minval(TH(2, 1, {Zone(ZoneNum).HTSurfaceFirst, Zone(ZoneNum).HTSurfaceLast}));
Tmax = maxval(TH(2, 1, {Zone(ZoneNum).HTSurfaceFirst, Zone(ZoneNum).HTSurfaceLast}));
GrH = (g * (Tmax - Tmin) * pow_3(Zone(ZoneNum).CeilingHeight)) / ((MAT(ZoneNum) + DataGlobalConstants::KelvinConv) * pow_2(v));

// Reynolds number = Vdot supply / v * cube root of zone volume (Goldstein and Noveselac 2010)
Expand Down
2 changes: 1 addition & 1 deletion src/EnergyPlus/DElightManagerF.cc
Original file line number Diff line number Diff line change
Expand Up @@ -305,7 +305,7 @@ namespace DElightManagerF {
// Count the number of opaque surfaces bounding the current zone
iNumOpaqueSurfs = 0;
iSurfaceFirst = zn.HTSurfaceFirst;
int const iSurfaceLast = zn.SurfaceLast; // ending loop variable for surfaces
int const iSurfaceLast = zn.HTSurfaceLast; // ending loop variable for surfaces

for (int isurf = iSurfaceFirst; isurf <= iSurfaceLast; ++isurf) {
auto &surf(Surface(isurf));
Expand Down
22 changes: 12 additions & 10 deletions src/EnergyPlus/DataHeatBalance.hh
Original file line number Diff line number Diff line change
Expand Up @@ -696,15 +696,17 @@ namespace DataHeatBalance {
int TempControlledZoneIndex; // this is the index number for TempControlledZone structure for lookup
// Pointers to Surface Data Structure
int AllSurfaceFirst; // First surface in zone including air boundaries
int HTSurfaceFirst; // First Heat Transfer Surface in Zone
int SurfaceLast; // Last Heat Transfer Surface in Zone
int NonWindowSurfaceFirst; // First Non-Window Heat Transfer Surface in Zone
int NonWindowSurfaceLast; // Last Non-Window Heat Transfer Surface in Zone
int AllSurfaceLast; // Last surface in zone including air boundaries
int HTSurfaceFirst; // First Heat Transfer Surface in Zone
int HTSurfaceLast; // Last Heat Transfer Surface in Zone
int OpaqOrIntMassSurfaceFirst; // First Opaque or Interior Mass Heat Transfer Surface in Zone
int OpaqOrIntMassSurfaceLast; // Last Opaque or Interior Mass Heat Transfer Surface in Zone
Copy link
Contributor

Choose a reason for hiding this comment

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

Just be clear, I would add (including doors)

int WindowSurfaceFirst; // First Window Heat Transfer Surface in Zone
int WindowSurfaceLast; // Last Window Heat Transfer Surface in Zone
int NonDomeLast; // Last non TDD Dome Surface in Zone
int TDDDomeFirst; // First TDD DomeSurface in Zone
int TDDDomeLast; // Last TDD Dome Window Heat Transfer Surface in Zone
int OpaqOrWinSurfaceFirst; // First opaque (including IntMass) or window (non TDD Dome) Surface in Zone
int OpaqOrWinSurfaceLast; // Last opaque (including IntMass) or window (non TDD Dome) Surface in Zone
int TDDDomeFirst; // First TDD Dome Surface in Zone
int TDDDomeLast; // Last TDD Dome Surface in Zone
int InsideConvectionAlgo; // Ref: appropriate values for Inside Convection solution
int NumSurfaces; // Number of surfaces for this zone
int NumSubSurfaces; // Number of subsurfaces for this zone (windows, doors, tdd dome and diffusers)
Expand Down Expand Up @@ -802,9 +804,9 @@ namespace DataHeatBalance {
ExtWindowArea_Multiplied(0.0), ExtGrossWallArea_Multiplied(0.0), ExtNetWallArea(0.0), TotalSurfArea(0.0), ExteriorTotalSurfArea(0.0),
ExteriorTotalGroundSurfArea(0.0), ExtGrossGroundWallArea(0.0), ExtGrossGroundWallArea_Multiplied(0.0), SystemZoneNodeNumber(0),
IsControlled(false), IsSupplyPlenum(false), IsReturnPlenum(false), ZoneEqNum(0), PlenumCondNum(0), TempControlledZoneIndex(0),
AllSurfaceFirst(0), HTSurfaceFirst(0), SurfaceLast(0), NonWindowSurfaceFirst(0), NonWindowSurfaceLast(0), WindowSurfaceFirst(0),
WindowSurfaceLast(0), NonDomeLast(0), TDDDomeFirst(0), TDDDomeLast(0), InsideConvectionAlgo(ASHRAESimple), NumSurfaces(0),
NumSubSurfaces(0), NumShadingSurfaces(0), OutsideConvectionAlgo(ASHRAESimple), Centroid(0.0, 0.0, 0.0),
AllSurfaceFirst(0), AllSurfaceLast(0), HTSurfaceFirst(0), HTSurfaceLast(0), OpaqOrIntMassSurfaceFirst(0), OpaqOrIntMassSurfaceLast(0),
WindowSurfaceFirst(0), WindowSurfaceLast(0), OpaqOrWinSurfaceFirst(0), OpaqOrWinSurfaceLast(0), TDDDomeFirst(0), TDDDomeLast(0),
InsideConvectionAlgo(ASHRAESimple), NumSurfaces(0), NumSubSurfaces(0), NumShadingSurfaces(0), OutsideConvectionAlgo(ASHRAESimple), Centroid(0.0, 0.0, 0.0),
MinimumX(0.0), MaximumX(0.0), MinimumY(0.0), MaximumY(0.0), MinimumZ(0.0), MaximumZ(0.0), RadiantEnclosureNum(0), SolarEnclosureNum(0),

OutDryBulbTemp(0.0), OutDryBulbTempEMSOverrideOn(false), OutDryBulbTempEMSOverrideValue(0.0), OutWetBulbTemp(0.0),
Expand Down
4 changes: 1 addition & 3 deletions src/EnergyPlus/ElectricBaseboardRadiator.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1141,9 +1141,7 @@ namespace ElectricBaseboardRadiator {

SumHATsurf = 0.0;

for (SurfNum = Zone(ZoneNum).HTSurfaceFirst; SurfNum <= Zone(ZoneNum).SurfaceLast; ++SurfNum) {
if (!Surface(SurfNum).HeatTransSurf) continue; // Skip non-heat transfer surfaces

for (SurfNum = Zone(ZoneNum).HTSurfaceFirst; SurfNum <= Zone(ZoneNum).HTSurfaceLast; ++SurfNum) {
Area = Surface(SurfNum).Area;

if (Surface(SurfNum).Class == SurfaceClass::Window) {
Expand Down
2 changes: 1 addition & 1 deletion src/EnergyPlus/HVACManager.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2907,7 +2907,7 @@ namespace HVACManager {
break;
}
}
for (SurfNum = Zone(ZoneNum).HTSurfaceFirst; SurfNum <= Zone(ZoneNum).SurfaceLast; ++SurfNum) {
for (SurfNum = Zone(ZoneNum).HTSurfaceFirst; SurfNum <= Zone(ZoneNum).HTSurfaceLast; ++SurfNum) {
if (DataSurfaces::SurfWinAirflowDestination(SurfNum) == AirFlowWindow_Destination_ReturnAir) {
ShowWarningError(state, "For zone=" + Zone(ZoneNum).Name +
" return air heat gain from air flow windows will be applied to the zone air.");
Expand Down
4 changes: 1 addition & 3 deletions src/EnergyPlus/HWBaseboardRadiator.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1791,9 +1791,7 @@ namespace HWBaseboardRadiator {

SumHATsurf = 0.0;

for (SurfNum = Zone(ZoneNum).HTSurfaceFirst; SurfNum <= Zone(ZoneNum).SurfaceLast; ++SurfNum) {
if (!Surface(SurfNum).HeatTransSurf) continue; // Skip non-heat transfer surfaces

for (SurfNum = Zone(ZoneNum).HTSurfaceFirst; SurfNum <= Zone(ZoneNum).HTSurfaceLast; ++SurfNum) {
Area = Surface(SurfNum).Area;

if (Surface(SurfNum).Class == SurfaceClass::Window) {
Expand Down
Loading