Skip to content
Open
Show file tree
Hide file tree
Changes from 19 commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
1840310
IDD adjustments for SurfaceProperty:LocalEnvironment and SurfacePrope…
joseph-robertson Mar 3, 2026
f889c1a
Move GetShadowingInput down below SetupZoneGeometry in GetBuildingData.
joseph-robertson Mar 3, 2026
0d6bb5f
Add method for checking Shading Calc Method not Scheduled when surfac…
joseph-robertson Mar 3, 2026
6a77e91
Improve and add unit tests for solar shading.
joseph-robertson Mar 3, 2026
99ae2e9
Formatting.
joseph-robertson Mar 3, 2026
1b6a01b
Formatting. Again.
joseph-robertson Mar 3, 2026
e3da607
Update unit test expected values related to autocalculatable defaults.
joseph-robertson Mar 3, 2026
1886efe
Update SurfaceProperty:LocalEnvironment docs to generalize acceptable…
joseph-robertson Mar 4, 2026
c8e2d9d
Remove SurfaceProperty:LocalEnvironment objects that reference shadin…
joseph-robertson Mar 4, 2026
5527d24
Merge branch 'develop' into surfprop-idd
joseph-robertson Mar 4, 2026
1d01bae
Merge branch 'develop' into surfprop-idd
joseph-robertson Mar 5, 2026
937209b
Merge branch 'develop' into surfprop-idd
mitchute Mar 6, 2026
e3475b7
fixup new format messages
mitchute Mar 6, 2026
929b663
Merge branch 'develop' into surfprop-idd
joseph-robertson Mar 12, 2026
5923af2
Merge branch 'develop' into surfprop-idd
joseph-robertson Mar 16, 2026
1f27870
Merge branch 'develop' into surfprop-idd
joseph-robertson Mar 31, 2026
e2688a6
Update idd with type real for view factor fields.
joseph-robertson Mar 31, 2026
2d31ce3
Set view factor variables to true if not autocalculated.
joseph-robertson Apr 2, 2026
22add4e
Handle autocalculated view factors at point of use.
joseph-robertson Apr 2, 2026
cfaacfc
Merge branch 'develop' into surfprop-idd
joseph-robertson Apr 2, 2026
e6ecf25
Formatting.
joseph-robertson Apr 2, 2026
dbb846b
Update view factor field descriptions for SurfaceProperty:Surrounding…
joseph-robertson Apr 2, 2026
0c1c5c9
Update unit tests for blank view factor to mean autocalculated and no…
joseph-robertson Apr 2, 2026
3a7efbb
Merge branch 'develop' into surfprop-idd
joseph-robertson Apr 8, 2026
1a91765
Merge branch 'develop' into surfprop-idd
joseph-robertson Apr 9, 2026
0588a7b
Merge branch 'develop' into surfprop-idd
joseph-robertson Apr 14, 2026
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
Original file line number Diff line number Diff line change
Expand Up @@ -2713,7 +2713,7 @@ \subsubsection{References}\label{references-gnd-srfs}

\subsection{SurfaceProperty:LocalEnvironment}\label{surfacePropertylocalEnvironment}

