Skip to content

Implementation of Fixed and Variable Absorptances at the Inside Face of Materials - #11750

Merged
mitchute merged 29 commits into
developfrom
11393InteriorExteriorAbsorptanceFieldsImplementation
Aug 24, 2026
Merged

mitchute merged 29 commits into
developfrom
11393InteriorExteriorAbsorptanceFieldsImplementation

Conversation

@RKStrand

Copy link
Copy Markdown
Contributor

Pull request overview

Description of the purpose of this PR

Materials in EnergyPlus have traditionally assumed that the thermal, solar, and visible absorptances are the same on both the inside and outside face and characterized by a single value. This has also been true even for the variable absorptance value entered with the MaterialProperty:VariableAbsorptance input since though it allowed the value to vary that value was used on both faces of the material. This feature implements the ability to control the value of the thermal, solar, and visible absorptances at both the inside and outside face of regular and no-mass materials. Existing input files still operate as they have previously since when only the outside values of these absorptances are entered the inside values default to the outside values. In addition, for variable absorptance input, new input fields allows the user to varying the values at either the inside or outside face and these variations can be independent and different. As with constant value material definitions, when the new fields for the inside face of a variable absorptance input are not entered, they default to the information entered for the outside face. Along with new unit tests and a new input file in the test suite to show the use of these new features, new output variables were added to allow the user to report the thermal and solar absorptance at the
inside and outside face of surfaces. The new input file also demonstrates the new output variables and verifies their correct assignment inside the code.

New differences in existing input files are expected because in the absence of the new input fields/capabilities, EnergyPlus will default to use the same values at the inside and outside face for absorptances.

Pull Request Author

  • Title of PR should be user-synopsis style (clearly understandable in a standalone changelog context)
  • Label the PR with at least one of: Defect, Refactoring, NewFeature, Performance, and/or DoNoPublish
  • Pull requests that impact EnergyPlus code must also include unit tests to cover enhancement or defect repair
  • Author should provide a "walkthrough" of relevant code changes using a GitHub code review comment process
  • If any diffs are expected, author must demonstrate they are justified using plots and descriptions
  • If changes fix a defect, the fix should be demonstrated in plots and descriptions
  • If any defect files are updated to a more recent version, upload new versions here or on DevSupport
  • If IDD requires transition, transition source, rules, ExpandObjects, and IDFs must be updated, and add IDDChange label
  • If structural output changes, add to output rules file and add OutputChange label
  • If adding/removing any LaTeX docs or figures, update that document's CMakeLists file dependencies
  • If adding/removing any output files (e.g., eplustbl.*)
    • Update ..\scripts\Epl-run.bat
    • Update ..\scripts\RunEPlus.bat
    • Update ..\src\EPLaunch\ MainModule.bas, epl-ui.frm, and epl.vbp (VersionComments)
    • Update ...github\workflows\energyplus.py

Reviewer

  • Perform a Code Review on GitHub
  • If branch is behind develop, merge develop and build locally to check for side effects of the merge
  • If defect, verify by running develop branch and reproducing defect, then running PR and reproducing fix
  • If feature, test running new feature, try creative ways to break it
  • CI status: all green or justified
  • Check that performance is not impacted (CI Linux results include performance check)
  • Run Unit Test(s) locally
  • Check any new function arguments for performance impacts
  • Verify IDF naming conventions and styles, memos and notes and defaults
  • If new idf included, locally check the err file and other outputs

This initial commit includes code to get the new feature to work and modifications to maintain current results.  Mods were also made to existing unit tests so that everything passes.
During the initial commit, shades were not dealt with properly which cause a crash for three input files that had an interior shade in the test suite.  For this situation, the new variables used to set thermal absorptance did not get initialized.  These code changes corrects the problem.
Commit to add the ability to control variable absorptance at both the interior and exterior face of a material.
This is the remainder of the planned changes to implement interior face material properties (constant and variable).  It includes new output variables to report thermal and solar absorptances at the inside and outside face of surfaces.  A new unit test and a significantly enhanced existing one that include various new tests are also included.  A new IDF was added to show the functionality of the new capabilities and the new output variables.  Finally, various documentation changes and additions were made to document what has been added.  A PR will be created based on this work now.
@RKStrand RKStrand added this to the EnergyPlus 26.2 IOFreeze milestone Aug 15, 2026
@RKStrand
RKStrand requested a review from mitchute August 15, 2026 20:51
@RKStrand RKStrand self-assigned this Aug 15, 2026
@RKStrand RKStrand added the NewFeature Includes code to add a new feature to EnergyPlus label Aug 15, 2026
…lementation

