Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update furnace and boiler efficiency to match values from ASHRAE 90.1-2004 through 2019 #1171

Merged
merged 6 commits into from
Sep 13, 2021
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions data/standards/manage_OpenStudio_Standards.rb
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,8 @@ def unique_properties(sheet_name)
['template', 'fluid_type', 'fuel_type', 'condensing', 'condensing_control', 'minimum_capacity', 'maximum_capacity', 'start_date', 'end_date']
when 'chillers'
['template', 'cooling_type', 'condenser_type', 'compressor_type', 'absorption_type', 'variable_speed_drive', 'minimum_capacity', 'maximum_capacity', 'start_date', 'end_date']
when 'furnaces'
['template', 'minimum_capacity', 'maximum_capacity', 'start_date', 'end_date']
Comment on lines +101 to +102
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added to accommodate new furnace JSONs

when 'heat_rejection'
['template', 'equipment_type', 'fan_type', 'start_date', 'end_date']
when 'water_source_heat_pumps'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -282,6 +282,15 @@ boilers,minimum_thermal_efficiency,%
boilers,minimum_combustion_efficiency,%
boilers,efffplr,
boilers,notes,
furnaces,template,
furnaces,minimum_capacity,Btu/hr
furnaces,maximum_capacity,Btu/hr
furnaces,start_date,
furnaces,end_date,
furnaces,minimum_annual_fuel_utilization_efficiency,AFUE
furnaces,minimum_thermal_efficiency,%
furnaces,minimum_combustion_efficiency,%
furnaces,notes,
Comment on lines +285 to +293
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added to accommodate adding standardized furnace JSONs

chillers,template,
chillers,cooling_type,
chillers,condenser_type,
Expand Down
84 changes: 82 additions & 2 deletions lib/openstudio-standards/standards/Standards.CoilHeatingGas.rb
Original file line number Diff line number Diff line change
@@ -1,12 +1,92 @@
class Standard
# @!group CoilHeatingGas

# Applies the standard efficiency ratings and typical performance curves to this object.
# Applies the standard efficiency ratings to CoilHeatingGas.
#
# @param coil_heating_gas [OpenStudio::Model::CoilHeatingGas] the object to modify
# @return [Bool] true if successful, false if not
def coil_heating_gas_apply_efficiency_and_curves(coil_heating_gas)
successfully_set_all_properties = true
successfully_set_all_properties = false

# Initialize search criteria
search_criteria = {}
search_criteria['template'] = template

# Get the capacity, but return false if not available
capacity_w = coil_heating_gas_find_capacity(coil_heating_gas)

# Return false if the coil does not have a heating capacity associated with it. Cannot apply the standard if without
# it.
return successfully_set_all_properties if capacity_w == false

# Convert capacity to Btu/hr
capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
capacity_kbtu_per_hr = OpenStudio.convert(capacity_w, 'W', 'kBtu/hr').get

# Get the boiler properties
furnace_props = model_find_object(standards_data['furnaces'], search_criteria, capacity_btu_per_hr)
unless furnace_props
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.CoilHeatingGas', "For #{coil_heating_gas.name}, cannot find furnace properties with search criteria #{search_criteria}, cannot apply efficiency standard.")
successfully_set_all_properties = false
return successfully_set_all_properties
end

# Get the minimum efficiency standards
thermal_eff = nil

# If specified as thermal efficiency, this takes precedent
if not furnace_props['minimum_thermal_efficiency'].nil?
thermal_eff = furnace_props['minimum_thermal_efficiency']
new_comp_name = "#{coil_heating_gas.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{thermal_eff} Thermal Eff"
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilHeatingGas', "For #{template}: #{coil_heating_gas.name}: = #{capacity_kbtu_per_hr.round}kBtu/hr; Thermal Efficiency = #{thermal_eff}")

else # If not thermal efficiency, check other parameters

# If specified as AFUE
unless furnace_props['minimum_annual_fuel_utilization_efficiency'].nil?
min_afue = furnace_props['minimum_annual_fuel_utilization_efficiency']
thermal_eff = afue_to_thermal_eff(min_afue)
new_comp_name = "#{coil_heating_gas.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_afue} AFUE"
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilHeatingGas', "For #{template}: #{coil_heating_gas.name}: = #{capacity_kbtu_per_hr.round}kBtu/hr; AFUE = #{min_afue}")
end

# If specified as combustion efficiency
unless furnace_props['minimum_combustion_efficiency'].nil?
min_comb_eff = furnace_props['minimum_combustion_efficiency']
thermal_eff = combustion_eff_to_thermal_eff(min_comb_eff)
new_comp_name = "#{coil_heating_gas.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_comb_eff} Combustion Eff"
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilHeatingGas', "For #{template}: #{coil_heating_gas.name}: = #{capacity_kbtu_per_hr.round}kBtu/hr; Combustion Efficiency = #{min_comb_eff}")
end

end

# Set the efficiency values
unless thermal_eff.nil?

# Set the name
coil_heating_gas.setName(new_comp_name)
coil_heating_gas.setGasBurnerEfficiency(thermal_eff)
successfully_set_all_properties = true
end
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated existing coil_heating_gas_apply_efficiency_and_curves function to actually set the thermal efficiency based on standard and capacity. Includes many checks for cases where defaults don't exist (e.g., for templates outside 90.1 2004-2019) so that the no default efficiency value is set.


return successfully_set_all_properties
end

# Find capacity in W
#
# @return [Double] capacity in W
def coil_heating_gas_find_capacity(coil_heating_gas)
capacity_w = nil
if coil_heating_gas.nominalCapacity.is_initialized
capacity_w = coil_heating_gas.nominalCapacity.get
elsif coil_heating_gas.autosizedNominalCapacity.is_initialized
capacity_w = coil_heating_gas.autosizedNominalCapacity.get
else
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.CoilHeatingGas', "For #{coil_heating_gas.name} capacity is not available, cannot apply efficiency standard.")
successfully_set_all_properties = false
return successfully_set_all_properties
end

return capacity_w
end
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added a function for finding a coil heating gas's capacity with consideration for autosized vs hardsized coils.

end
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"furnaces": [
{
"template": "90.1-2004",
"minimum_capacity": 0.0,
"maximum_capacity": 224999.0,
"start_date": "1919-09-09T00:00:00+00:00",
"end_date": "2999-09-09T00:00:00+00:00",
"minimum_annual_fuel_utilization_efficiency": 0.78,
"minimum_thermal_efficiency": 0.8,
"minimum_combustion_efficiency": null,
"notes": "Table 6.8.1E page 49\n"
},
{
"template": "90.1-2004",
"minimum_capacity": 225000.0,
"maximum_capacity": 249999999.0,
"start_date": "1919-09-09T00:00:00+00:00",
"end_date": "2999-09-09T00:00:00+00:00",
"minimum_annual_fuel_utilization_efficiency": null,
"minimum_thermal_efficiency": null,
"minimum_combustion_efficiency": 0.8,
"notes": "Table 6.8.1E page 49\n"
}
]
}
Comment on lines +1 to +26
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You will see many JSON files similar to this. These are the updated JSON files for furnaces that were missing from the repository.

Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"furnaces": [
{
"template": "90.1-2007",
"minimum_capacity": 0.0,
"maximum_capacity": 224999.0,
"start_date": "1919-09-09T00:00:00+00:00",
"end_date": "2999-09-09T00:00:00+00:00",
"minimum_annual_fuel_utilization_efficiency": 0.78,
"minimum_thermal_efficiency": 0.8,
"minimum_combustion_efficiency": null,
"notes": "Table 6.8.1E page 49\n"
},
{
"template": "90.1-2007",
"minimum_capacity": 225000.0,
"maximum_capacity": 249999999.0,
"start_date": "1919-09-09T00:00:00+00:00",
"end_date": "2999-09-09T00:00:00+00:00",
"minimum_annual_fuel_utilization_efficiency": null,
"minimum_thermal_efficiency": null,
"minimum_combustion_efficiency": 0.8,
"notes": "Table 6.8.1E page 49\n"
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"furnaces": [
{
"template": "90.1-2010",
"minimum_capacity": 0.0,
"maximum_capacity": 224999.0,
"start_date": "1919-09-09T00:00:00+00:00",
"end_date": "2999-09-09T00:00:00+00:00",
"minimum_annual_fuel_utilization_efficiency": 0.78,
"minimum_thermal_efficiency": 0.8,
"minimum_combustion_efficiency": null,
"notes": "Table 6.8.1E page 62\n"
},
{
"template": "90.1-2010",
"minimum_capacity": 225000.0,
"maximum_capacity": 249999999.0,
"start_date": "1919-09-09T00:00:00+00:00",
"end_date": "2999-09-09T00:00:00+00:00",
"minimum_annual_fuel_utilization_efficiency": null,
"minimum_thermal_efficiency": 0.8,
"minimum_combustion_efficiency": null,
"notes": "Table 6.8.1E page 62\n"
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"furnaces": [
{
"template": "90.1-2013",
"minimum_capacity": 0.0,
"maximum_capacity": 224999.0,
"start_date": "1919-09-09T00:00:00+00:00",
"end_date": "2999-09-09T00:00:00+00:00",
"minimum_annual_fuel_utilization_efficiency": 0.78,
"minimum_thermal_efficiency": 0.8,
"minimum_combustion_efficiency": null,
"notes": "Table 6.8.1E page 72\n"
},
{
"template": "90.1-2013",
"minimum_capacity": 225000.0,
"maximum_capacity": 249999999.0,
"start_date": "1919-09-09T00:00:00+00:00",
"end_date": "2999-09-09T00:00:00+00:00",
"minimum_annual_fuel_utilization_efficiency": null,
"minimum_thermal_efficiency": 0.8,
"minimum_combustion_efficiency": null,
"notes": "Table 6.8.1E page 72\n"
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"furnaces": [
{
"template": "90.1-2016",
"minimum_capacity": 0.0,
"maximum_capacity": 224999.0,
"start_date": "1919-09-09T00:00:00+00:00",
"end_date": "2999-09-09T00:00:00+00:00",
"minimum_annual_fuel_utilization_efficiency": 0.78,
"minimum_thermal_efficiency": 0.8,
"minimum_combustion_efficiency": null,
"notes": "Table 6.8.1E page 116\n"
},
{
"template": "90.1-2016",
"minimum_capacity": 225000.0,
"maximum_capacity": 249999999.0,
"start_date": "1919-09-09T00:00:00+00:00",
"end_date": "2999-09-09T00:00:00+00:00",
"minimum_annual_fuel_utilization_efficiency": null,
"minimum_thermal_efficiency": 0.8,
"minimum_combustion_efficiency": null,
"notes": "Table 6.8.1E page 116\n"
}
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
"maximum_capacity": 299999.0,
"start_date": "1919-09-09T00:00:00+00:00",
"end_date": "2999-09-09T00:00:00+00:00",
"minimum_annual_fuel_utilization_efficiency": 0.82,
"minimum_annual_fuel_utilization_efficiency": 0.84,
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The value in the existing 2019 boiler JSON was incorrect.

"minimum_thermal_efficiency": null,
"minimum_combustion_efficiency": null,
"efffplr": "Boiler with No Minimum Turndown",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"furnaces": [
{
"template": "90.1-2019",
"minimum_capacity": 0.0,
"maximum_capacity": 224999.0,
"start_date": "1919-09-09T00:00:00+00:00",
"end_date": "2999-09-09T00:00:00+00:00",
"minimum_annual_fuel_utilization_efficiency": null,
"minimum_thermal_efficiency": 0.81,
"minimum_combustion_efficiency": null,
"notes": "Table 6.8.1-6 for > 225 ktbu/hr\nTable F-4 for < 225 ktbu/hr"
},
{
"template": "90.1-2019",
"minimum_capacity": 225000.0,
"maximum_capacity": 249999999.0,
"start_date": "1919-09-09T00:00:00+00:00",
"end_date": "2999-09-09T00:00:00+00:00",
"minimum_annual_fuel_utilization_efficiency": null,
"minimum_thermal_efficiency": 0.8,
"minimum_combustion_efficiency": null,
"notes": "Table 6.8.1-6 for > 225 ktbu/hr\nTable F-4 for < 225 ktbu/hr"
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"furnaces": [
{
"template": "DOE Ref 1980-2004",
"minimum_capacity": 0.0,
"maximum_capacity": 299999.0,
"start_date": "1919-09-09T00:00:00+00:00",
"end_date": "2999-09-09T00:00:00+00:00",
"minimum_annual_fuel_utilization_efficiency": null,
"minimum_thermal_efficiency": null,
"minimum_combustion_efficiency": null,
"notes": null
},
{
"template": "DOE Ref 1980-2004",
"minimum_capacity": 300000.0,
"maximum_capacity": 249999999.0,
"start_date": "1919-09-09T00:00:00+00:00",
"end_date": "2999-09-09T00:00:00+00:00",
"minimum_annual_fuel_utilization_efficiency": null,
"minimum_thermal_efficiency": null,
"minimum_combustion_efficiency": null,
"notes": null
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
{
"furnaces": [
{
"template": "DOE Ref Pre-1980",
"minimum_capacity": 0.0,
"maximum_capacity": 249999.0,
"start_date": "1919-09-09T00:00:00+00:00",
"end_date": "2999-09-09T00:00:00+00:00",
"minimum_annual_fuel_utilization_efficiency": null,
"minimum_thermal_efficiency": null,
"minimum_combustion_efficiency": null,
"notes": null
},
{
"template": "DOE Ref Pre-1980",
"minimum_capacity": 250000.0,
"maximum_capacity": 9999999999.0,
"start_date": "1919-09-09T00:00:00+00:00",
"end_date": "2999-09-09T00:00:00+00:00",
"minimum_annual_fuel_utilization_efficiency": null,
"minimum_thermal_efficiency": null,
"minimum_combustion_efficiency": null,
"notes": null
},
{
"template": "DOE Ref Pre-1980",
"minimum_capacity": 250000000.0,
"maximum_capacity": 9999999999.0,
"start_date": "1919-09-09T00:00:00+00:00",
"end_date": "2999-09-09T00:00:00+00:00",
"minimum_annual_fuel_utilization_efficiency": null,
"minimum_thermal_efficiency": null,
"minimum_combustion_efficiency": null,
"notes": null
}
]
}