The object links to an exterior surface object \textbf{BuildingSurface:Detailed} or an exterior fenestration object \textbf{FenestrationSurface:Detailed} and is used when there is a need to calculate surface level environmental data externally and import them into the simulation to override existing environmental data, including external solar shading fractions, local air velocity, temperature and humidity, and surrounding surface temperatures, sky view factor, ground surfaces view factors, ground surfaces temperature and ground surfaces reflectance. The object links to four optional objects including a schedule object declared by \textbf{Field: Sunlit Fraction Schedule Name}, a \textbf{\hyperref[surfacePropertySurroundingSurfaces]{SurfaceProperty:SurroundingSurfaces}} object declared by \textbf{Field: Surrounding Surfaces Object Name}, an \textbf{\hyperref[outdoorairnode]{OutdoorAir:Node}} object declared by \textbf{Field: Outdoor Air Node Name}, and a \textbf{\hyperref[surfacePropertyGroundSurfaces]{SurfaceProperty:GroundSurfaces}} object declared by
The object links to an exterior surface object (e.g., \textbf{BuildingSurface:Detailed}) or an exterior fenestration object (e.g., \textbf{FenestrationSurface:Detailed}) and is used when there is a need to calculate surface level environmental data externally and import them into the simulation to override existing environmental data, including external solar shading fractions, local air velocity, temperature and humidity, and surrounding surface temperatures, sky view factor, ground surfaces view factors, ground surfaces temperature and ground surfaces reflectance. The object links to four optional objects including a schedule object declared by \textbf{Field: Sunlit Fraction Schedule Name}, a \textbf{\hyperref[surfacePropertySurroundingSurfaces]{SurfaceProperty:SurroundingSurfaces}} object declared by \textbf{Field: Surrounding Surfaces Object Name}, an \textbf{\hyperref[outdoorairnode]{OutdoorAir:Node}} object declared by \textbf{Field: Outdoor Air Node Name}, and a \textbf{\hyperref[surfacePropertyGroundSurfaces]{SurfaceProperty:GroundSurfaces}} object declared by
\textbf{Field: Ground Surfaces Object Name}. The object provides inputs to calculate shading, solar radiation, zone air balance, and surface exterior heat balance.

\subsubsection{Field: Name}\label{field-surf-localenv-name}
Expand Down
10 changes: 7 additions & 3 deletions idd/Energy+.idd.in
Original file line number Diff line number Diff line change
Expand Up @@ -18873,7 +18873,7 @@ SurfaceProperty:LocalEnvironment,
\reference SurfaceLocalEnvironmentNames
A2, \field Exterior Surface Name
\type object-list
\object-list SurfaceNames
\object-list AllHeatTranSurfNames
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I assume this change was made to include FenestrationSurface:Detailed in the list of object names in the IDF Editor. However, AllHeatTranSurfNames (and SurfaceNames) also includes objects that should not show up in that list provided by the IDF Editor. It may also be that the IO Ref description below does not include all valid surface types but I did not check that. The fix would be to add a new reference to the valid objects and use that here instead?

1.11.28 SurfaceProperty:LocalEnvironment
The object links to an exterior surface object BuildingSurface:Detailed or an exterior fenestration object
FenestrationSurface:Detailed and is used when ...

FenestrationSurface:Detailed,
   \memo Allows for detailed entry of subsurfaces
   \memo (windows, doors, glass doors, tubular daylighting devices).
   \min-fields 18
   \format vertices
A1 , \field Name
   \required-field
   \type alpha
   \reference SubSurfNames
   \reference GlazedExtSubSurfNames
   \reference SurfAndSubSurfNames
   \reference AllHeatTranSurfNames

For example, what good would it do to use SurfaceProperty:LocalEnvironment with an adiabatic floor? Maybe I am overthinking this and this change is sufficient to at least include the relevant objects.

Floor:Adiabatic,
   \memo Allows for simplified entry of exterior floors
   \memo ignoring ground contact or interior floors.
   \memo View Factor to Ground is automatically calculated.
A1 , \field Name
   \required-field
   \type alpha
   \reference SurfaceNames
   \reference SurfAndSubSurfNames
   \reference AllHeatTranSurfNames

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Good point. For example currently if you open SolarShadingTest_ExternalFraction.idf in IDF Editor, the list of SurfaceProperty:LocalEnvironment objects will initially populate the Exterior Surface Name fields with:

  • Shading:Site:Detailed (invalid)
  • FenestrationSurface:Detailed (invalid)
  • BuildingSurface:Detailed (valid)

But the dropdowns don't show any Shading:Site:Detailed or FenestrationSurface:Detailed objects. If we switched SurfaceNames -> AllHeatTranSurfNames we'd still be including invalid Floor:Adiabatic in the dropdowns. So assuming the docs are correct, we'd need a reference that is shared between only FenestrationSurface:Detailed and BuildingSurface:Detailed; if one doesn't already exist, we need to add a new one.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Be careful when thinking the docs are correct. I think as a user I would expect Wall:Detailed to be the same as BuildingSurface:Detailed in the context of SurfaceProperty:LocalEnvironment. Even an exterior door should be able to use the local environment properties? I am sure you can think of other use cases for this object.

Copy link
Copy Markdown
Collaborator Author