# Conflicts:
#	src/EnergyPlus/Material.cc
@github-actions

Copy link
Copy Markdown

⚠️ Regressions detected on macos-14 for commit 1d2197e

Regression Summary
  • Audit: 777
  • RDD: 763
  • EIO: 75
  • ESO Big Diffs: 5
  • Table Big Diffs: 20
  • Table String Diffs: 54
  • EDD: 11
  • ESO Small Diffs: 1
  • MTR Small Diffs: 1
  • SSZ Small Diffs: 1
  • ZSZ Small Diffs: 1
  • Table Small Diffs: 1
  • ERR: 1
  • MTR Big Diffs: 1
  • SSZ Big Diffs: 1
  • ZSZ Big Diffs: 1

@mitchute mitchute left a comment

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.

Thanks @RKStrand. A few comments to consider.

This field represents the specific heat of the material layer in units of J/(kg-K). Note that these units are most likely different than those reported in textbooks and references which tend to use kJ/(kg-K) or J/(g-K). They were chosen for internal consistency within EnergyPlus. \textbf{Only values of specific heat of 100 or larger are allowed. Typical ranges are from 800 to 2000 J/(kg-K).}

\paragraph{Field: Thermal Absorptance}\label{field-thermal-absorptance}
\paragraph{Field: Thermal Absorptance Outside Face}\label{field-thermal-absorptance-outside-face}

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 think we need to make it clear that this is the bulk value by default, and only interpreted as the outside value when the inside value is present. Maybe we should just leave the names on these three alone so as to not cause confusion, and then make sure it's clear in the description?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I can understand what you are saying. It looked good in the NFP, but I see your point. The default is to make both out and in values the same if only the "out" value is present. I don't have a problem with changing the IDD and the docs to make this clearer and have the existing fields keep the "old" names.

\paragraph{Field: Solar Absorptance Schedule Name Outside Face}\label{field-solar-absorptance-schedule-name-outside-face}

\paragraph{Field: Thermal Absorptance Function Name}\label{field-thermal-absorptance-function-name}
TThe name of a Schedule object that overwrites the material solar absorptance at the outside face or exterior side. If neither this field or the previous field are defined, then the solar absorptance is assumed to be constant.

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.

"TThe"

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Just when you think that everything has a spell correct...
I'll fix this.

Comment thread idd/Energy+.idd.in Outdated
\note Regular Material Name to which the additional properties will be added.
\note this the material name for the basic material properties.
A3 , \field Control Signal
A3 , \field Control Signal Outside Face

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.

Similar question about naming convention on this feature.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Yup, got it. I'll change things back for the "existing" fields and modify the docs as well. So, there will be changes in three places: Material, Material:NoMass, and the variable absorptivity stuff. I will also make sure that when I get the EMS part of this moving forward (it will be in a separate branch; it's a separate issue in GitHub, too) that I do this there as well.

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'm open to others thoughts regarding this. I just think it would create less confusion if we made it super clear that we're not changing anything, unless they want to adopt the interior absorptances.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

@shorowit What do you think about this? Since you were the original poster of this issue, I wonder what you think about leaving the existing fields as is rather than renaming them with "outside face" and then making it more clear in the docs that the default is that the value entered in the existing fields will define the values at both sides UNLESS the new interior parameters are provided.

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.

I'm supportive of that change. I do think that is clearer to the user as to how E+ will use the two sets of fields.

Comment thread src/EnergyPlus/DataHeatBalance.cc
@github-actions

Copy link
Copy Markdown

⚠️ Regressions detected on ubuntu-24.04 for commit 1d2197e

