Merge pull request #1194 from PyPSA/biomass_import

Biomass import
This commit is contained in:
lisazeyen 2024-08-02 15:36:02 +02:00 committed by GitHub
commit 7a16dd2aa4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 218 additions and 158 deletions

View File

@ -620,6 +620,11 @@ sector:
max_boost: 0.25 max_boost: 0.25
var_cf: true var_cf: true
sustainability_factor: 0.0025 sustainability_factor: 0.0025
solid_biomass_import:
enable: false
price: 54 #EUR/MWh
max_amount: 1390 # TWh
upstream_emissions_factor: .1 #share of solid biomass CO2 emissions at full combustion
# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#industry # docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#industry
industry: industry:
@ -1017,6 +1022,7 @@ plotting:
biogas: '#e3d37d' biogas: '#e3d37d'
biomass: '#baa741' biomass: '#baa741'
solid biomass: '#baa741' solid biomass: '#baa741'
solid biomass import: '#d5ca8d'
solid biomass transport: '#baa741' solid biomass transport: '#baa741'
solid biomass for industry: '#7a6d26' solid biomass for industry: '#7a6d26'
solid biomass for industry CC: '#47411c' solid biomass for industry CC: '#47411c'

View File

@ -6,7 +6,7 @@ industry,--,"{true, false}",Flag to include industry sector.
agriculture,--,"{true, false}",Flag to include agriculture sector. agriculture,--,"{true, false}",Flag to include agriculture sector.
fossil_fuels,--,"{true, false}","Flag to include imports of fossil fuels ( [""coal"", ""gas"", ""oil"", ""lignite""])" fossil_fuels,--,"{true, false}","Flag to include imports of fossil fuels ( [""coal"", ""gas"", ""oil"", ""lignite""])"
district_heating,--,,`prepare_sector_network.py <https://github.com/PyPSA/pypsa-eur-sec/blob/master/scripts/prepare_sector_network.py>`_ district_heating,--,,`prepare_sector_network.py <https://github.com/PyPSA/pypsa-eur-sec/blob/master/scripts/prepare_sector_network.py>`_
-- potential,--,float,maximum fraction of urban demand which can be supplied by district heating. Ignored where below current fraction. -- potential,--,float,maximum fraction of urban demand which can be supplied by district heating
-- progress,--,Dictionary with planning horizons as keys., Increase of today's district heating demand to potential maximum district heating share. Progress = 0 means today's district heating share. Progress = 1 means maximum fraction of urban demand is supplied by district heating -- progress,--,Dictionary with planning horizons as keys., Increase of today's district heating demand to potential maximum district heating share. Progress = 0 means today's district heating share. Progress = 1 means maximum fraction of urban demand is supplied by district heating
-- district_heating_loss,--,float,Share increase in district heat demand in urban central due to heat losses -- district_heating_loss,--,float,Share increase in district heat demand in urban central due to heat losses
cluster_heat_buses,--,"{true, false}",Cluster residential and service heat buses in `prepare_sector_network.py <https://github.com/PyPSA/pypsa-eur-sec/blob/master/scripts/prepare_sector_network.py>`_ to one to save memory. cluster_heat_buses,--,"{true, false}",Cluster residential and service heat buses in `prepare_sector_network.py <https://github.com/PyPSA/pypsa-eur-sec/blob/master/scripts/prepare_sector_network.py>`_ to one to save memory.
@ -72,7 +72,7 @@ boilers,--,"{true, false}",Add option for transforming gas into heat using gas b
resistive_heaters,--,"{true, false}",Add option for transforming electricity into heat using resistive heaters (independently from gas boilers) resistive_heaters,--,"{true, false}",Add option for transforming electricity into heat using resistive heaters (independently from gas boilers)
oil_boilers,--,"{true, false}",Add option for transforming oil into heat using boilers oil_boilers,--,"{true, false}",Add option for transforming oil into heat using boilers
biomass_boiler,--,"{true, false}",Add option for transforming biomass into heat using boilers biomass_boiler,--,"{true, false}",Add option for transforming biomass into heat using boilers
overdimension_individual_heating,--,float,Add option for overdimensioning individual heating systems by a certain factor. This allows them to cover heat demand peaks e.g. 10% higher than those in the data with a setting of 1.1. overdimension_individual_heating,--,"float",Add option for overdimensioning individual heating systems by a certain factor. This allows them to cover heat demand peaks e.g. 10% higher than those in the data with a setting of 1.1.
chp,--,"{true, false}",Add option for using Combined Heat and Power (CHP) chp,--,"{true, false}",Add option for using Combined Heat and Power (CHP)
micro_chp,--,"{true, false}",Add option for using Combined Heat and Power (CHP) for decentral areas. micro_chp,--,"{true, false}",Add option for using Combined Heat and Power (CHP) for decentral areas.
solar_thermal,--,"{true, false}",Add option for using solar thermal to generate heat. solar_thermal,--,"{true, false}",Add option for using solar thermal to generate heat.
@ -138,7 +138,6 @@ biomass_transport,--,"{true, false}",Add option for transporting solid biomass b
biogas_upgrading_cc,--,"{true, false}",Add option to capture CO2 from biomass upgrading biogas_upgrading_cc,--,"{true, false}",Add option to capture CO2 from biomass upgrading
conventional_generation,,,Add a more detailed description of conventional carriers. Any power generation requires the consumption of fuel from nodes representing that fuel. conventional_generation,,,Add a more detailed description of conventional carriers. Any power generation requires the consumption of fuel from nodes representing that fuel.
biomass_to_liquid,--,"{true, false}",Add option for transforming solid biomass into liquid fuel with the same properties as oil biomass_to_liquid,--,"{true, false}",Add option for transforming solid biomass into liquid fuel with the same properties as oil
electrobiofuels,--,"{true, false}","Add option for transforming solid biomass and hydrogen into liquid fuel to make more use of biogenic carbon, as a combination of BtL and Fischer-Tropsch"
biosng,--,"{true, false}",Add option for transforming solid biomass into synthesis gas with the same properties as natural gas biosng,--,"{true, false}",Add option for transforming solid biomass into synthesis gas with the same properties as natural gas
limit_max_growth,,, limit_max_growth,,,
-- enable,--,"{true, false}",Add option to limit the maximum growth of a carrier -- enable,--,"{true, false}",Add option to limit the maximum growth of a carrier
@ -155,3 +154,8 @@ enhanced_geothermal,,,
-- max_boost,--,float,The maximum boost in power output under flexible operation -- max_boost,--,float,The maximum boost in power output under flexible operation
-- var_cf,--,"{true, false}",Add option for variable capacity factor (see Ricks et al. 2024) -- var_cf,--,"{true, false}",Add option for variable capacity factor (see Ricks et al. 2024)
-- sustainability_factor,--,float,Share of sourced heat that is replenished by the earth's core (see details in `build_egs_potentials.py <https://github.com/PyPSA/pypsa-eur-sec/blob/master/scripts/build_egs_potentials.py>`_) -- sustainability_factor,--,float,Share of sourced heat that is replenished by the earth's core (see details in `build_egs_potentials.py <https://github.com/PyPSA/pypsa-eur-sec/blob/master/scripts/build_egs_potentials.py>`_)
solid_biomass_import,,,
-- enable,--,"{true, false}",Add option to include solid biomass imports
-- price,currency/MWh,float,Price for importing solid biomass
-- max_amount,Twh,float,Maximum solid biomass import potential
-- upstream_emissions_factor,p.u.,float,Upstream emissions of solid biomass imports

