-
Notifications
You must be signed in to change notification settings - Fork 396
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
Fix HVAC radiant heat gain with CondFD #10310
Changes from all commits
3305e69
041dbd7
a5bed1f
10d17cd
fd480aa
6062c0e
195ee79
37275cb
1d98cf0
5ed25d1
e52dca0
08d9724
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -698,10 +698,8 @@ namespace DataHeatBalance { | |
int zoneOABalanceIndex = 0; // Index to ZoneAirBalance for this zone, if any | ||
|
||
// Spaces | ||
bool anySurfacesWithoutSpace = false; // True if any surfaces in a zone do not have a space assigned in input | ||
bool anySurfacesWithSpace = false; // True if any surfaces in a zone have a space assigned in input | ||
Comment on lines
-701
to
-702
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Unrelated to the main defect, but moved these out of state. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 👍 |
||
EPVector<int> spaceIndexes; // Indexes to spaces in this zone | ||
int numSpaces = 0; // Number of spaces in this zone | ||
EPVector<int> spaceIndexes; // Indexes to spaces in this zone | ||
int numSpaces = 0; // Number of spaces in this zone | ||
|
||
// Default Constructor | ||
ZoneData() : Centroid(0.0, 0.0, 0.0) | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -1425,8 +1425,6 @@ struct SurfacesData : BaseGlobalStruct | |
bool AirflowWindows = false; // TRUE if one or more airflow windows | ||
bool ShadingTransmittanceVaries = false; // overall, shading transmittance varies for the building | ||
bool UseRepresentativeSurfaceCalculations = false; // Use Representative Surfaces for Calculations | ||
bool AnyHeatBalanceInsideSourceTerm = false; // True if any SurfaceProperty:HeatBalanceSourceTerm inside face used | ||
bool AnyHeatBalanceOutsideSourceTerm = false; // True if any SurfaceProperty:HeatBalanceSourceTerm outside face used | ||
bool AnyMovableInsulation = false; // True if any movable insulation presents | ||
bool AnyMovableSlat = false; // True if there are any movable slats for window blinds presented | ||
|
||
|
@@ -1451,6 +1449,9 @@ struct SurfacesData : BaseGlobalStruct | |
std::vector<int> AllHTKivaSurfaceList; // List of all Kiva foundation surfaces | ||
std::vector<int> AllSurfaceListReportOrder; // List of all surfaces - output reporting order | ||
std::vector<int> AllVaryAbsOpaqSurfaceList; // List of all opaque exterior surfaces with dynamic coating | ||
std::vector<int> allInsideSourceSurfaceList; // List of all surfaces with SurfaceProperty:HeatBalanceSourceTerm for inside face | ||
std::vector<int> allOutsideSourceSurfaceList; // List of all surfaces with SurfaceProperty:HeatBalanceSourceTerm for outside face | ||
std::vector<int> allGetsRadiantHeatSurfaceList; // List of all surfaces that receive radiant HVAC output | ||
Comment on lines
+1452
to
+1454
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. New surface lists for special cases. |
||
|
||
std::array<std::vector<int>, static_cast<int>(DataSurfaces::SurfaceFilter::Num)> SurfaceFilterLists; | ||
|
||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -409,6 +409,7 @@ namespace ElectricBaseboardRadiator { | |
} | ||
if (elecBaseboard.SurfacePtr(SurfNum) != 0) { | ||
state.dataSurface->surfIntConv(elecBaseboard.SurfacePtr(SurfNum)).getsRadiantHeat = true; | ||
state.dataSurface->allGetsRadiantHeatSurfaceList.emplace_back(elecBaseboard.SurfacePtr(SurfNum)); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Example of building the |
||
} | ||
|
||
AllFracsSummed += elecBaseboard.FracDistribToSurf(SurfNum); | ||
|
@@ -905,7 +906,12 @@ namespace ElectricBaseboardRadiator { | |
Real64 constexpr SmallestArea(0.001); // Smallest area in meters squared (to avoid a divide by zero) | ||
|
||
// Initialize arrays | ||
state.dataHeatBalFanSys->SurfQElecBaseboard = 0.0; | ||
for (auto &elecBaseboard : state.dataElectBaseboardRad->ElecBaseboard) { | ||
for (int radSurfNum = 1; radSurfNum <= elecBaseboard.TotSurfToDistrib; ++radSurfNum) { | ||
int surfNum = elecBaseboard.SurfacePtr(radSurfNum); | ||
state.dataHeatBalFanSys->surfQRadFromHVAC(surfNum).ElecBaseboard = 0.0; | ||
Comment on lines
-908
to
+912
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Instead of zeroing this for all surfaces, only need to touch the surfaces that actually receive radiant heat from electric baseboards. Similar changes for the other four equipment types (chilled panel, HW baseboard, Steam baseboard, high temp radiant). |
||
} | ||
} | ||
state.dataHeatBalFanSys->ZoneQElecBaseboardToPerson = 0.0; | ||
|
||
for (auto &elecBaseboard : state.dataElectBaseboardRad->ElecBaseboard) { | ||
|
@@ -918,8 +924,7 @@ namespace ElectricBaseboardRadiator { | |
if (state.dataSurface->Surface(SurfNum).Area > SmallestArea) { | ||
Real64 ThisSurfIntensity = | ||
(elecBaseboard.QBBElecRadSource * elecBaseboard.FracDistribToSurf(RadSurfNum) / state.dataSurface->Surface(SurfNum).Area); | ||
state.dataHeatBalFanSys->SurfQElecBaseboard(SurfNum) += ThisSurfIntensity; | ||
state.dataHeatBalSurf->AnyRadiantSystems = true; | ||
state.dataHeatBalFanSys->surfQRadFromHVAC(SurfNum).ElecBaseboard += ThisSurfIntensity; | ||
Comment on lines
-921
to
+927
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Previously |
||
if (ThisSurfIntensity > DataHeatBalFanSys::MaxRadHeatFlux) { | ||
ShowSevereError(state, "DistributeBBElecRadGains: excessive thermal radiation heat flux intensity detected"); | ||
ShowContinueError(state, "Surface = " + state.dataSurface->Surface(SurfNum).Name); | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
New struct to hold the old Array1Ds for SurfQHTRadSys, SurfQHWBaseboard, etc.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
:) :) :)