From 4984ba199e2e2a41bf8183cbd7832b5262521b53 Mon Sep 17 00:00:00 2001 From: Fabian Neumann Date: Fri, 10 Jun 2022 16:53:37 +0200 Subject: [PATCH] use spatial namespace to manage ammonia resolution --- config.default.yaml | 2 +- scripts/prepare_sector_network.py | 26 +++++++++++++++++++------- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/config.default.yaml b/config.default.yaml index d2291f58..d0887bc8 100644 --- a/config.default.yaml +++ b/config.default.yaml @@ -244,7 +244,7 @@ sector: # - onshore # more than 50 km from sea - nearshore # within 50 km of sea # - offshore - ammonia: false + ammonia: false # can be false (no NH3 carrier), true (copperplated NH3), "regional" (regionalised NH3 without network) use_fischer_tropsch_waste_heat: true use_fuel_cell_waste_heat: true electricity_distribution_grid: true diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index dd4e6e39..9411a282 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -93,6 +93,18 @@ def define_spatial(nodes, options): spatial.gas.df = pd.DataFrame(vars(spatial.gas), index=nodes) + # ammonia + + spatial.ammonia = SimpleNamespace() + if options["ammonia"] == "regional": + spatial.ammonia.nodes = nodes + " NH3" + spatial.ammonia.locations = nodes + else: + spatial.ammonia.nodes = ["EU ammonia"] + spatial.ammonia.locations = ["EU"] + + spatial.ammonia.df = pd.DataFrame(vars(spatial.ammonia), index=nodes) + # oil spatial.oil = SimpleNamespace() spatial.oil.nodes = ["EU oil"] @@ -656,7 +668,7 @@ def add_generation(n, costs): def add_ammonia(n, costs): - logger.info("adding ammonia carrier") + logger.info("adding ammonia carrier with synthesis, cracking and storage") nodes = pop_layout.index @@ -665,8 +677,8 @@ def add_ammonia(n, costs): n.add("Carrier", "NH3") n.madd("Bus", - nodes + " NH3", - location=nodes, + spatial.ammonia.nodes, + location=spatial.ammonia.locations, carrier="NH3" ) @@ -674,7 +686,7 @@ def add_ammonia(n, costs): nodes, suffix=" Haber-Bosch", bus0=nodes, - bus1=nodes + " NH3", + bus1=spatial.ammonia.nodes, bus2=nodes + " H2", p_nom_extendable=True, carrier="Haber-Bosch", @@ -687,7 +699,7 @@ def add_ammonia(n, costs): n.madd("Link", nodes, suffix=" ammonia cracker", - bus0=nodes + " NH3", + bus0=spatial.ammonia.nodes, bus1=nodes + " H2", p_nom_extendable=True, carrier="ammonia cracker", @@ -698,9 +710,9 @@ def add_ammonia(n, costs): # Ammonia Storage n.madd("Store", - nodes, + spatial.ammonia.nodes, suffix=" ammonia store", - bus=nodes + " NH3", + bus=spatial.ammonia.nodes, e_nom_extendable=True, e_cyclic=True, carrier="ammonia store",