1 Unit Values Description
6 agriculture -- {true, false} Flag to include agriculture sector.
7 fossil_fuels -- {true, false} Flag to include imports of fossil fuels ( ["coal", "gas", "oil", "lignite"])
8 district_heating -- `prepare_sector_network.py <https://github.com/PyPSA/pypsa-eur-sec/blob/master/scripts/prepare_sector_network.py>`_
9 -- potential -- float maximum fraction of urban demand which can be supplied by district heating. Ignored where below current fraction. maximum fraction of urban demand which can be supplied by district heating
10 -- progress -- Dictionary with planning horizons as keys. Increase of today's district heating demand to potential maximum district heating share. Progress = 0 means today's district heating share. Progress = 1 means maximum fraction of urban demand is supplied by district heating
11 -- district_heating_loss -- float Share increase in district heat demand in urban central due to heat losses
12 cluster_heat_buses -- {true, false} Cluster residential and service heat buses in `prepare_sector_network.py <https://github.com/PyPSA/pypsa-eur-sec/blob/master/scripts/prepare_sector_network.py>`_ to one to save memory.
72 resistive_heaters -- {true, false} Add option for transforming electricity into heat using resistive heaters (independently from gas boilers)
73 oil_boilers -- {true, false} Add option for transforming oil into heat using boilers
74 biomass_boiler -- {true, false} Add option for transforming biomass into heat using boilers
75 overdimension_individual_heating -- float Add option for overdimensioning individual heating systems by a certain factor. This allows them to cover heat demand peaks e.g. 10% higher than those in the data with a setting of 1.1.
76 chp -- {true, false} Add option for using Combined Heat and Power (CHP)
77 micro_chp -- {true, false} Add option for using Combined Heat and Power (CHP) for decentral areas.
78 solar_thermal -- {true, false} Add option for using solar thermal to generate heat.
138 biogas_upgrading_cc -- {true, false} Add option to capture CO2 from biomass upgrading
139 conventional_generation Add a more detailed description of conventional carriers. Any power generation requires the consumption of fuel from nodes representing that fuel.
140 biomass_to_liquid -- {true, false} Add option for transforming solid biomass into liquid fuel with the same properties as oil
electrobiofuels -- {true, false} Add option for transforming solid biomass and hydrogen into liquid fuel to make more use of biogenic carbon, as a combination of BtL and Fischer-Tropsch
141 biosng -- {true, false} Add option for transforming solid biomass into synthesis gas with the same properties as natural gas
142 limit_max_growth
143 -- enable -- {true, false} Add option to limit the maximum growth of a carrier
154 -- max_boost -- float The maximum boost in power output under flexible operation
155 -- var_cf -- {true, false} Add option for variable capacity factor (see Ricks et al. 2024)
156 -- sustainability_factor -- float Share of sourced heat that is replenished by the earth's core (see details in `build_egs_potentials.py <https://github.com/PyPSA/pypsa-eur-sec/blob/master/scripts/build_egs_potentials.py>`_)
157 solid_biomass_import
158 -- enable -- {true, false} Add option to include solid biomass imports
159 -- price currency/MWh float Price for importing solid biomass
160 -- max_amount Twh float Maximum solid biomass import potential
161 -- upstream_emissions_factor p.u. float Upstream emissions of solid biomass imports

