Conversation
| 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") |
There was a problem hiding this comment.
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
| 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) |
There was a problem hiding this comment.
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.
| return value | ||
|
|
||
|
|
||
| def areStandardOpaqueLayers(lc=None) -> bool: |
| return False | ||
|
|
||
|
|
||
| def resetUo(lc=None, film=None, index=None, uo=None, uniq=False) -> float: |
| 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)) |
There was a problem hiding this comment.
Enforcing UMIN & UMAX clamping, raising input-related errors in the process.
| aspace = None | ||
| typ = None | ||
|
|
||
| if s.adjacentSurface(): |
There was a problem hiding this comment.
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.
| 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 |
There was a problem hiding this comment.
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.
An effort to harmonize pyOSut and OSut constants/methods when dealing with multilayered constructions and opaque materials, largely in line with this OSut PR.