@joseph-robertson joseph-robertson Mar 4, 2026

Choose a reason for hiding this comment

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

See 1886efe. Indeed Wall:Detailed, e.g., is a valid object (I checked locally). Based on the code, shading objects are certainly invalid. So I propose that we stick with the \object-list AllHeatTranSurfNames change (to pick up fenestration), but not get overly ambitious with a new reference as we may accidentally exclude a valid object type.

\note Enter the name of an exterior surface object
A3, \field Sunlit Fraction Schedule Name
\type object-list
Expand Down Expand Up @@ -18918,19 +18918,23 @@ SurfaceProperty:SurroundingSurfaces,
\type alpha
\reference SurroundingSurfacesNames
N1, \field Sky View Factor
\type real
\minimum 0.0
\maximum 1.0
\default 0.5
\autocalculatable
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Where do these inputs get autocalculated?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

I believe right in here inside HeatBalanceSurfaceManager.cc.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I don't think so:

    s_ipsc->cCurrentModuleObject = "SurfaceProperty:SurroundingSurfaces";
            auto &SrdSurfsProp = state.dataSurface->SurroundingSurfsProperty(Loop);

            // N1: sky view factor
            if (!s_ipsc->lNumericFieldBlanks(1)) {
                SrdSurfsProp.SkyViewFactor = s_ipsc->rNumericArgs(1);
                SrdSurfsProp.IsSkyViewFactorSet = true;
            }

