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