Skip to content

Commit

Permalink
Merge pull request #235 from NREL/cambium
Browse files Browse the repository at this point in the history
Cambium Grid Climate Emissions and Updated AVERT
  • Loading branch information
adfarth committed Mar 8, 2024
2 parents d6cb4cd + 5fa7896 commit f6155e7
Show file tree
Hide file tree
Showing 64 changed files with 35,793 additions and 35,274 deletions.
27 changes: 25 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,31 @@ Classify the change according to the following categories:
### Deprecated
### Removed

## Develop 2024-02-27
### Fixed
## Develop - 2024-02-29
### Changed
- Changed default source for CO2 grid emissions values to NREL's Cambium 2022 Database (by default: CO2e, long-run marginal emissions rates levelized (averaged) over the analysis period, assuming start year 2024). Added new emissions inputs and call to Cambium API in `src/core/electric_utility.jl`. Included option for user to use AVERT data for CO2 using **co2_from_avert** boolean.
- Updated `electric_utility` **emissions_region** to **avert_emissions_region** and **distance_to_emissions_region_meters** to **distance_to_avert_emissions_region_meters** in `src/electric_utility.jl` and `results/electric_utility.jl`.
- Updated default **emissions_factor_XXX_decrease_fraction** (where XXX is CO2, NOx, SO2, and PM2.5) from 0.01174 to 0.02163 based on Cambium 2022 Mid-Case scenario, LRMER CO2e (Combustion+Precombustion) 2024-2049 projected values. CO2 projected decrease defaults to 0 if Cambium data are used for CO2 (Cambium API call will levelize values).
- Updated AVERT emissions data to v4.1, which uses Regional Data Files (RDFs) for year 2022. Data is saved in `data/emissions/AVERT_Data`. For Alaska and Hawaii (regions AKGD, HIMS, HIOA), updated eGRID data to eGRID2021 datafile and adjusted CO2 values to CO2e values to align with default used for Cambium data.
- Updated default fuel emissions factors from CO2 to CO2-equivalent (CO2e) values. In `src/core/generator.jl`, updated **emissions_factor_lb_CO2_per_gal** from 22.51 to 22.58. In `src/REopt.jl` updated **emissions_factor_lb_CO2_per_mmbtu** => Dict(
"natural_gas"=>116.9 to 117.03,
"landfill_bio_gas"=>114,8 to 115.38,
"propane"=>138.6 to 139.16,
"diesel_oil"=>163.1 to 163.61
)
- Changed calculation of all `annual` emissions results (e.g. **Site.annual_emissions_tonnes_CO2**) to simple annual averages (lifecycle emissions divided by analysis_years). This is because the default climate emissions from Cambium are already levelized over the analysis horizon and therefore "year_one" emissions cannot be easily obtained.
- Changed name of exported function **emissions_profiles** to **avert_emissions_profiles**

### Added
- In `src/REopt.jl` and `src/electric_utility.jl`, added **cambium_emissions_profile** as an export for use via the REopt_API.
- In `src/REopt.jl`, added new const **EMISSIONS_DECREASE_DEFAULTS**
- In `src/results/electric_utility.jl` **cambium_emissions_region**
- In `test/runtests.jl` and `test/test_with_xpress.jl`, added testset **Cambium Emissions**

### Fixed
- Adjust grid emissions profiles for day of week alignment with load_year.
- In `test_with_xpress.jl`, updated "Emissions and Renewable Energy Percent" expected values to account for load year adjustment.
- In `src/core/electric_utility.jl`, error when user-provided emissions series does not match timestep per hour, as is done in other cases of incorrect user-provided data.
- Avoid adjusting rates twice when time_steps_per_hour > 1

## Develop 2024-01-16
Expand Down
8,761 changes: 0 additions & 8,761 deletions data/emissions/AVERT_Data/AVERT_2021_CO2_lb_per_kwh.csv

This file was deleted.

8,761 changes: 0 additions & 8,761 deletions data/emissions/AVERT_Data/AVERT_2021_NOx_lb_per_kwh.csv

This file was deleted.

8,761 changes: 0 additions & 8,761 deletions data/emissions/AVERT_Data/AVERT_2021_PM25_lb_per_kwh.csv

This file was deleted.

8,761 changes: 0 additions & 8,761 deletions data/emissions/AVERT_Data/AVERT_2021_SO2_lb_per_kwh.csv

This file was deleted.

8,761 changes: 8,761 additions & 0 deletions data/emissions/AVERT_Data/AVERT_2022_CO2_lb_per_kwh.csv

