Skip to content

Commit f857dfa

Browse files
committed
Space IV.5 - Implement sizing by space ext perimeter length
1 parent a2bf2e9 commit f857dfa

File tree

3 files changed

+37
-38
lines changed

3 files changed

+37
-38
lines changed

src/EnergyPlus/DataHeatBalance.hh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -458,6 +458,7 @@ namespace DataHeatBalance {
458458
Real64 Volume = Constant::AutoCalculate; // Volume entered by user [m3] or calculated
459459
Real64 ExtGrossWallArea = 0.0; // Exterior Wall Area for Zone (Gross)
460460
Real64 ExteriorTotalSurfArea = 0.0; // Total surface area of all exterior surfaces for Zone
461+
Real64 extPerimeter = 0.0; // Total exposed perimeter (sum of width of exterior walls)
461462
int SystemZoneNodeNumber = 0; // This is the zone or space node number for the system for a controlled zone
462463
Real64 FloorArea = 0.0; // Floor area used for this space
463464
Real64 TotOccupants = 0.0; // total design occupancy (sum of NumberOfPeople for the space People objects, not multiplied)

src/EnergyPlus/DataZoneEquipment.cc

Lines changed: 34 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1867,11 +1867,9 @@ void ZoneEquipmentSplitterMixer::size(EnergyPlusData &state)
18671867
}
18681868
break;
18691869
case DataZoneEquipment::SpaceEquipSizingBasis::PerimeterLength:
1870-
ShowFatalError(state,
1871-
format("ZoneEquipmentSplitterMixer::size: Space Fraction Method={} not supported for {}={}",
1872-
DataZoneEquipment::spaceEquipSizingBasisNamesUC[(int)this->spaceSizingBasis],
1873-
BranchNodeConnections::ConnectionObjectTypeNames[(int)this->spaceEquipType],
1874-
this->Name));
1870+
for (auto &thisSpace : this->spaces) {
1871+
spacesTotal += state.dataHeatBal->space(thisSpace.spaceIndex).extPerimeter;
1872+
}
18751873
break;
18761874
default:
18771875
// If method is not set, then return
@@ -1890,43 +1888,41 @@ void ZoneEquipmentSplitterMixer::size(EnergyPlusData &state)
18901888
for (auto &thisSpace : this->spaces) {
18911889
thisSpace.fraction = spaceFrac;
18921890
}
1893-
return;
1891+
} else {
1892+
// Calculate space fractions
1893+
for (auto &thisSpace : this->spaces) {
1894+
if (thisSpace.fraction == DataSizing::AutoSize) {
1895+
switch (this->spaceSizingBasis) {
1896+
case DataZoneEquipment::SpaceEquipSizingBasis::DesignCoolingLoad:
1897+
thisSpace.fraction = state.dataSize->FinalSpaceSizing(thisSpace.spaceIndex).DesCoolLoad / spacesTotal;
1898+
break;
1899+
case DataZoneEquipment::SpaceEquipSizingBasis::DesignHeatingLoad:
1900+
thisSpace.fraction = state.dataSize->FinalSpaceSizing(thisSpace.spaceIndex).DesHeatLoad / spacesTotal;
1901+
break;
1902+
case DataZoneEquipment::SpaceEquipSizingBasis::FloorArea:
1903+
thisSpace.fraction = state.dataHeatBal->space(thisSpace.spaceIndex).FloorArea / spacesTotal;
1904+
break;
1905+
case DataZoneEquipment::SpaceEquipSizingBasis::Volume:
1906+
thisSpace.fraction = state.dataHeatBal->space(thisSpace.spaceIndex).Volume / spacesTotal;
1907+
break;
1908+
case DataZoneEquipment::SpaceEquipSizingBasis::PerimeterLength:
1909+
thisSpace.fraction = state.dataHeatBal->space(thisSpace.spaceIndex).extPerimeter / spacesTotal;
1910+
break;
1911+
default:
1912+
break;
1913+
}
1914+
}
1915+
}
18941916
}
1895-
1896-
// Calculate space fractions
1917+
// Report sizing results
18971918
int spaceCounter = 0;
18981919
for (auto &thisSpace : this->spaces) {
18991920
++spaceCounter;
1900-
if (thisSpace.fraction == DataSizing::AutoSize) {
1901-
switch (this->spaceSizingBasis) {
1902-
case DataZoneEquipment::SpaceEquipSizingBasis::DesignCoolingLoad:
1903-
thisSpace.fraction = state.dataSize->FinalSpaceSizing(thisSpace.spaceIndex).DesCoolLoad / spacesTotal;
1904-
break;
1905-
case DataZoneEquipment::SpaceEquipSizingBasis::DesignHeatingLoad:
1906-
thisSpace.fraction = state.dataSize->FinalSpaceSizing(thisSpace.spaceIndex).DesHeatLoad / spacesTotal;
1907-
break;
1908-
case DataZoneEquipment::SpaceEquipSizingBasis::FloorArea:
1909-
thisSpace.fraction = state.dataHeatBal->space(thisSpace.spaceIndex).FloorArea / spacesTotal;
1910-
break;
1911-
case DataZoneEquipment::SpaceEquipSizingBasis::Volume:
1912-
thisSpace.fraction = state.dataHeatBal->space(thisSpace.spaceIndex).Volume / spacesTotal;
1913-
break;
1914-
case DataZoneEquipment::SpaceEquipSizingBasis::PerimeterLength:
1915-
ShowFatalError(state,
1916-
format("ZoneEquipmentSplitterMixer::size: Space Fraction Method={} not supported for {}={}",
1917-
DataZoneEquipment::spaceEquipSizingBasisNamesUC[(int)this->spaceSizingBasis],
1918-
BranchNodeConnections::ConnectionObjectTypeNames[(int)this->spaceEquipType],
1919-
this->Name));
1920-
break;
1921-
default:
1922-
break;
1923-
}
1924-
BaseSizer::reportSizerOutput(state,
1925-
BranchNodeConnections::ConnectionObjectTypeNames[(int)this->spaceEquipType],
1926-
this->Name,
1927-
format("Space {} Fraction", spaceCounter),
1928-
thisSpace.fraction);
1929-
}
1921+
BaseSizer::reportSizerOutput(state,
1922+
BranchNodeConnections::ConnectionObjectTypeNames[(int)this->spaceEquipType],
1923+
this->Name,
1924+
format("Space {} Fraction", spaceCounter),
1925+
thisSpace.fraction);
19301926
}
19311927
}
19321928

src/EnergyPlus/SurfaceGeometry.cc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -423,6 +423,8 @@ namespace SurfaceGeometry {
423423
thisZone.ExtGrossWallArea += thisSurface.GrossArea;
424424
thisSpace.ExtGrossWallArea += thisSurface.GrossArea;
425425
thisZone.ExtGrossWallArea_Multiplied += thisSurface.GrossArea * thisZone.Multiplier * thisZone.ListMultiplier;
426+
thisZone.extPerimeter += thisSurface.Width;
427+
thisSpace.extPerimeter += thisSurface.Width;
426428
if (DetailedWWR) {
427429
print(state.files.debug,
428430
"{},Wall,{:.2R},{:.1R}\n",

0 commit comments

Comments
 (0)