Regression Summary
  • Audit: 781
  • RDD: 767
  • EIO: 75
  • ESO Big Diffs: 5
  • Table Big Diffs: 20
  • Table String Diffs: 54
  • EDD: 11
  • ESO Small Diffs: 1
  • MTR Small Diffs: 1
  • SSZ Small Diffs: 1
  • ZSZ Small Diffs: 1
  • Table Small Diffs: 1
  • ERR: 1
  • MTR Big Diffs: 1
  • SSZ Big Diffs: 1
  • ZSZ Big Diffs: 1

@github-actions

Copy link
Copy Markdown

⚠️ Regressions detected on macos-14 for commit a6d5d6e

Regression Summary
  • Audit: 777
  • RDD: 763
  • EIO: 73
  • ESO Big Diffs: 4
  • Table Big Diffs: 17
  • Table String Diffs: 52
  • EDD: 11
  • SSZ Big Diffs: 3
  • ZSZ Big Diffs: 3
  • ERR: 1
  • MTR Big Diffs: 1

@github-actions

Copy link
Copy Markdown

⚠️ Regressions detected on ubuntu-24.04 for commit a6d5d6e

Regression Summary
  • Audit: 781
  • RDD: 767
  • EIO: 73
  • ESO Big Diffs: 4
  • Table Big Diffs: 17
  • Table String Diffs: 52
  • EDD: 11
  • SSZ Big Diffs: 3
  • ZSZ Big Diffs: 3
  • ERR: 1
  • MTR Big Diffs: 1

@RKStrand

Copy link
Copy Markdown
Contributor Author

Hmmm...I just thought of something and I wonder what the impact will be. Right now, for the Materal and Material:NoMass, the default is that if you don't specify the inside face values that they default to the outside face values. I think that is definitely what we want.

As I was going back over the variable absorptivity code as a result of the desire to leave the names of the existing fields alone, I remembered that with variable absorptivity that it was only setting the exterior values for absorptance but not the inside values. In the current code on this branch, it actually forces the interior values to the exterior ones which is a change from the current method. Is that what we want? Or do we want to stick with only allowing the variation of the exterior values if interior ones are not specified? It's a subtle difference, but a difference nonetheless.

So, what do we want here? I think that if we want to go with the only override the inside if the inside override is specified, then a few code changes are necessary. I don't think it will be difficult to do at this point. Thoughts, @mitchute, @shorowit?

@RKStrand

Copy link
Copy Markdown
Contributor Author

And what we do with the variable absorptivity will likely somewhat determine what we do with the EMS values in the follow up EMS variation of this. The code in place before all of this started only impacted the exterior from what I can see. So, we can simply let the inside only get updated when the user uses that actuator. I think whatever we decide, we should be consistent between the variable absorptivity and the EMS stuff.

@RKStrand
RKStrand requested review from mitchute and shorowit August 17, 2026 23:46
@mitchute mitchute added the IDDChange Code changes impact the IDD file (cannot be merged after IO freeze) label Aug 18, 2026
Took out references to outside face in the field names and clarified various issues in the documentation.  Should now line up with requests made during review.
@github-actions

Copy link
Copy Markdown

⚠️ Regressions detected on ubuntu-24.04 for commit 756ca28

Regression Summary
  • Audit: 781
  • RDD: 767
  • ESO Small Diffs: 707
  • Table Small Diffs: 342
  • MTR Small Diffs: 525
  • Table String Diffs: 204
  • EIO: 382
  • ESO Big Diffs: 13
  • Table Big Diffs: 50
  • JSON Small Diffs: 2
  • ZSZ Small Diffs: 71
  • ERR: 28
  • MTR Big Diffs: 3
  • EDD: 12
  • SSZ Big Diffs: 2
  • ZSZ Big Diffs: 2
  • SSZ Small Diffs: 13
  • JSON Big Diffs: 2

@github-actions

Copy link
Copy Markdown

⚠️ Regressions detected on macos-14 for commit 756ca28

