Skip to content

Upgrades layered construction constants/methods - #8

Merged
brgix merged 4 commits into
developfrom
tbd
Jan 4, 2026
Merged

Upgrades layered construction constants/methods#8
brgix merged 4 commits into
developfrom
tbd

Conversation

@brgix

@brgixbrgix commented Jan 1, 2026

Copy link
Copy Markdown
Member

An effort to harmonize pyOSut and OSut constants/methods when dealing with multilayered constructions and opaque materials, largely in line with this OSutPR.

@brgixbrgix self-assigned this Jan 1, 2026
@brgixbrgix added the enhancement New feature or request label Jan 1, 2026
Comment threadtests/test_osut.py
self.assertEqual(c.layers()[0].nameString(), "OSut.material.015")
self.assertEqual(c.layers()[1].nameString(), "OSut.drywall.015")
self.assertEqual(c.layers()[2].nameString(), "OSut.mineral.106")
self.assertEqual(c.layers()[2].nameString(), "OSut:K0.047:100")

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Switching over to resetUo method to adjust insulating layer thermal conductivity and thickness (genConstruction). Involves changes in naming convention, e.g. material "OSut:K0.047:100" means:

  • adjusted material conductivity = 0.047 W/m.K
  • (possibly) adjusted material thickness = 100mm

Comment threadsrc/osut/osut.py
UMAX = KMAX / DMIN # material USi upper limit, 200.000
UMIN = KMIN / DMAX # material USi lower limit, 0.010
RMIN = 1.0 / UMAX # material RSi lower limit, 0.005 (or R-IP 0.03)
RMAX = 1.0 / UMIN # material RSi upper limit, 100.000 (or R-IP 567.80)

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Extending pyOSut constants to cover material MIN/MAX thresholds, e.g.:

  • thickness
  • thermal conductivity
  • thermal resistance
  • thermal conductance

Ensuring OSut and pyOSut inherit the very same constants.

Comment threadsrc/osut/osut.py
return value


def areStandardOpaqueLayers(lc=None) -> bool:

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Reordering methods.

Comment threadsrc/osut/osut.py
return False


def resetUo(lc=None, film=None, index=None, uo=None, uniq=False) -> float:

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

One of a few new methods.

Comment threadsrc/osut/osut.py
if u < CN.UMIN or u > CN.UMAX:
u0 = u
u = clamp(u0, CN.UMIN, CN.UMAX)
oslg.log(CN.ERR, "Resetting Uo %.3f to %.3f (%s)" % (u0, u, mth))

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Enforcing UMIN & UMAX clamping, raising input-related errors in the process.

Comment threadsrc/osut/osut.py
aspace = None
typ = None

if s.adjacentSurface():

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Not checking if a surface inherits a default construction from its adjacent:

  • surface
  • space
  • spacetype
  • story

... is a big no-no, creating a ton of headaches down the line.

Comment threadsrc/osut/osut.py
KMIN = 0.010 # min. material thermal conductivity
KMAX = 2.000 # max. material thermal conductivity
DMIN = 0.010 # min. insulating material thickness
DMAX = 1.000 # max. insulating material thickness

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

OpenStudio/EnergyPlus materials can obviously support thermal conductivities way beyond 2.0 (e.g. metals, concrete). OSut methods deal more specifically with opaque materials (in a multilayered construction) that can be labelled as insulating. Sure, a 10mm thick material with a 2.0 thermal conductivity is hardly insulating, but certainly more than a sheet of aluminium.

@brgix
brgix merged commit 1f255ba into developJan 4, 2026
2 checks passed
@brgix
brgix deleted the tbd branch January 4, 2026 12:48
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancementNew feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@brgix