Conversation
| expect(tilt.round(4)).to eq(Math::PI.round(4)) | ||
|
|
||
| r1 = OpenStudio::Model::PlanarSurface.stillAirFilmResistance(tilt) * 2 | ||
| r2 = surface.filmResistance |
There was a problem hiding this comment.
| expect(r1.round(3)).to eq(0.212) # not 0.321! | ||
| expect(r2.round(3)).to eq(0.212) # not 0.321! | ||
|
|
||
| # OS-reported film resistances: 0.212 vs 0.321 - which one should apply? |
There was a problem hiding this comment.
This OpenStudio Surface filmResistance "doubling" solution yields 2 different results for interzone floor/ceiling combo:
- 0.212 if probing the ceiling surface
- 0.321 if probing the adjacent floor
| # - attic floors: | ||
| # - U with film: 0.151 (R with film: 6.623) | ||
| # - U without film: 0.158 (R without film: 6.329) | ||
| # TOTAL film resistance = 0.267 ? |
| basement: 0.120, # un/insulated basement wall | ||
| slab: 0.160, # un/insulated basement slab or slab-on-grade | ||
| ceiling: 0.267, # interzone floor/ceiling | ||
| partition: 0.240, # interzone wall partition |
There was a problem hiding this comment.
- adds new (interzone)
:ceilingkey (e.g. plenum tiles, attic floors) - revises surface air film resistances, reflecting EnergyPlus standard condition outputs
| a[:compo][:d ] = d | ||
| a[:compo][:id ] = "OSut:#{mt}:#{format('%03d', d*1000)[-3..-1]}" | ||
| when :ceiling | ||
| unless specs[:clad] == :none |
There was a problem hiding this comment.
- new
:ceilingtype is simply the inverse of:floor. - yields different results than
:roof, given the difference in assigned air film resistances
| expect(surface.layers.first).to eq(surface.layers.last) | ||
|
|
||
| # An alternative to (uninsulated) :partition (+inputs, same outcome). | ||
| specs = {type: :wall, clad: :none, uo: nil} |
There was a problem hiding this comment.
The proposed changes now require mutually exclusive uses of:
- interzone
:partitionvs exterior:wall - interzone
:ceilingvs exterior:roofvs exterior:floor
| # @param [:to_sym] surface type, e.g. :wall | ||
| # | ||
| # @return [Hash] OSut collection of surface | ||
| def film(type = :wall) |
There was a problem hiding this comment.
Provides access to OSut module standard condition construction surface air film resistances.
| r3 = mod1.film(:ceiling) | ||
| expect(r1.round(3)).to eq(0.212) # not 0.321! | ||
| expect(r2.round(3)).to eq(0.212) # not 0.321! | ||
| expect(r3.round(3)).to eq(0.267) |
There was a problem hiding this comment.
OSut film(:ceiling) provides a better approximation of surface air film resistances calculated by EnergyPlus, namely for horizontal interzone surfaces.
To use with caution when dealing with tilted roof surfaces.
| @@film = { | ||
| shading: 0.000, # NA | ||
| ceiling: 0.267, # interzone floor/ceiling | ||
| ceiling: 0.266, # interzone floor/ceiling |
There was a problem hiding this comment.
EnergyPlus reports a combined surface air film resistance of 0.267 m2.K/W for horizontal interzone surfaces. The sum of OpenStudio PlanarSurface still air film resistances (UPWARD + DOWNWARD) reports 0.266, which is good enough.
| return 0.0 unless type.respond_to?(:to_sym) | ||
| # @return [Float] surface air film resistance(s) | ||
| # @return [0.0] if invalid input (see logs) | ||
| def filmResistances(type = :wall, tilt = 2 * Math::PI) |
There was a problem hiding this comment.
New OSut filmResistances replaces initial OSut film method - an implementation of the proposed solution here. It is intended as a substitute for OpenStudio Surface filmResistance method (less suitable for interzone surfaces).
OSut vs OpenStudio vs EnergyPlus standard condition surface air film resistances for interzone surfaces, linked to this issue.