lib/openstudio-standards/hvac_sizing/Siz.HeatingCoolingFuels.rb in openstudio-standards-0.3.0 vs lib/openstudio-standards/hvac_sizing/Siz.HeatingCoolingFuels.rb in openstudio-standards-0.3.1.rc1

- old
+ new

@@ -7,11 +7,11 @@ # please contact andrew.parker@nrel.gov and he'll gladly # point you in the right direction. ###### IMPORTANT NOTE ###### class OpenStudio::Model::Model - + # Get the heating fuel type of a plant loop # @todo If no heating equipment is found, check if there's a heat exchanger, # or a WaterHeater:Mixed or stratified that is connected to a heating source on the demand side def plant_loop_heating_fuels(plant_loop) fuels = [] @@ -22,25 +22,25 @@ obj_type = component.iddObjectType.valueName.to_s case obj_type when 'OS_Boiler_HotWater' component = component.to_BoilerHotWater.get fuels << component.fuelType - when 'OS_Boiler_Steam' + when 'OS_Boiler_Steam' component = component.to_BoilerHotWater.get fuels << component.fuelType when 'OS_DistrictHeating' - fuels << 'DistrictHeating' + fuels << 'DistrictHeating' when 'OS_HeatPump_WaterToWater_EquationFit_Heating' fuels << 'Electricity' when 'OS_SolarCollector_FlatPlate_PhotovoltaicThermal' fuels << 'SolarEnergy' when 'OS_SolarCollector_FlatPlate_Water' fuels << 'SolarEnergy' when 'OS_SolarCollector_IntegralCollectorStorage' fuels << 'SolarEnergy' when 'OS_WaterHeater_HeatPump' - fuels << 'Electricity' + fuels << 'Electricity' when 'OS_WaterHeater_Mixed' component = component.to_WaterHeaterMixed.get # Check if the heater actually has a capacity (otherwise it's simply a Storage Tank) if component.heaterMaximumCapacity.empty? || component.heaterMaximumCapacity.get != 0 @@ -63,27 +63,26 @@ # @todo not sure about whether it should be an elsif or not # Check the plant loop connection on the source side if component.secondaryPlantLoop.is_initialized fuels += self.plant_loop_heating_fuels(component.secondaryPlantLoop.get) end - when 'OS_HeatExchanger_FluidToFluid' hx = component.to_HeatExchangerFluidToFluid.get - cooling_hx_control_types = ["CoolingSetpointModulated", "CoolingSetpointOnOff", "CoolingDifferentialOnOff", "CoolingSetpointOnOffWithComponentOverride"] + cooling_hx_control_types = ['CoolingSetpointModulated', 'CoolingSetpointOnOff', 'CoolingDifferentialOnOff', 'CoolingSetpointOnOffWithComponentOverride'] cooling_hx_control_types.each {|x| x.downcase!} if !cooling_hx_control_types.include?(hx.controlType.downcase) && hx.secondaryPlantLoop.is_initialized fuels += self.plant_loop_heating_fuels(hx.secondaryPlantLoop.get) end when 'OS_Node', 'OS_Pump_ConstantSpeed', 'OS_Pump_VariableSpeed', 'OS_Connector_Splitter', 'OS_Connector_Mixer', 'OS_Pipe_Adiabatic' # To avoid extraneous debug messages else #OpenStudio::logFree(OpenStudio::Debug, 'openstudio.sizing.Model', "No heating fuel types found for #{obj_type}") end end - + return fuels.uniq.sort - + end # Get the cooling fuel type of a plant loop # Do not search for the fuel used for heat rejection # on the condenser loop. @@ -92,11 +91,11 @@ # Get the cooling fuels for all supply components # on this plant loop. plant_loop.supplyComponents.each do |component| # Get the object type obj_type = component.iddObjectType.valueName.to_s - case obj_type + case obj_type when 'OS_Chiller_Absorption' fuels << 'NaturalGas' OpenStudio::logFree(OpenStudio::Warn, 'openstudio.sizing.Model', "Assuming NaturalGas as fuel for absorption chiller.") when 'OS_Chiller_Absorption_Indirect' fuels << 'NaturalGas' @@ -117,19 +116,26 @@ fuels << 'Electricity' when 'OS_FluidCooler_SingleSpeed' fuels << 'Electricity' when 'OS_FluidCooler_TwoSpeed' fuels << 'Electricity' + when 'OS_HeatExchanger_FluidToFluid' + hx = component.to_HeatExchangerFluidToFluid.get + cooling_hx_control_types = ['CoolingSetpointModulated', 'CoolingSetpointOnOff', 'CoolingDifferentialOnOff', 'CoolingSetpointOnOffWithComponentOverride'] + cooling_hx_control_types.each {|x| x.downcase!} + if cooling_hx_control_types.include?(hx.controlType.downcase) && hx.secondaryPlantLoop.is_initialized + fuels += self.plant_loop_cooling_fuels(hx.secondaryPlantLoop.get) + end when 'OS_Node', 'OS_Pump_ConstantSpeed', 'OS_Pump_VariableSpeed', 'OS_Connector_Splitter', 'OS_Connector_Mixer', 'OS_Pipe_Adiabatic' - # To avoid extraneous debug messages + # To avoid extraneous debug messages else #OpenStudio::logFree(OpenStudio::Debug, 'openstudio.sizing.Model', "No cooling fuel types found for #{obj_type}") end end - + return fuels.uniq.sort - + end # Get the heating fuel type of a heating coil def coil_heating_fuels(heating_coil) fuels = [] @@ -159,11 +165,11 @@ end when 'OS_Coil_Heating_Water_BaseboardRadiant' heating_coil = heating_coil.to_CoilHeatingWaterBaseboardRadiant.get if heating_coil.plantLoop.is_initialized fuels += self.plant_loop_heating_fuels(heating_coil.plantLoop.get) - end + end when 'OS_Coil_Heating_WaterToAirHeatPump_EquationFit' fuels << 'Electricity' heating_coil = heating_coil.to_CoilHeatingWaterToAirHeatPumpEquationFit.get if heating_coil.plantLoop.is_initialized fuels += self.plant_loop_heating_fuels(heating_coil.plantLoop.get) @@ -190,17 +196,17 @@ fuels << 'Electricity' else OpenStudio::logFree(OpenStudio::Debug, 'openstudio.sizing.Model', "No heating fuel types found for #{obj_type}") end - return fuels.uniq.sort + return fuels.uniq.sort end # Get type of heat for coil for Appendix G system type selections - # - # @param heating_coil [object] + # + # @param heating_coil [object] # @return string description of heat type: Fuel, Electric, District, HeatPump, Solar, Mixed def coil_heat_type(heating_coil) fuels = [] heat_type = '' # Get the object type @@ -229,11 +235,11 @@ end when 'OS_Coil_Heating_Water_BaseboardRadiant' heating_coil = heating_coil.to_CoilHeatingWaterBaseboardRadiant.get if heating_coil.plantLoop.is_initialized fuels += self.plant_loop_heating_fuels(heating_coil.plantLoop.get) - end + end when 'OS_Coil_Heating_WaterToAirHeatPump_EquationFit' fuels << 'Electricity' heating_coil = heating_coil.to_CoilHeatingWaterToAirHeatPumpEquationFit.get if heating_coil.plantLoop.is_initialized fuels += self.plant_loop_heating_fuels(heating_coil.plantLoop.get) @@ -281,11 +287,11 @@ when 'FuelOilNo1', 'FuelOilNo2' has_fuel = true end end end - + # Choose only one heat type, or Mixed if there are multiple if heat_type == '' if has_fuel == true heat_type = 'Fuel' end @@ -321,12 +327,12 @@ return heat_type end # Get primary type of heat for one air loop for Appendix G system type selections - # - # @param air_loop [object] + # + # @param air_loop [object] # @return string description of heat type: Fuel, Electric, District, HeatPump, Solar, Mixed def airloop_primary_heat_type(air_loop) heat_types = [] air_loop.supplyComponents.each do |component| @@ -360,25 +366,25 @@ when 'OS_Coil_Heating_Gas' heat_types << self.coil_heat_type(component) when 'OS_Coil_Heating_Gas_MultiStage' heat_types << self.coil_heat_type(component) when 'OS_Coil_Heating_Water' - heat_types << self.coil_heat_type(component) + heat_types << self.coil_heat_type(component) when 'OS_Coil_Heating_WaterToAirHeatPump_EquationFit' heat_types << self.coil_heat_type(component) when 'OS_Coil_Heating_WaterToAirHeatPump_VariableSpeed_EquationFit' heat_types << self.coil_heat_type(component) when 'OS_Coil_WaterHeating_AirToWaterHeatPump' heat_types << self.coil_heat_type(component) when 'OS_Coil_WaterHeating_Desuperheater' heat_types << self.coil_heat_type(component) when 'OS_Node', 'OS_Fan_ConstantVolume', 'OS_Fan_VariableVolume', 'OS_AirLoopHVAC_OutdoorAirSystem' - # To avoid extraneous debug messages + # To avoid extraneous debug messages else #OpenStudio::logFree(OpenStudio::Debug, 'openstudio.sizing.Model', "No heating fuel types found for #{obj_type}") end - end + end has_electric = false has_fuel = false has_district = false has_solar = false @@ -446,12 +452,12 @@ return heat_type end # Get primary type of heat for one air loop for Appendix G system type selections - # - # @param air_loop [object] + # + # @param air_loop [object] # @return string description of heat type: Fuel, Electric, District, HeatPump, Solar, Mixed def zone_equipment_heat_type(zone) fuels = [] heat_type = '' # Get the heating fuels for all zone HVAC equipment @@ -462,48 +468,48 @@ when 'OS_AirTerminal_SingleDuct_ConstantVolume_FourPipeInduction' equipment = equipment.to_AirTerminalSingleDuctConstantVolumeFourPipeInduction.get heat_type = self.coil_heat_type(equipment.heatingCoil) when 'OS_AirTerminal_SingleDuct_ConstantVolume_Reheat' equipment = equipment.to_AirTerminalSingleDuctConstantVolumeReheat.get - heat_type = self.coil_heat_type(equipment.reheatCoil) + heat_type = self.coil_heat_type(equipment.reheatCoil) when 'OS_AirTerminal_SingleDuct_InletSideMixer' # TODO when 'OS_AirTerminal_SingleDuct_ParallelPIU_Reheat' equipment = equipment.to_AirTerminalSingleDuctParallelPIUReheat.get - heat_type = self.coil_heat_type(equipment.reheatCoil) + heat_type = self.coil_heat_type(equipment.reheatCoil) when 'OS_AirTerminal_SingleDuct_SeriesPIU_Reheat' equipment = equipment.to_AirTerminalSingleDuctSeriesPIUReheat.get - heat_type = self.coil_heat_type(equipment.reheatCoil) + heat_type = self.coil_heat_type(equipment.reheatCoil) when 'OS_AirTerminal_SingleDuct_VAVHeatAndCool_Reheat' equipment = equipment.to_AirTerminalSingleDuctVAVHeatAndCoolReheat.get - heat_type = self.coil_heat_type(equipment.reheatCoil) + heat_type = self.coil_heat_type(equipment.reheatCoil) when 'OS_AirTerminal_SingleDuct_VAV_Reheat' equipment = equipment.to_AirTerminalSingleDuctVAVReheat.get heat_type = self.coil_heat_type(equipment.reheatCoil) when 'OS_ZoneHVAC_Baseboard_Convective_Water' equipment = equipment.to_ZoneHVACBaseboardConvectiveWater.get - heat_type = self.coil_heat_type(equipment.heatingCoil) + heat_type = self.coil_heat_type(equipment.heatingCoil) when 'OS_ZoneHVAC_Baseboard_RadiantConvective_Water' equipment = equipment.to_ZoneHVACBaseboardRadiantConvectiveWater.get - heat_type = self.coil_heat_type(equipment.heatingCoil) + heat_type = self.coil_heat_type(equipment.heatingCoil) when 'OS_ZoneHVAC_FourPipeFanCoil' equipment = equipment.to_ZoneHVACFourPipeFanCoil.get - heat_type = self.coil_heat_type(equipment.heatingCoil) + heat_type = self.coil_heat_type(equipment.heatingCoil) when 'OS_ZoneHVAC_LowTemperatureRadiant_ConstantFlow' equipment = equipment.to_ZoneHVACLowTempRadiantConstFlow.get - heat_type = self.coil_heat_type(equipment.heatingCoil) + heat_type = self.coil_heat_type(equipment.heatingCoil) when 'OS_ZoneHVAC_LowTemperatureRadiant_VariableFlow' equipment = equipment.to_ZoneHVACLowTempRadiantVarFlow.get - heat_type = self.coil_heat_type(equipment.heatingCoil) + heat_type = self.coil_heat_type(equipment.heatingCoil) when 'OS_ZoneHVAC_UnitHeater' equipment = equipment.to_ZoneHVACUnitHeater.get - heat_type = self.coil_heat_type(equipment.heatingCoil) + heat_type = self.coil_heat_type(equipment.heatingCoil) when 'OS_ZoneHVAC_UnitVentilator' equipment = equipment.to_ZoneHVACUnitVentilator.get if equipment.heatingCoil.is_initialized - heat_type = self.coil_heat_type(equipment.heatingCoil.get) - end + heat_type = self.coil_heat_type(equipment.heatingCoil.get) + end when 'OS_ZoneHVAC_Baseboard_Convective_Electric' heat_type = 'Electric' when 'OS_ZoneHVAC_Baseboard_RadiantConvective_Electric' heat_type = 'Electric' when 'OS_ZoneHVAC_HighTemperatureRadiant' @@ -540,13 +546,13 @@ equipment = equipment.to_ZoneHVACWaterToAirHeatPump.get heat_type = self.coil_heat_type(equipment.heatingCoil) else OpenStudio::logFree(OpenStudio::Debug, 'openstudio.sizing.Model', "No heat type found for #{obj_type}") end end - + return heat_type - + end # Get the cooling fuel type of a cooling coil def coil_cooling_fuels(cooling_coil) @@ -591,21 +597,21 @@ when 'OS_Coil_Cooling_LowTemperatureRadiant_VariableFlow' cooling_coil = cooling_coil.to_CoilCoolingLowTempRadiantVarFlow.get if cooling_coil.plantLoop.is_initialized fuels += self.plant_loop_cooling_fuels(cooling_coil.plantLoop.get) end - when 'OS_Coil_Cooling_Water' + when 'OS_Coil_Cooling_Water' cooling_coil = cooling_coil.to_CoilCoolingWater.get if cooling_coil.plantLoop.is_initialized fuels += self.plant_loop_cooling_fuels(cooling_coil.plantLoop.get) - end + end else OpenStudio::logFree(OpenStudio::Debug, 'openstudio.sizing.Model', "No cooling fuel types found for #{obj_type}") end return fuels.uniq.sort - + end # Get the heating fuels for a zone # @ return [Array<String>] an array of fuels def zone_equipment_heating_fuels(zone) @@ -613,47 +619,47 @@ # Get the heating fuels for all zone HVAC equipment zone.equipment.each do |equipment| # Get the object type obj_type = equipment.iddObjectType.valueName.to_s case obj_type - when 'OS_AirLooHVAC_UnitarySystem' + when 'OS_AirLoopHVAC_UnitarySystem' equipment = equipment.to_AirLoopHVACUnitarySystem.get if equipment.heatingCoil.is_initialized fuels += self.coil_heating_fuels(equipment.heatingCoil.get) end when 'OS_AirTerminal_SingleDuct_ConstantVolume_FourPipeInduction' equipment = equipment.to_AirTerminalSingleDuctConstantVolumeFourPipeInduction.get fuels += self.coil_heating_fuels(equipment.heatingCoil) when 'OS_AirTerminal_SingleDuct_ConstantVolume_Reheat' equipment = equipment.to_AirTerminalSingleDuctConstantVolumeReheat.get - fuels += self.coil_heating_fuels(equipment.reheatCoil) + fuels += self.coil_heating_fuels(equipment.reheatCoil) when 'OS_AirTerminal_SingleDuct_InletSideMixer' # @todo complete method when 'OS_AirTerminal_SingleDuct_ParallelPIU_Reheat' equipment = equipment.to_AirTerminalSingleDuctParallelPIUReheat.get - fuels += self.coil_heating_fuels(equipment.reheatCoil) + fuels += self.coil_heating_fuels(equipment.reheatCoil) when 'OS_AirTerminal_SingleDuct_SeriesPIU_Reheat' equipment = equipment.to_AirTerminalSingleDuctSeriesPIUReheat.get - fuels += self.coil_heating_fuels(equipment.reheatCoil) + fuels += self.coil_heating_fuels(equipment.reheatCoil) when 'OS_AirTerminal_SingleDuct_VAVHeatAndCool_Reheat' equipment = equipment.to_AirTerminalSingleDuctVAVHeatAndCoolReheat.get - fuels += self.coil_heating_fuels(equipment.reheatCoil) + fuels += self.coil_heating_fuels(equipment.reheatCoil) when 'OS_AirTerminal_SingleDuct_VAV_Reheat' equipment = equipment.to_AirTerminalSingleDuctVAVReheat.get fuels += self.coil_heating_fuels(equipment.reheatCoil) when 'OS_ZoneHVAC_Baseboard_Convective_Water' equipment = equipment.to_ZoneHVACBaseboardConvectiveWater.get - fuels += self.coil_heating_fuels(equipment.heatingCoil) + fuels += self.coil_heating_fuels(equipment.heatingCoil) when 'OS_ZoneHVAC_Baseboard_RadiantConvective_Water' equipment = equipment.to_ZoneHVACBaseboardRadiantConvectiveWater.get - fuels += self.coil_heating_fuels(equipment.heatingCoil) + fuels += self.coil_heating_fuels(equipment.heatingCoil) when 'OS_ZoneHVAC_FourPipeFanCoil' equipment = equipment.to_ZoneHVACFourPipeFanCoil.get - fuels += self.coil_heating_fuels(equipment.heatingCoil) + fuels += self.coil_heating_fuels(equipment.heatingCoil) when 'OS_ZoneHVAC_LowTemperatureRadiant_ConstantFlow' equipment = equipment.to_ZoneHVACLowTempRadiantConstFlow.get - fuels += self.coil_heating_fuels(equipment.heatingCoil) + fuels += self.coil_heating_fuels(equipment.heatingCoil) when 'OS_ZoneHVAC_LowTemperatureRadiant_VariableFlow' equipment = equipment.to_ZoneHVACLowTempRadiantVarFlow.get if equipment.model.version < OpenStudio::VersionString.new('3.2.0') fuels += self.coil_heating_fuels(equipment.heatingCoil) else @@ -661,16 +667,16 @@ fuels += self.coil_heating_fuels(equipment.heatingCoil.get) end end when 'OS_ZoneHVAC_UnitHeater' equipment = equipment.to_ZoneHVACUnitHeater.get - fuels += self.coil_heating_fuels(equipment.heatingCoil) + fuels += self.coil_heating_fuels(equipment.heatingCoil) when 'OS_ZoneHVAC_UnitVentilator' equipment = equipment.to_ZoneHVACUnitVentilator.get if equipment.heatingCoil.is_initialized - fuels += self.coil_heating_fuels(equipment.heatingCoil.get) - end + fuels += self.coil_heating_fuels(equipment.heatingCoil.get) + end when 'OS_ZoneHVAC_Baseboard_Convective_Electric' fuels << 'Electricity' when 'OS_ZoneHVAC_Baseboard_RadiantConvective_Electric' fuels << 'Electricity' when 'OS_ZoneHVAC_HighTemperatureRadiant' @@ -693,13 +699,13 @@ fuels += self.coil_heating_fuels(equipment.heatingCoil) else OpenStudio::logFree(OpenStudio::Debug, 'openstudio.sizing.Model', "No heating fuel types found for #{obj_type}") end end - + return fuels.uniq.sort - + end # Get the cooling fuels for a zone def zone_equipment_cooling_fuels(zone) fuels = [] @@ -714,14 +720,14 @@ fuels += self.coil_cooling_fuels(equipment.coolingCoil.get) end when 'OS_AirTerminal_SingleDuct_ConstantVolume_CooledBeam' equipment = equipment.to_AirTerminalSingleDuctConstantVolumeCooledBeam.get fuels += self.coil_cooling_fuels(equipment.coilCoolingCooledBeam) - when 'OS_AirTerminal_SingleDuct_ConstantVolume_FourPipeInduction' + when 'OS_AirTerminal_SingleDuct_ConstantVolume_FourPipeInduction' equipment = equipment.to_AirTerminalSingleDuctConstantVolumeFourPipeInduction.get if equipment.coolingCoil.is_initialized - fuels += self.coil_cooling_fuels(equipment.coolingCoil.get) + fuels += self.coil_cooling_fuels(equipment.coolingCoil.get) end when 'OS_ZoneHVAC_FourPipeFanCoil' equipment = equipment.to_ZoneHVACFourPipeFanCoil.get fuels += self.coil_cooling_fuels(equipment.coolingCoil) when 'OS_ZoneHVAC_LowTemperatureRadiant_ConstantFlow' @@ -750,11 +756,11 @@ OpenStudio::logFree(OpenStudio::Debug, 'openstudio.sizing.Model', "No cooling fuel types found for #{obj_type}") end end return fuels.uniq.sort - + end # Get the heating fuels for a zones airloop def zone_airloop_heating_fuels(zone) fuels = [] @@ -762,11 +768,11 @@ air_loop = zone.airLoopHVAC if air_loop.empty? return fuels end air_loop = air_loop.get - + # Find fuel types of all equipment # on the supply side of this airloop. air_loop.supplyComponents.each do |component| # Get the object type obj_type = component.iddObjectType.valueName.to_s @@ -798,28 +804,28 @@ when 'OS_Coil_Heating_Gas' fuels += self.coil_heating_fuels(component) when 'OS_Coil_Heating_Gas_MultiStage' fuels += self.coil_heating_fuels(component) when 'OS_Coil_Heating_Water' - fuels += self.coil_heating_fuels(component) + fuels += self.coil_heating_fuels(component) when 'OS_Coil_Heating_WaterToAirHeatPump_EquationFit' fuels += self.coil_heating_fuels(component) when 'OS_Coil_Heating_WaterToAirHeatPump_VariableSpeed_EquationFit' fuels += self.coil_heating_fuels(component) when 'OS_Coil_WaterHeating_AirToWaterHeatPump' fuels += self.coil_heating_fuels(component) when 'OS_Coil_WaterHeating_Desuperheater' fuels += self.coil_heating_fuels(component) when 'OS_Node', 'OS_Fan_ConstantVolume', 'OS_Fan_VariableVolume', 'OS_AirLoopHVAC_OutdoorAirSystem' - # To avoid extraneous debug messages + # To avoid extraneous debug messages else #OpenStudio::logFree(OpenStudio::Debug, 'openstudio.sizing.Model', "No heating fuel types found for #{obj_type}") end - end - + end + return fuels.uniq.sort - + end # Get the cooling fuels for a zones airloop def zone_airloop_cooling_fuels(zone) fuels = [] @@ -827,11 +833,11 @@ air_loop = zone.airLoopHVAC if air_loop.empty? return fuels end air_loop = air_loop.get - + # Find fuel types of all equipment # on the supply side of this airloop. air_loop.supplyComponents.each do |component| # Get the object type obj_type = component.iddObjectType.valueName.to_s @@ -851,11 +857,11 @@ fuels += self.coil_cooling_fuels(component.coolingCoil.get) end when 'OS_EvaporativeCooler_Direct_ResearchSpecial' fuels << 'Electricity' when 'OS_EvaporativeCooler_Indirect_ResearchSpecial' - fuels << 'Electricity' + fuels << 'Electricity' when 'OS_Coil_Cooling_DX_MultiSpeed' fuels += self.coil_cooling_fuels(component) when 'OS_Coil_Cooling_DX_SingleSpeed' fuels += self.coil_cooling_fuels(component) when 'OS_Coil_Cooling_DX_TwoSpeed' @@ -872,21 +878,21 @@ fuels += self.coil_cooling_fuels(component) when 'OS_CoilSystem_Cooling_DX_HeatExchangerAssisted' fuels += self.coil_cooling_fuels(component) when 'OS_CoilSystem_Cooling_Water_HeatExchangerAssisted' fuels += self.coil_cooling_fuels(component) - when 'OS_Coil_Cooling_Water' - fuels += self.coil_cooling_fuels(component) + when 'OS_Coil_Cooling_Water' + fuels += self.coil_cooling_fuels(component) when 'OS_HeatPump_WaterToWater_EquationFit_Cooling' fuels += self.coil_cooling_fuels(component) when 'OS_Node', 'OS_Fan_ConstantVolume', 'OS_Fan_VariableVolume', 'OS_AirLoopHVAC_OutdoorAirSystem' - # To avoid extraneous debug messages + # To avoid extraneous debug messages else #OpenStudio::logFree(OpenStudio::Debug, 'openstudio.sizing.Model', "No heating fuel types found for #{obj_type}") end - end - + end + return fuels.uniq.sort - - end - + + end + end