Large diffs are not rendered by default.

8,761 changes: 8,761 additions & 0 deletions data/emissions/AVERT_Data/AVERT_2022_NOx_lb_per_kwh.csv

Large diffs are not rendered by default.

8,761 changes: 8,761 additions & 0 deletions data/emissions/AVERT_Data/AVERT_2022_PM25_lb_per_kwh.csv

Large diffs are not rendered by default.

8,761 changes: 8,761 additions & 0 deletions data/emissions/AVERT_Data/AVERT_2022_SO2_lb_per_kwh.csv

Large diffs are not rendered by default.

17 changes: 12 additions & 5 deletions src/REopt.jl
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@ export
get_steam_turbine_defaults_size_class,
simulated_load,
get_absorption_chiller_defaults,
emissions_profiles,
avert_emissions_profiles,
cambium_emissions_profile,
easiur_data,
get_existing_chiller_default_cop

Expand Down Expand Up @@ -72,10 +73,10 @@ const FUEL_DEFAULTS = Dict(
"diesel_oil"=>0.0
),
"emissions_factor_lb_CO2_per_mmbtu" => Dict(
"natural_gas"=>116.9,
"landfill_bio_gas"=>114.8,
"propane"=>138.6,
"diesel_oil"=>163.1
"natural_gas"=>117.03,
"landfill_bio_gas"=>115.38,
"propane"=>139.16,
"diesel_oil"=>163.61
),
"emissions_factor_lb_NOx_per_mmbtu" => Dict(
"natural_gas"=>0.09139,
Expand All @@ -96,6 +97,12 @@ const FUEL_DEFAULTS = Dict(
"diesel_oil"=>0.0
)
)
const EMISSIONS_DECREASE_DEFAULTS = Dict(
"CO2e" => 0.02163,
"NOx" => 0.02163,
"SO2" => 0.02163,
"PM25" => 0.02163
)

include("logging.jl")

Expand Down
5 changes: 0 additions & 5 deletions src/constraints/emissions_constraints.jl
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,6 @@ function add_yr1_emissions_calcs(m,p)
yr1_emissions_offset_from_elec_exports_lbs_SO2
m[:yr1_emissions_from_elec_grid_net_if_selected_lbs_PM25] = m[:yr1_emissions_from_elec_grid_lbs_PM25] -
yr1_emissions_offset_from_elec_exports_lbs_PM25

m[:EmissionsYr1_Total_LbsCO2] = m[:yr1_emissions_onsite_fuel_lbs_CO2] + m[:yr1_emissions_from_elec_grid_net_if_selected_lbs_CO2]
m[:EmissionsYr1_Total_LbsNOx] = m[:yr1_emissions_onsite_fuel_lbs_NOx] + m[:yr1_emissions_from_elec_grid_net_if_selected_lbs_NOx]
m[:EmissionsYr1_Total_LbsSO2] = m[:yr1_emissions_onsite_fuel_lbs_SO2] + m[:yr1_emissions_from_elec_grid_net_if_selected_lbs_SO2]
m[:EmissionsYr1_Total_LbsPM25] = m[:yr1_emissions_onsite_fuel_lbs_PM25] + m[:yr1_emissions_from_elec_grid_net_if_selected_lbs_PM25]
nothing
end

Expand Down
2 changes: 1 addition & 1 deletion src/core/electric_load.jl
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
path_to_csv::String = "", # for csv containing loads_kw
doe_reference_name::String = "",
blended_doe_reference_names::Array{String, 1} = String[],
blended_doe_reference_percents::Array{<:Real,1} = Real[],
blended_doe_reference_percents::Array{<:Real,1} = Real[], # Values should be between 0-1 and sum to 1.0
year::Int = doe_reference_name ≠ "" || blended_doe_reference_names ≠ String[] ? 2017 : 2022, # used in ElectricTariff to align rate schedule with weekdays/weekends. DOE CRB profiles must use 2017. If providing load data, specify year of data.
city::String = "",
annual_kwh::Union{Real, Nothing} = nothing,
Expand Down
2 changes: 1 addition & 1 deletion src/core/electric_tariff.jl
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ function ElectricTariff(;
urdb_response::Dict=Dict(),
urdb_utility_name::String="",
urdb_rate_name::String="",
year::Int=2022, # Will be passed from ElectricLoad
year::Int=2022, # Passed from ElectricLoad
time_steps_per_hour::Int=1,
NEM::Bool=false,
wholesale_rate::T1=nothing,
Expand Down
Loading

0 comments on commit f6155e7

Please sign in to comment.