From ae825d82dcebae7ab67f591329fe8e6140a96d72 Mon Sep 17 00:00:00 2001 From: Fabian Date: Fri, 26 Jan 2024 12:10:39 +0100 Subject: [PATCH] prepare_sector_network: reorder buses for dac components --- doc/release_notes.rst | 2 ++ scripts/add_electricity.py | 2 +- scripts/prepare_sector_network.py | 22 +++++++++++----------- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/doc/release_notes.rst b/doc/release_notes.rst index 93d1a268..94d5c55f 100644 --- a/doc/release_notes.rst +++ b/doc/release_notes.rst @@ -37,6 +37,8 @@ Upcoming Release * Add the option to customise map projection in plotting config. +* The order of buses (bus0, bus1, ...) for DAC components has changed to meet the convention of the other components. Therefore, `bus0` refers to the electricity bus (input), `bus1` to the heat bus (input), 'bus2' to the CO2 atmosphere bus (input), and `bus3` to the CO2 storage bus (output). + PyPSA-Eur 0.9.0 (5th January 2024) ================================== diff --git a/scripts/add_electricity.py b/scripts/add_electricity.py index c9e5abca..8a1086bd 100755 --- a/scripts/add_electricity.py +++ b/scripts/add_electricity.py @@ -288,7 +288,7 @@ def attach_load(n, regions, load, nuts3_shapes, ua_md_gdp, countries, scaling=1. ua_md_gdp = pd.read_csv(ua_md_gdp, dtype={"name": "str"}).set_index("name") - logger.info(f"Load data scaled with scalling factor {scaling}.") + logger.info(f"Load data scaled by factor {scaling}.") opsd_load *= scaling nuts3 = gpd.read_file(nuts3_shapes).set_index("index") diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index d24feb79..3ea8c8dd 100755 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -710,27 +710,27 @@ def add_dac(n, costs): heat_buses = n.buses.index[n.buses.carrier.isin(heat_carriers)] locations = n.buses.location[heat_buses] - efficiency2 = -( + electricity_input = ( costs.at["direct air capture", "electricity-input"] + costs.at["direct air capture", "compression-electricity-input"] - ) - efficiency3 = -( + ) # MWh_el / tCO2 + heat_input = ( costs.at["direct air capture", "heat-input"] - costs.at["direct air capture", "compression-heat-output"] - ) + ) # MWh_th / tCO2 n.madd( "Link", heat_buses.str.replace(" heat", " DAC"), - bus0="co2 atmosphere", - bus1=spatial.co2.df.loc[locations, "nodes"].values, - bus2=locations.values, - bus3=heat_buses, + bus0=locations.values, + bus1=heat_buses, + bus2="co2 atmosphere", + bus3=spatial.co2.df.loc[locations, "nodes"].values, carrier="DAC", capital_cost=costs.at["direct air capture", "fixed"], - efficiency=1.0, - efficiency2=efficiency2, - efficiency3=efficiency3, + efficiency=-heat_input / electricity_input, + efficiency2=-electricity_input, + efficiency3=electricity_input, p_nom_extendable=True, lifetime=costs.at["direct air capture", "lifetime"], )