From f2e53b59bf92fc477233c7919dd61a2f94a95ae0 Mon Sep 17 00:00:00 2001 From: Fabian Neumann Date: Sat, 22 Apr 2023 09:44:13 +0200 Subject: [PATCH 1/4] add plain hydrogen turbine option for re-electrification --- config/config.default.yaml | 3 +++ doc/release_notes.rst | 4 +++ scripts/prepare_sector_network.py | 45 ++++++++++++++++++++++--------- 3 files changed, 40 insertions(+), 12 deletions(-) diff --git a/config/config.default.yaml b/config/config.default.yaml index 1305456a..10e6a6ed 100644 --- a/config/config.default.yaml +++ b/config/config.default.yaml @@ -469,6 +469,8 @@ sector: dac: true co2_vent: false allam_cycle: false + hydrogen_fuel_cell: true + hydrogen_turbine: false SMR: true regional_co2_sequestration_potential: enable: false # enable regionally resolved geological co2 storage potential @@ -902,6 +904,7 @@ plotting: H2 pipeline: '#f081dc' H2 pipeline retrofitted: '#ba99b5' H2 Fuel Cell: '#c251ae' + H2 turbine: '#991f83' H2 Electrolysis: '#ff29d9' # ammonia NH3: '#46caf0' diff --git a/doc/release_notes.rst b/doc/release_notes.rst index f859646b..d81bee07 100644 --- a/doc/release_notes.rst +++ b/doc/release_notes.rst @@ -17,6 +17,10 @@ Upcoming Release * Renamed script file from PyPSA-EUR ``build_load_data`` to ``build_electricity_demand``. +* Add plain hydrogen turbine as additional re-electrification option besides + hydrogen fuel cell. Add switches for both re-electrification options under + ``sector: hydrogen_turbine:`` and ``sector: hydrogen_fuel_cell:``. + PyPSA-Eur 0.8.0 (18th March 2023) ================================= diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index 6129d3b5..e737867e 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -1067,18 +1067,39 @@ def add_storage_and_grids(n, costs): lifetime=costs.at["electrolysis", "lifetime"], ) - n.madd( - "Link", - nodes + " H2 Fuel Cell", - bus0=nodes + " H2", - bus1=nodes, - p_nom_extendable=True, - carrier="H2 Fuel Cell", - efficiency=costs.at["fuel cell", "efficiency"], - capital_cost=costs.at["fuel cell", "fixed"] - * costs.at["fuel cell", "efficiency"], # NB: fixed cost is per MWel - lifetime=costs.at["fuel cell", "lifetime"], - ) + if options["hydrogen_fuel_cell"]: + + logger.info("Adding hydrogen fuel cell for re-electrification.") + + n.madd( + "Link", + nodes + " H2 Fuel Cell", + bus0=nodes + " H2", + bus1=nodes, + p_nom_extendable=True, + carrier="H2 Fuel Cell", + efficiency=costs.at["fuel cell", "efficiency"], + capital_cost=costs.at["fuel cell", "fixed"] + * costs.at["fuel cell", "efficiency"], # NB: fixed cost is per MWel + lifetime=costs.at["fuel cell", "lifetime"], + ) + + if options["hydrogen_turbine"]: + + logger.info("Adding hydrogen turbine for re-electrification.") + + n.madd( + "Link", + nodes + " H2 turbine", + bus0=nodes + " H2", + bus1=nodes, + p_nom_extendable=True, + carrier="H2 turbine", + efficiency=costs.at["OCGT", "efficiency"], + capital_cost=costs.at["OCGT", "fixed"] + * costs.at["OCGT", "efficiency"], # NB: fixed cost is per MWel + lifetime=costs.at["OCGT", "lifetime"], + ) cavern_types = snakemake.config["sector"]["hydrogen_underground_storage_locations"] h2_caverns = pd.read_csv(snakemake.input.h2_cavern, index_col=0) From 0a3c177f4b6083a00f75810340cf7570f373bb15 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sat, 22 Apr 2023 07:44:57 +0000 Subject: [PATCH 2/4] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- scripts/prepare_sector_network.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index e737867e..90891ad5 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -1068,7 +1068,6 @@ def add_storage_and_grids(n, costs): ) if options["hydrogen_fuel_cell"]: - logger.info("Adding hydrogen fuel cell for re-electrification.") n.madd( @@ -1085,7 +1084,6 @@ def add_storage_and_grids(n, costs): ) if options["hydrogen_turbine"]: - logger.info("Adding hydrogen turbine for re-electrification.") n.madd( From 51e09f5e61828019cdc350bbd93081dcdbe57c1b Mon Sep 17 00:00:00 2001 From: Fabian Neumann Date: Sun, 30 Apr 2023 10:43:49 +0200 Subject: [PATCH 3/4] Address review comments --- scripts/prepare_sector_network.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index 90891ad5..0c7a816c 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -1084,7 +1084,8 @@ def add_storage_and_grids(n, costs): ) if options["hydrogen_turbine"]: - logger.info("Adding hydrogen turbine for re-electrification.") + logger.info("Adding hydrogen turbine for re-electrification. Assuming OCGT technology costs.") + # TODO: perhaps replace with hydrogen-specific technology assumptions. n.madd( "Link", From bdeab82b494d2b7edd1700b5339f7ce3cbe89fa6 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sun, 30 Apr 2023 08:44:05 +0000 Subject: [PATCH 4/4] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- scripts/prepare_sector_network.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index 0c7a816c..1cb7146e 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -1084,7 +1084,9 @@ def add_storage_and_grids(n, costs): ) if options["hydrogen_turbine"]: - logger.info("Adding hydrogen turbine for re-electrification. Assuming OCGT technology costs.") + logger.info( + "Adding hydrogen turbine for re-electrification. Assuming OCGT technology costs." + ) # TODO: perhaps replace with hydrogen-specific technology assumptions. n.madd(