Hydrodynamic models are everywhere in climate science, coastal engineering, and flood risk assessment. But how do you know if a model is actually right? That's the question I spent my internship at Deltares working on - building a systematic validation framework for Delft3D Flexible Mesh (FM) ocean models.

What Deltares Does

Deltares is a Dutch applied research institute specialising in water, subsurface, and infrastructure. Their Delft3D suite is one of the most widely used hydrodynamic modelling frameworks in the world - used for everything from flood forecasting to offshore engineering design. The FM variant handles flexible, unstructured grids that can represent complex coastal geometries much better than older rectangular grid models.

The Validation Problem

A model validation framework needs to answer a deceptively simple question: how well does the model reproduce reality? In practice, this requires collecting in situ observations (tide gauge data, current meter records, CTD casts), defining appropriate skill metrics, aligning temporal and spatial scales between model output and observations, and automating the whole process so it can run across multiple model runs and time periods.

The hardest part of model validation isn't the statistics - it's the data engineering. Getting observations and model output to speak the same language is where most of the work lives.

Technical Stack

The entire framework was built in Python - primarily xarray for handling NetCDF model output, pandas for observation time series, and matplotlib/cartopy for spatial visualisation. The most challenging part was handling the spatial interpolation needed to compare model output at grid cell centres with point observations from buoys and tide gauges.

  • xarray + scipy.interpolate for spatial matching between model grids and in situ locations
  • Taylor diagrams for visualising model skill across multiple stations simultaneously
  • Automated HTML report generation for routine model runs

What I Took Away

Beyond the technical skills, the internship showed me how scientific software is developed in a large applied research organisation - the importance of reproducibility, documentation, and building tools that other scientists can actually use without reading 200 lines of your undocumented code first.