From 46413dd88c745b2a7d8c6436d758e47203799e0b Mon Sep 17 00:00:00 2001 From: Markus Millinger <50738187+millingermarkus@users.noreply.github.com> Date: Mon, 1 Aug 2022 13:07:59 +0200 Subject: [PATCH 1/8] Added biomass to liquid process with an w/o CC --- scripts/prepare_sector_network.py | 34 +++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index 7abdadff..3fec5446 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -1859,6 +1859,40 @@ def add_biomass(n, costs): efficiency4=costs.at['solid biomass', 'CO2 intensity'] * costs.at['biomass CHP capture', 'capture_rate'], lifetime=costs.at[key, 'lifetime'] ) + + #Solid biomass to liquid fuel + if options["biomass"]["biomass_to_liquid"] + n.madd("Link", + spatial.biomass.nodes + " biomass to liquid", + bus0=spatial.biomass.nodes, + bus1="EU oil", + bus3="co2 atmosphere", + carrier="biomass to liquid", + lifetime=costs.at['BtL', 'lifetime'], + efficiency=costs.at['BtL', 'efficiency'], + efficiency3=-costs.at['solid biomass', 'CO2 intensity'] + costs.at['BtL', 'CO2 stored'], + p_nom_extendable=True, + capital_cost=costs.at['BtL', 'fixed'], + marginal_cost=costs.at['BtL', 'efficiency']*costs.loc["BtL", "VOM"] + ) + + #TODO: Update with energy penalty + n.madd("Link", + spatial.biomass.nodes + " biomass to liquid CC", + bus0=spatial.biomass.nodes, + bus1="EU oil", + bus2="co2 stored", + bus3="co2 atmosphere", + carrier="biomass to liquid", + lifetime=costs.at['BtL', 'lifetime'], + efficiency=costs.at['BtL', 'efficiency'], + efficiency2=costs.at['BtL', 'CO2 stored'] * costs.at['BtL', 'capture rate'], + efficiency3=-costs.at['solid biomass', 'CO2 intensity'] + costs.at['BtL', 'CO2 stored'] * (1 - costs.at['BtL', 'capture rate']), + p_nom_extendable=True, + capital_cost=costs.at['BtL', 'fixed'] + costs.at['biomass CHP capture', 'fixed'] * costs.at[ + "BtL", "CO2 stored"], + marginal_cost=costs.at['BtL', 'efficiency'] * costs.loc["BtL", "VOM"] + ) def add_industry(n, costs): From 2d06d207be7b23a71cd64232542b4585506b4c75 Mon Sep 17 00:00:00 2001 From: Markus Millinger <50738187+millingermarkus@users.noreply.github.com> Date: Mon, 1 Aug 2022 13:12:27 +0200 Subject: [PATCH 2/8] Added biomass_to_liquid option toggle in yaml --- config.default.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config.default.yaml b/config.default.yaml index b2fa5f6b..78a07e17 100644 --- a/config.default.yaml +++ b/config.default.yaml @@ -263,6 +263,7 @@ sector: biomass_transport: false # biomass transport between nodes conventional_generation: # generator : carrier OCGT: gas + biomass_to_liquid: true industry: From 4bff921cf28f580c136701a7dec6c9c9e3c2cacb Mon Sep 17 00:00:00 2001 From: Markus Millinger <50738187+millingermarkus@users.noreply.github.com> Date: Mon, 1 Aug 2022 13:13:18 +0200 Subject: [PATCH 3/8] Adapted biomass_to_liquid toggle reference --- scripts/prepare_sector_network.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index 3fec5446..d3ff0e5d 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -1861,7 +1861,7 @@ def add_biomass(n, costs): ) #Solid biomass to liquid fuel - if options["biomass"]["biomass_to_liquid"] + if options["biomass_to_liquid"] n.madd("Link", spatial.biomass.nodes + " biomass to liquid", bus0=spatial.biomass.nodes, From 00197232629ea29877d58ead96a6db27b61f6753 Mon Sep 17 00:00:00 2001 From: Markus Millinger <50738187+millingermarkus@users.noreply.github.com> Date: Mon, 1 Aug 2022 13:26:51 +0200 Subject: [PATCH 4/8] Updated spatial nodes for biomass to liquid --- scripts/prepare_sector_network.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index d3ff0e5d..8eea6a19 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -1865,7 +1865,7 @@ def add_biomass(n, costs): n.madd("Link", spatial.biomass.nodes + " biomass to liquid", bus0=spatial.biomass.nodes, - bus1="EU oil", + bus1=spatial.oil.nodes, bus3="co2 atmosphere", carrier="biomass to liquid", lifetime=costs.at['BtL', 'lifetime'], @@ -1880,8 +1880,8 @@ def add_biomass(n, costs): n.madd("Link", spatial.biomass.nodes + " biomass to liquid CC", bus0=spatial.biomass.nodes, - bus1="EU oil", - bus2="co2 stored", + bus1=spatial.oil.nodes, + bus2=spatial.co2.nodes, bus3="co2 atmosphere", carrier="biomass to liquid", lifetime=costs.at['BtL', 'lifetime'], From 46310f0a30b887b74e0649f861d52f31107f67de Mon Sep 17 00:00:00 2001 From: millingermarkus Date: Mon, 1 Aug 2022 15:00:27 +0200 Subject: [PATCH 5/8] Minor correction to prepare_sector_network --- scripts/prepare_sector_network.py | 38 ++++++++++++++++--------------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index 8eea6a19..15e30a65 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -1861,9 +1861,10 @@ def add_biomass(n, costs): ) #Solid biomass to liquid fuel - if options["biomass_to_liquid"] + if options["biomass_to_liquid"]: n.madd("Link", - spatial.biomass.nodes + " biomass to liquid", + spatial.biomass.nodes, + suffix=" biomass to liquid", bus0=spatial.biomass.nodes, bus1=spatial.oil.nodes, bus3="co2 atmosphere", @@ -1874,25 +1875,26 @@ def add_biomass(n, costs): p_nom_extendable=True, capital_cost=costs.at['BtL', 'fixed'], marginal_cost=costs.at['BtL', 'efficiency']*costs.loc["BtL", "VOM"] - ) + ) #TODO: Update with energy penalty n.madd("Link", - spatial.biomass.nodes + " biomass to liquid CC", - bus0=spatial.biomass.nodes, - bus1=spatial.oil.nodes, - bus2=spatial.co2.nodes, - bus3="co2 atmosphere", - carrier="biomass to liquid", - lifetime=costs.at['BtL', 'lifetime'], - efficiency=costs.at['BtL', 'efficiency'], - efficiency2=costs.at['BtL', 'CO2 stored'] * costs.at['BtL', 'capture rate'], - efficiency3=-costs.at['solid biomass', 'CO2 intensity'] + costs.at['BtL', 'CO2 stored'] * (1 - costs.at['BtL', 'capture rate']), - p_nom_extendable=True, - capital_cost=costs.at['BtL', 'fixed'] + costs.at['biomass CHP capture', 'fixed'] * costs.at[ - "BtL", "CO2 stored"], - marginal_cost=costs.at['BtL', 'efficiency'] * costs.loc["BtL", "VOM"] - ) + spatial.biomass.nodes, + suffix=" biomass to liquid CC", + bus0=spatial.biomass.nodes, + bus1=spatial.oil.nodes, + bus2=spatial.co2.nodes, + bus3="co2 atmosphere", + carrier="biomass to liquid", + lifetime=costs.at['BtL', 'lifetime'], + efficiency=costs.at['BtL', 'efficiency'], + efficiency2=costs.at['BtL', 'CO2 stored'] * costs.at['BtL', 'capture rate'], + efficiency3=-costs.at['solid biomass', 'CO2 intensity'] + costs.at['BtL', 'CO2 stored'] * (1 - costs.at['BtL', 'capture rate']), + p_nom_extendable=True, + capital_cost=costs.at['BtL', 'fixed'] + costs.at['biomass CHP capture', 'fixed'] * costs.at[ + "BtL", "CO2 stored"], + marginal_cost=costs.at['BtL', 'efficiency'] * costs.loc["BtL", "VOM"] + ) def add_industry(n, costs): From 4d1dc2db8b0bea8afe429bf4fb04661bf6aefe51 Mon Sep 17 00:00:00 2001 From: millingermarkus Date: Mon, 1 Aug 2022 15:04:45 +0200 Subject: [PATCH 6/8] Added tech color for biomass to liquid --- config.default.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config.default.yaml b/config.default.yaml index 78a07e17..4085e719 100644 --- a/config.default.yaml +++ b/config.default.yaml @@ -509,6 +509,7 @@ plotting: solid biomass for industry CC: '#47411c' solid biomass for industry co2 from atmosphere: '#736412' solid biomass for industry co2 to stored: '#47411c' + biomass to liquid: '#32CD32' # power transmission lines: '#6c9459' transmission lines: '#6c9459' From ee458eeafb0f83e380e724aa8ae411d25319eba2 Mon Sep 17 00:00:00 2001 From: lisazeyen Date: Thu, 4 Aug 2022 16:03:16 +0200 Subject: [PATCH 7/8] change names of buses --- scripts/prepare_sector_network.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index 15e30a65..19637b5f 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -1859,7 +1859,7 @@ def add_biomass(n, costs): efficiency4=costs.at['solid biomass', 'CO2 intensity'] * costs.at['biomass CHP capture', 'capture_rate'], lifetime=costs.at[key, 'lifetime'] ) - + #Solid biomass to liquid fuel if options["biomass_to_liquid"]: n.madd("Link", @@ -1867,11 +1867,11 @@ def add_biomass(n, costs): suffix=" biomass to liquid", bus0=spatial.biomass.nodes, bus1=spatial.oil.nodes, - bus3="co2 atmosphere", + bus2="co2 atmosphere", carrier="biomass to liquid", lifetime=costs.at['BtL', 'lifetime'], efficiency=costs.at['BtL', 'efficiency'], - efficiency3=-costs.at['solid biomass', 'CO2 intensity'] + costs.at['BtL', 'CO2 stored'], + efficiency2=-costs.at['solid biomass', 'CO2 intensity'] + costs.at['BtL', 'CO2 stored'], p_nom_extendable=True, capital_cost=costs.at['BtL', 'fixed'], marginal_cost=costs.at['BtL', 'efficiency']*costs.loc["BtL", "VOM"] @@ -1883,13 +1883,13 @@ def add_biomass(n, costs): suffix=" biomass to liquid CC", bus0=spatial.biomass.nodes, bus1=spatial.oil.nodes, - bus2=spatial.co2.nodes, - bus3="co2 atmosphere", + bus2="co2 atmosphere", + bus3=spatial.co2.nodes, carrier="biomass to liquid", lifetime=costs.at['BtL', 'lifetime'], efficiency=costs.at['BtL', 'efficiency'], - efficiency2=costs.at['BtL', 'CO2 stored'] * costs.at['BtL', 'capture rate'], - efficiency3=-costs.at['solid biomass', 'CO2 intensity'] + costs.at['BtL', 'CO2 stored'] * (1 - costs.at['BtL', 'capture rate']), + efficiency2=-costs.at['solid biomass', 'CO2 intensity'] + costs.at['BtL', 'CO2 stored'] * (1 - costs.at['BtL', 'capture rate']), + efficiency3=costs.at['BtL', 'CO2 stored'] * costs.at['BtL', 'capture rate'], p_nom_extendable=True, capital_cost=costs.at['BtL', 'fixed'] + costs.at['biomass CHP capture', 'fixed'] * costs.at[ "BtL", "CO2 stored"], From 274e7df5af22847e106a058c7c2ff6fc70d4035e Mon Sep 17 00:00:00 2001 From: lisazeyen Date: Thu, 4 Aug 2022 16:03:32 +0200 Subject: [PATCH 8/8] update release notes --- doc/release_notes.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/release_notes.rst b/doc/release_notes.rst index f1fb12fe..1d4735ca 100644 --- a/doc/release_notes.rst +++ b/doc/release_notes.rst @@ -56,6 +56,10 @@ incorporates retrofitting options to hydrogen. **New features and functionality** +* option for BioSNG (methane from biomass) with and without CC is added + +* option for BtL (Biomass to liquid fuel/oil) with and without CC is added + * Units are assigned to the buses. These only provide a better understanding. The specifications of the units are not taken into account in the optimisation, which means that no automatic conversion of units takes place. * Option ``retrieve_sector_databundle`` to automatically retrieve and extract data bundle.