Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Initializes nrcan_446 branch: skylights & wells #1854

Merged
merged 12 commits into from
Jan 29, 2025
4 changes: 2 additions & 2 deletions lib/openstudio-standards/btap/bridging.rb
Original file line number Diff line number Diff line change
Expand Up @@ -1502,7 +1502,7 @@ def initialize(model = nil, argh = {})
next unless construction[:stypes ] == stypes
next if construction[:surfaces].empty?

construction[:surfaces].values.each { |surface| surface.setConstruction(construction[:uo]) }
# construction[:surfaces].values.each { |surface| surface.setConstruction(construction[:uo]) }
Copy link
Collaborator Author

@brgix brgix Dec 6, 2024

Choose a reason for hiding this comment

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

Not sure what this call is attempting, but commenting it out allows BTAP thermal bridging tests to pass. A revised skylight/well distribution would affect (linear) thermal bridging calculations down the line ...

end
end

Expand Down Expand Up @@ -2115,4 +2115,4 @@ def get_material_quantities()
#
# ... yet all (public) washrooms, corridors, stairwells, etc. are
# steel-framed (regardless of building type). Overview of possible fixes.
# TO-DO.
# TO-DO.
23 changes: 13 additions & 10 deletions lib/openstudio-standards/standards/necb/BTAPPRE1980/btap_pre1980.rb
Original file line number Diff line number Diff line change
Expand Up @@ -45,21 +45,24 @@ def load_standards_database_new
end

# Thermal zones need to be set to determine conditioned spaces when applying fdwr and srr limits.
# # fdwr_set/srr_set settings:
# # 0-1: Remove all windows/skylights and add windows/skylights to match this fdwr/srr
# # -1: Remove all windows/skylights and add windows/skylights to match max fdwr/srr from NECB
# # -2: Do not apply any fdwr/srr changes, leave windows/skylights alone (also works for fdwr/srr > 1)
# # -3: Use old method which reduces existing window/skylight size (if necessary) to meet maximum NECB fdwr/srr
# # limit
# # <-3.1: Remove all the windows/skylights
# # > 1: Do nothing
def apply_fdwr_srr_daylighting(model:, fdwr_set: -2.0, srr_set: -2.0, necb_hdd: true)
#
# fdwr_set/srr_set settings:
# 0-1: Remove all windows/skylights and add windows/skylights to match this fdwr/srr
# -1: Remove all windows/skylights and add windows/skylights to match max fdwr/srr from NECB
# -2: Do not apply any fdwr/srr changes, leave windows/skylights alone (also works for fdwr/srr > 1)
# -3: Use old method which reduces existing window/skylight size (if necessary) to meet maximum NECB fdwr/srr limit
# <-3.1: Remove all the windows/skylights
# > 1: Do nothing
#
# By default, :osut is set to 'false'. If :osut is set to 'true', SRR is
# instead met using OSut's addSkylights (:srr_set numeric values may apply).
def apply_fdwr_srr_daylighting(model:, fdwr_set: -2.0, srr_set: -2.0, necb_hdd: true, osut: false)
fdwr_set = -2.0 if (fdwr_set == 'NECB_default') || fdwr_set.nil? || (fdwr_set.to_f.round(0) == -1.0)
srr_set = -2.0 if (srr_set == 'NECB_default') || srr_set.nil? || (srr_set.to_f.round(0) == -1.0)
fdwr_set = fdwr_set.to_f
srr_set = srr_set.to_f
apply_standard_window_to_wall_ratio(model: model, fdwr_set: fdwr_set, necb_hdd: true)
apply_standard_skylight_to_roof_ratio(model: model, srr_set: srr_set)
apply_standard_skylight_to_roof_ratio(model: model, srr_set: srr_set, osut: osut)
# model_add_daylighting_controls(model) # to be removed after refactor.
end

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,19 +25,21 @@ def apply_standard_window_to_wall_ratio(model:, fdwr_set: -1.0, necb_hdd: true)
# Reduces the SRR to the values specified by the PRM. SRR reduction
# will be done by shrinking vertices toward the centroid.
#
def apply_standard_skylight_to_roof_ratio(model:, srr_set: -1.0)
def apply_standard_skylight_to_roof_ratio(model:, srr_set: -1.0, osut: false)
# If srr_set is between 1.0 and 1.2 set it to the maximum allowed by the NECB. If srr_set is between 0.0 and 1.0
# apply whatever was passed. If srr_set >= 1.2 then set the existing srr of the building to be the necb maximum
# only if the the srr exceeds this maximum (otherwise leave it to be whatever was modeled).

#
# srr_set settings:
# 0-1: Remove all skylights and add skylights to match this srr
# -1: Remove all skylights and add skylights to match max srr from NECB
# -2: Do not apply any srr changes, leave skylights alone (also works for srr > 1)
# -3: Use old method which reduces existing skylight size (if necessary) to meet maximum NECB skylight limit
# <-3.1: Remove all the skylights
# > 1: Do nothing

