lib/openstudio-standards/standards/Standards.BoilerHotWater.rb in openstudio-standards-0.1.6 vs lib/openstudio-standards/standards/Standards.BoilerHotWater.rb in openstudio-standards-0.1.7

- old
+ new

@@ -32,122 +32,101 @@ search_criteria['fluid_type'] = fluid_type return search_criteria end - # find capacity + # Find capacity in W # - # @return [Double] capacity_btu_per_hr - used for find_object + # @return [Double] capacity in W def find_capacity - # Get the capacity capacity_w = nil - capacity_btu_per_hr = nil if nominalCapacity.is_initialized capacity_w = nominalCapacity.get elsif autosizedNominalCapacity.is_initialized capacity_w = autosizedNominalCapacity.get else OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.BoilerHotWater', "For #{name} capacity is not available, cannot apply efficiency standard.") successfully_set_all_properties = false return successfully_set_all_properties end - # Convert capacity to Btu/hr - capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get - - return capacity_btu_per_hr + return capacity_w end # Finds lookup object in standards and return minimum thermal efficiency # # @param template [String] valid choices: 'DOE Ref Pre-1980', 'DOE Ref 1980-2004', '90.1-2004', '90.1-2007', '90.1-2010', '90.1-2013' # @param standards [Hash] the OpenStudio_Standards spreadsheet in hash format # @return [Double] minimum thermal efficiency - def standard_minimum_thermal_efficiency(template, standards) + def standard_minimum_thermal_efficiency(template, rename=false) # Get the boiler properties search_criteria = find_search_criteria(template) - capacity_kbtu_per_hr = find_capacity - blr_props = model.find_object(standards['boilers'], search_criteria, capacity_kbtu_per_hr) + capacity_w = find_capacity + capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get + capacity_kbtu_per_hr = OpenStudio.convert(capacity_w, 'W', 'kBtu/hr').get - fuel_type = blr_props['fuel_type'] - fluid_type = blr_props['fluid_type'] - # Get the minimum efficiency standards thermal_eff = nil + # Get the boiler properties + blr_props = model.find_object($os_standards['boilers'], search_criteria, capacity_btu_per_hr) + unless blr_props + OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.BoilerHotWater', "For #{name}, cannot find boiler properties, cannot apply efficiency standard.") + successfully_set_all_properties = false + return successfully_set_all_properties + end + + fuel_type = blr_props['fuel_type'] + fluid_type = blr_props['fluid_type'] + # If specified as AFUE unless blr_props['minimum_annual_fuel_utilization_efficiency'].nil? min_afue = blr_props['minimum_annual_fuel_utilization_efficiency'] thermal_eff = afue_to_thermal_eff(min_afue) - setName("#{name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_afue} AFUE") + new_comp_name = "#{name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_afue} AFUE" OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.BoilerHotWater', "For #{template}: #{name}: #{fuel_type} #{fluid_type} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; AFUE = #{min_afue}") end # If specified as thermal efficiency unless blr_props['minimum_thermal_efficiency'].nil? thermal_eff = blr_props['minimum_thermal_efficiency'] - setName("#{name} #{capacity_kbtu_per_hr.round}kBtu/hr #{thermal_eff} Thermal Eff") + new_comp_name = "#{name} #{capacity_kbtu_per_hr.round}kBtu/hr #{thermal_eff} Thermal Eff" OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.BoilerHotWater', "For #{template}: #{name}: #{fuel_type} #{fluid_type} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; Thermal Efficiency = #{thermal_eff}") end # If specified as combustion efficiency unless blr_props['minimum_combustion_efficiency'].nil? min_comb_eff = blr_props['minimum_combustion_efficiency'] thermal_eff = combustion_eff_to_thermal_eff(min_comb_eff) - setName("#{name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_comb_eff} Combustion Eff") + new_comp_name = "#{name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_comb_eff} Combustion Eff" OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.BoilerHotWater', "For #{template}: #{name}: #{fuel_type} #{fluid_type} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; Combustion Efficiency = #{min_comb_eff}") end + # Rename + if rename + setName(new_comp_name) + end + return thermal_eff end # Applies the standard efficiency ratings and typical performance curves to this object. # # @param template [String] valid choices: 'DOE Ref Pre-1980', 'DOE Ref 1980-2004', '90.1-2004', '90.1-2007', '90.1-2010', '90.1-2013', 'NECB2011' # @param standards [Hash] the OpenStudio_Standards spreadsheet in hash format # @return [Bool] true if successful, false if not def apply_efficiency_and_curves(template) - successfully_set_all_properties = false + successfully_set_all_properties = false - boilers = $os_standards['boilers'] - # Define the criteria to find the boiler properties # in the hvac standards data set. - search_criteria = {} - search_criteria['template'] = template + search_criteria = find_search_criteria(template) + fuel_type = search_criteria['fuel_type'] + fluid_type = search_criteria['fluid_type'] - # Get fuel type - fuel_type = nil - case fuelType - when 'NaturalGas' - fuel_type = 'Gas' - when 'Electricity' - fuel_type = 'Electric' - when 'FuelOil#1', 'FuelOil#2' - fuel_type = 'Oil' - else - OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.BoilerHotWater', "For #{name}, a fuel type of #{fuelType} is not yet supported. Assuming 'Gas.'") - fuel_type = 'Gas' - end - - search_criteria['fuel_type'] = fuel_type - - # Get the fluid type - fluid_type = 'Hot Water' - search_criteria['fluid_type'] = fluid_type - # Get the capacity - capacity_w = nil - if nominalCapacity.is_initialized - capacity_w = nominalCapacity.get - elsif autosizedNominalCapacity.is_initialized - capacity_w = autosizedNominalCapacity.get - else - OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.BoilerHotWater', "For #{name} capacity is not available, cannot apply efficiency standard.") - successfully_set_all_properties = false - return successfully_set_all_properties - end + capacity_w = find_capacity # for NECB, check if secondary and/or modulating boiler required if template == 'NECB 2011' if capacity_w / 1000.0 >= 352.0 if name.to_s.include?('Primary Boiler') @@ -177,11 +156,11 @@ capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get capacity_kbtu_per_hr = OpenStudio.convert(capacity_w, 'W', 'kBtu/hr').get end # Get the boiler properties - blr_props = model.find_object(boilers, search_criteria, capacity_btu_per_hr) + blr_props = model.find_object($os_standards['boilers'], search_criteria, capacity_btu_per_hr) unless blr_props OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.BoilerHotWater', "For #{name}, cannot find boiler properties, cannot apply efficiency standard.") successfully_set_all_properties = false return successfully_set_all_properties end @@ -200,27 +179,30 @@ # If specified as AFUE unless blr_props['minimum_annual_fuel_utilization_efficiency'].nil? min_afue = blr_props['minimum_annual_fuel_utilization_efficiency'] thermal_eff = afue_to_thermal_eff(min_afue) - setName("#{name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_afue} AFUE") + new_comp_name = "#{name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_afue} AFUE" OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.BoilerHotWater', "For #{template}: #{name}: #{fuel_type} #{fluid_type} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; AFUE = #{min_afue}") end # If specified as thermal efficiency unless blr_props['minimum_thermal_efficiency'].nil? thermal_eff = blr_props['minimum_thermal_efficiency'] - setName("#{name} #{capacity_kbtu_per_hr.round}kBtu/hr #{thermal_eff} Thermal Eff") + new_comp_name = "#{name} #{capacity_kbtu_per_hr.round}kBtu/hr #{thermal_eff} Thermal Eff" OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.BoilerHotWater', "For #{template}: #{name}: #{fuel_type} #{fluid_type} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; Thermal Efficiency = #{thermal_eff}") end # If specified as combustion efficiency unless blr_props['minimum_combustion_efficiency'].nil? min_comb_eff = blr_props['minimum_combustion_efficiency'] thermal_eff = combustion_eff_to_thermal_eff(min_comb_eff) - setName("#{name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_comb_eff} Combustion Eff") + new_comp_name = "#{name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_comb_eff} Combustion Eff" OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.BoilerHotWater', "For #{template}: #{name}: #{fuel_type} #{fluid_type} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; Combustion Efficiency = #{min_comb_eff}") end + + # Set the name + setName(new_comp_name) # Set the efficiency values unless thermal_eff.nil? setNominalThermalEfficiency(thermal_eff) end