Then in HeatBalanceSurfaceManager:

        if (Surface.SurfHasSurroundingSurfProperty) {
            SrdSurfsNum = Surface.SurfSurroundingSurfacesNum;
            auto &SrdSurfsProperty = state.dataSurface->SurroundingSurfsProperty(SrdSurfsNum);
            SurfsSkyViewFactor = SrdSurfsProperty.SkyViewFactor;   <--- SkyViewFactor = -99999.0
            IsSkyViewFactorSet = SrdSurfsProperty.IsSkyViewFactorSet;
            if (SurfsSkyViewFactor > 0.0) {                             <---- SurfsSkyViewFactor = -99999.0
                SrdSurfsViewFactor += SurfsSkyViewFactor;
            }

And then you would hit the code (just below here) in your link. So something needs to be done here to "autocalculate" a view factor. Note that you added "autocalculate" to the idd so there would be no code yet to account for that. I'm not sure how you would automatically calculate a view factor. Maybe that's why this field wasn't autosizable in the first place?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

My interpretation is that my link is where view factor "autocalculations" are done.

When sky view factor defined but ground view factor not defined, ground view factor = 1 - all other defined view factors.

When ground view factor defined but sky view factor not defined, sky view factor = 1 - all other defined view factors.

When neither defined, continue to use the original proportion.

I agree that the PR does not yet do anything with Constant::AutoCalculate. Maybe it should.

\default autocalculate
\note optional
A2, \field Sky Temperature Schedule Name
\type object-list
\object-list ScheduleNames
\note Schedule values are real numbers, -100.0 to 100.0, units C
\note optional
N2, \field Ground View Factor
\type real
\minimum 0.0
\maximum 1.0
\default 0.5
\autocalculatable
\default autocalculate
\note optional
A3, \field Ground Temperature Schedule Name
\type object-list
Expand Down
4 changes: 2 additions & 2 deletions src/EnergyPlus/HeatBalanceManager.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1812,11 +1812,11 @@ namespace HeatBalanceManager {
// METHODOLOGY EMPLOYED:
// The GetObjectItem routines are employed to retrieve the data.

SolarShading::GetShadowingInput(state);

GetZoneData(state, ErrorsFound); // Read Zone data from input file

SurfaceGeometry::SetupZoneGeometry(state, ErrorsFound);

SolarShading::GetShadowingInput(state);
Comment on lines 1817 to +1819
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

This PR inadvertently moved GetShadowingInput before SetupZoneGeometry. But we need it after so that surface data is read first. The existing relevant unit test didn't catch this because of this reason.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

@RKStrand Are you OK with this change? I believe the only regression implication is to change the order of a few lines in the EIO file.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

@joseph-robertson Um, yeah, as long as it doesn't trip any weird things in the unit tests, I'm guessing it will be okay. I seem to vaguely remember some recent work here and there were some issues with order dependence on some of the calls in this area of the code. I think I couldn't move something up as high as I thought because it caused other crashes because stuff wasn't read in yet. Anyway, if you move it an there are no unit test or test suite issues that pop up, then it's probably fine.

}

void GetZoneData(EnergyPlusData &state, bool &ErrorsFound) // If errors found in input
Expand Down
13 changes: 8 additions & 5 deletions src/EnergyPlus/HeatBalanceSurfaceManager.cc
Original file line number Diff line number Diff line change
Expand Up @@ -9922,22 +9922,25 @@ void InitSurfacePropertyViewFactors(EnergyPlusData &state)
auto &SrdSurfsProperty = state.dataSurface->SurroundingSurfsProperty(SrdSurfsNum);
SurfsSkyViewFactor = SrdSurfsProperty.SkyViewFactor;
IsSkyViewFactorSet = SrdSurfsProperty.IsSkyViewFactorSet;
if (SurfsSkyViewFactor > 0.0) {
if (SurfsSkyViewFactor != DataSizing::AutoSize) {
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Somewhere there needs to be:

if (SrdSurfsProperty.SkyViewFactor == DataSizing::AutoSize) {
    SrdSurfsProperty.SkyViewFactor = `some calculation`;
    SrdSurfsProperty.IsSkyViewFactorSet = true;
}

Copy link
Copy Markdown
Collaborator

@rraustad rraustad Apr 2, 2026

Choose a reason for hiding this comment

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

I looked at your link again. I think your right. If these factors are not yet set then they will get set around lines 9904 - 9942. Usually there would be a report in the eio for autosized/autocalculated fields.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

@rraustad Looking at some of the outputs for these view factors, I'm running into some confusing issues. For example if you look at the HeatTransfer Surface table in eplustbl.htm for testfile SurfacePropGroundSurfaces_LWR.idf, you see ViewFactorToSky=1.0 for Surface Name="Zn003:Roof001". But clearly in the IDF file the attached SurfaceProperty:SurroundingSurfaces object shows field Sky View Factor=0.0. Table entry ViewFactorToSky-IR=0.0 looks correct.

Looks like OutputReports.cc reports thisSurface.ViewFactorSky whereas HeatBalanceSurfaceManager.cc deals with Surface.SkyViewFactor (note the ViewFactorSky vs SkyViewFactor difference). Is this intentional, or a bug? Any insight here on how these variables are all related?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I don't know what the difference is but I see this:

struct SurfaceData
{
    Real64 ViewFactorGround;      // View factor to the ground from the exterior of the surface for diffuse solar radiation
    Real64 ViewFactorSky;         // View factor to the sky from the exterior of the surface for diffuse solar radiation
    Real64 ViewFactorGroundIR;    // View factor to the ground and shadowing surfaces from the exterior of the surface for IR radiation
    Real64 ViewFactorSkyIR; // View factor to the sky from the exterior of the surface for IR radiation Special/optional other side coefficients

struct SurroundingSurfacesProperty
{
    // Members
    std::string Name;
    Real64 SkyViewFactor = 0.0;                 // sky view factor
    Real64 GroundViewFactor = 0.0;              // ground view factor

Copy link
Copy Markdown
Collaborator Author

@joseph-robertson joseph-robertson Apr 3, 2026

Choose a reason for hiding this comment

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

Ah ok. So ViewFactorGround seems to come from BuildingSurface:Detailed's "View Factor to Ground" field. Note 1 in here describes where the view factor to sky comes from. Note 2 in the same link comments that the corresponding IR view factors are calculated based on the optional SurfaceProperty:SurroundingSurfaces and SurfaceProperty:GroundSurfaces objects that are involved in this PR.

Neither the eplustbl.html or eplusout.eio file seems to list any SurfaceProperty:SurroundingSurfaces or SurfaceProperty:GroundSurfaces objects. So I don't think there are any reporting considerations to be made for their autosized/autocalculated fields.

SrdSurfsViewFactor += SurfsSkyViewFactor;
}
if (!Surface.IsSurfPropertyGndSurfacesDefined) {
SrdSurfsViewFactor += SrdSurfsProperty.GroundViewFactor;
IsGroundViewFactorSet = SrdSurfsProperty.IsGroundViewFactorSet;
GroundSurfsViewFactor = SrdSurfsProperty.GroundViewFactor;
IsGroundViewFactorSet = SrdSurfsProperty.IsGroundViewFactorSet;
if (GroundSurfsViewFactor != DataSizing::AutoSize) {
SrdSurfsViewFactor += GroundSurfsViewFactor;
}
}
for (int SrdSurfNum = 1; SrdSurfNum <= SrdSurfsProperty.TotSurroundingSurface; SrdSurfNum++) {
SrdSurfsViewFactor += SrdSurfsProperty.SurroundingSurfs(SrdSurfNum).ViewFactor;
}
}
if (Surface.IsSurfPropertyGndSurfacesDefined) {
GndSurfsNum = Surface.SurfPropertyGndSurfIndex;
IsGroundViewFactorSet = state.dataSurface->GroundSurfsProperty(GndSurfsNum).IsGroundViewFactorSet;
GroundSurfsViewFactor = state.dataSurface->GroundSurfsProperty(GndSurfsNum).SurfsViewFactorSum;
auto &GrndSurfsProperty = state.dataSurface->GroundSurfsProperty(GndSurfsNum);
GroundSurfsViewFactor = GrndSurfsProperty.SurfsViewFactorSum;
IsGroundViewFactorSet = GrndSurfsProperty.IsGroundViewFactorSet;
SrdSurfsViewFactor += GroundSurfsViewFactor;
}

Expand Down
40 changes: 37 additions & 3 deletions src/EnergyPlus/SolarShading.cc
Original file line number Diff line number Diff line change
Expand Up @@ -494,12 +494,15 @@ void GetShadowingInput(EnergyPlusData &state)
EnergyPlus::format("Value entered=\"{}\" while no Schedule:File:Shading object is defined, InternalCalculation will be used.",
state.dataIPShortCut->cAlphaArgs(aNum)));
}
checkNotScheduledSurfacePresent(state);
} else if (Util::SameString(state.dataIPShortCut->cAlphaArgs(aNum), "PolygonClipping")) {
state.dataSysVars->shadingMethod = ShadingMethod::PolygonClipping;
state.dataIPShortCut->cAlphaArgs(aNum) = "PolygonClipping";
checkNotScheduledSurfacePresent(state);
} else if (Util::SameString(state.dataIPShortCut->cAlphaArgs(aNum), "PixelCounting")) {
state.dataSysVars->shadingMethod = ShadingMethod::PixelCounting;
state.dataIPShortCut->cAlphaArgs(aNum) = "PixelCounting";
checkNotScheduledSurfacePresent(state);
if (NumNumbers >= 3) {
pixelRes = (unsigned)state.dataIPShortCut->rNumericArgs(3);
}
Expand Down Expand Up @@ -531,6 +534,7 @@ void GetShadowingInput(EnergyPlusData &state)
} else {
state.dataIPShortCut->cAlphaArgs(aNum) = "PolygonClipping";
state.dataSysVars->shadingMethod = ShadingMethod::PolygonClipping;
checkNotScheduledSurfacePresent(state);
}