# 0-1: Remove all skylights and add skylights to match this srr
# -1: Remove all skylights and add skylights to match max srr from NECB
# -2: Do not apply any srr changes, leave skylights alone (also works for srr > 1)
# -3: Use old method which reduces existing skylight size (if necessary) to meet maximum NECB skylight limit
# <-3.1: Remove all skylights
# > 1: Do nothing
#
# By default, :osut is set to 'false'. If :osut is set to 'true', SRR is
# instead met using OSut's addSkylights (:srr_set numeric values may apply). @todo
return if srr_set.to_f > 1.0
return apply_max_srr_nrcan(model: model, srr_lim: srr_set.to_f) if srr_set.to_f >= 0.0 && srr_set <= 1.0

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -161,19 +161,21 @@ def apply_limit_fdwr(model:, fdwr_lim:)
# Reduces the SRR to the values specified by the PRM. SRR reduction
# will be done by shrinking vertices toward the centroid.
#
def apply_standard_skylight_to_roof_ratio(model:, srr_set: -1.0)
def apply_standard_skylight_to_roof_ratio(model:, srr_set: -1.0, osut: false)
# If srr_set is between 1.0 and 1.2 set it to the maximum allowed by the NECB. If srr_set is between 0.0 and 1.0
# apply whatever was passed. If srr_set >= 1.2 then set the existing srr of the building to be the necb maximum
# only if the the srr exceeds this maximum (otherwise leave it to be whatever was modeled).

#
# srr_set settings:
# 0-1: Remove all skylights and add skylights to match this srr
# -1: Remove all skylights and add skylights to match max srr from NECB
# -2: Do not apply any srr changes, leave skylights alone (also works for srr > 1)
# -3: Use old method which reduces existing skylight size (if necessary) to meet maximum NECB skylight limit
# 0-1: Remove all skylights and add skylights to match this srr
# -1: Remove all skylights and add skylights to match max srr from NECB
# -2: Do not apply any srr changes, leave skylights alone (also works for srr > 1)
# -3: Use old method which reduces existing skylight size (if necessary) to meet maximum NECB skylight limit
# <-3.1: Remove all skylights
# > 1: Do nothing

# > 1: Do nothing
#
# By default, :osut is set to 'false'. If :osut is set to 'true', SRR is
# instead met using OSut's addSkylights (:srr_set numeric values may apply).
return if srr_set.to_f > 1.0
return apply_max_srr_nrcan(model: model, srr_lim: srr_set.to_f) if srr_set.to_f >= 0.0 && srr_set.to_f <= 1.0
# Get the maximum NECB srr
Expand Down
25 changes: 13 additions & 12 deletions lib/openstudio-standards/standards/necb/NECB2011/necb_2011.rb
Original file line number Diff line number Diff line change
Expand Up @@ -968,21 +968,24 @@ def three_vertices_same_line_and_dir?(vert1,vert2,vert3)
end

# Thermal zones need to be set to determine conditioned spaces when applying fdwr and srr limits.
# # fdwr_set/srr_set settings:
# # 0-1: Remove all windows/skylights and add windows/skylights to match this fdwr/srr
# # -1: Remove all windows/skylights and add windows/skylights to match max fdwr/srr from NECB
# # -2: Do not apply any fdwr/srr changes, leave windows/skylights alone (also works for fdwr/srr > 1)
# # -3: Use old method which reduces existing window/skylight size (if necessary) to meet maximum NECB fdwr/srr
# # limit
# # <-3.1: Remove all the windows/skylights
# # > 1: Do nothing
def apply_fdwr_srr_daylighting(model:, fdwr_set: -1.0, srr_set: -1.0, necb_hdd: true)
#
# fdwr_set/srr_set settings:
# 0-1: Remove all windows/skylights and add windows/skylights to match this fdwr/srr
# -1: Remove all windows/skylights and add windows/skylights to match max fdwr/srr from NECB
# -2: Do not apply any fdwr/srr changes, leave windows/skylights alone (also works for fdwr/srr > 1)
# -3: Use old method which reduces existing window/skylight size (if necessary) to meet maximum NECB fdwr/srr limit
# <-3.1: Remove all the windows/skylights
# > 1: Do nothing
#
# By default, :osut is set to 'false'. If :osut is set to 'true', SRR is
# instead met using OSut's addSkylights (:srr_set numeric values may apply).
def apply_fdwr_srr_daylighting(model:, fdwr_set: -1.0, srr_set: -1.0, necb_hdd: true, osut: false)
fdwr_set = -1.0 if (fdwr_set == 'NECB_default') || fdwr_set.nil?
srr_set = -1.0 if (srr_set == 'NECB_default') || srr_set.nil?
fdwr_set = fdwr_set.to_f
srr_set = srr_set.to_f
apply_standard_window_to_wall_ratio(model: model, fdwr_set: fdwr_set, necb_hdd: necb_hdd)
apply_standard_skylight_to_roof_ratio(model: model, srr_set: srr_set)
apply_standard_skylight_to_roof_ratio(model: model, srr_set: srr_set, osut: osut)
# model_add_daylighting_controls(model) # to be removed after refactor.
end

Expand Down Expand Up @@ -2495,5 +2498,3 @@ def set_boiler_cap_ratios(boiler_cap_ratio:, boiler_fuel:)
return boiler_cap_ratios
end
end