allow H2 retrofitting from CH4 pipelines without endogenous CH4 grid (#204)
* allow H2 retrofitting from CH4 pipelines without endogenous CH4 grid * add small capital cost to gas pipelines to incentivise decommissioning * add release notes
This commit is contained in:
parent
a7fd4901c1
commit
a2459881ef
@ -101,7 +101,7 @@ rule build_simplified_population_layouts:
|
||||
script: "scripts/build_clustered_population_layouts.py"
|
||||
|
||||
|
||||
if config["sector"]["gas_network"]:
|
||||
if config["sector"]["gas_network"] or config["sector"]["H2_retrofit"]:
|
||||
|
||||
datafiles = [
|
||||
"IGGIELGN_LNGs.geojson",
|
||||
|
@ -256,7 +256,7 @@ sector:
|
||||
# https://gasforclimate2050.eu/wp-content/uploads/2020/07/2020_European-Hydrogen-Backbone_Report.pdf
|
||||
# 60% of original natural gas capacity could be used in cost-optimal case as H2 capacity
|
||||
H2_retrofit_capacity_per_CH4: 0.6 # ratio for H2 capacity per original CH4 capacity of retrofitted pipelines
|
||||
gas_network_connectivity_upgrade: 3 # https://networkx.org/documentation/stable/reference/algorithms/generated/networkx.algorithms.connectivity.edge_augmentation.k_edge_augmentation.html#networkx.algorithms.connectivity.edge_augmentation.k_edge_augmentation
|
||||
gas_network_connectivity_upgrade: 1 # https://networkx.org/documentation/stable/reference/algorithms/generated/networkx.algorithms.connectivity.edge_augmentation.k_edge_augmentation.html#networkx.algorithms.connectivity.edge_augmentation.k_edge_augmentation
|
||||
gas_distribution_grid: true
|
||||
gas_distribution_grid_cost_factor: 1.0 #multiplies cost in data/costs.csv
|
||||
biomass_transport: false # biomass transport between nodes
|
||||
|
@ -41,13 +41,14 @@ incorporates retrofitting options to hydrogen.
|
||||
the gas network is activated, all the gas demands are regionally disaggregated
|
||||
as well.
|
||||
|
||||
* New constraint allows retrofitting of gas pipelines to hydrogen pipelines.
|
||||
* New constraint allows endogenous retrofitting of gas pipelines to hydrogen pipelines.
|
||||
This option is activated via the setting ``sector: H2_retrofit:``. For every
|
||||
unit of gas pipeline capacity dismantled, ``sector:
|
||||
H2_retrofit_capacity_per_CH4`` units are made available as hydrogen pipeline
|
||||
capacity in the corresponding corridor. These repurposed hydrogen pipelines
|
||||
have lower costs than new hydrogen pipelines. Both new and repurposed pipelines
|
||||
can be built simultaneously.
|
||||
can be built simultaneously. The retrofitting option ``sector: H2_retrofit:`` also works
|
||||
with a copperplated methane infrastructure, i.e. when ``sector: gas_network: false``.
|
||||
|
||||
* New hydrogen pipelines can now be built where there are already power or gas
|
||||
transmission routes. Previously, only the electricity transmission routes were
|
||||
|
@ -1078,17 +1078,20 @@ def add_storage_and_grids(n, costs):
|
||||
capital_cost=h2_capital_cost
|
||||
)
|
||||
|
||||
if options["gas_network"]:
|
||||
|
||||
logger.info("Add gas network")
|
||||
if options["gas_network"] or options["H2_retrofit"]:
|
||||
|
||||
fn = snakemake.input.clustered_gas_network
|
||||
gas_pipes = pd.read_csv(fn, index_col=0)
|
||||
|
||||
if options["gas_network"]:
|
||||
|
||||
logger.info("Add gas infrastructure, incl. LNG terminals, production and entry-points.")
|
||||
|
||||
if options["H2_retrofit"]:
|
||||
gas_pipes["p_nom_max"] = gas_pipes.p_nom
|
||||
gas_pipes["p_nom_min"] = 0.
|
||||
gas_pipes["capital_cost"] = 0.
|
||||
# 0.1 EUR/MWkm/a to prefer decommissioning to address degeneracy
|
||||
gas_pipes["capital_cost"] = 0.1 * gas_pipes.length
|
||||
else:
|
||||
gas_pipes["p_nom_max"] = np.inf
|
||||
gas_pipes["p_nom_min"] = gas_pipes.p_nom
|
||||
@ -1163,13 +1166,13 @@ def add_storage_and_grids(n, costs):
|
||||
lifetime=costs.at['CH4 (g) pipeline', 'lifetime']
|
||||
)
|
||||
|
||||
# retroftting existing CH4 pipes to H2 pipes
|
||||
if options["gas_network"] and options["H2_retrofit"]:
|
||||
if options["H2_retrofit"]:
|
||||
|
||||
gas_pipe_i = n.links[n.links.carrier == "gas pipeline"].index
|
||||
n.links.loc[gas_pipe_i, "p_nom_extendable"] = True
|
||||
h2_pipes = gas_pipes.rename(index=lambda x:
|
||||
x.replace("gas pipeline", "H2 pipeline retrofitted"))
|
||||
logger.info("Add retrofitting options of existing CH4 pipes to H2 pipes.")
|
||||
|
||||
fr = "gas pipeline"
|
||||
to = "H2 pipeline retrofitted"
|
||||
h2_pipes = gas_pipes.rename(index=lambda x: x.replace(fr, to))
|
||||
|
||||
n.madd("Link",
|
||||
h2_pipes.index,
|
||||
@ -1187,6 +1190,8 @@ def add_storage_and_grids(n, costs):
|
||||
|
||||
if options.get("H2_network", True):
|
||||
|
||||
logger.info("Add options for new hydrogen pipelines.")
|
||||
|
||||
h2_pipes = create_network_topology(n, "H2 pipeline ", carriers=["DC", "gas pipeline"])
|
||||
|
||||
# TODO Add efficiency losses
|
||||
|
@ -200,8 +200,10 @@ def add_pipe_retrofit_constraint(n):
|
||||
|
||||
CH4_per_H2 = 1 / n.config["sector"]["H2_retrofit_capacity_per_CH4"]
|
||||
|
||||
fr = "H2 pipeline retrofitted"
|
||||
to = "gas pipeline"
|
||||
lhs = linexpr(
|
||||
(CH4_per_H2, link_p_nom.loc[h2_retrofitted_i].rename(index=lambda x: x.replace("H2 pipeline retrofitted", "gas pipeline"))),
|
||||
(CH4_per_H2, link_p_nom.loc[h2_retrofitted_i].rename(index=lambda x: x.replace(fr, to))),
|
||||
(1, link_p_nom.loc[gas_pipes_i])
|
||||
)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user