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

Full Illinois Model #27

Merged
merged 20 commits into from
Jul 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
72deeeb
replaces hardcoded filter value with config option
samgdotson Jun 24, 2024
b379a3c
enables multi-year horizon
samgdotson Jun 24, 2024
9ed4558
adds ramp limits and co2 emissions data and constraints -- infeasible
samgdotson Jun 24, 2024
094181e
allows some extendable technologies -- feasible
samgdotson Jun 24, 2024
ae63a18
adds separate rule for plotting results
samgdotson Jun 25, 2024
796abc0
feasible model
samgdotson Jun 25, 2024
380530b
adds emissions plot to plot rule
samgdotson Jun 25, 2024
8612b34
updates solve network rule
samgdotson Jun 26, 2024
d8f9f8a
fixes emission constraint units and adds ability to specify total dem…
samgdotson Jun 26, 2024
cdd9fd0
functional multi-year model
samgdotson Jun 26, 2024
edb32fc
updates dag, adds aggregated build years
samgdotson Jun 27, 2024
392d046
simplifies renewable loading renewable profiles to model
samgdotson Jun 27, 2024
2715718
adds petrol costs for each year in the model
samgdotson Jun 27, 2024
c48e274
updates model to include separate technologies for each build year
samgdotson Jun 27, 2024
32cbafd
adds separate generator for each model year for other techs
samgdotson Jun 27, 2024
0dbd635
corrects a temporal offset between solar and load
samgdotson Jun 27, 2024
11c50f2
increases coal plant lifetime to 60 years
samgdotson Jun 27, 2024
e25d70b
updates costs for existing nuclear plants
samgdotson Jun 28, 2024
db10a1f
adds load growth
samgdotson Jun 28, 2024
81c4ee5
removes 'learning curves' for new technologies (produces more realist…
samgdotson Jul 2, 2024
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
28 changes: 22 additions & 6 deletions Snakefile
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ rule retrieve_load:
rule retrieve_existing_generators:
output:
generators = "data/existing_generators.csv",
aggregated = "data/aggregated_generators.csv"
aggregated = "data/aggregated_generators.csv",
build_year = "data/build_year_generators.csv"
script: "scripts/retrieve_generators.py"

rule retrieve_renewable_profiles:
Expand All @@ -39,6 +40,11 @@ rule retrieve_renewable_profiles:
solar = "data/time_series/solar.csv"
script: "scripts/retrieve_renewables.py"

rule retrieve_co2_emissions:
output:
emissions = "data/technology_emissions.csv"
script: "scripts/retrieve_emissions.py"

rule build_topology:
input:
supply_regions = "data/spatial_data/supply_regions.shp"
Expand All @@ -63,17 +69,27 @@ rule add_electricity:
costs = "data/technology_costs.csv",
wind_profile = "data/time_series/wind.csv",
solar_profile = "data/time_series/solar.csv",
base_network = "data/networks/base_network.nc"
base_network = "data/networks/base_network.nc",
emissions = "data/technology_emissions.csv",
build_years = "data/build_year_generators.csv"
output:
elec_network = "data/networks/electricity_network.nc",
final_costs = "data/final_costs.csv"
script: "scripts/add_electricity.py"


rule solve_network:
input:
elec_network = "data/networks/electricity_network.nc"
output:
solved_network = "results/networks/illinois_solved.nc",
dispatch_figure = "results/figures/illinois_dispatch.png"
script: "scripts/solve_network.py"
solved_network = "results/networks/illinois_solved.nc"
script: "scripts/solve_network.py"

rule plot_results:
input:
solved_network = "results/networks/illinois_solved.nc"
output:
dispatch_figure = "results/figures/illinois_dispatch.png",
capacity_figure = "results/figures/illinois_capacity.png",
emissions_figure = "results/figures/illinois_emissions.png",
active_units_figure = "results/figures/illinois_active_units.png"
script: "scripts/plot_results.py"
69 changes: 42 additions & 27 deletions config.yml
Original file line number Diff line number Diff line change
@@ -1,27 +1,53 @@
state_abbr: 'IL'

geo_res: 'rto' # accepts: 'rto' or 'county'
time_res: 4 # hours
time_res: 1 # hours
load_filter: 60e3 # MW, load above this level will be removed as outliers.
total_demand: 136e6 # Annual MWh in the first year
load_growth: 0.00 # % annual growth
Copy link
Contributor

Choose a reason for hiding this comment

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

When choosing a value for this, may be more instructive to consider the total in the final model year and select a rate that grows to that value.

Copy link
Member Author

Choose a reason for hiding this comment

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

Instructive in what way?

load_share:
Copy link
Contributor

Choose a reason for hiding this comment

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

How/where is this used?

Copy link
Member Author

Choose a reason for hiding this comment

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

this parameter is not used, anywhere. I think I intended to assign a fraction of the total demand to each bus region, but it was unnecessary.

MISO-Z4: 0.33
ComEd: 0.67

model_year: 2025
model_years: [2025, 2030, 2035, 2040, 2045]
plot_year: 2045

solar_year: 2019 # NSRDB only accepts years 1998-2020
wind_year: 2011 # WTK only goes from 2009-2013
co2_limits:
2020: 31.25
2025: 25 # MT
2030: 18.75
2035: 12.5
2040: 6.25
2045: 0.0

solar_years: [2016,2017,2018,2019,2020] # NSRDB only accepts years 1998-2020
wind_years: [2009,2010,2011,2012,2013] # WTK only goes from 2009-2013
load_year: 2019

rto_subba: ['0004','CE'] # MISO-Z4, ComEd
region_names: ['MISO-Z4','ComEd']

discount_rate: 0.07

growth_rates: # MW/year
Nuclear: 1e3
Biomass: 1e3
Natural Gas: 10e3
Coal: 10e3
Petroleum: 10e3
Batteries: 5e3
Solar: 5e3
Wind: 5e3

lifetime:
Nuclear: 80
Biomass: 40
Natural Gas: 40
Coal: 40
Coal: 50
Solar: 20
Wind: 20
Batteries: 15
Petroleum: 40

atb_params:
atb_year: 2022 # the ATB publication year
Expand Down Expand Up @@ -56,11 +82,10 @@ atb_params:
lines: # this is an assumption
v_nom: 400.
s_nom: 0.
x: 1 # reactance
r: 1 # resistance
x: 0.001 # reactance
r: 0.001 # resistance
s_nom_extendable: True


turbine_params:
cut_in: 3.0 # m/s
cut_out: 25.0 # m/s
Expand All @@ -69,35 +94,25 @@ turbine_params:
rated_power: 2.75 # MW
air_density: 1.225 # kg/m^3

# extendable_techs: [
# 'CCAvgCF',
# 'CTAvgCF',
# 'Biopower',
# 'Land-Based Wind',
# 'Utility PV',
# 'IGCCAvgCF',
# 'LWR',
# 'NuclearSMR',
# '10Hr Battery Storage',
# '8Hr Battery Storage',
# '6Hr Battery Storage',
# '4Hr Battery Storage',
# '2Hr Battery Storage'
# ]
nuclear_params: # for existing reactors, 2023 NEI costs in context
capacity_factor: 0.972
capital_cost: 6.88 # $/MWh
fixed_om: 18.68 # $/MWh
fuel: 5.37 # $/MWh

extendable_techs: [
# 'CCAvgCF',
# 'CTAvgCF',
# 'Biopower',
# 'Land-Based Wind',
# 'Utility PV',
# 'IGCCAvgCF',
# 'Biopower',
'Land-Based Wind',
'Utility PV',
# 'LWR',
# 'NuclearSMR',
# '10Hr Battery Storage',
# '8Hr Battery Storage',
# '6Hr Battery Storage',
# '4Hr Battery Storage',
'4Hr Battery Storage',
# '2Hr Battery Storage'
]

Expand Down
Binary file modified dag.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion functions/nrel_data_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
'year':2019,
'leap_day':'false',
'selector':'POINT',
'utc':'false',
'utc':'true',
'interval':'60',
'attr_list':['ghi']}

Expand Down
Loading