Dit dashboard toont resultaten van het Wflow SBM hydrologisch model, gedraaid op een NVIDIA Jetson AGX Orin — een compact ARM-gebaseerd edge-apparaat, normaal gebruikt voor AI-inferentie aan de rand van het netwerk. Het doel was te testen of een volledige hydrologische modelleeropzet (invoerdata, simulatie, export, webdashboard) volledig autonoom op zo'n apparaat kan draaien, zonder cloud en zonder x86-werkstation.
Wflow SBM is een fysisch-gebaseerd neerslagregelmodel ontwikkeld door Deltares en beschikbaar als open-source Julia-pakket. Het modelleert bodemwater, grondwater, laterale afvoer en rivierrouting op een rastergrid — in dit geval het IJssel-stroomgebied op ~800 m resolutie.
Netwerktoegang vanuit de iPad gaat via Tailscale — een overlay-VPN dat directe communicatie mogelijk maakt ondanks WiFi AP-isolatie op het lokale netwerk. Het dashboard wordt geserveerd door FastAPI/uvicorn en toont rivierdebieten via deck.gl 3D-kolommen.
De volledige rapportage is beschikbaar in LESSONS_LEARNED.md.
Hieronder de meest impactvolle bevindingen voor Deltares en toekomstige gebruikers.
| # | Probleem | Oorzaak | Fix | Impact |
|---|---|---|---|---|
| 1 | JIT-compilatie 2–3 uur op ARM | CFTime.jl type-instabiliteit → LLVM-cascade op aarch64 | Type-stabiele Period-constructor; @nospecialize in Wflow |
Blokkerend |
| 2 | c_layer heeft 3 lagen, model verwacht 4 |
Wflow voegt intern een NaN-schildwacht laag toe: maxlayers = n+1 |
NetCDF hergebouwd met 4 lagen | Blokkerend |
| 3 | Beginstaat mist time-dimensie |
set_states! eist 3D/4D met time=1 |
NetCDF herbouwd met singleton tijdsdimensie | Blokkerend |
| 4 | 3 cellen buiten ERA5-dekking | Bounding box te krap; uitlaat IJsselmeer net buiten grid | Nearest-neighbour invulling | Blokkerend |
| 5 | Kampen-meetpunt niet op riviernetwerk | 800 m resolutie: geografische stad ≠ model-riviercel | Coördinaten gesnapped naar uitlaatcel (5.496, 53.221) | Blokkerend |
| 6 | iPad kon dashboard niet bereiken | WiFi AP-clientisolatie blokkeert peer-to-peer op poort 8000 | Tailscale overlay-netwerk | Blokkerend |
| 7 | Python cdsapi crasht op ARM |
attrs-namespace ontbreekt in Python 3.10 systeem-installatie |
Installatiedependencies in apart --target-pad |
Oplosbaar |
| 8 | Browser laadt oude JavaScript | Safari op iPad cached app.js agressief |
?v=N cache-busting + Cache-Control: no-store |
Oplosbaar |
Tijdsinvestering: ~12 uur voor de 1995-opzet (waarvan ~7 uur aan ARM-specifieke technische problemen), ~3 uur voor 2021 + dashboard-uitbreiding. Met deze kennis vooraf ingepast: ~2–3 uur totaal.
De juli 2021 Rijn-vloed was de zwaarste in Duitsland en Nederland in decennia.
Bij Lobith (meetpunt Pannerdense Kop) bereikte de Rijn een piek van
6 687 m³/s op 18 juli 2021 (bron: RWS Waterinfo, station
lobith.bovenrijn.tolkamer). De simulatie is twee keer uitgevoerd:
eerst met een synthetische inflow-schatting, daarna met de werkelijk gemeten debietreeks.
Bij de eerste opzet was de RWS Waterinfo REST API niet beschikbaar (het oude eindpunt gaf "Exceeded 30 redirects" doordat het in april 2026 was vervangen). De inflow bij Westervoort werd daarom synthetisch opgebouwd uit twee aannames:
| Aanname | Bron | Gebruikte waarde | Werkelijk (RWS) | Fout |
|---|---|---|---|---|
| Lobith piekdebiet | RWS waterstandsberichten jul 2021 (persbericht, niet gevalideerde meting) |
~8 900 m³/s op 15 jul | 6 687 m³/s op 18 jul | +33% |
| IJssel-aandeel bij hoog water | Vuistregel voor gemiddelde Rijnverdeling (langjarig gemiddelde ~18–25%) |
25% | 13,4% (899 / 6 687) | +87% |
| Resulterende inflow Westervoort | 8 900 × 25% = 2 225 m³/s | 2 200 m³/s | 899 m³/s | ×2,45 |
Waarom week het IJssel-aandeel zo sterk af? Bij extreme afvoer op de Rijn reguleert Rijkswaterstaat actief de verdeling bij de Pannerdense Kop. Bij de jul-2021 golf werd meer water naar de Waal geleid om benedenrivierafvoer te spreiden. Het langjarig gemiddelde van ~25% is dus géén betrouwbare schatting tijdens hoogwater — juist het moment dat het er toe doet.
rws-waterinfo Python-pakket, station westervoort.ijsselkop,
grootheid Q). Dit moet de eerste keuze zijn voor randcondities bij
operationele runs — niet de fallback.
De IJssel is geen zelfstandige rivier maar een zijtak van de Rijn. Al het water in de IJssel komt via de Rijn uit de Alpen en het Middenrijngebied. Bij Lobith (bij Zevenaar) passeert de Rijn de grens. Verderop, bij de Pannerdense Kop, splitst de stroom zich op in drie richtingen.
Als de Rijn hoog staat door smeltwater of extreme regenval in Duitsland stijgt ook de IJssel. Bij Kampen mondt de IJssel uit in het IJsselmeer. Als het water te hoog stijgt, moeten dijken het tegenhouden — of ze houden het niet meer.
De kaart toont het IJssel-stroomgebied van Westervoort (bij Arnhem) tot Kampen. Elke 3D-staaf is één rastercel van ~800 × 800 meter.
Het debiet bij Kampen in 1995 (~3.340 m³/s) was bijna twee keer zo hoog als in 2021 (1.767 m³/s). In 1995 bleef de IJssel wekenlang boven de hoogwater-drempel; in 2021 slechts twee dagen. Toch veroorzaakte 2021 meer maatschappelijke schade — doordat het water bovenstrooms in Duitsland veel sneller steeg dan verwacht.
Een hydrologisch model berekent hoe neerslag door een stroomgebied beweegt — dag voor dag, cel voor cel. Vergelijk het met een weersverwachting: maar dan voor water.
De ERA5-weerdata is historische, gereconstrueerde atmosfeerdata van het Europees Centrum voor Weersverwachtingen (ECMWF) — nauwkeurig gereconstrueerd aan de hand van satellieten en grondwaarnemingen, terug tot 1950. Geen voorspelling, maar een zo goed mogelijk beeld van wat er werkelijk gevallen is.
Bovenop de lokale neerslag voeren we het dagelijkse debiet van de Rijn in bij Westervoort (het punt waar de IJssel begint). Voor 2021 is dit de werkelijk gemeten reeks van Rijkswaterstaat. Het model combineert beide tot een dagelijkse schatting van de waterafvoer langs de volledige IJssel.
Wflow SBM (Simple Bucket Model) is een gedistribueerd hydrologisch rastermodel van Deltares, gebouwd in Julia en open-source beschikbaar. Per rastercel wordt een meerlaagsbodemmodel doorgerekend:
De kinematische golfvergelijking is een vereenvoudiging van de volledige Saint-Venant vergelijkingen die de versnellingstermen verwaarloost. Dit werkt goed voor sub-kritieke stroming in rivierbeddingen maar mist retentie-effecten in uiterwaarden en is niet geschikt voor inundatiemodellering.
Het model heeft drie soorten invoer:
| Type | Bron | Resolutie | Verwerking |
|---|---|---|---|
| Statische kaarten | MERIT Hydro DEM · SOILGRIDS · Copernicus Land Cover | ~90 m → 800 m | HydroMT model builder (eenmalig) |
| Forcingdata | ERA5-Land via Copernicus Climate Data Store | ~9 km → 800 m | Bilineaire interpolatie · P, T, PET dagelijks |
| Randconditie (inflow) | RWS Waterinfo · station westervoort.ijsselkop |
Daggemiddeld Q (m³/s) | Puntbron in forcing NetCDF op IJssel-begincel |
De randconditie bij Westervoort is de dominante stuurvariabele: hier "begint" het model. Fouten in deze waarde propageren direct door het hele stroomgebied — zoals gedemonstreerd door de vergelijking van de synthetische (×2,45 te hoog) en de gemeten run van 2021. Zie de Info & Analyse-tab voor de kwantitatieve analyse.
Cold start: de begintoestand van bodemvochtigheid en grondwater is niet geïnitialiseerd vanuit een voorgaande simulatieperiode. Operationele modellen draaien typisch 1–3 jaar spin-up vooraf om stabiele initiële condities te bereiken.
De verdeling van het Rijnwater is wettelijk vastgelegd in het Tractaat van 1709, maar in de praktijk stuurt Rijkswaterstaat actief bij via stuwen bij de Pannerdense Kop en Driel:
| Tak | Tractaat 1709 | Praktijk gemiddeld | Juli 2021 gemeten |
|---|---|---|---|
| Waal | 6/9 ≈ 66,7% | ~65% | ~86,6% |
| Neder-Rijn / Lek | 2/9 ≈ 22,2% | ~18–22% | — |
| IJssel | 1/9 ≈ 11,1% | ~13–18% | 13,4% (899 / 6.687 m³/s) |
Bij de synthetische run werd 25% aangenomen — een fout gebaseerd op een langjarig gemiddelde dat bij extreme afvoer niet geldt. Bij hoogwater stuurt RWS actief meer water naar de Waal om IJssel en Lek te ontlasten. De IJssel-inflow was daardoor een factor 2,45 overschat, wat doorwerkte in een gesimuleerde piek van 3.090 m³/s in plaats van 1.767 m³/s.
Leerpunt: gebruik altijd gemeten debieten van RWS Waterinfo als randconditie — met name bij hoog water, wanneer de verdeling het meest afwijkt van gemiddelden.
Dit is een experimentele onderzoeksomgeving op een NVIDIA Jetson AGX Orin (ARM64 edge computer), volledig offline draaiend zonder cloud of externe API's. Hier worden drie typen proeven gecombineerd: historische simulaties (1995, 2018, 2021), een live verwachting gebaseerd op open data, en een AI-gestuurde multimodel pipeline waarbij Ribasim, wflow SBM en een lokale LLM samenwerken. De resultaten zijn indicatief en geschikt voor demonstratie en onderzoek — niet voor operationeel waterbeheer.