From d3655e48608d55aa38bfcf5b78c0e8827b66d9d1 Mon Sep 17 00:00:00 2001 From: JulianGeis Date: Wed, 4 Dec 2024 14:13:00 +0100 Subject: [PATCH 1/7] implement delay years for Offhsore NEP --- config/config.yaml | 1 + config/scenarios.manual.yaml | 11 ++++++++++- workflow/scripts/modify_prenetwork.py | 5 +++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/config/config.yaml b/config/config.yaml index dabf8169..85b07acc 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -673,6 +673,7 @@ onshore_nep_force: offshore_nep_force: cutin_year: 2025 cutout_year: 2030 + delay_years: 0 scale_capacity: 2020: diff --git a/config/scenarios.manual.yaml b/config/scenarios.manual.yaml index dab11075..5871c157 100644 --- a/config/scenarios.manual.yaml +++ b/config/scenarios.manual.yaml @@ -113,7 +113,11 @@ CurrentPolicies: sector: district_heating: potential: 0.1 - + + offshore_nep_force: + cutin_year: 2025 + cutout_year: 2030 + delay_years: 0 KN2045_Bal_v4: @@ -689,3 +693,8 @@ KN2045minus_SupplyFocus: steam_biomass_fraction: 0.4 steam_hydrogen_fraction: 0.3 steam_electricity_fraction: 0.3 + + offshore_nep_force: + cutin_year: 2025 + cutout_year: 2030 + delay_years: 0 diff --git a/workflow/scripts/modify_prenetwork.py b/workflow/scripts/modify_prenetwork.py index f5dc4009..5dc69007 100644 --- a/workflow/scripts/modify_prenetwork.py +++ b/workflow/scripts/modify_prenetwork.py @@ -1055,6 +1055,11 @@ def force_connection_nep_offshore(n, current_year): # Load shapes and projects offshore = pd.read_csv(snakemake.input.offshore_connection_points, index_col=0) + if int(snakemake.params.offshore_nep_force["delay_years"]) != 0: + # Modify 'Inbetriebnahmejahr' by adding the delay years for rows where 'Inbetriebnahmejahr' > 2025 + offshore.loc[offshore["Inbetriebnahmejahr"] > 2025, "Inbetriebnahmejahr"] += int(snakemake.params.offshore_nep_force["delay_years"]) + logger.info(f"Delaying NEP offshore connection points by {snakemake.params.offshore_nep_force['delay_years']} years.") + goffshore = gpd.GeoDataFrame( offshore, geometry=gpd.points_from_xy(offshore.lon, offshore.lat), From 028d628c761603270f8b0b8e200661a783e0d4f5 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 4 Dec 2024 13:13:52 +0000 Subject: [PATCH 2/7] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- config/scenarios.manual.yaml | 2 +- workflow/scripts/modify_prenetwork.py | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/config/scenarios.manual.yaml b/config/scenarios.manual.yaml index 5871c157..52a2ad8a 100644 --- a/config/scenarios.manual.yaml +++ b/config/scenarios.manual.yaml @@ -113,7 +113,7 @@ CurrentPolicies: sector: district_heating: potential: 0.1 - + offshore_nep_force: cutin_year: 2025 cutout_year: 2030 diff --git a/workflow/scripts/modify_prenetwork.py b/workflow/scripts/modify_prenetwork.py index 5dc69007..45e3bb6b 100644 --- a/workflow/scripts/modify_prenetwork.py +++ b/workflow/scripts/modify_prenetwork.py @@ -1057,8 +1057,12 @@ def force_connection_nep_offshore(n, current_year): if int(snakemake.params.offshore_nep_force["delay_years"]) != 0: # Modify 'Inbetriebnahmejahr' by adding the delay years for rows where 'Inbetriebnahmejahr' > 2025 - offshore.loc[offshore["Inbetriebnahmejahr"] > 2025, "Inbetriebnahmejahr"] += int(snakemake.params.offshore_nep_force["delay_years"]) - logger.info(f"Delaying NEP offshore connection points by {snakemake.params.offshore_nep_force['delay_years']} years.") + offshore.loc[ + offshore["Inbetriebnahmejahr"] > 2025, "Inbetriebnahmejahr" + ] += int(snakemake.params.offshore_nep_force["delay_years"]) + logger.info( + f"Delaying NEP offshore connection points by {snakemake.params.offshore_nep_force['delay_years']} years." + ) goffshore = gpd.GeoDataFrame( offshore, From 7cb279920d0c3691a95b4dc906baa69a32c303da Mon Sep 17 00:00:00 2001 From: JulianGeis Date: Wed, 4 Dec 2024 14:18:48 +0100 Subject: [PATCH 3/7] add note to changelog and correct delay years in manual config. --- Changelog.md | 1 + config/scenarios.manual.yaml | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Changelog.md b/Changelog.md index 3c0615fa..3dae4e93 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,4 +1,5 @@ # Changelog +- add option for Offhsore NEP to delay projects by x years (CurPol and KN2045minus_WorstCase are delayed by one year) - Restricting the maximum capacity of CurrentPolicies and minus scenarios to the 'uba Projektionsbericht' - Restricting Fischer Tropsch capacity addition with config[solving][limit_DE_FT_cap] - Except for Current Policies force a minimum of 5 GW of electrolysis capacity in Germany diff --git a/config/scenarios.manual.yaml b/config/scenarios.manual.yaml index 52a2ad8a..939c5dc1 100644 --- a/config/scenarios.manual.yaml +++ b/config/scenarios.manual.yaml @@ -117,7 +117,7 @@ CurrentPolicies: offshore_nep_force: cutin_year: 2025 cutout_year: 2030 - delay_years: 0 + delay_years: 1 KN2045_Bal_v4: @@ -697,4 +697,4 @@ KN2045minus_SupplyFocus: offshore_nep_force: cutin_year: 2025 cutout_year: 2030 - delay_years: 0 + delay_years: 1 From b394a469206c61a644a11c5d398a51765039a562 Mon Sep 17 00:00:00 2001 From: Michael Lindner Date: Wed, 4 Dec 2024 15:16:30 +0100 Subject: [PATCH 4/7] ensure projects are only delayed, not completly abandoned --- config/scenarios.manual.yaml | 34 ++++++++++++++++++++++----- workflow/scripts/modify_prenetwork.py | 6 +++++ 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/config/scenarios.manual.yaml b/config/scenarios.manual.yaml index 939c5dc1..10431972 100644 --- a/config/scenarios.manual.yaml +++ b/config/scenarios.manual.yaml @@ -39,8 +39,8 @@ CurrentPolicies: 2045: 86.5 offwind: DE: - 2030: 22.5 # 75 % Wind-auf-See Law - 2035: 22.5 + 2030: 17.3 + 2035: 29.3 2040: 22.5 2045: 22.5 solar: @@ -52,6 +52,14 @@ CurrentPolicies: # boundary condition of maximum volumes limits_capacity_max: Generator: + offwind: + DE: + 2020: 7.8 + 2025: 11.3 + 2030: 17.3 # 12 less than NEP, because of 1 year delay + 2035: 35 # 29.3 + a little extra + 2040: 70 + 2045: 70 onwind: DE: 2030: 94.5 # uba Projektionsbericht @@ -116,7 +124,7 @@ CurrentPolicies: offshore_nep_force: cutin_year: 2025 - cutout_year: 2030 + cutout_year: 2035 # Hackily reduced to 2030 if delay_years: 1 delay_years: 1 @@ -561,8 +569,8 @@ KN2045minus_WorstCase: 2045: 86.5 offwind: DE: - 2030: 22.5 # 75 % Wind-auf-See Law - 2035: 22.5 + 2030: 17.3 # 75 % Wind-auf-See Law + 2035: 29.3 2040: 22.5 2045: 22.5 solar: @@ -577,6 +585,14 @@ KN2045minus_WorstCase: 2030: 5 limits_capacity_max: Generator: + offwind: + DE: + 2020: 7.8 + 2025: 11.3 + 2030: 17.3 # 12 less than NEP, because of 1 year delay + 2035: 35 # 29.3 + a little extra + 2040: 70 + 2045: 70 onwind: DE: 2030: 94.5 # uba Projektionsbericht @@ -592,6 +608,12 @@ KN2045minus_WorstCase: district_heating: potential: 0.1 + offshore_nep_force: + cutin_year: 2025 + cutout_year: 2035 # Hackily reduced to 2030 if delay_years: 1 + delay_years: 1 + + KN2045minus_SupplyFocus: # Nachfrage genau so hoch wie in Szenario WorstCase # Ausbau EE und EE Importe jetzt aber auskömmlich @@ -697,4 +719,4 @@ KN2045minus_SupplyFocus: offshore_nep_force: cutin_year: 2025 cutout_year: 2030 - delay_years: 1 + delay_years: 0 diff --git a/workflow/scripts/modify_prenetwork.py b/workflow/scripts/modify_prenetwork.py index 45e3bb6b..22b195ca 100644 --- a/workflow/scripts/modify_prenetwork.py +++ b/workflow/scripts/modify_prenetwork.py @@ -1063,6 +1063,12 @@ def force_connection_nep_offshore(n, current_year): logger.info( f"Delaying NEP offshore connection points by {snakemake.params.offshore_nep_force['delay_years']} years." ) + # This is a hack s.t. for CurPol and WorstCase the 2030 projects are delayed to the 2035 period, but the later projects are ignored + offshore.loc[ + offshore["Inbetriebnahmejahr"] > 2031, "Inbetriebnahmejahr" + ] += 5 + logger.info("Delaying NEP offshore connection points after 2031 by another 5 years.") + goffshore = gpd.GeoDataFrame( offshore, From 2633179dc3116f5d46b4bc4aa08b0c29b4d69b68 Mon Sep 17 00:00:00 2001 From: Michael Lindner Date: Wed, 4 Dec 2024 15:23:08 +0100 Subject: [PATCH 5/7] remove redundant keys --- config/scenarios.manual.yaml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/config/scenarios.manual.yaml b/config/scenarios.manual.yaml index 10431972..af6941b5 100644 --- a/config/scenarios.manual.yaml +++ b/config/scenarios.manual.yaml @@ -716,7 +716,3 @@ KN2045minus_SupplyFocus: steam_hydrogen_fraction: 0.3 steam_electricity_fraction: 0.3 - offshore_nep_force: - cutin_year: 2025 - cutout_year: 2030 - delay_years: 0 From 501a12ac0f103608ed42ab9b58a4668ac1db8647 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 4 Dec 2024 14:29:50 +0000 Subject: [PATCH 6/7] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- config/scenarios.manual.yaml | 1 - workflow/scripts/modify_prenetwork.py | 9 ++++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/config/scenarios.manual.yaml b/config/scenarios.manual.yaml index af6941b5..649d0514 100644 --- a/config/scenarios.manual.yaml +++ b/config/scenarios.manual.yaml @@ -715,4 +715,3 @@ KN2045minus_SupplyFocus: steam_biomass_fraction: 0.4 steam_hydrogen_fraction: 0.3 steam_electricity_fraction: 0.3 - diff --git a/workflow/scripts/modify_prenetwork.py b/workflow/scripts/modify_prenetwork.py index 22b195ca..387d01a6 100644 --- a/workflow/scripts/modify_prenetwork.py +++ b/workflow/scripts/modify_prenetwork.py @@ -1064,11 +1064,10 @@ def force_connection_nep_offshore(n, current_year): f"Delaying NEP offshore connection points by {snakemake.params.offshore_nep_force['delay_years']} years." ) # This is a hack s.t. for CurPol and WorstCase the 2030 projects are delayed to the 2035 period, but the later projects are ignored - offshore.loc[ - offshore["Inbetriebnahmejahr"] > 2031, "Inbetriebnahmejahr" - ] += 5 - logger.info("Delaying NEP offshore connection points after 2031 by another 5 years.") - + offshore.loc[offshore["Inbetriebnahmejahr"] > 2031, "Inbetriebnahmejahr"] += 5 + logger.info( + "Delaying NEP offshore connection points after 2031 by another 5 years." + ) goffshore = gpd.GeoDataFrame( offshore, From 7335f5a2534ae506917146da8304b103bb6b878f Mon Sep 17 00:00:00 2001 From: Michael Lindner Date: Wed, 4 Dec 2024 16:25:07 +0100 Subject: [PATCH 7/7] consistent minimum limits --- config/scenarios.manual.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/config/scenarios.manual.yaml b/config/scenarios.manual.yaml index 649d0514..a2c1f948 100644 --- a/config/scenarios.manual.yaml +++ b/config/scenarios.manual.yaml @@ -41,8 +41,8 @@ CurrentPolicies: DE: 2030: 17.3 2035: 29.3 - 2040: 22.5 - 2045: 22.5 + 2040: 29.3 + 2045: 29.3 solar: DE: 2030: 161.25 # 75 % PV strategy @@ -571,8 +571,8 @@ KN2045minus_WorstCase: DE: 2030: 17.3 # 75 % Wind-auf-See Law 2035: 29.3 - 2040: 22.5 - 2045: 22.5 + 2040: 29.3 + 2045: 29.3 solar: DE: 2030: 161.25 # 75 % PV strategy