lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb in openstudio-standards-0.2.7 vs lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb in openstudio-standards-0.2.8
- old
+ new
@@ -815,14 +815,14 @@
end
# Determine whether or not this system
# is required to have an economizer.
#
- # @param climate_zone [String] valid choices: 'ASHRAE 169-2006-1A', 'ASHRAE 169-2006-1B', 'ASHRAE 169-2006-2A', 'ASHRAE 169-2006-2B',
- # 'ASHRAE 169-2006-3A', 'ASHRAE 169-2006-3B', 'ASHRAE 169-2006-3C', 'ASHRAE 169-2006-4A', 'ASHRAE 169-2006-4B', 'ASHRAE 169-2006-4C',
- # 'ASHRAE 169-2006-5A', 'ASHRAE 169-2006-5B', 'ASHRAE 169-2006-5C', 'ASHRAE 169-2006-6A', 'ASHRAE 169-2006-6B', 'ASHRAE 169-2006-7A',
- # 'ASHRAE 169-2006-7B', 'ASHRAE 169-2006-8A', 'ASHRAE 169-2006-8B'
+ # @param climate_zone [String] valid choices: 'ASHRAE 169-2013-1A', 'ASHRAE 169-2013-1B', 'ASHRAE 169-2013-2A', 'ASHRAE 169-2013-2B',
+ # 'ASHRAE 169-2013-3A', 'ASHRAE 169-2013-3B', 'ASHRAE 169-2013-3C', 'ASHRAE 169-2013-4A', 'ASHRAE 169-2013-4B', 'ASHRAE 169-2013-4C',
+ # 'ASHRAE 169-2013-5A', 'ASHRAE 169-2013-5B', 'ASHRAE 169-2013-5C', 'ASHRAE 169-2013-6A', 'ASHRAE 169-2013-6B', 'ASHRAE 169-2013-7A',
+ # 'ASHRAE 169-2013-7B', 'ASHRAE 169-2013-8A', 'ASHRAE 169-2013-8B'
# @return [Bool] returns true if an economizer is required, false if not
def air_loop_hvac_economizer_required?(air_loop_hvac, climate_zone)
economizer_required = false
return economizer_required if air_loop_hvac.name.to_s.include? 'Outpatient F1'
@@ -840,11 +840,11 @@
'climate_zone' => climate_zone,
'data_center' => is_dc
}
econ_limits = model_find_object(standards_data['economizers'], search_criteria)
if econ_limits.nil?
- OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.AirLoopHVAC', "Cannot find economizer limits for #{template}, #{climate_zone}, assuming no economizer required.")
+ OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.AirLoopHVAC', "Cannot find economizer limits for template: #{template}, climate zone: #{climate_zone}, and data center: #{is_dc}; assuming no economizer required.")
return economizer_required
end
# Determine the minimum capacity and whether or not it is a data center
minimum_capacity_btu_per_hr = econ_limits['capacity_limit']
@@ -979,20 +979,39 @@
'ASHRAE 169-2006-5B',
'ASHRAE 169-2006-5C',
'ASHRAE 169-2006-6B',
'ASHRAE 169-2006-7B',
'ASHRAE 169-2006-8A',
- 'ASHRAE 169-2006-8B'
+ 'ASHRAE 169-2006-8B',
+ 'ASHRAE 169-2013-1B',
+ 'ASHRAE 169-2013-2B',
+ 'ASHRAE 169-2013-3B',
+ 'ASHRAE 169-2013-3C',
+ 'ASHRAE 169-2013-4B',
+ 'ASHRAE 169-2013-4C',
+ 'ASHRAE 169-2013-5B',
+ 'ASHRAE 169-2013-5C',
+ 'ASHRAE 169-2013-6B',
+ 'ASHRAE 169-2013-7B',
+ 'ASHRAE 169-2013-8A',
+ 'ASHRAE 169-2013-8B'
drybulb_limit_f = 75
when 'ASHRAE 169-2006-5A',
'ASHRAE 169-2006-6A',
- 'ASHRAE 169-2006-7A'
+ 'ASHRAE 169-2006-7A',
+ 'ASHRAE 169-2013-5A',
+ 'ASHRAE 169-2013-6A',
+ 'ASHRAE 169-2013-7A'
drybulb_limit_f = 70
when 'ASHRAE 169-2006-1A',
'ASHRAE 169-2006-2A',
'ASHRAE 169-2006-3A',
- 'ASHRAE 169-2006-4A'
+ 'ASHRAE 169-2006-4A',
+ 'ASHRAE 169-2013-1A',
+ 'ASHRAE 169-2013-2A',
+ 'ASHRAE 169-2013-3A',
+ 'ASHRAE 169-2013-4A'
drybulb_limit_f = 65
end
when 'FixedEnthalpy'
enthalpy_limit_btu_per_lb = 28
when 'FixedDewPointAndDryBulb'
@@ -1055,30 +1074,49 @@
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirLoopHVAC', "For #{air_loop_hvac.name}: non-integrated economizer per 6.5.1.3 exception b, DX system less than #{minimum_capacity_btu_per_hr}Btu/hr.")
else
# Exception c, Systems in climate zones 1,2,3a,4a,5a,5b,6,7,8
case climate_zone
when 'ASHRAE 169-2006-1A',
- 'ASHRAE 169-2006-1B',
- 'ASHRAE 169-2006-2A',
- 'ASHRAE 169-2006-2B',
- 'ASHRAE 169-2006-3A',
- 'ASHRAE 169-2006-4A',
- 'ASHRAE 169-2006-5A',
- 'ASHRAE 169-2006-5B',
- 'ASHRAE 169-2006-6A',
- 'ASHRAE 169-2006-6B',
- 'ASHRAE 169-2006-7A',
- 'ASHRAE 169-2006-7B',
- 'ASHRAE 169-2006-8A',
- 'ASHRAE 169-2006-8B'
+ 'ASHRAE 169-2006-1B',
+ 'ASHRAE 169-2006-2A',
+ 'ASHRAE 169-2006-2B',
+ 'ASHRAE 169-2006-3A',
+ 'ASHRAE 169-2006-4A',
+ 'ASHRAE 169-2006-5A',
+ 'ASHRAE 169-2006-5B',
+ 'ASHRAE 169-2006-6A',
+ 'ASHRAE 169-2006-6B',
+ 'ASHRAE 169-2006-7A',
+ 'ASHRAE 169-2006-7B',
+ 'ASHRAE 169-2006-8A',
+ 'ASHRAE 169-2006-8B',
+ 'ASHRAE 169-2013-1A',
+ 'ASHRAE 169-2013-1B',
+ 'ASHRAE 169-2013-2A',
+ 'ASHRAE 169-2013-2B',
+ 'ASHRAE 169-2013-3A',
+ 'ASHRAE 169-2013-4A',
+ 'ASHRAE 169-2013-5A',
+ 'ASHRAE 169-2013-5B',
+ 'ASHRAE 169-2013-6A',
+ 'ASHRAE 169-2013-6B',
+ 'ASHRAE 169-2013-7A',
+ 'ASHRAE 169-2013-7B',
+ 'ASHRAE 169-2013-8A',
+ 'ASHRAE 169-2013-8B'
integrated_economizer_required = false
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirLoopHVAC', "For #{air_loop_hvac.name}: non-integrated economizer per 6.5.1.3 exception c, climate zone #{climate_zone}.")
when 'ASHRAE 169-2006-3B',
- 'ASHRAE 169-2006-3C',
- 'ASHRAE 169-2006-4B',
- 'ASHRAE 169-2006-4C',
- 'ASHRAE 169-2006-5C'
+ 'ASHRAE 169-2006-3C',
+ 'ASHRAE 169-2006-4B',
+ 'ASHRAE 169-2006-4C',
+ 'ASHRAE 169-2006-5C',
+ 'ASHRAE 169-2013-3B',
+ 'ASHRAE 169-2013-3C',
+ 'ASHRAE 169-2013-4B',
+ 'ASHRAE 169-2013-4C',
+ 'ASHRAE 169-2013-5C'
integrated_economizer_required = true
end
end
return integrated_economizer_required
@@ -1098,14 +1136,19 @@
min_ext_area_served_ft2 = infinity_ft2
# Determine the minimum capacity that requires an economizer
case climate_zone
when 'ASHRAE 169-2006-1A',
- 'ASHRAE 169-2006-1B',
- 'ASHRAE 169-2006-2A',
- 'ASHRAE 169-2006-3A',
- 'ASHRAE 169-2006-4A'
+ 'ASHRAE 169-2006-1B',
+ 'ASHRAE 169-2006-2A',
+ 'ASHRAE 169-2006-3A',
+ 'ASHRAE 169-2006-4A',
+ 'ASHRAE 169-2013-1A',
+ 'ASHRAE 169-2013-1B',
+ 'ASHRAE 169-2013-2A',
+ 'ASHRAE 169-2013-3A',
+ 'ASHRAE 169-2013-4A'
min_int_area_served_ft2 = infinity_ft2 # No requirement
min_ext_area_served_ft2 = infinity_ft2 # No requirement
else
min_int_area_served_ft2 = 0 # Always required
min_ext_area_served_ft2 = 0 # Always required
@@ -1209,26 +1252,41 @@
enthalpy_limit_btu_per_lb = nil
dewpoint_limit_f = nil
case climate_zone
when 'ASHRAE 169-2006-1B',
- 'ASHRAE 169-2006-2B',
- 'ASHRAE 169-2006-3B',
- 'ASHRAE 169-2006-3C',
- 'ASHRAE 169-2006-4B',
- 'ASHRAE 169-2006-4C',
- 'ASHRAE 169-2006-5B',
- 'ASHRAE 169-2006-5C',
- 'ASHRAE 169-2006-6B',
- 'ASHRAE 169-2006-7B',
- 'ASHRAE 169-2006-8A',
- 'ASHRAE 169-2006-8B'
+ 'ASHRAE 169-2006-2B',
+ 'ASHRAE 169-2006-3B',
+ 'ASHRAE 169-2006-3C',
+ 'ASHRAE 169-2006-4B',
+ 'ASHRAE 169-2006-4C',
+ 'ASHRAE 169-2006-5B',
+ 'ASHRAE 169-2006-5C',
+ 'ASHRAE 169-2006-6B',
+ 'ASHRAE 169-2006-7B',
+ 'ASHRAE 169-2006-8A',
+ 'ASHRAE 169-2006-8B',
+ 'ASHRAE 169-2013-1B',
+ 'ASHRAE 169-2013-2B',
+ 'ASHRAE 169-2013-3B',
+ 'ASHRAE 169-2013-3C',
+ 'ASHRAE 169-2013-4B',
+ 'ASHRAE 169-2013-4C',
+ 'ASHRAE 169-2013-5B',
+ 'ASHRAE 169-2013-5C',
+ 'ASHRAE 169-2013-6B',
+ 'ASHRAE 169-2013-7B',
+ 'ASHRAE 169-2013-8A',
+ 'ASHRAE 169-2013-8B'
economizer_type = 'FixedDryBulb'
drybulb_limit_f = 75
when 'ASHRAE 169-2006-5A',
- 'ASHRAE 169-2006-6A',
- 'ASHRAE 169-2006-7A'
+ 'ASHRAE 169-2006-6A',
+ 'ASHRAE 169-2006-7A',
+ 'ASHRAE 169-2013-5A',
+ 'ASHRAE 169-2013-6A',
+ 'ASHRAE 169-2013-7A'
economizer_type = 'FixedDryBulb'
drybulb_limit_f = 70
else
economizer_type = 'FixedDryBulb'
drybulb_limit_f = 65
@@ -1271,30 +1329,46 @@
# Determine the prohibited types
prohibited_types = []
case climate_zone
when 'ASHRAE 169-2006-1B',
- 'ASHRAE 169-2006-2B',
- 'ASHRAE 169-2006-3B',
- 'ASHRAE 169-2006-3C',
- 'ASHRAE 169-2006-4B',
- 'ASHRAE 169-2006-4C',
- 'ASHRAE 169-2006-5B',
- 'ASHRAE 169-2006-6B',
- 'ASHRAE 169-2006-7A',
- 'ASHRAE 169-2006-7B',
- 'ASHRAE 169-2006-8A',
- 'ASHRAE 169-2006-8B'
+ 'ASHRAE 169-2006-2B',
+ 'ASHRAE 169-2006-3B',
+ 'ASHRAE 169-2006-3C',
+ 'ASHRAE 169-2006-4B',
+ 'ASHRAE 169-2006-4C',
+ 'ASHRAE 169-2006-5B',
+ 'ASHRAE 169-2006-6B',
+ 'ASHRAE 169-2006-7A',
+ 'ASHRAE 169-2006-7B',
+ 'ASHRAE 169-2006-8A',
+ 'ASHRAE 169-2006-8B',
+ 'ASHRAE 169-2013-1B',
+ 'ASHRAE 169-2013-2B',
+ 'ASHRAE 169-2013-3B',
+ 'ASHRAE 169-2013-3C',
+ 'ASHRAE 169-2013-4B',
+ 'ASHRAE 169-2013-4C',
+ 'ASHRAE 169-2013-5B',
+ 'ASHRAE 169-2013-6B',
+ 'ASHRAE 169-2013-7A',
+ 'ASHRAE 169-2013-7B',
+ 'ASHRAE 169-2013-8A',
+ 'ASHRAE 169-2013-8B'
prohibited_types = ['FixedEnthalpy']
- when
- 'ASHRAE 169-2006-1A',
- 'ASHRAE 169-2006-2A',
- 'ASHRAE 169-2006-3A',
- 'ASHRAE 169-2006-4A'
+ when 'ASHRAE 169-2006-1A',
+ 'ASHRAE 169-2006-2A',
+ 'ASHRAE 169-2006-3A',
+ 'ASHRAE 169-2006-4A',
+ 'ASHRAE 169-2013-1A',
+ 'ASHRAE 169-2013-2A',
+ 'ASHRAE 169-2013-3A',
+ 'ASHRAE 169-2013-4A'
prohibited_types = ['DifferentialDryBulb']
- when
- 'ASHRAE 169-2006-5A',
- 'ASHRAE 169-2006-6A',
+ when 'ASHRAE 169-2006-5A',
+ 'ASHRAE 169-2006-6A',
+ 'ASHRAE 169-2013-5A',
+ 'ASHRAE 169-2013-6A'
prohibited_types = []
end
# Check if the specified type is allowed
economizer_type_allowed = true