View File

@ -10,7 +10,9 @@ Release Notes
Upcoming Release Upcoming Release
================ ================
* Add option to produce electrobiofuels from solid biomass and hydrogen, as a combination of BtL and Fischer-Tropsch to make more use of the biogenic carbon * Add option to import solid biomass
* Add option to produce electrobiofuels (flag ``electrobiofuels`) from solid biomass and hydrogen, as a combination of BtL and Fischer-Tropsch to make more use of the biogenic carbon
* Add flag ``sector: fossil_fuels`` in config to remove the option of importing fossil fuels * Add flag ``sector: fossil_fuels`` in config to remove the option of importing fossil fuels

View File

@ -2291,6 +2291,54 @@ def add_biomass(n, costs):
e_initial=solid_biomass_potentials_spatial, e_initial=solid_biomass_potentials_spatial,
) )
if options["solid_biomass_import"].get("enable", False):
biomass_import_price = options["solid_biomass_import"]["price"]
# convert TWh in MWh
biomass_import_max_amount = options["solid_biomass_import"]["max_amount"] * 1e6
biomass_import_upstream_emissions = options["solid_biomass_import"][
"upstream_emissions_factor"
]
logger.info(
"Adding biomass import with cost %.2f EUR/MWh, a limit of %.2f TWh, and embedded emissions of %.2f%%",
biomass_import_price,
options["solid_biomass_import"]["max_amount"],
biomass_import_upstream_emissions * 100,
)
n.add("Carrier", "solid biomass import")
n.madd(
"Bus",
["EU solid biomass import"],
location="EU",
carrier="solid biomass import",
)
n.madd(
"Store",
["solid biomass import"],
bus=["EU solid biomass import"],
carrier="solid biomass import",
e_nom=biomass_import_max_amount,
marginal_cost=biomass_import_price,
e_initial=biomass_import_max_amount,
)
n.madd(
"Link",
spatial.biomass.nodes,
suffix=" solid biomass import",
bus0=["EU solid biomass import"],
bus1=spatial.biomass.nodes,
bus2="co2 atmosphere",
carrier="solid biomass import",
efficiency=1.0,
efficiency2=biomass_import_upstream_emissions
* costs.at["solid biomass", "CO2 intensity"],
p_nom_extendable=True,
)
n.madd( n.madd(
"Link", "Link",
spatial.gas.biogas_to_gas, spatial.gas.biogas_to_gas,