Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Ingested from Thomas’s “Compound flood modelling report” (Resilient Hydrotwin, WP4 — “Integration of Hydro Models with Digital Twin for Improved Decision-Making”), 2026-07. This is the methodology and data behind the Rotterdam SFINCS setup in WP4/delftsfincs-rotterdam/ — read it alongside Raster & Scenario Data Layout (how outputs are served) and Schema Reconnaissance (Phase 0) (how the platform’s database represents scenarios/interventions today).

Context

Rotterdam is simultaneously exposed to pluvial (rainfall), fluvial (river discharge), and coastal (storm surge) flooding. Traditional modelling assesses these separately; this work package models them as compound events — multiple hazards occurring together — using SFINCS. The pilot domain runs from the Tweede Maasvlakte (North Sea coast) to Rotterdam’s eastern boundary, covering port infrastructure, residential areas, and the North Sea–to–inland-river hydraulic system.

The SFINCS model

SFINCS (Super-Fast INundation of CoastS, Deltares) solves the Local Inertial Equations — a simplified form of the shallow water equations — combined with a subgrid scheme (Leijnse et al., 2021), giving 35–1700× speedup over full hydrodynamic models at ~5–14 cm accuracy on hurricane test cases (van Ormondt et al., 2025). Valid for subcritical flow (Froude < 0.5); optimized for inundation and compound flooding, not for supercritical/transcritical regimes.

Model inputs and their provenance

This is the authoritative source for the DEM/data provenance question raised in RHT-96 / RHT-98:

InputSourceResolutionVintage
Base DEMAHN5 (Actueel Hoogtebestand Nederland)0.25 m²
Inland bathymetryRijkswaterstaat1 m × 1 mmeasured November 2025
North Sea bathymetryRijkswaterstaat, via Nationaal Georegister~14 m × 14 mversion August 2024
Harbor bathymetryunknown — filled with default−10 mNAP default, gaps nearest-neighbour interpolated
Land use / roughnessSTOWA Waterschadeschatter → Manning’s n via NLCD mapping (HEC-RAS methodology, HEC 2024)n = 0.025 (open water) to 0.75 (built infrastructure)
Dike trajectoriesWaterveiligheidsportaal (Water Safety Portal)levee heights taken from the DEM

Model grid: 25 m calculation grid, 0.5 m subgrid, EPSG:28992 (Amersfoort / RD New), built via HydroMT-SFINCS. This matches model_subgrid_builder/sfincs.inp exactly (dx=dy=25, epsg=28992).

Forcing scenarios

Three hazard types, evaluated individually and in compound combinations:

Because 1/250-yr and 1/300-yr return periods showed inconsistencies across hazard components, a unified 1/300-year return period was assumed for precipitation, storm surge, and fluvial discharge together.

The 1/100-yr values (used throughout the delivered pipeline, e.g. 6_IRP_100_years) come from a two-point Gumbel fit anchored on the 1/10-yr and 1/300-yr values, with uncertainty propagated via 10,000-sample Monte Carlo across 5 independent sources (surge uncertainty at both anchor points, discharge uncertainty and scaling, GEV shape parameter). Resulting nominal 1/100-yr estimates: 3.64 m MSL storm surge, 4886 m³/s at Brienenoord, 3789 m³/s at Puttershoek — these are the exact values hard-coded in WP4/delftsfincs-rotterdam/6_superimpose_boundaryconditions.py (TARGET_WATER_LEVEL_PEAK_M = 3.64, etc.), confirming that script’s targets are this Gumbel/Monte Carlo analysis, not arbitrary numbers.

Barrier operation: the Maeslantkering is modelled as closed (fixed levels/discharges) consistent with its ~1/100-yr failure-to-close probability (recent analysis suggests this may be conservative — Deltares, 2023); the Hartelkering is assumed to close under comparable conditions.

Simulation window: 5 days spin-up (moderate discharge/tidal levels) + the main event + 7 days recession = 12 days total — close to, but not identical to, the 13-day window (tstarttstop) in the delivered sfincs.inp.

The 13 compound scenarios

