Skip to content

Commit 0a62c15

Browse files
authored
Merge pull request #565 from NREL/boiler-emissions
Fix boiler emissions
2 parents 784d58a + efd7b57 commit 0a62c15

File tree

3 files changed

+15
-3
lines changed

3 files changed

+15
-3
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ Classify the change according to the following categories:
2525
### Deprecated
2626
### Removed
2727

28+
## Develop
29+
### Fixed
30+
- Include boiler emissions in emissions calculations
31+
2832
## v0.56.4
2933
### Fixed
3034
- Bug where storage input with only _Int_ values restricted _Dict_ subtype passed into `set_sector_defaults!` and caused _InexactError_

src/core/reopt_inputs.jl

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -414,7 +414,8 @@ function setup_tech_inputs(s::AbstractScenario, time_steps)
414414

415415
if "Boiler" in techs.all
416416
setup_boiler_inputs(s, max_sizes, min_sizes, existing_sizes, cap_cost_slope, boiler_efficiency,
417-
tech_renewable_energy_fraction, om_cost_per_kw, production_factor, fuel_cost_per_kwh, heating_cf)
417+
tech_renewable_energy_fraction, tech_emissions_factors_CO2, tech_emissions_factors_NOx, tech_emissions_factors_SO2, tech_emissions_factors_PM25,
418+
om_cost_per_kw, production_factor, fuel_cost_per_kwh, heating_cf)
418419
end
419420

420421
if "CHP" in techs.all
@@ -778,18 +779,24 @@ end
778779

779780
"""
780781
function setup_boiler_inputs(s::AbstractScenario, max_sizes, min_sizes, existing_sizes, cap_cost_slope, boiler_efficiency,
781-
tech_renewable_energy_fraction, om_cost_per_kw, production_factor, fuel_cost_per_kwh, heating_cf)
782+
tech_renewable_energy_fraction, tech_emissions_factors_CO2, tech_emissions_factors_NOx, tech_emissions_factors_SO2, tech_emissions_factors_PM25,
783+
om_cost_per_kw, production_factor, fuel_cost_per_kwh, heating_cf)
782784
783785
Update tech-indexed data arrays necessary to build the JuMP model with the values for (new) boiler.
784786
This version of this function, used in BAUInputs(), doesn't update renewable energy and emissions arrays.
785787
"""
786788
function setup_boiler_inputs(s::AbstractScenario, max_sizes, min_sizes, existing_sizes, cap_cost_slope, boiler_efficiency,
787-
tech_renewable_energy_fraction, om_cost_per_kw, production_factor, fuel_cost_per_kwh, heating_cf)
789+
tech_renewable_energy_fraction, tech_emissions_factors_CO2, tech_emissions_factors_NOx, tech_emissions_factors_SO2, tech_emissions_factors_PM25,
790+
om_cost_per_kw, production_factor, fuel_cost_per_kwh, heating_cf)
788791
max_sizes["Boiler"] = s.boiler.max_kw
789792
min_sizes["Boiler"] = s.boiler.min_kw
790793
existing_sizes["Boiler"] = 0.0
791794
boiler_efficiency["Boiler"] = s.boiler.efficiency
792795
tech_renewable_energy_fraction["Boiler"] = s.boiler.fuel_renewable_energy_fraction
796+
tech_emissions_factors_CO2["Boiler"] = s.boiler.emissions_factor_lb_CO2_per_mmbtu / KWH_PER_MMBTU # lb/mmtbu * mmtbu/kWh
797+
tech_emissions_factors_NOx["Boiler"] = s.boiler.emissions_factor_lb_NOx_per_mmbtu / KWH_PER_MMBTU
798+
tech_emissions_factors_SO2["Boiler"] = s.boiler.emissions_factor_lb_SO2_per_mmbtu / KWH_PER_MMBTU
799+
tech_emissions_factors_PM25["Boiler"] = s.boiler.emissions_factor_lb_PM25_per_mmbtu / KWH_PER_MMBTU
793800

794801
# The Boiler only has a MACRS benefit, no ITC etc.
795802
if s.boiler.macrs_option_years in [5, 7]

test/runtests.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2187,6 +2187,7 @@ else # run HiGHS tests
21872187
input_data["DomesticHotWaterLoad"]["annual_mmbtu"] = 0.5 * 8760
21882188
s = Scenario(input_data)
21892189
inputs = REoptInputs(s)
2190+
@test inputs.tech_emissions_factors_CO2["ExistingBoiler"] inputs.tech_emissions_factors_CO2["Boiler"] atol=1.0e-6
21902191
m1 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false))
21912192
m2 = Model(optimizer_with_attributes(HiGHS.Optimizer, "output_flag" => false, "log_to_console" => false))
21922193
results = run_reopt([m1,m2], inputs)

0 commit comments

Comments
 (0)