From 0e040bcb398907ac95e6fa68cdd538f4ca51f1e8 Mon Sep 17 00:00:00 2001 From: amylebar <41447070+amylebar@users.noreply.github.com> Date: Mon, 13 Feb 2023 08:19:19 -0700 Subject: [PATCH 1/6] Add DEER DCV to ThermalZone.rb and AirLoopHVAC.rb --- .../deer/deer_2003/deer_2003.ThermalZone.rb | 21 +++++++++++++++++++ .../deer/deer_2007/deer_2007.ThermalZone.rb | 21 +++++++++++++++++++ .../deer/deer_2011/deer_2011.ThermalZone.rb | 21 +++++++++++++++++++ .../deer/deer_2014/deer_2014.ThermalZone.rb | 21 +++++++++++++++++++ .../deer/deer_2015/deer_2015.ThermalZone.rb | 21 +++++++++++++++++++ .../deer/deer_2017/deer_2017.ThermalZone.rb | 21 +++++++++++++++++++ .../deer/deer_2020/deer_2020.AirLoopHVAC.rb | 8 +++++++ .../deer/deer_2020/deer_2020.ThermalZone.rb | 21 +++++++++++++++++++ 8 files changed, 155 insertions(+) create mode 100644 lib/openstudio-standards/standards/deer/deer_2003/deer_2003.ThermalZone.rb create mode 100644 lib/openstudio-standards/standards/deer/deer_2007/deer_2007.ThermalZone.rb create mode 100644 lib/openstudio-standards/standards/deer/deer_2011/deer_2011.ThermalZone.rb create mode 100644 lib/openstudio-standards/standards/deer/deer_2014/deer_2014.ThermalZone.rb create mode 100644 lib/openstudio-standards/standards/deer/deer_2015/deer_2015.ThermalZone.rb create mode 100644 lib/openstudio-standards/standards/deer/deer_2017/deer_2017.ThermalZone.rb create mode 100644 lib/openstudio-standards/standards/deer/deer_2020/deer_2020.ThermalZone.rb diff --git a/lib/openstudio-standards/standards/deer/deer_2003/deer_2003.ThermalZone.rb b/lib/openstudio-standards/standards/deer/deer_2003/deer_2003.ThermalZone.rb new file mode 100644 index 0000000000..9b758d2c87 --- /dev/null +++ b/lib/openstudio-standards/standards/deer/deer_2003/deer_2003.ThermalZone.rb @@ -0,0 +1,21 @@ +class DEER2003 < DEER + # @!group ThermalZone + + # Determine the area and occupancy level limits for + # demand control ventilation. + # + # @param thermal_zone [OpenStudio::Model::ThermalZone] the thermal zone + # @return [Array] the minimum area, in m^2 + # and the minimum occupancy density in m^2/person. Returns nil + # if there is no requirement. + def thermal_zone_demand_control_ventilation_limits(thermal_zone) + min_area_ft2 = nil # No minimum area + min_ft2_per_occ = 40 + + # Convert to SI + min_m2_per_occ = OpenStudio.convert(min_ft2_per_occ, 'ft^2', 'm^2').get + + return [min_area_ft2, min_m2_per_occ] + end + end + \ No newline at end of file diff --git a/lib/openstudio-standards/standards/deer/deer_2007/deer_2007.ThermalZone.rb b/lib/openstudio-standards/standards/deer/deer_2007/deer_2007.ThermalZone.rb new file mode 100644 index 0000000000..0104a1166f --- /dev/null +++ b/lib/openstudio-standards/standards/deer/deer_2007/deer_2007.ThermalZone.rb @@ -0,0 +1,21 @@ +class DEER2007 < DEER + # @!group ThermalZone + + # Determine the area and occupancy level limits for + # demand control ventilation. + # + # @param thermal_zone [OpenStudio::Model::ThermalZone] the thermal zone + # @return [Array] the minimum area, in m^2 + # and the minimum occupancy density in m^2/person. Returns nil + # if there is no requirement. + def thermal_zone_demand_control_ventilation_limits(thermal_zone) + min_area_ft2 = nil # No minimum area + min_ft2_per_occ = 40 + + # Convert to SI + min_m2_per_occ = OpenStudio.convert(min_ft2_per_occ, 'ft^2', 'm^2').get + + return [min_area_ft2, min_m2_per_occ] + end + end + \ No newline at end of file diff --git a/lib/openstudio-standards/standards/deer/deer_2011/deer_2011.ThermalZone.rb b/lib/openstudio-standards/standards/deer/deer_2011/deer_2011.ThermalZone.rb new file mode 100644 index 0000000000..5d9e7d7186 --- /dev/null +++ b/lib/openstudio-standards/standards/deer/deer_2011/deer_2011.ThermalZone.rb @@ -0,0 +1,21 @@ +class DEER2011 < DEER + # @!group ThermalZone + + # Determine the area and occupancy level limits for + # demand control ventilation. + # + # @param thermal_zone [OpenStudio::Model::ThermalZone] the thermal zone + # @return [Array] the minimum area, in m^2 + # and the minimum occupancy density in m^2/person. Returns nil + # if there is no requirement. + def thermal_zone_demand_control_ventilation_limits(thermal_zone) + min_area_ft2 = nil # No minimum area + min_ft2_per_occ = 40 + + # Convert to SI + min_m2_per_occ = OpenStudio.convert(min_ft2_per_occ, 'ft^2', 'm^2').get + + return [min_area_ft2, min_m2_per_occ] + end + end + \ No newline at end of file diff --git a/lib/openstudio-standards/standards/deer/deer_2014/deer_2014.ThermalZone.rb b/lib/openstudio-standards/standards/deer/deer_2014/deer_2014.ThermalZone.rb new file mode 100644 index 0000000000..26f27d19e8 --- /dev/null +++ b/lib/openstudio-standards/standards/deer/deer_2014/deer_2014.ThermalZone.rb @@ -0,0 +1,21 @@ +class DEER2014 < DEER + # @!group ThermalZone + + # Determine the area and occupancy level limits for + # demand control ventilation. + # + # @param thermal_zone [OpenStudio::Model::ThermalZone] the thermal zone + # @return [Array] the minimum area, in m^2 + # and the minimum occupancy density in m^2/person. Returns nil + # if there is no requirement. + def thermal_zone_demand_control_ventilation_limits(thermal_zone) + min_area_ft2 = nil # No minimum area + min_ft2_per_occ = 40 + + # Convert to SI + min_m2_per_occ = OpenStudio.convert(min_ft2_per_occ, 'ft^2', 'm^2').get + + return [min_area_ft2, min_m2_per_occ] + end + end + \ No newline at end of file diff --git a/lib/openstudio-standards/standards/deer/deer_2015/deer_2015.ThermalZone.rb b/lib/openstudio-standards/standards/deer/deer_2015/deer_2015.ThermalZone.rb new file mode 100644 index 0000000000..3943f06130 --- /dev/null +++ b/lib/openstudio-standards/standards/deer/deer_2015/deer_2015.ThermalZone.rb @@ -0,0 +1,21 @@ +class DEER2015 < DEER + # @!group ThermalZone + + # Determine the area and occupancy level limits for + # demand control ventilation. + # + # @param thermal_zone [OpenStudio::Model::ThermalZone] the thermal zone + # @return [Array] the minimum area, in m^2 + # and the minimum occupancy density in m^2/person. Returns nil + # if there is no requirement. + def thermal_zone_demand_control_ventilation_limits(thermal_zone) + min_area_ft2 = nil # No minimum area + min_ft2_per_occ = 40 + + # Convert to SI + min_m2_per_occ = OpenStudio.convert(min_ft2_per_occ, 'ft^2', 'm^2').get + + return [min_area_ft2, min_m2_per_occ] + end + end + \ No newline at end of file diff --git a/lib/openstudio-standards/standards/deer/deer_2017/deer_2017.ThermalZone.rb b/lib/openstudio-standards/standards/deer/deer_2017/deer_2017.ThermalZone.rb new file mode 100644 index 0000000000..c514afbb33 --- /dev/null +++ b/lib/openstudio-standards/standards/deer/deer_2017/deer_2017.ThermalZone.rb @@ -0,0 +1,21 @@ +class DEER2017 < DEER + # @!group ThermalZone + + # Determine the area and occupancy level limits for + # demand control ventilation. + # + # @param thermal_zone [OpenStudio::Model::ThermalZone] the thermal zone + # @return [Array] the minimum area, in m^2 + # and the minimum occupancy density in m^2/person. Returns nil + # if there is no requirement. + def thermal_zone_demand_control_ventilation_limits(thermal_zone) + min_area_ft2 = nil # No minimum area + min_ft2_per_occ = 40 + + # Convert to SI + min_m2_per_occ = OpenStudio.convert(min_ft2_per_occ, 'ft^2', 'm^2').get + + return [min_area_ft2, min_m2_per_occ] + end + end + \ No newline at end of file diff --git a/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.AirLoopHVAC.rb b/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.AirLoopHVAC.rb index 0e8f043d70..7fe72e1dc9 100644 --- a/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.AirLoopHVAC.rb +++ b/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.AirLoopHVAC.rb @@ -28,4 +28,12 @@ def air_loop_hvac_motorized_oa_damper_required?(air_loop_hvac, climate_zone) motorized_oa_damper_required = true return motorized_oa_damper_required end + + # @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop + # @return [Array] [min_oa_without_economizer_cfm, min_oa_with_economizer_cfm] + def air_loop_hvac_demand_control_ventilation_limits(air_loop_hvac) + min_oa_without_economizer_cfm = 3000 + min_oa_with_economizer_cfm = 0 + return [min_oa_without_economizer_cfm, min_oa_with_economizer_cfm] + end end \ No newline at end of file diff --git a/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.ThermalZone.rb b/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.ThermalZone.rb new file mode 100644 index 0000000000..1be52db7b4 --- /dev/null +++ b/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.ThermalZone.rb @@ -0,0 +1,21 @@ +class DEER2020 < DEER + # @!group ThermalZone + + # Determine the area and occupancy level limits for + # demand control ventilation. + # + # @param thermal_zone [OpenStudio::Model::ThermalZone] the thermal zone + # @return [Array] the minimum area, in m^2 + # and the minimum occupancy density in m^2/person. Returns nil + # if there is no requirement. + def thermal_zone_demand_control_ventilation_limits(thermal_zone) + min_area_ft2 = nil # No minimum area + min_ft2_per_occ = 40 + + # Convert to SI + min_m2_per_occ = OpenStudio.convert(min_ft2_per_occ, 'ft^2', 'm^2').get + + return [min_area_ft2, min_m2_per_occ] + end + end + \ No newline at end of file From 6665790cab44d631fb2180e74c7ff581ef57ebc4 Mon Sep 17 00:00:00 2001 From: amylebar <41447070+amylebar@users.noreply.github.com> Date: Mon, 10 Jul 2023 14:43:50 -0600 Subject: [PATCH 2/6] Fix min OA requirements - Add "air_loop_hvac_demand_control_ventilation_limits" method to deer.AirLoopHVAC.rb - Add minimum floor area to applicable DEER templates in ThermalZone.rb --- .../standards/deer/deer.AirLoopHVAC.rb | 19 +++++++++++++++++++ .../deer/deer_2011/deer_2011.ThermalZone.rb | 2 +- .../deer/deer_2014/deer_2014.ThermalZone.rb | 2 +- .../deer/deer_2015/deer_2015.ThermalZone.rb | 2 +- .../deer/deer_2017/deer_2017.ThermalZone.rb | 2 +- .../deer/deer_2020/deer_2020.ThermalZone.rb | 2 +- 6 files changed, 24 insertions(+), 5 deletions(-) diff --git a/lib/openstudio-standards/standards/deer/deer.AirLoopHVAC.rb b/lib/openstudio-standards/standards/deer/deer.AirLoopHVAC.rb index fd02ff58ee..8c563fbc08 100644 --- a/lib/openstudio-standards/standards/deer/deer.AirLoopHVAC.rb +++ b/lib/openstudio-standards/standards/deer/deer.AirLoopHVAC.rb @@ -46,6 +46,25 @@ def air_loop_hvac_economizer_type_allowable?(air_loop_hvac, climate_zone) end end + # Determines the OA flow rates above which an economizer is required. + # Two separate rates, one for systems with an economizer and another + # for systems without. + # The small numbers here are to reflect that there is not a minimum + # airflow requirement in Title 24. + # @return [Array] [min_oa_without_economizer_cfm, min_oa_with_economizer_cfm] + def air_loop_hvac_demand_control_ventilation_limits(air_loop_hvac) + min_oa_without_economizer_cfm = 0.01 + min_oa_with_economizer_cfm = 0.01 + return [min_oa_without_economizer_cfm, min_oa_with_economizer_cfm] + end + + # Determine if the standard has an exception for demand control ventilation + # when an energy recovery device is present. Defaults to true. + def air_loop_hvac_dcv_required_when_erv(air_loop_hvac) + dcv_required_when_erv_present = true + return dcv_required_when_erv_present + end + # Determine the limits for the type of economizer present # on the AirLoopHVAC, if any. # @return [Array] [drybulb_limit_f, enthalpy_limit_btu_per_lb, dewpoint_limit_f] diff --git a/lib/openstudio-standards/standards/deer/deer_2011/deer_2011.ThermalZone.rb b/lib/openstudio-standards/standards/deer/deer_2011/deer_2011.ThermalZone.rb index 5d9e7d7186..ccc79aba83 100644 --- a/lib/openstudio-standards/standards/deer/deer_2011/deer_2011.ThermalZone.rb +++ b/lib/openstudio-standards/standards/deer/deer_2011/deer_2011.ThermalZone.rb @@ -9,7 +9,7 @@ class DEER2011 < DEER # and the minimum occupancy density in m^2/person. Returns nil # if there is no requirement. def thermal_zone_demand_control_ventilation_limits(thermal_zone) - min_area_ft2 = nil # No minimum area + min_area_ft2 = 150 min_ft2_per_occ = 40 # Convert to SI diff --git a/lib/openstudio-standards/standards/deer/deer_2014/deer_2014.ThermalZone.rb b/lib/openstudio-standards/standards/deer/deer_2014/deer_2014.ThermalZone.rb index 26f27d19e8..ba021bb902 100644 --- a/lib/openstudio-standards/standards/deer/deer_2014/deer_2014.ThermalZone.rb +++ b/lib/openstudio-standards/standards/deer/deer_2014/deer_2014.ThermalZone.rb @@ -9,7 +9,7 @@ class DEER2014 < DEER # and the minimum occupancy density in m^2/person. Returns nil # if there is no requirement. def thermal_zone_demand_control_ventilation_limits(thermal_zone) - min_area_ft2 = nil # No minimum area + min_area_ft2 = 150 min_ft2_per_occ = 40 # Convert to SI diff --git a/lib/openstudio-standards/standards/deer/deer_2015/deer_2015.ThermalZone.rb b/lib/openstudio-standards/standards/deer/deer_2015/deer_2015.ThermalZone.rb index 3943f06130..5e88d4024c 100644 --- a/lib/openstudio-standards/standards/deer/deer_2015/deer_2015.ThermalZone.rb +++ b/lib/openstudio-standards/standards/deer/deer_2015/deer_2015.ThermalZone.rb @@ -9,7 +9,7 @@ class DEER2015 < DEER # and the minimum occupancy density in m^2/person. Returns nil # if there is no requirement. def thermal_zone_demand_control_ventilation_limits(thermal_zone) - min_area_ft2 = nil # No minimum area + min_area_ft2 = 150 min_ft2_per_occ = 40 # Convert to SI diff --git a/lib/openstudio-standards/standards/deer/deer_2017/deer_2017.ThermalZone.rb b/lib/openstudio-standards/standards/deer/deer_2017/deer_2017.ThermalZone.rb index c514afbb33..4bfec6b14b 100644 --- a/lib/openstudio-standards/standards/deer/deer_2017/deer_2017.ThermalZone.rb +++ b/lib/openstudio-standards/standards/deer/deer_2017/deer_2017.ThermalZone.rb @@ -9,7 +9,7 @@ class DEER2017 < DEER # and the minimum occupancy density in m^2/person. Returns nil # if there is no requirement. def thermal_zone_demand_control_ventilation_limits(thermal_zone) - min_area_ft2 = nil # No minimum area + min_area_ft2 = 150 min_ft2_per_occ = 40 # Convert to SI diff --git a/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.ThermalZone.rb b/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.ThermalZone.rb index 1be52db7b4..92fc5d396a 100644 --- a/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.ThermalZone.rb +++ b/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.ThermalZone.rb @@ -9,7 +9,7 @@ class DEER2020 < DEER # and the minimum occupancy density in m^2/person. Returns nil # if there is no requirement. def thermal_zone_demand_control_ventilation_limits(thermal_zone) - min_area_ft2 = nil # No minimum area + min_area_ft2 = 150 min_ft2_per_occ = 40 # Convert to SI From b50172b4cc18f020f56947bdcb7fc3ea51abd14a Mon Sep 17 00:00:00 2001 From: amylebar <41447070+amylebar@users.noreply.github.com> Date: Mon, 10 Jul 2023 14:59:17 -0600 Subject: [PATCH 3/6] Update comments --- lib/openstudio-standards/standards/deer/deer.AirLoopHVAC.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/openstudio-standards/standards/deer/deer.AirLoopHVAC.rb b/lib/openstudio-standards/standards/deer/deer.AirLoopHVAC.rb index 8c563fbc08..638e670705 100644 --- a/lib/openstudio-standards/standards/deer/deer.AirLoopHVAC.rb +++ b/lib/openstudio-standards/standards/deer/deer.AirLoopHVAC.rb @@ -59,7 +59,10 @@ def air_loop_hvac_demand_control_ventilation_limits(air_loop_hvac) end # Determine if the standard has an exception for demand control ventilation - # when an energy recovery device is present. Defaults to true. + # when an energy recovery device is present. + # Unlike ASHRAE 90.1, Title 24 does not have an ERV exception to DCV. + # This method is a copy of what is in Standards.AirLoopHVAC.rb and ensures + # ERVs will not prevent DCV from being applied to DEER models. def air_loop_hvac_dcv_required_when_erv(air_loop_hvac) dcv_required_when_erv_present = true return dcv_required_when_erv_present From b7019df730bb1e5b777318f06275a73c04d11b42 Mon Sep 17 00:00:00 2001 From: amylebar <41447070+amylebar@users.noreply.github.com> Date: Fri, 14 Jul 2023 08:39:26 -0600 Subject: [PATCH 4/6] add erv method to deer 2020 --- .../standards/deer/deer_2020/deer_2020.AirLoopHVAC.rb | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.AirLoopHVAC.rb b/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.AirLoopHVAC.rb index 02dbf49282..eabc25ecca 100644 --- a/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.AirLoopHVAC.rb +++ b/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.AirLoopHVAC.rb @@ -40,4 +40,14 @@ def air_loop_hvac_demand_control_ventilation_limits(air_loop_hvac) min_oa_with_economizer_cfm = 0 return [min_oa_without_economizer_cfm, min_oa_with_economizer_cfm] end + + # Determine if the standard has an exception for demand control ventilation + # when an energy recovery device is present. + # Unlike ASHRAE 90.1, Title 24 does not have an ERV exception to DCV. + # This method is a copy of what is in Standards.AirLoopHVAC.rb and ensures + # ERVs will not prevent DCV from being applied to DEER models. + def air_loop_hvac_dcv_required_when_erv(air_loop_hvac) + dcv_required_when_erv_present = true + return dcv_required_when_erv_present + end end \ No newline at end of file From dc48c0270cb55a7dffe7f66c351967e34733b48a Mon Sep 17 00:00:00 2001 From: amylebar <41447070+amylebar@users.noreply.github.com> Date: Wed, 2 Aug 2023 16:47:54 -0600 Subject: [PATCH 5/6] add require_relative for new DEER files - added `require_relative` for DEER code year files, such as ThermalZone and AirLoopHVAC --- .vscode/tasks.json.old | 30 +++++++++++++++ lib/openstudio-standards.rb | 20 ++++++++++ .../standards/Standards.ThermalZone.rb | 1 + .../deer/deer_2003/deer_2003.ThermalZone.rb | 37 ++++++++++--------- .../deer/deer_2007/deer_2007.ThermalZone.rb | 37 ++++++++++--------- .../deer/deer_2011/deer_2011.ThermalZone.rb | 37 ++++++++++--------- .../deer/deer_2014/deer_2014.ThermalZone.rb | 37 ++++++++++--------- .../deer/deer_2015/deer_2015.ThermalZone.rb | 37 ++++++++++--------- .../deer/deer_2017/deer_2017.ThermalZone.rb | 37 ++++++++++--------- .../deer/deer_2020/deer_2020.ThermalZone.rb | 37 ++++++++++--------- 10 files changed, 184 insertions(+), 126 deletions(-) create mode 100644 .vscode/tasks.json.old diff --git a/.vscode/tasks.json.old b/.vscode/tasks.json.old new file mode 100644 index 0000000000..a1252394cb --- /dev/null +++ b/.vscode/tasks.json.old @@ -0,0 +1,30 @@ +{ + "version": "0.1.0", + "command": "bash", + "args": [ + "-c" + ], + "isShellCommand": true, + "showOutput": "always", + "suppressTaskName": true, + "tasks": [ + { + "taskName": "ruby:run file", + "args": [ + "ruby ${file}" + ] + }, + { + "taskName": "bundle install", + "args": [ + "cd ${workspaceRoot}/openstudio-standards && bundle install" + ] + }, + { + "taskName": "run cirleci_tests_linux", + "args": [ + "cd ${workspaceRoot}/openstudio-standards && xterm -e 'bundle exec rake test:gem_group_0 | less' & cd ${workspaceRoot}/openstudio-standards && xterm -e 'bundle exec rake test:gem_group_1 | less' & cd ${workspaceRoot}/openstudio-standards && xterm -e 'bundle exec rake test:gem_group_2 | less' & cd ${workspaceRoot}/openstudio-standards && xterm -e 'bundle exec rake test:gem_group_3 | less' " + ] + } + ] +} \ No newline at end of file diff --git a/lib/openstudio-standards.rb b/lib/openstudio-standards.rb index 3a15fafcd7..dcbd4ac82b 100644 --- a/lib/openstudio-standards.rb +++ b/lib/openstudio-standards.rb @@ -354,6 +354,26 @@ module OpenstudioStandards require_relative "#{stds}/deer/deer.AirLoopHVAC" require_relative "#{stds}/deer/deer.Space" require_relative "#{stds}/deer/deer.PlanarSurface" + # DEER 2003 + require_relative "#{stds}/deer/deer_2003/deer_2003.ThermalZone" + # DEER 2007 + require_relative "#{stds}/deer/deer_2007/deer_2007.ThermalZone" + # DEER 2011 + require_relative "#{stds}/deer/deer_2011/deer_2011.ThermalZone" + # DEER 2014 + require_relative "#{stds}/deer/deer_2014/deer_2014.Space" + require_relative "#{stds}/deer/deer_2014/deer_2014.ThermalZone" + # DEER 2015 + require_relative "#{stds}/deer/deer_2015/deer_2015.Space" + require_relative "#{stds}/deer/deer_2015/deer_2015.ThermalZone" + # DEER 2017 + require_relative "#{stds}/deer/deer_2017/deer_2017.Space" + require_relative "#{stds}/deer/deer_2017/deer_2017.ThermalZone" + # DEER 2020 + require_relative "#{stds}/deer/deer_2020/deer_2020.AirLoopHVAC" + require_relative "#{stds}/deer/deer_2020/deer_2020.FanVariableVolume" + require_relative "#{stds}/deer/deer_2020/deer_2020.Space" + require_relative "#{stds}/deer/deer_2020/deer_2020.ThermalZone" # CBES Common require_relative "#{stds}/cbes/cbes.AirLoopHVAC" require_relative "#{stds}/cbes/cbes.Model" diff --git a/lib/openstudio-standards/standards/Standards.ThermalZone.rb b/lib/openstudio-standards/standards/Standards.ThermalZone.rb index 3b61bfc714..b9b73654d5 100644 --- a/lib/openstudio-standards/standards/Standards.ThermalZone.rb +++ b/lib/openstudio-standards/standards/Standards.ThermalZone.rb @@ -1778,6 +1778,7 @@ def thermal_zone_demand_control_ventilation_required?(thermal_zone, climate_zone # Not required if both limits nil if min_area_m2.nil? && min_area_m2_per_occ.nil? + OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.ThermalZone', "For #{thermal_zone.name}: DCV is not required due to lack of minimum area requirements.") return dcv_required end diff --git a/lib/openstudio-standards/standards/deer/deer_2003/deer_2003.ThermalZone.rb b/lib/openstudio-standards/standards/deer/deer_2003/deer_2003.ThermalZone.rb index 9b758d2c87..57dd79047c 100644 --- a/lib/openstudio-standards/standards/deer/deer_2003/deer_2003.ThermalZone.rb +++ b/lib/openstudio-standards/standards/deer/deer_2003/deer_2003.ThermalZone.rb @@ -1,21 +1,22 @@ class DEER2003 < DEER - # @!group ThermalZone - - # Determine the area and occupancy level limits for - # demand control ventilation. - # - # @param thermal_zone [OpenStudio::Model::ThermalZone] the thermal zone - # @return [Array] the minimum area, in m^2 - # and the minimum occupancy density in m^2/person. Returns nil - # if there is no requirement. - def thermal_zone_demand_control_ventilation_limits(thermal_zone) - min_area_ft2 = nil # No minimum area - min_ft2_per_occ = 40 - - # Convert to SI - min_m2_per_occ = OpenStudio.convert(min_ft2_per_occ, 'ft^2', 'm^2').get - - return [min_area_ft2, min_m2_per_occ] - end + # @!group ThermalZone + + # Determine the area and occupancy level limits for + # demand control ventilation. + # + # @param thermal_zone [OpenStudio::Model::ThermalZone] the thermal zone + # @return [Array] the minimum area, in m^2 + # and the minimum occupancy density in m^2/person. Returns nil + # if there is no requirement. + def thermal_zone_demand_control_ventilation_limits(thermal_zone) + min_area_ft2 = nil # No minimum area + min_ft2_per_occ = 40 + + # Convert to SI + min_area_m2 = min_area_ft2 + min_m2_per_occ = OpenStudio.convert(min_ft2_per_occ, 'ft^2', 'm^2').get + + return [min_area_m2, min_m2_per_occ] end +end \ No newline at end of file diff --git a/lib/openstudio-standards/standards/deer/deer_2007/deer_2007.ThermalZone.rb b/lib/openstudio-standards/standards/deer/deer_2007/deer_2007.ThermalZone.rb index 0104a1166f..66809cfe31 100644 --- a/lib/openstudio-standards/standards/deer/deer_2007/deer_2007.ThermalZone.rb +++ b/lib/openstudio-standards/standards/deer/deer_2007/deer_2007.ThermalZone.rb @@ -1,21 +1,22 @@ class DEER2007 < DEER - # @!group ThermalZone - - # Determine the area and occupancy level limits for - # demand control ventilation. - # - # @param thermal_zone [OpenStudio::Model::ThermalZone] the thermal zone - # @return [Array] the minimum area, in m^2 - # and the minimum occupancy density in m^2/person. Returns nil - # if there is no requirement. - def thermal_zone_demand_control_ventilation_limits(thermal_zone) - min_area_ft2 = nil # No minimum area - min_ft2_per_occ = 40 - - # Convert to SI - min_m2_per_occ = OpenStudio.convert(min_ft2_per_occ, 'ft^2', 'm^2').get - - return [min_area_ft2, min_m2_per_occ] - end + # @!group ThermalZone + + # Determine the area and occupancy level limits for + # demand control ventilation. + # + # @param thermal_zone [OpenStudio::Model::ThermalZone] the thermal zone + # @return [Array] the minimum area, in m^2 + # and the minimum occupancy density in m^2/person. Returns nil + # if there is no requirement. + def thermal_zone_demand_control_ventilation_limits(thermal_zone) + min_area_ft2 = nil # No minimum area + min_ft2_per_occ = 40 + + # Convert to SI + min_area_m2 = min_area_ft2 + min_m2_per_occ = OpenStudio.convert(min_ft2_per_occ, 'ft^2', 'm^2').get + + return [min_area_m2, min_m2_per_occ] end +end \ No newline at end of file diff --git a/lib/openstudio-standards/standards/deer/deer_2011/deer_2011.ThermalZone.rb b/lib/openstudio-standards/standards/deer/deer_2011/deer_2011.ThermalZone.rb index ccc79aba83..8af5afb71b 100644 --- a/lib/openstudio-standards/standards/deer/deer_2011/deer_2011.ThermalZone.rb +++ b/lib/openstudio-standards/standards/deer/deer_2011/deer_2011.ThermalZone.rb @@ -1,21 +1,22 @@ class DEER2011 < DEER - # @!group ThermalZone - - # Determine the area and occupancy level limits for - # demand control ventilation. - # - # @param thermal_zone [OpenStudio::Model::ThermalZone] the thermal zone - # @return [Array] the minimum area, in m^2 - # and the minimum occupancy density in m^2/person. Returns nil - # if there is no requirement. - def thermal_zone_demand_control_ventilation_limits(thermal_zone) - min_area_ft2 = 150 - min_ft2_per_occ = 40 - - # Convert to SI - min_m2_per_occ = OpenStudio.convert(min_ft2_per_occ, 'ft^2', 'm^2').get - - return [min_area_ft2, min_m2_per_occ] - end + # @!group ThermalZone + + # Determine the area and occupancy level limits for + # demand control ventilation. + # + # @param thermal_zone [OpenStudio::Model::ThermalZone] the thermal zone + # @return [Array] the minimum area, in m^2 + # and the minimum occupancy density in m^2/person. Returns nil + # if there is no requirement. + def thermal_zone_demand_control_ventilation_limits(thermal_zone) + min_area_ft2 = 150 + min_ft2_per_occ = 40 + + # Convert to SI + min_area_m2 = OpenStudio.convert(min_area_ft2, 'ft^2', 'm^2').get + min_m2_per_occ = OpenStudio.convert(min_ft2_per_occ, 'ft^2', 'm^2').get + + return [min_area_m2, min_m2_per_occ] end +end \ No newline at end of file diff --git a/lib/openstudio-standards/standards/deer/deer_2014/deer_2014.ThermalZone.rb b/lib/openstudio-standards/standards/deer/deer_2014/deer_2014.ThermalZone.rb index ba021bb902..efc6333aeb 100644 --- a/lib/openstudio-standards/standards/deer/deer_2014/deer_2014.ThermalZone.rb +++ b/lib/openstudio-standards/standards/deer/deer_2014/deer_2014.ThermalZone.rb @@ -1,21 +1,22 @@ class DEER2014 < DEER - # @!group ThermalZone - - # Determine the area and occupancy level limits for - # demand control ventilation. - # - # @param thermal_zone [OpenStudio::Model::ThermalZone] the thermal zone - # @return [Array] the minimum area, in m^2 - # and the minimum occupancy density in m^2/person. Returns nil - # if there is no requirement. - def thermal_zone_demand_control_ventilation_limits(thermal_zone) - min_area_ft2 = 150 - min_ft2_per_occ = 40 - - # Convert to SI - min_m2_per_occ = OpenStudio.convert(min_ft2_per_occ, 'ft^2', 'm^2').get - - return [min_area_ft2, min_m2_per_occ] - end + # @!group ThermalZone + + # Determine the area and occupancy level limits for + # demand control ventilation. + # + # @param thermal_zone [OpenStudio::Model::ThermalZone] the thermal zone + # @return [Array] the minimum area, in m^2 + # and the minimum occupancy density in m^2/person. Returns nil + # if there is no requirement. + def thermal_zone_demand_control_ventilation_limits(thermal_zone) + min_area_ft2 = 150 + min_ft2_per_occ = 40 + + # Convert to SI + min_area_m2 = OpenStudio.convert(min_area_ft2, 'ft^2', 'm^2').get + min_m2_per_occ = OpenStudio.convert(min_ft2_per_occ, 'ft^2', 'm^2').get + + return [min_area_m2, min_m2_per_occ] end +end \ No newline at end of file diff --git a/lib/openstudio-standards/standards/deer/deer_2015/deer_2015.ThermalZone.rb b/lib/openstudio-standards/standards/deer/deer_2015/deer_2015.ThermalZone.rb index 5e88d4024c..0b6554dece 100644 --- a/lib/openstudio-standards/standards/deer/deer_2015/deer_2015.ThermalZone.rb +++ b/lib/openstudio-standards/standards/deer/deer_2015/deer_2015.ThermalZone.rb @@ -1,21 +1,22 @@ class DEER2015 < DEER - # @!group ThermalZone - - # Determine the area and occupancy level limits for - # demand control ventilation. - # - # @param thermal_zone [OpenStudio::Model::ThermalZone] the thermal zone - # @return [Array] the minimum area, in m^2 - # and the minimum occupancy density in m^2/person. Returns nil - # if there is no requirement. - def thermal_zone_demand_control_ventilation_limits(thermal_zone) - min_area_ft2 = 150 - min_ft2_per_occ = 40 - - # Convert to SI - min_m2_per_occ = OpenStudio.convert(min_ft2_per_occ, 'ft^2', 'm^2').get - - return [min_area_ft2, min_m2_per_occ] - end + # @!group ThermalZone + + # Determine the area and occupancy level limits for + # demand control ventilation. + # + # @param thermal_zone [OpenStudio::Model::ThermalZone] the thermal zone + # @return [Array] the minimum area, in m^2 + # and the minimum occupancy density in m^2/person. Returns nil + # if there is no requirement. + def thermal_zone_demand_control_ventilation_limits(thermal_zone) + min_area_ft2 = 150 + min_ft2_per_occ = 40 + + # Convert to SI + min_area_m2 = OpenStudio.convert(min_area_ft2, 'ft^2', 'm^2').get + min_m2_per_occ = OpenStudio.convert(min_ft2_per_occ, 'ft^2', 'm^2').get + + return [min_area_m2, min_m2_per_occ] end +end \ No newline at end of file diff --git a/lib/openstudio-standards/standards/deer/deer_2017/deer_2017.ThermalZone.rb b/lib/openstudio-standards/standards/deer/deer_2017/deer_2017.ThermalZone.rb index 4bfec6b14b..93c23f7354 100644 --- a/lib/openstudio-standards/standards/deer/deer_2017/deer_2017.ThermalZone.rb +++ b/lib/openstudio-standards/standards/deer/deer_2017/deer_2017.ThermalZone.rb @@ -1,21 +1,22 @@ class DEER2017 < DEER - # @!group ThermalZone - - # Determine the area and occupancy level limits for - # demand control ventilation. - # - # @param thermal_zone [OpenStudio::Model::ThermalZone] the thermal zone - # @return [Array] the minimum area, in m^2 - # and the minimum occupancy density in m^2/person. Returns nil - # if there is no requirement. - def thermal_zone_demand_control_ventilation_limits(thermal_zone) - min_area_ft2 = 150 - min_ft2_per_occ = 40 - - # Convert to SI - min_m2_per_occ = OpenStudio.convert(min_ft2_per_occ, 'ft^2', 'm^2').get - - return [min_area_ft2, min_m2_per_occ] - end + # @!group ThermalZone + + # Determine the area and occupancy level limits for + # demand control ventilation. + # + # @param thermal_zone [OpenStudio::Model::ThermalZone] the thermal zone + # @return [Array] the minimum area, in m^2 + # and the minimum occupancy density in m^2/person. Returns nil + # if there is no requirement. + def thermal_zone_demand_control_ventilation_limits(thermal_zone) + min_area_ft2 = 150 + min_ft2_per_occ = 40 + + # Convert to SI + min_area_m2 = OpenStudio.convert(min_area_ft2, 'ft^2', 'm^2').get + min_m2_per_occ = OpenStudio.convert(min_ft2_per_occ, 'ft^2', 'm^2').get + + return [min_area_m2, min_m2_per_occ] end +end \ No newline at end of file diff --git a/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.ThermalZone.rb b/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.ThermalZone.rb index 92fc5d396a..db4ac56050 100644 --- a/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.ThermalZone.rb +++ b/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.ThermalZone.rb @@ -1,21 +1,22 @@ class DEER2020 < DEER - # @!group ThermalZone - - # Determine the area and occupancy level limits for - # demand control ventilation. - # - # @param thermal_zone [OpenStudio::Model::ThermalZone] the thermal zone - # @return [Array] the minimum area, in m^2 - # and the minimum occupancy density in m^2/person. Returns nil - # if there is no requirement. - def thermal_zone_demand_control_ventilation_limits(thermal_zone) - min_area_ft2 = 150 - min_ft2_per_occ = 40 - - # Convert to SI - min_m2_per_occ = OpenStudio.convert(min_ft2_per_occ, 'ft^2', 'm^2').get - - return [min_area_ft2, min_m2_per_occ] - end + # @!group ThermalZone + + # Determine the area and occupancy level limits for + # demand control ventilation. + # + # @param thermal_zone [OpenStudio::Model::ThermalZone] the thermal zone + # @return [Array] the minimum area, in m^2 + # and the minimum occupancy density in m^2/person. Returns nil + # if there is no requirement. + def thermal_zone_demand_control_ventilation_limits(thermal_zone) + min_area_ft2 = 150 + min_ft2_per_occ = 40 + + # Convert to SI + min_area_m2 = OpenStudio.convert(min_area_ft2, 'ft^2', 'm^2').get + min_m2_per_occ = OpenStudio.convert(min_ft2_per_occ, 'ft^2', 'm^2').get + + return [min_area_m2, min_m2_per_occ] end +end \ No newline at end of file From e9efb8563fbcd0f5e41617bfd9c98fd7b48fda3b Mon Sep 17 00:00:00 2001 From: Matthew Dahlhausen Date: Tue, 8 Aug 2023 14:38:13 -0600 Subject: [PATCH 6/6] remove .vscode artificats --- .vscode/tasks.json.old | 30 ------------------------------ 1 file changed, 30 deletions(-) delete mode 100644 .vscode/tasks.json.old diff --git a/.vscode/tasks.json.old b/.vscode/tasks.json.old deleted file mode 100644 index a1252394cb..0000000000 --- a/.vscode/tasks.json.old +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": "0.1.0", - "command": "bash", - "args": [ - "-c" - ], - "isShellCommand": true, - "showOutput": "always", - "suppressTaskName": true, - "tasks": [ - { - "taskName": "ruby:run file", - "args": [ - "ruby ${file}" - ] - }, - { - "taskName": "bundle install", - "args": [ - "cd ${workspaceRoot}/openstudio-standards && bundle install" - ] - }, - { - "taskName": "run cirleci_tests_linux", - "args": [ - "cd ${workspaceRoot}/openstudio-standards && xterm -e 'bundle exec rake test:gem_group_0 | less' & cd ${workspaceRoot}/openstudio-standards && xterm -e 'bundle exec rake test:gem_group_1 | less' & cd ${workspaceRoot}/openstudio-standards && xterm -e 'bundle exec rake test:gem_group_2 | less' & cd ${workspaceRoot}/openstudio-standards && xterm -e 'bundle exec rake test:gem_group_3 | less' " - ] - } - ] -} \ No newline at end of file