#ScenarioPrecipitationDischarge (Brienenoord / Puttershoek)Storm surge (Hoek van Holland)Return period
1Base scenario63 mm/24h3645 / 2827 m³/s3.20 m MSL~1/10-yr
2IRP 300-year117 mm/24h5468 / 4241 m³/s3.85 m MSL~1/300-yr
3Barriers closed117 mm/24h5468 / 4241 m³/s3.85 m MSL~1/300-yr
4Hospital storage basin (0.5 m deep × area)117 mm/24h5468 / 4241 m³/s3.85 m MSL~1/300-yr
5Storage basins (0.5 m deep × area)63 mm/24h3645 / 2827 m³/s3.20 m MSL~1/10-yr
6IRP 100-year99 mm/24h4886 / 3789 m³/s3.64 m MSL~1/100-yr
7Storage basins99 mm/24h4886 / 3789 m³/s3.64 m MSL~1/100-yr
8Base scenario + no rain0 mm/24h3645 / 2827 m³/s3.20 m MSL~1/10-yr
9Base scenario + barriers closed63 mm/24h3645 / 2827 m³/s3.20 m MSL~1/10-yr
10IRP 100-year + barriers closed99 mm/24h4886 / 3789 m³/s3.64 m MSL~1/100-yr
11IRP 100-year, precipitation only99 mm/24h3645 / 2827 m³/s3.20 m MSL~1/100-yr
12IRP 100-year, discharge only0 mm/24h4886 / 3789 m³/s3.64 m MSL~1/100-yr
13IRP 100-year, storm surge only0 mm/24h3645 / 2827 m³/s3.64 m MSL~1/100-yr

Scenarios 1–7 match the 7 folders already on disk under data/rat_data-500/rotterdam/ by name and order (1_base_scenario7_IRP_100_years_storagebasins) — this table is their authoritative definition. Scenarios 8–13 are defined here but not yet generated on disk; relevant to RHT-81 (generating the real runs the golden question set needs).

Output files

Per-timestep GeoTIFFs, {variable}_{YYYYMMDD}_{HHMMSS}.tif, Deflate compression, all in EPSG:28992:

VariableGriddtypeNotes
h (water depth)subgrid (e.g. 0.5 m)float32, NaN nodatah = zs − dep, downscaled to the subgrid; only cells ≥ 0.05 m written; written as COG (tiled 256×256, predictor 2)
u, v (velocity components)model grid (e.g. 25 m)float32, NaN nodatanot downscaled, not reprojected
vel (speed)model gridfloat32combined vector magnitude

This matches SCENARIO_PROCESSING.md’s description of stage 4 (4_create_subgrid_results.py) exactly.

Flood damage assessment (Delft-FIAT)

Depth–damage approach via HydroMT-FIAT: per building, max potential damage (replacement value) × a depth–damage curve fraction = damage at a given depth, aggregated over the exposure set.

Measures — the authoritative vocabulary

This supersedes the “5 real types” understanding used earlier in this project. Django’s InterventionArea.InterventionType currently implements 5 of the following; the other 6 are real, documented measures this modelling framework supports but that don’t have InterventionArea rows yet. Per direction from the requester (2026-07-31): treat this table as the ceiling for RHT-78 — don’t add measure types beyond what’s documented here, and don’t expand InterventionType to the full 11 yet.

MeasureCategorySFINCS mechanismFeature attributeEffect
Underground storageBluevolfile (polygon geojson)volume (m³)Storage volume per cell
Water square or wadiBluesubgrid_dem.tiff (polygon geojson)level_change (m, + up / − down)Elevation change
Pre-drainage / polder level managementBlueprecipfile (scalar)mm/hrChange in effective rainfall
Dike raising / quay wall heighteningBlue/Greyweirfile (polyline geojson)level_change (m)Crest height
Maeslantkering / Hartelkering closureGreyweirfile (polyline geojson)level_change (m)Closes a waterway
Compartmentalization / thin damGreyweirfile (polygon geojson)level_change (m)Structure location/orientation
Retention basinGreysubgrid_dem.tiff (polygon geojson)level_change (m)Elevation change
Pump capacity / sewer capacity increaseGreyprecipfile (scalar)mm/hrChange in net rainfall (overland flow)
Green roofs (interception/infiltration)Greenvolfile (polygon geojson)volume (m³)Storage volume per cell
Permeable pavementGreensubgrid_manning.tiff (polygon geojson)Manning’s n + negative storage volume
Vegetation / urban parks (flow retardation)Greensubgrid_manning.tiff (polygon geojson)Manning’s n + storage volume

Bold = already implemented as an InterventionType choice in Django (water_square, compartmentalization, green_roofs, permeable_pavement, vegetation_parks).

Two corrections this resolves for the eval question set (eval/golden.yaml/eval/adversarial.yaml, which assumed GRN_ROOF, WADI, WATER_SQ, PERM_PAVE, PUMP_CAP, QUAY_RAISE, SEWER_UP, RETENTION):

This also confirms the mechanism mapping used in RHT-102 (automating a SFINCS run per intervention): compartmentalization → weir, water square → subgrid DEM edit, green roofs → storage volume, permeable pavement/vegetation → Manning’s roughness — all independently verified here rather than inferred.

References

Full citation list in the source report’s References section — key ones: Leijnse et al. (2021, SFINCS method), van Ormondt et al. (2025, subgrid accuracy), Huizinga et al. (2017, JRC damage functions), STOWA (2024, rainfall statistics), Parmet et al. (2001, Lobith discharge scaling), Bijlsma (2007, SR88 storm report).