Regression Summary
  • Audit: 777
  • RDD: 763
  • EIO: 72
  • ESO Big Diffs: 3
  • Table Big Diffs: 16
  • Table String Diffs: 52
  • EDD: 11
  • SSZ Big Diffs: 2
  • ZSZ Big Diffs: 2

A couple of stragglers that got missed in the last commit.
@github-actions

Copy link
Copy Markdown

⚠️ Regressions detected on macos-14 for commit 0c7343b

Regression Summary
  • Audit: 777
  • RDD: 763
  • EIO: 72
  • ESO Big Diffs: 3
  • Table Big Diffs: 16
  • Table String Diffs: 52
  • EDD: 11
  • SSZ Big Diffs: 2
  • ZSZ Big Diffs: 2

@github-actions

Copy link
Copy Markdown

⚠️ Regressions detected on ubuntu-24.04 for commit 0c7343b

Regression Summary
  • Audit: 781
  • RDD: 767
  • ESO Small Diffs: 707
  • Table Small Diffs: 342
  • MTR Small Diffs: 525
  • Table String Diffs: 204
  • EIO: 382
  • ESO Big Diffs: 13
  • Table Big Diffs: 50
  • JSON Small Diffs: 2
  • ZSZ Small Diffs: 71
  • ERR: 28
  • MTR Big Diffs: 3
  • EDD: 12
  • SSZ Big Diffs: 2
  • ZSZ Big Diffs: 2
  • SSZ Small Diffs: 13
  • JSON Big Diffs: 2

@github-actions

Copy link
Copy Markdown

⚠️ Regressions detected on macos-14 for commit 65f3ab7

Regression Summary
  • Audit: 777
  • RDD: 763
  • EIO: 72
  • ESO Big Diffs: 3
  • Table Big Diffs: 16
  • Table String Diffs: 52
  • EDD: 11
  • SSZ Big Diffs: 2
  • ZSZ Big Diffs: 2

@github-actions

Copy link
Copy Markdown

⚠️ Regressions detected on ubuntu-24.04 for commit 65f3ab7

Regression Summary
  • Audit: 781
  • RDD: 767
  • ESO Small Diffs: 707
  • Table Small Diffs: 342
  • MTR Small Diffs: 525
  • Table String Diffs: 204
  • EIO: 382
  • ESO Big Diffs: 13
  • Table Big Diffs: 50
  • JSON Small Diffs: 2
  • ZSZ Small Diffs: 71
  • ERR: 28
  • MTR Big Diffs: 3
  • EDD: 12
  • SSZ Big Diffs: 2
  • ZSZ Big Diffs: 2
  • SSZ Small Diffs: 13
  • JSON Big Diffs: 2

@github-actions

Copy link
Copy Markdown

⚠️ Regressions detected on macos-14 for commit 3a76c3e

Regression Summary
  • Audit: 777
  • RDD: 763
  • EIO: 16
  • ESO Big Diffs: 1
  • Table Big Diffs: 16

@github-actions

Copy link
Copy Markdown

⚠️ Regressions detected on ubuntu-24.04 for commit 3a76c3e

Regression Summary
  • Audit: 781
  • RDD: 767
  • EIO: 16
  • ESO Big Diffs: 1
  • Table Big Diffs: 16

@github-actions

Copy link
Copy Markdown

⚠️ Regressions detected on macos-14 for commit 6ecb882

Regression Summary
  • Audit: 777
  • RDD: 763
  • EIO: 16
  • ESO Big Diffs: 1
  • Table Big Diffs: 16

@github-actions

Copy link
Copy Markdown

⚠️ Regressions detected on ubuntu-24.04 for commit 6ecb882

Regression Summary
  • Audit: 781
  • RDD: 767
  • EIO: 16
  • ESO Big Diffs: 1
  • Table Big Diffs: 16

Comment thread tst/EnergyPlus/unit/HeatBalanceIntRadExchange.unit.cc Outdated
@mitchute

mitchute commented Aug 21, 2026 •

Copy link
Copy Markdown
Collaborator

@RKStrand I think this one has moved in the right direction, and is only emitting the new outputs when the interior absorptances are used. I just made one comment about some suspicious code, but I need to keep looking to see if there are others. Please review this all carefully.

