Fix plotting of retrofitted hydrogen pipelines with pathway optimisation.

This commit is contained in:
Fabian Neumann 2024-02-16 16:41:21 +01:00
parent f59ede8af4
commit 7f1ff0c324
2 changed files with 16 additions and 11 deletions

View File

@ -19,6 +19,8 @@ Upcoming Release
today to tomorrow's energy consumption is set with the ``industry: today to tomorrow's energy consumption is set with the ``industry:
sector_ratios_fraction_future:`` parameter. sector_ratios_fraction_future:`` parameter.
* Fix plotting of retrofitted hydrogen pipelines with pathway optimisation.
* Bugfix: Correct units of subtracted chlorine and methanol demand in * Bugfix: Correct units of subtracted chlorine and methanol demand in
:mod:`build_industry_sector_ratios`. :mod:`build_industry_sector_ratios`.

View File

@ -24,6 +24,7 @@ def group_pipes(df, drop_direction=False):
""" """
Group pipes which connect same buses and return overall capacity. Group pipes which connect same buses and return overall capacity.
""" """
df = df.copy()
if drop_direction: if drop_direction:
positive_order = df.bus0 < df.bus1 positive_order = df.bus0 < df.bus1
df_p = df[positive_order] df_p = df[positive_order]
@ -32,12 +33,13 @@ def group_pipes(df, drop_direction=False):
df = pd.concat([df_p, df_n]) df = pd.concat([df_p, df_n])
# there are pipes for each investment period rename to AC buses name for plotting # there are pipes for each investment period rename to AC buses name for plotting
df["index_orig"] = df.index
df.index = df.apply( df.index = df.apply(
lambda x: f"H2 pipeline {x.bus0.replace(' H2', '')} -> {x.bus1.replace(' H2', '')}", lambda x: f"H2 pipeline {x.bus0.replace(' H2', '')} -> {x.bus1.replace(' H2', '')}",
axis=1, axis=1,
) )
return df.groupby(level=0).agg( return df.groupby(level=0).agg(
{"p_nom_opt": "sum", "bus0": "first", "bus1": "first"} {"p_nom_opt": "sum", "bus0": "first", "bus1": "first", "index_orig": "first"}
) )
@ -95,17 +97,18 @@ def plot_h2_map(n, regions):
) )
if not h2_retro.empty: if not h2_retro.empty:
positive_order = h2_retro.bus0 < h2_retro.bus1 if snakemake.params.foresight != "myopic":
h2_retro_p = h2_retro[positive_order] positive_order = h2_retro.bus0 < h2_retro.bus1
swap_buses = {"bus0": "bus1", "bus1": "bus0"} h2_retro_p = h2_retro[positive_order]
h2_retro_n = h2_retro[~positive_order].rename(columns=swap_buses) swap_buses = {"bus0": "bus1", "bus1": "bus0"}
h2_retro = pd.concat([h2_retro_p, h2_retro_n]) h2_retro_n = h2_retro[~positive_order].rename(columns=swap_buses)
h2_retro = pd.concat([h2_retro_p, h2_retro_n])
h2_retro["index_orig"] = h2_retro.index h2_retro["index_orig"] = h2_retro.index
h2_retro.index = h2_retro.apply( h2_retro.index = h2_retro.apply(
lambda x: f"H2 pipeline {x.bus0.replace(' H2', '')} -> {x.bus1.replace(' H2', '')}", lambda x: f"H2 pipeline {x.bus0.replace(' H2', '')} -> {x.bus1.replace(' H2', '')}",
axis=1, axis=1,
) )
retro_w_new_i = h2_retro.index.intersection(h2_new.index) retro_w_new_i = h2_retro.index.intersection(h2_new.index)
h2_retro_w_new = h2_retro.loc[retro_w_new_i] h2_retro_w_new = h2_retro.loc[retro_w_new_i]