Skip to content

feat: introduce offshore wind hubs topology - #54

Merged
tgilon merged 181 commits into
masterfrom
feat/48-offshore-hubs
Jul 22, 2025
Merged

feat: introduce offshore wind hubs topology#54
tgilon merged 181 commits into
masterfrom
feat/48-offshore-hubs

Conversation

@tgilon

@tgilon tgilon commented May 27, 2025

Copy link
Copy Markdown
Member

Closes #48. This PR builds on top of #53.

Changes proposed in this Pull Request

This PR introduces the topology of offshore wind hubs. It reads in the Offshore Hub Modelling Inputs from the TYNDP 2024. The grid topology (buses coordinates and transmission capacities) is exogenously set using these data.

The following schematic illustrates an overview of the 2024 TYNDP Offshore Hub topology as implemented in this PR:
open-tyndp concepts - TYNDP Offshore topology

Tasks

  • Prepare reference grid data set
  • Add reference grid data to network model
  • Map onshore H2 nodes to Z2 nodes
  • Set economic lifetime to 25y
  • Ensure that the radial connections are made directly to the home land node
  • Implement TYNDP offshore technology modelling approach
  • Set existing capacities
  • Address DEOH002 discrepancy
  • Filter data for configured countries
  • Fix H2 efficiencies
  • Apply PECD capacity factors for offshore wind
  • Add a constraint for H2 / DC potentials
  • Add a constraint for zone potentials
  • Address final # ToDo in the code
  • Check new files licensing
  • Validate myopic approach for existing capacities
  • Address warnings
  • Add colors for the new carriers
  • Remove distribution from Offshore nodes
  • Solve infeasibilities
  • Create a fig for hubs only
  • Add expansion constraint
  • Account for time-varying efficiencies across planning horizons (add_brownfield and solve_network) (see details in feat: introduce time-varying efficiencies for offwind generators #68)

Workflow

  1. (new config) sector:offshore_hubs defines whether TYNDP offshore hubs must be added to the network.
  2. retrieve_tyndp_bundle retrieves the raw offshore buses (tyndp_2024_bundle/Offshore hubs/NODE.xlsx) and the reference grid data (tyndp_2024_bundle/Offshore hubs/GRID.xlsx).
  3. (new) build_tyndp_offshore_hubs processes the data to create a clean files that define the buses, the grid, the electrolyzers and the generators for the selected scenario and planning horizons.
  4. prepare_sector_network add the offshore buses and the reference grid to the network.
    • For each node, defines an H2 and AC bus using provided coordinates
    • Add H2 and DC grid connections between hubs, and between hubs and onshore nodes
    • Add power production and H2 production units
    • Add electrolyzers
  5. add_brownfield adjust offshore expansion by subtracting existing capacity from previous years from current year total capacity and potential
  6. solve_network introduce two constraints to enforce potentials as defined in input data
    • Add a constraint to limit the expansion of DC and H2 sitting on the same location, as the sum of the two capacities cannot exceed the layer potential
    • Add a constraint to set the maximum potential per zone, taking into account the zone trajectories
  7. (new) plot_base_offshore_network plot the electricity and hydrogen reference grid for each planning horizon.
  8. (new) plot_offshore_network plot the electricity and hydrogen expanded grid for each planning horizon.

Open Issues

  • Some nodes have coordinates that are placed on land. Offshore hubs coordinates are only used for plotting purposes, so this is not a major issue.
  • Cost assumptions are missing for parts of the reference grid. To address this, any link for which investment assumptions are missing will be considered non-extendable and zero costs.
  • No units have been specified for the cost assumptions: for CAPEX, we assume kEUR/MW, and for OPEX, assume kEUR/MW/a
    • n.links.capital_cost default unit is EUR/MW/period.
      • capital_cost = (annuity_factor * CAPEX + OPEX) * nyears
      • We use a 25y economic lifetime (not documented in the methodology but has been confirmed).
  • Formatting issues in the tables on p104 of Annex II of the Methodology report
  • The use and data of Offshore Hubs/GENERATORS.xlsx file is not documented. A detailed notebook has been necessary to validate assumptions.
    • Existing capacities will be read from the LAYER_POTENTIAL sheet, utilizing technology shares specified in EXISTING for hydrogen-generating capacities. A discrepancy of 526 MW for DEOH002 in 2045 (across all scenarios) is noted when comparing existing capacities with ZONE_POTENTIAL. It remains uncertain which of the two values is correct: 5828.55 MW from LAYER_POTENTIAL or 6354.55 MW from ZONE_POTENTIAL. Currently, the value of 5828.55 MW is used. Additionally, the existing capacity of 3768.25 MW in 2040 exceeds the potential of 3242.25MW shown in the LAYER_POTENTIAL sheet. This value has been adjusted to match the maximum potential value across all scenarios.
    • Potentials will be obtained from both the LAYER_POTENTIAL and the ZONE_POTENTIAL sheets. LAYER_POTENTIAL will establish a technology level constraint, while ZONE_POTENTIAL will restrict expansion across all technologies at each node. The same 526 MW discrepancy for DEOH002 in 2045 and 2050 (across all planning horizons and scenarios) has been noted and needs to be addressed to ensure that existing capacities do not exceed their potential. Currently, the value ZONE_POTENTIAL value is corrected at 5828.55 MW.
  • Why does GRID.xlsx contain both capex and opex figures for electricity and hydrogen grid connecting radial nodes to home nodes in both IT and UK? The model currently excludes these candidates since radial assets connect directly to their corresponding home market nodes.
  • How are "radial" electrolyzers modeled? Currently, the model assumes these units connect the electricity market node to the corresponding H2 Z2 node.
  • The electrical topology obtained from the data differs slightly from the graphical representation in the Methodology report (section 8.1, p46). Specifically, the methodology figure omits the link between BEOH001 and DKWOH01, which is present in the dataset. The dataset is assumed to be more accurate where discrepancies exist between data and documentation.

Notes

The offshore hubs and radial nodes coordinates are presented here below. The radial nodes coordinates are not used as home market coordinates are preferred.

Offshore hubs coordinates
Offshore hubs coordinates

Radial nodes coordinates
Radial nodes coordinates

The 2050 offshore electricity and hydrogen reference grids are presented here below.

Electricity reference grid 2050
Electricity reference grid 2050

Hydrogen reference grid 2050
Hydrogen reference grid 2050

The expanded 2050 offshore electricity and hydrogen grids are presented here below. These graphs are presented to demonstrate the feature, and they do not reflect TYNDP 2024 results.

Expanded 2050 electricity grid
Expanded 2050 electricity grid

Expanded 2050 hydrogen grid
Expanded 2050 hydrogen grid

The comparison between the offshore network topology and the Methodology report (section 8.1, p46) remains relevant. The two topologies are identical, except for the link between BEOH001 and DKWOH01.

TYNDP 2024 topology
TYNDP 2024 topology

Topology suggested in the PR
Topology suggested in the PR

Checklist

  • I tested my contribution locally and it works as intended.
  • Code and workflow changes are sufficiently documented.
  • Changed dependencies are added to envs/environment.yaml.
  • Changes in configuration options are added in config/config.default.yaml.
  • Changes in configuration options are documented in doc/configtables/*.csv.
  • Changes in configuration options are added in config/test/*.yaml.
  • Sources of newly added data are documented in doc/data_sources.rst.
  • A release note doc/release_notes.rst is added.

@tgilon tgilon added this to the Release v0.2 milestone May 27, 2025
@tgilon tgilon self-assigned this May 27, 2025
@tgilon tgilon linked an issue May 27, 2025 that may be closed by this pull request

@coroa coroa left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Soo, i finally made it through. Let's schedule a meeting (tomorrow?) to discuss the remaining todos and what to do about those efficiencies?

I agree it looks mostly robust.

Comment thread Snakefile Outdated
Comment thread rules/solve_myopic.smk Outdated
Comment thread scripts/_helpers.py
Comment thread scripts/build_tyndp_offshore_hubs.py Outdated
Comment thread scripts/build_tyndp_offshore_hubs.py
Comment thread rules/solve_electricity.smk Outdated
Comment thread rules/solve_overnight.smk Outdated
Comment thread rules/solve_perfect.smk Outdated
Comment thread scripts/prepare_sector_network.py Outdated
Comment thread scripts/prepare_sector_network.py
@tgilon

tgilon commented Jul 18, 2025

Copy link
Copy Markdown
Member Author

@coroa @daniel-rdt I've addressed the todos. Below is a summary of the changes:

  • Updated carrier naming to distinguish offshore hubs from other components
  • Fixed max_capacity condition to apply only to inter-hubs connections
  • Added plotting threshold parameter to plot_offshore_network
  • Fixed other minors issues (see commits)

@coroa coroa left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two small points, rest looks fine

Comment thread Snakefile Outdated
Comment thread rules/build_sector.smk Outdated
@coroa

coroa commented Jul 18, 2025

Copy link
Copy Markdown
Member

Feel free to merge once they are addressed

tgilon added 5 commits July 18, 2025 17:49
* feat: introduce time-varying efficiencies for offwind generators

* feat: use fixed 2020 efficiency values to prevent solver infeasibility

* refactor: rename efficiency to efficiency_dc_to_b0 for offshore generators
Comment thread scripts/add_brownfield.py Outdated
@tgilon tgilon mentioned this pull request Jul 22, 2025
9 tasks
@tgilon tgilon added the major feature Major feature for the Open TYNDP. label Jul 22, 2025
@read-the-docs-community

Copy link
Copy Markdown

Documentation build overview

📚 open-tyndp | 🛠️ build #28942239 (a6eb875) | 🔍 preview

Files changed

Comparing with latest (a92a0f2...a6eb875)

Show files (6) | 6 modified | 0 added | 0 deleted
File Status
configuration.html 📝 modified
index.html 📝 modified
installation.html 📝 modified
introduction.html 📝 modified
release_notes.html 📝 modified
tutorial.html 📝 modified

@tgilon
tgilon merged commit d34afb8 into master Jul 22, 2025
5 checks passed
@tgilon
tgilon deleted the feat/48-offshore-hubs branch July 22, 2025 18:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

major feature Major feature for the Open TYNDP.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Implementation of offshore wind hubs

3 participants