From 91be48e36f42cc876e3ab999370f93b33988f212 Mon Sep 17 00:00:00 2001 From: Fabian Neumann Date: Wed, 9 Aug 2023 10:58:14 +0200 Subject: [PATCH] Add option for carbon capture in integrated steelworks. --- doc/release_notes.rst | 2 ++ scripts/prepare_sector_network.py | 47 +++++++++++++++++++++++++++++-- 2 files changed, 47 insertions(+), 2 deletions(-) diff --git a/doc/release_notes.rst b/doc/release_notes.rst index 70a73e2f..aab8f422 100644 --- a/doc/release_notes.rst +++ b/doc/release_notes.rst @@ -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. + PyPSA-Eur 0.8.1 (27th July 2023) ================================ diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index d680da24..ff450c0a 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -145,6 +145,8 @@ def define_spatial(nodes, options): spatial.coal = SimpleNamespace() spatial.coal.nodes = ["EU coal"] spatial.coal.locations = ["EU"] + spatial.gas.industry = ["coal for industry"] + spatial.gas.industry_cc = ["coal for industry CC"] # lignite spatial.lignite = SimpleNamespace() @@ -2896,14 +2898,55 @@ 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", - "coal 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"], + ) + + 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?