From 87596dd015ab8f2fff8ef77881a1bd82a7255b14 Mon Sep 17 00:00:00 2001 From: Fabian Neumann Date: Wed, 4 Aug 2021 18:28:18 +0200 Subject: [PATCH] add H2 liquefaction cost to H2 shipping demand (#145) * add H2 liquefaction cost to H2 shipping demand * rename bus to 'H2 liquid' * add release note * make consideration of liquefaction costs for shipping optional * update release notes --- config.default.yaml | 1 + doc/release_notes.rst | 3 +++ scripts/prepare_sector_network.py | 26 +++++++++++++++++++++++++- 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/config.default.yaml b/config.default.yaml index 5b311ffc..dfc888c4 100644 --- a/config.default.yaml +++ b/config.default.yaml @@ -175,6 +175,7 @@ sector: transport_fuel_cell_efficiency: 0.5 transport_internal_combustion_efficiency: 0.3 shipping_average_efficiency: 0.4 #For conversion of fuel oil to propulsion in 2011 + shipping_hydrogen_liquefaction: true # whether to consider liquefaction costs for shipping H2 demands shipping_hydrogen_share: # 1 means all hydrogen FC 2020: 0 2025: 0 diff --git a/doc/release_notes.rst b/doc/release_notes.rst index aaa4d0cd..15419438 100644 --- a/doc/release_notes.rst +++ b/doc/release_notes.rst @@ -60,6 +60,9 @@ Future release These are included in the environment specifications of PyPSA-Eur. * Consistent use of ``__main__`` block and further unspecific code cleaning. * Distinguish costs for home battery storage and inverter from utility-scale battery costs. +* Added option for hydrogen liquefaction costs for hydrogen demand in shipping. + This introduces a new ``H2 liquid`` bus at each location. + It is activated via ``sector: shipping_hydrogen_liquefaction: true``. * The share of shipping transformed into hydrogen fuel cell can be now defined for different years in the ``config.yaml`` file. The carbon emission from the remaining share is treated as a negative load on the atmospheric carbon dioxide bus, just like aviation and land transport emissions. * The transformation of the Steel and Aluminium production can be now defined for different years in the ``config.yaml`` file. * Include the option to alter the maximum energy capacity of a store via the ``carrier+factor`` in the ``{sector_opts}`` wildcard. This can be useful for sensitivity analyses. Example: ``co2 stored+e2`` multiplies the ``e_nom_max`` by factor 2. In this example, ``e_nom_max`` represents the CO2 sequestration potential in Europe. diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index 1e8a77e5..a5bc0d14 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -1714,6 +1714,30 @@ def add_industry(n, costs): p_set=industrial_demand.loc[nodes, "hydrogen"] / 8760 ) + if options["shipping_hydrogen_liquefaction"]: + + n.madd("Bus", + nodes, + suffix=" H2 liquid", + carrier="H2 liquid", + location=nodes + ) + + n.madd("Link", + nodes + " H2 liquefaction", + bus0=nodes + " H2", + bus1=nodes + " H2 liquid", + carrier="H2 liquefaction", + efficiency=costs.at["H2 liquefaction", 'efficiency'], + capital_cost=costs.at["H2 liquefaction", 'fixed'], + p_nom_extendable=True, + lifetime=costs.at['H2 liquefaction', 'lifetime'] + ) + + shipping_bus = nodes + " H2 liquid" + else: + shipping_bus = nodes + " H2" + all_navigation = ["total international navigation", "total domestic navigation"] efficiency = options['shipping_average_efficiency'] / costs.at["fuel cell", "efficiency"] shipping_hydrogen_share = get(options['shipping_hydrogen_share'], investment_year) @@ -1722,7 +1746,7 @@ def add_industry(n, costs): n.madd("Load", nodes, suffix=" H2 for shipping", - bus=nodes + " H2", + bus=shipping_bus, carrier="H2 for shipping", p_set=p_set )