Merge pull request #259 from PyPSA/btl

Btl
This commit is contained in:
lisazeyen 2022-08-04 16:14:00 +02:00 committed by GitHub
commit 654ef435de
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 44 additions and 0 deletions

View File

@ -263,9 +263,11 @@ sector:
biomass_transport: false # biomass transport between nodes biomass_transport: false # biomass transport between nodes
conventional_generation: # generator : carrier conventional_generation: # generator : carrier
OCGT: gas OCGT: gas
biomass_to_liquid: false
biosng: false biosng: false
industry: industry:
St_primary_fraction: 0.3 # fraction of steel produced via primary route versus secondary route (scrap+EAF); today fraction is 0.6 St_primary_fraction: 0.3 # fraction of steel produced via primary route versus secondary route (scrap+EAF); today fraction is 0.6
# 2020: 0.6 # 2020: 0.6
@ -509,6 +511,7 @@ plotting:
solid biomass for industry CC: '#47411c' solid biomass for industry CC: '#47411c'
solid biomass for industry co2 from atmosphere: '#736412' solid biomass for industry co2 from atmosphere: '#736412'
solid biomass for industry co2 to stored: '#47411c' solid biomass for industry co2 to stored: '#47411c'
biomass to liquid: '#32CD32'
BioSNG: '#123456' BioSNG: '#123456'
# power transmission # power transmission
lines: '#6c9459' lines: '#6c9459'

View File

@ -56,6 +56,10 @@ incorporates retrofitting options to hydrogen.
**New features and functionality** **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. * 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. * Option ``retrieve_sector_databundle`` to automatically retrieve and extract data bundle.

View File

@ -1860,6 +1860,42 @@ def add_biomass(n, costs):
lifetime=costs.at[key, 'lifetime'] lifetime=costs.at[key, '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 #BioSNG from solid biomass
if options["biosng"]: if options["biosng"]:
n.madd("Link", n.madd("Link",
@ -1894,6 +1930,7 @@ def add_biomass(n, costs):
capital_cost=costs.at['BioSNG', 'fixed'] + costs.at['biomass CHP capture', 'fixed'] * costs.at[ capital_cost=costs.at['BioSNG', 'fixed'] + costs.at['biomass CHP capture', 'fixed'] * costs.at[
"BioSNG", "CO2 stored"], "BioSNG", "CO2 stored"],
marginal_cost=costs.at['BioSNG', 'efficiency']*costs.loc["BioSNG", "VOM"] marginal_cost=costs.at['BioSNG', 'efficiency']*costs.loc["BioSNG", "VOM"]
) )