@github-actions

Copy link
Copy Markdown

⚠️ Regressions detected on macos-14 for commit 651b088

Regression Summary
  • Audit: 778
  • RDD: 764
  • EIO: 16
  • ESO Big Diffs: 1
  • Table Big Diffs: 16

@github-actions

Copy link
Copy Markdown

⚠️ Regressions detected on ubuntu-24.04 for commit 651b088

Regression Summary
  • Audit: 782
  • RDD: 768
  • EIO: 16
  • ESO Big Diffs: 1
  • Table Big Diffs: 16

@github-actions

Copy link
Copy Markdown

⚠️ Regressions detected on macos-14 for commit d6cf95d

Regression Summary
  • Audit: 778
  • RDD: 764
  • EIO: 16
  • ESO Big Diffs: 1
  • Table Big Diffs: 16

@github-actions

Copy link
Copy Markdown

⚠️ Regressions detected on macos-14 for commit 823b4d6

Regression Summary
  • Audit: 778
  • RDD: 764
  • EIO: 16
  • ESO Big Diffs: 1
  • Table Big Diffs: 16

@github-actions

Copy link
Copy Markdown

⚠️ Regressions detected on ubuntu-24.04 for commit d6cf95d

Regression Summary
  • Audit: 782
  • RDD: 768
  • EIO: 16
  • ESO Big Diffs: 1
  • Table Big Diffs: 16

@github-actions

Copy link
Copy Markdown

⚠️ Regressions detected on ubuntu-24.04 for commit 823b4d6

Regression Summary
  • Audit: 782
  • RDD: 768
  • EIO: 16
  • ESO Big Diffs: 1
  • Table Big Diffs: 16

@mitchute mitchute left a comment

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.

Walk through

When a Material is used for the Construction of a building surface, care should be taken to not attempt to model assemblies that were not included in the intended scope of applicability for the underlying heat transfer models.~ The building surface models are for normal applications to building energy efficiency where the main focus is on assemblies with some thermal resistance. Extremely thin and/or highly conductive material layers should be neglected from the Construction rather than included because they will not contribute to the assembly's overall thermal resistance or heat capacity. For some cases, thin and/or highly conductive materials are a serious problem for the heat transfer modeling and the values for thickness, conductivity, density and specific heat are checked for appropriateness. This check calculates the Material's thermal diffusivity from the inputs for conductivity, density, and specific heat and compares it to a maximum threshold of $10^{-5}$ (m\(^{2}\)/s). If the diffusivity is above this threshold, then the program checks if the layer is sufficiently thick and may issue a warning if it is too thin and highly conductive.

The absorptance values in this object impart surface properties to the construction and should be applied to the thermally significant inner and outer layers in the overall assembly.~ Attempting to trick the program by modeling thin ``paint'' layers to apply surface properties is not a good idea; the models were not intended to support such strategies.
The absorptance values in this object impart surface properties to the construction and should be applied to the thermally significant inner and outer layers in the overall assembly.~ For an opaque construction, only the outside-face properties of the outermost layer and the inside-face properties of the innermost layer affect the surface heat balances; absorptance values on intermediate layers are not surface properties. Attempting to trick the program by modeling thin ``paint'' layers to apply surface properties is not a good idea; the models were not intended to support such strategies.

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.

That's the gist of the PR.

\paragraph{Field: Thermal Absorptance}\label{field-thermal-absorptance}

The thermal absorptance field in the Material input syntax represents the fraction of incident long wavelength (>2.5 microns) radiation that is absorbed by the material. This parameter is used when calculating the long wavelength radiant exchange between various surfaces and affects the surface heat balances (both inside and outside as appropriate). For long wavelength radiant exchange, thermal emissivity and thermal emittance are equal to thermal absorptance. Values for this field must be between 0.0 and 1.0 (with 1.0 representing ``black body'' conditions). The default value for this field is 0.9.
This field specifies the bulk thermal absorptance: the fraction of incident longwave radiation (wavelengths greater than 2.5~$\mu{}m$) absorbed by the material. When Thermal Absorptance Inside Face is blank, this value is used at both faces. When that optional field is entered, this value applies to the outside face. Thermal absorptance is used in longwave radiant exchange and the surface heat balances; by Kirchhoff's law, thermal emissivity and emittance equal thermal absorptance. The value must be greater than 0.0 and no greater than 0.99999. The default is 0.9.

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.

