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

Add option for carbon capture in integrated steelworks #719

Merged
merged 11 commits into from
Dec 11, 2023
1 change: 1 addition & 0 deletions config/config.default.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -446,6 +446,7 @@ sector:
methanation: true
helmeth: false
coal_cc: false
coal_for_industry_cc: false
dac: true
co2_vent: false
allam_cycle: false
Expand Down
1 change: 1 addition & 0 deletions doc/configtables/sector.csv
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ marginal_cost_storage,currency/MWh ,float,The marginal cost of discharging batte
methanation,--,"{true, false}",Add option for transforming hydrogen and CO2 into methane using methanation.
helmeth,--,"{true, false}",Add option for transforming power into gas using HELMETH (Integrated High-Temperature ELectrolysis and METHanation for Effective Power to Gas Conversion)
coal_cc,--,"{true, false}",Add option for coal CHPs with carbon capture
coal_for_industry_cc,--,"{true, false}",Add option for carbon capture in integrated steel making (blast furnaces)
dac,--,"{true, false}",Add option for Direct Air Capture (DAC)
co2_vent,--,"{true, false}",Add option for vent out CO2 from storages to the atmosphere.
allam_cycle,--,"{true, false}",Add option to include `Allam cycle gas power plants <https://en.wikipedia.org/wiki/Allam_power_cycle>`_
Expand Down
2 changes: 2 additions & 0 deletions doc/release_notes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ Upcoming Release

* Updated Global Energy Monitor LNG terminal data to March 2023 version.

* Add option for carbon capture in integrated steelworks.

* For industry distribution, use EPRTR as fallback if ETS data is not available.

* The minimum capacity for renewable generators when using the myopic option has been fixed.
Expand Down
49 changes: 46 additions & 3 deletions scripts/prepare_sector_network.py
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,8 @@ def define_spatial(nodes, options):
spatial.coal = SimpleNamespace()
spatial.coal.nodes = ["EU coal"]
spatial.coal.locations = ["EU"]
spatial.coal.industry = ["coal for industry"]
spatial.coal.industry_cc = ["coal for industry CC"]

# lignite
spatial.lignite = SimpleNamespace()
Expand Down Expand Up @@ -2909,15 +2911,56 @@ def add_industry(n, costs):
+ mwh_coal_per_mwh_coke * industrial_demand["coke"].sum()
) / nhours

n.madd(
"Bus",
spatial.coal.industry,
location=spatial.coal.locations,
carrier="coal for industry",
unit="MWh_LHV",
)

n.madd(
"Load",
spatial.coal.nodes,
suffix=" for industry",
bus=spatial.coal.nodes,
spatial.coal.industry,
bus=spatial.coal.industry,
carrier="coal for industry",
p_set=p_set,
)

n.madd(
"Link",
spatial.coal.industry,
bus0=spatial.coal.nodes,
bus1=spatial.coal.industry,
bus2="co2 atmosphere",
carrier="coal for industry",
p_nom_extendable=True,
p_min_pu=1.0,
efficiency=1.0,
efficiency2=costs.at["coal", "CO2 intensity"],
)

if options.get("coal_for_industry_cc", False):
n.madd(
"Link",
spatial.coal.industry_cc,
bus0=spatial.coal.nodes,
bus1=spatial.coal.industry,
bus2="co2 atmosphere",
bus3=spatial.co2.nodes,
carrier="coal for industry CC",
p_min_pu=1.0,
p_nom_extendable=True,
capital_cost=costs.at["cement capture", "fixed"]
* costs.at["coal", "CO2 intensity"],
efficiency=0.9,
efficiency2=costs.at["coal", "CO2 intensity"]
* (1 - costs.at["cement capture", "capture_rate"]),
efficiency3=costs.at["coal", "CO2 intensity"]
* costs.at["cement capture", "capture_rate"],
lifetime=costs.at["cement capture", "lifetime"],
)


def add_waste_heat(n):
# TODO options?
Expand Down
Loading