Merge pull request #615 from PyPSA/biogas-upgrade-cc
allow carbon capture in biogas upgrading
This commit is contained in:
commit
f81886e422
@ -497,6 +497,7 @@ sector:
|
|||||||
gas_distribution_grid_cost_factor: 1.0
|
gas_distribution_grid_cost_factor: 1.0
|
||||||
biomass_spatial: false
|
biomass_spatial: false
|
||||||
biomass_transport: false
|
biomass_transport: false
|
||||||
|
biogas_upgrading_cc: false
|
||||||
conventional_generation:
|
conventional_generation:
|
||||||
OCGT: gas
|
OCGT: gas
|
||||||
biomass_to_liquid: false
|
biomass_to_liquid: false
|
||||||
@ -778,6 +779,7 @@ plotting:
|
|||||||
fossil gas: '#e05b09'
|
fossil gas: '#e05b09'
|
||||||
natural gas: '#e05b09'
|
natural gas: '#e05b09'
|
||||||
biogas to gas: '#e36311'
|
biogas to gas: '#e36311'
|
||||||
|
biogas to gas CC: '#e51245'
|
||||||
CCGT: '#a85522'
|
CCGT: '#a85522'
|
||||||
CCGT marginal: '#a85522'
|
CCGT marginal: '#a85522'
|
||||||
allam: '#B98F76'
|
allam: '#B98F76'
|
||||||
|
@ -118,6 +118,7 @@ gas_distribution_grid _cost_factor,,,Multiplier for the investment cost of the g
|
|||||||
,,,
|
,,,
|
||||||
biomass_spatial,--,"{true, false}",Add option for resolving biomass demand regionally
|
biomass_spatial,--,"{true, false}",Add option for resolving biomass demand regionally
|
||||||
biomass_transport,--,"{true, false}",Add option for transporting solid biomass between nodes
|
biomass_transport,--,"{true, false}",Add option for transporting solid biomass between nodes
|
||||||
|
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
|
||||||
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
|
||||||
|
|
@ -48,6 +48,8 @@ Upcoming Release
|
|||||||
|
|
||||||
* The ``mock_snakemake`` function can now be used with a Snakefile from a different directory using the new ``root_dir`` argument.
|
* The ``mock_snakemake`` function can now be used with a Snakefile from a different directory using the new ``root_dir`` argument.
|
||||||
|
|
||||||
|
* Add option to capture CO2 contained in biogas when upgrading (``sector: biogas_to_gas_cc``).
|
||||||
|
|
||||||
* Merged option to extend geographical scope to Ukraine and Moldova. These
|
* Merged option to extend geographical scope to Ukraine and Moldova. These
|
||||||
countries are excluded by default and is currently constrained to power-sector
|
countries are excluded by default and is currently constrained to power-sector
|
||||||
only parts of the workflow. A special config file
|
only parts of the workflow. A special config file
|
||||||
|
@ -95,12 +95,14 @@ def define_spatial(nodes, options):
|
|||||||
spatial.gas.industry = nodes + " gas for industry"
|
spatial.gas.industry = nodes + " gas for industry"
|
||||||
spatial.gas.industry_cc = nodes + " gas for industry CC"
|
spatial.gas.industry_cc = nodes + " gas for industry CC"
|
||||||
spatial.gas.biogas_to_gas = nodes + " biogas to gas"
|
spatial.gas.biogas_to_gas = nodes + " biogas to gas"
|
||||||
|
spatial.gas.biogas_to_gas_cc = nodes + "biogas to gas CC"
|
||||||
else:
|
else:
|
||||||
spatial.gas.nodes = ["EU gas"]
|
spatial.gas.nodes = ["EU gas"]
|
||||||
spatial.gas.locations = ["EU"]
|
spatial.gas.locations = ["EU"]
|
||||||
spatial.gas.biogas = ["EU biogas"]
|
spatial.gas.biogas = ["EU biogas"]
|
||||||
spatial.gas.industry = ["gas for industry"]
|
spatial.gas.industry = ["gas for industry"]
|
||||||
spatial.gas.biogas_to_gas = ["EU biogas to gas"]
|
spatial.gas.biogas_to_gas = ["EU biogas to gas"]
|
||||||
|
spatial.gas.biogas_to_gas_cc = ["EU biogas to gas CC"]
|
||||||
if options.get("co2_spatial", options["co2network"]):
|
if options.get("co2_spatial", options["co2network"]):
|
||||||
spatial.gas.industry_cc = nodes + " gas for industry CC"
|
spatial.gas.industry_cc = nodes + " gas for industry CC"
|
||||||
else:
|
else:
|
||||||
@ -2170,12 +2172,42 @@ def add_biomass(n, costs):
|
|||||||
bus1=spatial.gas.nodes,
|
bus1=spatial.gas.nodes,
|
||||||
bus2="co2 atmosphere",
|
bus2="co2 atmosphere",
|
||||||
carrier="biogas to gas",
|
carrier="biogas to gas",
|
||||||
capital_cost=costs.at["biogas upgrading", "fixed"],
|
capital_cost=costs.at["biogas", "fixed"]
|
||||||
|
+ costs.at["biogas upgrading", "fixed"],
|
||||||
marginal_cost=costs.at["biogas upgrading", "VOM"],
|
marginal_cost=costs.at["biogas upgrading", "VOM"],
|
||||||
|
efficiency=costs.at["biogas", "efficiency"],
|
||||||
efficiency2=-costs.at["gas", "CO2 intensity"],
|
efficiency2=-costs.at["gas", "CO2 intensity"],
|
||||||
p_nom_extendable=True,
|
p_nom_extendable=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if options.get("biogas_upgrading_cc"):
|
||||||
|
# Assuming for costs that the CO2 from upgrading is pure, such as in amine scrubbing. I.e., with and without CC is
|
||||||
|
# equivalent. Adding biomass CHP capture because biogas is often small-scale and decentral so further
|
||||||
|
# from e.g. CO2 grid or buyers. This is a proxy for the added cost for e.g. a raw biogas pipeline to a central upgrading facility
|
||||||
|
|
||||||
|
n.madd(
|
||||||
|
"Link",
|
||||||
|
spatial.gas.biogas_to_gas_cc,
|
||||||
|
bus0=spatial.gas.biogas,
|
||||||
|
bus1=spatial.gas.nodes,
|
||||||
|
bus2="co2 stored",
|
||||||
|
bus3="co2 atmosphere",
|
||||||
|
carrier="biogas to gas CC",
|
||||||
|
capital_cost=costs.at["biogas CC", "fixed"]
|
||||||
|
+ costs.at["biogas upgrading", "fixed"]
|
||||||
|
+ costs.at["biomass CHP capture", "fixed"]
|
||||||
|
* costs.at["biogas CC", "CO2 stored"],
|
||||||
|
marginal_cost=costs.at["biogas CC", "VOM"]
|
||||||
|
+ costs.at["biogas upgrading", "VOM"],
|
||||||
|
efficiency=costs.at["biogas CC", "efficiency"],
|
||||||
|
efficiency2=costs.at["biogas CC", "CO2 stored"]
|
||||||
|
* costs.at["biogas CC", "capture rate"],
|
||||||
|
efficiency3=-costs.at["gas", "CO2 intensity"]
|
||||||
|
- costs.at["biogas CC", "CO2 stored"]
|
||||||
|
* costs.at["biogas CC", "capture rate"],
|
||||||
|
p_nom_extendable=True,
|
||||||
|
)
|
||||||
|
|
||||||
if options["biomass_transport"]:
|
if options["biomass_transport"]:
|
||||||
# add biomass transport
|
# add biomass transport
|
||||||
transport_costs = pd.read_csv(
|
transport_costs = pd.read_csv(
|
||||||
|
Loading…
Reference in New Issue
Block a user