Updated docs on the existing fields. Similar updates for other existing fields.

Comment on lines +99 to +110
\paragraph{Field: Thermal Absorptance Inside Face}\label{field-thermal-absorptance-inside-face}

This optional field specifies the thermal absorptance used at the inside face when this material is the innermost layer of a construction. When blank, it inherits the Thermal Absorptance value above. The value must be greater than 0.0 and no greater than 0.99999.

\paragraph{Field: Solar Absorptance Inside Face}\label{field-solar-absorptance-inside-face}

This optional field specifies the solar absorptance used at the inside face when this material is the innermost layer of a construction. When blank, it inherits the Solar Absorptance value above. The value must be between 0.0 and 1.0.

\paragraph{Field: Visible Absorptance Inside Face}\label{field-visible-absorptance-inside-face}

This optional field specifies the visible absorptance used at the inside face when this material is the innermost layer of a construction. When blank, it inherits the Visible Absorptance value above. The value must be between 0.0 and 1.0.

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.

Docs for new fields

Comment on lines +129 to +142
Material,
Material Diff Absorptances, !- Material Name
Rough, !- Roughness
0.05, !- Thickness {m}
2.5, !- Conductivity {W/M*K}
1500.0, !- Density {Kg/M**3}
888.8, !- Specific Heat {J/Kg*K}
0.9000000, !- Thermal Absorptance
0.7000000, !- Solar Absorptance
0.7000000, !- Visible Absorptance
0.6000000, !- Thermal Absorptance Inside Face
0.4500000, !- Solar Absorptance Inside Face
0.4500000; !- Visible Absorptance Inside Face
\end{lstlisting}

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.

Example object with optional new fields. We're not updating the field names on the existing ones so as to not create confusion on those that don't need this new feature.

Comment on lines +203 to 213
Material:NoMass,
R13LAYER with diff abs, !- Material Name
Rough, !- Roughness
2.290965, !- Resistance {M**2K/W}
0.9000000, !- Thermal Absorptance
0.7500000, !- Solar Absorptance
0.7500000, !- Visible Absorptance
0.2000000, !- Thermal Absorptance Inside Face
0.2000000, !- Solar Absorptance Inside Face
0.2000000; !- Visible Absorptance Inside Face
\end{lstlisting}

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.

Same deal here

Comment on lines +23 to +34
# Object Change: Material

Append three optional numeric fields:

- N8, "Thermal Absorptance Inside Face"
- N9, "Solar Absorptance Inside Face"
- N10, "Visible Absorptance Inside Face"

When any new field is blank, its value is inherited from the corresponding existing absorptance field. Existing input files therefore retain their prior bulk-material behavior without modification. When a new field is entered, the corresponding existing field supplies the outside-face value and the new field supplies the inside-face value.