aNum++;
Expand Down Expand Up @@ -831,7 +835,7 @@ void processShadowingInput(EnergyPlusData &state)

void checkScheduledSurfacePresent(EnergyPlusData &state)
{
// User has chosen "Scheduled" for sunlit fraction so check to see which surfaces don't have a schedule
// User has chosen "Scheduled" for sunlit fraction so check to see which surfaces don't have a schedule.
int numNotDef = 0;
int constexpr maxErrMessages = 50;
auto &surfData = state.dataSurface;
Expand All @@ -846,7 +850,7 @@ void checkScheduledSurfacePresent(EnergyPlusData &state)
if (numNotDef == 1) {
ShowWarningError(
state,
EnergyPlus::format("ShadowCalculation specified Schedule for the Shading Calculation Method but no schedule provided for {}",
EnergyPlus::format("ShadowCalculation specified Schedule for the Shading Calculation Method but no schedule provided for {}.",
thisSurf.Name));
ShowContinueError(
state, "When Schedule is selected for the Shading Calculation Method and no schedule is provided for a particular surface,");
Expand All @@ -855,7 +859,37 @@ void checkScheduledSurfacePresent(EnergyPlusData &state)
ShowContinueError(state, "for sunlit fraction if this was not desired. Otherwise, this surface will not be shaded at all.");
} else if (numNotDef <= maxErrMessages) {
ShowWarningError(
state, EnergyPlus::format("No schedule was provided for {} either. See above error message for more details", thisSurf.Name));
state, EnergyPlus::format("No schedule was provided for {} either. See above error message for more details.", thisSurf.Name));
}
}
}
if (numNotDef > maxErrMessages) {
ShowContinueError(state, EnergyPlus::format("This message is only shown for the first {} occurrences of this issue.", maxErrMessages));
}
}

