Lifetime of Gas Pipelines (#1162)

* inf lifetime of gas pipelines avoids adding new links each planning horizon

* p_nom_extendable for existing gas pipelines is set false if retrofitting to H2 is not allowed

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
This commit is contained in:
Toni Seibold 2024-07-29 09:47:08 +02:00 committed by GitHub
parent 9b7831974f
commit 23ea16dc14
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 4 additions and 10 deletions

View File

@ -89,10 +89,6 @@ def add_brownfield(n, n_p, year):
# deal with gas network # deal with gas network
pipe_carrier = ["gas pipeline"] pipe_carrier = ["gas pipeline"]
if snakemake.params.H2_retrofit: if snakemake.params.H2_retrofit:
# drop capacities of previous year to avoid duplicating
to_drop = n.links.carrier.isin(pipe_carrier) & (n.links.build_year != year)
n.mremove("Link", n.links.loc[to_drop].index)
# subtract the already retrofitted from today's gas grid capacity # subtract the already retrofitted from today's gas grid capacity
h2_retrofitted_fixed_i = n.links[ h2_retrofitted_fixed_i = n.links[
(n.links.carrier == "H2 pipeline retrofitted") (n.links.carrier == "H2 pipeline retrofitted")
@ -115,10 +111,6 @@ def add_brownfield(n, n_p, year):
index=pipe_capacity.index index=pipe_capacity.index
).fillna(0) ).fillna(0)
n.links.loc[gas_pipes_i, "p_nom"] = remaining_capacity n.links.loc[gas_pipes_i, "p_nom"] = remaining_capacity
else:
new_pipes = n.links.carrier.isin(pipe_carrier) & (n.links.build_year == year)
n.links.loc[new_pipes, "p_nom"] = 0.0
n.links.loc[new_pipes, "p_nom_min"] = 0.0
def disable_grid_expansion_if_limit_hit(n): def disable_grid_expansion_if_limit_hit(n):

View File

@ -1238,12 +1238,14 @@ def add_storage_and_grids(n, costs):
gas_pipes["p_nom_min"] = 0.0 gas_pipes["p_nom_min"] = 0.0
# 0.1 EUR/MWkm/a to prefer decommissioning to address degeneracy # 0.1 EUR/MWkm/a to prefer decommissioning to address degeneracy
gas_pipes["capital_cost"] = 0.1 * gas_pipes.length gas_pipes["capital_cost"] = 0.1 * gas_pipes.length
gas_pipes["p_nom_extendable"] = True
else: else:
gas_pipes["p_nom_max"] = np.inf gas_pipes["p_nom_max"] = np.inf
gas_pipes["p_nom_min"] = gas_pipes.p_nom gas_pipes["p_nom_min"] = gas_pipes.p_nom
gas_pipes["capital_cost"] = ( gas_pipes["capital_cost"] = (
gas_pipes.length * costs.at["CH4 (g) pipeline", "fixed"] gas_pipes.length * costs.at["CH4 (g) pipeline", "fixed"]
) )
gas_pipes["p_nom_extendable"] = False
n.madd( n.madd(
"Link", "Link",
@ -1252,14 +1254,14 @@ def add_storage_and_grids(n, costs):
bus1=gas_pipes.bus1 + " gas", bus1=gas_pipes.bus1 + " gas",
p_min_pu=gas_pipes.p_min_pu, p_min_pu=gas_pipes.p_min_pu,
p_nom=gas_pipes.p_nom, p_nom=gas_pipes.p_nom,
p_nom_extendable=True, p_nom_extendable=gas_pipes.p_nom_extendable,
p_nom_max=gas_pipes.p_nom_max, p_nom_max=gas_pipes.p_nom_max,
p_nom_min=gas_pipes.p_nom_min, p_nom_min=gas_pipes.p_nom_min,
length=gas_pipes.length, length=gas_pipes.length,
capital_cost=gas_pipes.capital_cost, capital_cost=gas_pipes.capital_cost,
tags=gas_pipes.name, tags=gas_pipes.name,
carrier="gas pipeline", carrier="gas pipeline",
lifetime=costs.at["CH4 (g) pipeline", "lifetime"], lifetime=np.inf,
) )
# remove fossil generators where there is neither # remove fossil generators where there is neither