See pull request [#11750](https://github.com/NatLabRockies/EnergyPlus/pull/11750)

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.

Documenting optional input changes

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Oops...sorry, I didn't think that I had to do anything here because old files will work just fine.

Comment on lines +41 to +48
### Surface absorptance report variables

PR #11750 adds surface thermal and solar absorptance report variables. Availability is determined separately for each surface and each absorptance type:

- `Surface Thermal Absorptance` and `Surface Solar Absorptance` use the generic/bulk names when no independent inside-face value or active inside-face variable-absorptance control applies to that surface.
- `Surface Thermal Absorptance Outside Face` and `Surface Thermal Absorptance Inside Face` replace the generic thermal variable for a surface that uses an independent inside-face thermal value or control.
- `Surface Solar Absorptance Outside Face` and `Surface Solar Absorptance Inside Face` replace the generic solar variable for a surface that uses an independent inside-face solar value or control.

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.

Documenting report variable changes

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Wow--more misses.

Comment on lines +55 to +73
### EIO Material Details absorptance columns

PR #11750 expands the `Material Details` record in `eplusout.eio`. The three absorptance columns

- `Absorptance:Thermal`
- `Absorptance:Solar`
- `Absorptance:Visible`

are replaced by six face-specific columns in the same location:

- `Absorptance:Thermal:OutsideFace`
- `Absorptance:Solar:OutsideFace`
- `Absorptance:Visible:OutsideFace`
- `Absorptance:Thermal:InsideFace`
- `Absorptance:Solar:InsideFace`
- `Absorptance:Visible:InsideFace`

For `Material` and `Material:NoMass`, the corresponding outside- and inside-face columns contain the same value when no independent inside-face value is entered. For other material types, including complex glazing, the columns report their existing front/back or derived face properties and may differ.

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.

Documenting EIO changes

Comment on lines +233 to 239
, !- Solar Absorptance Schedule Name
SurfaceTemperature, !- Control Signal Inside Face
ThermalAbsorptanceTemperatureTable, !- Thermal Absorptance Function Name Inside Face
, !- Thermal Absorptance Schedule Name Inside Face
SolarAbsorptanceTemperatureCurve, !- Solar Absorptance Function Name Inside Face
; !- Solar Absorptance Schedule Name Inside Face

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.

Exercising the new inputs on this object. Diffs expected for this file due to the temperature dependent curves being applied at the each face.

true);
}

TEST_F(EnergyPlusFixture, GetMaterialDataConstructAbsorpTest)

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.

Lots of new and updated unit tests

@mitchute

mitchute commented Aug 21, 2026 •

Copy link
Copy Markdown
Collaborator

Lots of regression diffs, but all expected.

aud / rdd

Regressions are due to updated output variable counts, and new output variants for the inner / outer report variables.

- NumOfRVariable=         736
- NumOfRVariable(Total)=         736
+ NumOfRVariable=         750
+ NumOfRVariable(Total)=         750
+Output:Variable,*,Surface Thermal Absorptance Outside Face,hourly; !- Zone Average []
+Output:Variable,*,Surface Thermal Absorptance Inside Face,hourly; !- Zone Average []
+Output:Variable,*,Surface Solar Absorptance Outside Face,hourly; !- Zone Average []
+Output:Variable,*,Surface Solar Absorptance Inside Face,hourly; !- Zone Average []
+Output:Variable,*,Surface Thermal Absorptance,hourly; !- Zone Average []
+Output:Variable,*,Surface Solar Absorptance,hourly; !- Zone Average []

eio / html

Models requesting Output:Constructions, Materials receive an expanded table that covers the thermal/solar/visible x inner/outer variants. If the inner is not used, the inner values mirror the outer.

Screenshot from 2026-08-21 11-45-52

1ZoneUncontrolled_variableThermalSolarAbs

This file now exercises the variable absorptivities for the inner and outer surface. The temperature on the inner and outer surface are different, so the results have moved, even though the curves are the same.

@github-actions

Copy link
Copy Markdown

⚠️ Regressions detected on macos-14 for commit edbac07

Regression Summary
  • Audit: 779
  • RDD: 765
  • EIO: 16
  • ESO Big Diffs: 1
  • Table Big Diffs: 16

@github-actions

Copy link
Copy Markdown

⚠️ Regressions detected on ubuntu-24.04 for commit edbac07

Regression Summary
  • Audit: 783
  • RDD: 769
  • EIO: 16
  • ESO Big Diffs: 1
  • Table Big Diffs: 16

@mitchute

Copy link
Copy Markdown
Collaborator

Thanks @RKStrand. This one is ready. Merging.

@mitchute
mitchute merged commit 92ac831 into develop Aug 24, 2026
8 checks passed
@mitchute
mitchute deleted the 11393InteriorExteriorAbsorptanceFieldsImplementation branch August 24, 2026 03:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

IDDChange Code changes impact the IDD file (cannot be merged after IO freeze) NewFeature Includes code to add a new feature to EnergyPlus

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants