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

Conversation

jugonzal07
Copy link
Collaborator

@jugonzal07 jugonzal07 commented Aug 26, 2021

The proposed changes includes two changes:

  1. Update 90.1-2019 boilers to use the correct 84% minimum annual fuel utilization efficiency in high capacity boilers
  2. Update the 90.1 2004-2019 furnace gas heating coils to use their respective minimum efficiency values (based on year and capacity), updated with relevant documentation. This required adding json files for furnaces to the repository and workflow.

For more information regarding the motivation for this update, consider looking into Addendum 90.1-2019 BP and Addendum 90.1-2019 BO.

Gonzalez, Juan added 2 commits July 20, 2021 15:02
…l-heating_gas_apply_efficiency_and_curves function to correctly set the furnace efficiency.
…on to remain consistent with its original usage.
Comment on lines +101 to +102
when 'furnaces'
['template', 'minimum_capacity', 'maximum_capacity', 'start_date', 'end_date']
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

Comment on lines +285 to +293
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,
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

Comment on lines 9 to 70
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.

Comment on lines 75 to 91
# 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.

Comment on lines +1 to +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"
}
]
}
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.

"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.

@lymereJ lymereJ added the 90.1-2016/9 Flag PR targeting code changes related to the 90.1-2016/9 update label Aug 26, 2021
@jugonzal07 jugonzal07 changed the title 901 2019 add bo bp blr furn eff Update furnace and boiler efficiency to match values from ASHRAE 90.1-2004 through 2019 Aug 26, 2021
@lymereJ lymereJ requested a review from mdahlhausen September 7, 2021 18:03
Copy link
Collaborator

@mdahlhausen mdahlhausen left a comment

Choose a reason for hiding this comment

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

This commit is almost ready. I added thermal efficiency data for the doe ref and AEDG standards. Please rebuild the furnaces.json files (2 ref buildings, 2 AEDG jsons that will be new).

@jugonzal07
Copy link
Collaborator Author

This commit is almost ready. I added thermal efficiency data for the doe ref and AEDG standards. Please rebuild the furnaces.json files (2 ref buildings, 2 AEDG jsons that will be new).

Hi Matt. I updated the JSONs with the changes you made to the standards spreadsheet.

@mdahlhausen mdahlhausen self-requested a review September 10, 2021 16:05
…mplates that don't have a 'furnaces' table
@lymereJ lymereJ merged commit 4f63506 into 901_2016_2019 Sep 13, 2021
@mdahlhausen mdahlhausen deleted the 901_2019_add_bo_bp_blr_furn_eff branch April 15, 2022 20:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
90.1-2016/9 Flag PR targeting code changes related to the 90.1-2016/9 update
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants