Skip to content

Commit

Permalink
Merge pull request #719 from PyPSA/blast-furnace-with-cc
Browse files Browse the repository at this point in the history
Add option for carbon capture in integrated steelworks
  • Loading branch information
fneum authored Dec 11, 2023
2 parents ea7a66b + 4c66908 commit e0ca38b
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 3 deletions.
1 change: 1 addition & 0 deletions config/config.default.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -450,6 +450,7 @@ sector:
methanation: true
helmeth: false
coal_cc: false
coal_for_industry_cc: false
dac: true
co2_vent: false
central_heat_vent: 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 @@ -2914,15 +2916,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

0 comments on commit e0ca38b

Please sign in to comment.