diff --git a/config.default.yaml b/config.default.yaml index 7095df4e..4427aa5e 100644 --- a/config.default.yaml +++ b/config.default.yaml @@ -264,6 +264,9 @@ sector: biomass_transport: false # biomass transport between nodes conventional_generation: # generator : carrier OCGT: gas + biomass_to_liquid: false + biosng: false + industry: @@ -510,6 +513,8 @@ plotting: solid biomass for industry co2 from atmosphere: '#736412' solid biomass for industry co2 to stored: '#47411c' biomass boiler: '#8A9A5B' + biomass to liquid: '#32CD32' + BioSNG: '#123456' # power transmission lines: '#6c9459' transmission lines: '#6c9459' diff --git a/doc/release_notes.rst b/doc/release_notes.rst index a463f350..abcbaad5 100644 --- a/doc/release_notes.rst +++ b/doc/release_notes.rst @@ -56,8 +56,13 @@ incorporates retrofitting options to hydrogen. **New features and functionality** + * Add option for biomass boilers (wood pellets) for decentral heating +* Add option for BioSNG (methane from biomass) with and without CC + +* Add option for BtL (Biomass to liquid fuel/oil) with and without CC + * 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. diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index bb3f48a5..6000f532 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -1878,6 +1878,79 @@ def add_biomass(n, costs): lifetime=costs.at['biomass boiler', 'lifetime'] ) + #Solid biomass to liquid fuel + if options["biomass_to_liquid"]: + n.madd("Link", + spatial.biomass.nodes, + suffix=" biomass to liquid", + bus0=spatial.biomass.nodes, + bus1=spatial.oil.nodes, + bus2="co2 atmosphere", + carrier="biomass to liquid", + lifetime=costs.at['BtL', 'lifetime'], + efficiency=costs.at['BtL', 'efficiency'], + 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"] + ) + + #TODO: Update with energy penalty + n.madd("Link", + spatial.biomass.nodes, + suffix=" biomass to liquid CC", + bus0=spatial.biomass.nodes, + bus1=spatial.oil.nodes, + bus2="co2 atmosphere", + bus3=spatial.co2.nodes, + carrier="biomass to liquid", + lifetime=costs.at['BtL', 'lifetime'], + efficiency=costs.at['BtL', 'efficiency'], + 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"], + marginal_cost=costs.at['BtL', 'efficiency'] * costs.loc["BtL", "VOM"] + + #BioSNG from solid biomass + if options["biosng"]: + n.madd("Link", + spatial.biomass.nodes, + suffix=" solid biomass to gas", + bus0=spatial.biomass.nodes, + bus1=spatial.gas.nodes, + bus3="co2 atmosphere", + carrier="BioSNG", + lifetime=costs.at['BioSNG', 'lifetime'], + efficiency=costs.at['BioSNG', 'efficiency'], + efficiency3=-costs.at['solid biomass', 'CO2 intensity'] + costs.at['BioSNG', 'CO2 stored'], + p_nom_extendable=True, + capital_cost=costs.at['BioSNG', 'fixed'], + marginal_cost=costs.at['BioSNG', 'efficiency']*costs.loc["BioSNG", "VOM"] + ) + + #TODO: Update with energy penalty for CC + n.madd("Link", + spatial.biomass.nodes, + suffix=" solid biomass to gas CC", + bus0=spatial.biomass.nodes, + bus1=spatial.gas.nodes, + bus2=spatial.co2.nodes, + bus3="co2 atmosphere", + carrier="BioSNG", + lifetime=costs.at['BioSNG', 'lifetime'], + efficiency=costs.at['BioSNG', 'efficiency'], + efficiency2=costs.at['BioSNG', 'CO2 stored'] * costs.at['BioSNG', 'capture rate'], + efficiency3=-costs.at['solid biomass', 'CO2 intensity'] + costs.at['BioSNG', 'CO2 stored'] * (1 - costs.at['BioSNG', 'capture rate']), + p_nom_extendable=True, + capital_cost=costs.at['BioSNG', 'fixed'] + costs.at['biomass CHP capture', 'fixed'] * costs.at[ + "BioSNG", "CO2 stored"], + marginal_cost=costs.at['BioSNG', 'efficiency']*costs.loc["BioSNG", "VOM"] + + ) + + def add_industry(n, costs): logger.info("Add industrial demand")