void checkNotScheduledSurfacePresent(EnergyPlusData &state)
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

New method for issuing a warning when a surface has a sunlit fraction schedule but the ShadowCalculation object has Shading Calculation Method != Scheduled. This is the contrapositive (?!) to checkScheduledSurfacePresent.

{
// User has *not* chosen "Scheduled" for sunlit fraction so check to see which surfaces *have* a schedule.
int numNotDef = 0;
int constexpr maxErrMessages = 50;
auto &surfData = state.dataSurface;
for (int surfNum = 1; surfNum <= surfData->TotSurfaces; ++surfNum) {
auto &thisSurf = surfData->Surface(surfNum);
if ((thisSurf.Class == SurfaceClass::Shading || thisSurf.Class == SurfaceClass::Detached_F || thisSurf.Class == SurfaceClass::Detached_B ||
thisSurf.Class == SurfaceClass::Overhang || thisSurf.Class == SurfaceClass::Fin)) {
continue; // skip shading surfaces
}
if (thisSurf.SurfSchedExternalShadingFrac) {
numNotDef += 1;
if (numNotDef == 1) {
ShowWarningError(
state,
EnergyPlus::format("ShadowCalculation did not specify Schedule for the Shading Calculation Method but schedule provided for {}.",
thisSurf.Name));
} else if (numNotDef <= maxErrMessages) {
ShowWarningError(state,
EnergyPlus::format("Schedule was also provided for {}. See above error message for more details.", thisSurf.Name));
}
}
}
Expand Down
2 changes: 2 additions & 0 deletions src/EnergyPlus/SolarShading.hh
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,8 @@ namespace SolarShading {

void checkScheduledSurfacePresent(EnergyPlusData &state);

void checkNotScheduledSurfacePresent(EnergyPlusData &state);

void AllocateModuleArrays(EnergyPlusData &state);

void AnisoSkyViewFactors(EnergyPlusData &state);
Expand Down
12 changes: 6 additions & 6 deletions src/EnergyPlus/SurfaceGeometry.cc
Original file line number Diff line number Diff line change
Expand Up @@ -8183,9 +8183,9 @@ namespace SurfaceGeometry {
SrdSurfsProp.Name = s_ipsc->cAlphaArgs(1);

// N1: sky view factor
if (!s_ipsc->lNumericFieldBlanks(1)) {
SrdSurfsProp.SkyViewFactor = s_ipsc->rNumericArgs(1);
SrdSurfsProp.IsSkyViewFactorSet = true;
SrdSurfsProp.SkyViewFactor = s_ipsc->rNumericArgs(1);
if (SrdSurfsProp.SkyViewFactor != DataSizing::AutoSize) {
SrdSurfsProp.IsSkyViewFactorSet = true;
}

// A2: sky temp sch name
Expand All @@ -8195,9 +8195,9 @@ namespace SurfaceGeometry {
}

// N2: ground view factor
if (!s_ipsc->lNumericFieldBlanks(2)) {
SrdSurfsProp.GroundViewFactor = s_ipsc->rNumericArgs(2);
SrdSurfsProp.IsGroundViewFactorSet = true;
SrdSurfsProp.GroundViewFactor = s_ipsc->rNumericArgs(2);
if (SrdSurfsProp.GroundViewFactor != DataSizing::AutoSize) {
SrdSurfsProp.IsGroundViewFactorSet = true;
}

// A3: ground temp sch name
Expand Down
Loading
Loading