Summary
The current WaterContaminationSimulator implements 1D advection-diffusion along river networks.
To support lake, sea, and estuary scenarios, a 2D spread engine is needed.
Motivation
RiskZ needs to model contamination in different water body types — not just rivers but also
lakes (quiescent spread), coastal waters (tidal mixing), and estuaries (bidirectional flow).
Proposed scope
WaterBodyType enum — River, Lake, Estuary, Sea
- 2D advection-diffusion solver for lake/sea scenarios (grid-based Eulerian scheme)
- Builder extensions —
WithLake(), WithSea(), WithEstuary() on WaterContaminationScenarioBuilder
- Wind-driven circulation (optional, for lakes)
- Tidal forcing (optional, for estuaries/seas)
- Strategy routing — select 1D river or 2D solver based on water body type
Current state
The completed roadmap (docs/completed/WaterContaminationRoadMap.md) explicitly lists
2D lateral dispersion, lake stratification, and tidal mixing as "Future Extensions (Out of Scope for MVP)".
Notes
- No assignee for now — this is a future enhancement tracked for planning purposes.
- The existing 1D river engine should remain unchanged.
Summary
The current
WaterContaminationSimulatorimplements 1D advection-diffusion along river networks.To support lake, sea, and estuary scenarios, a 2D spread engine is needed.
Motivation
RiskZ needs to model contamination in different water body types — not just rivers but also
lakes (quiescent spread), coastal waters (tidal mixing), and estuaries (bidirectional flow).
Proposed scope
WaterBodyTypeenum —River,Lake,Estuary,SeaWithLake(),WithSea(),WithEstuary()onWaterContaminationScenarioBuilderCurrent state
The completed roadmap (
docs/completed/WaterContaminationRoadMap.md) explicitly lists2D lateral dispersion, lake stratification, and tidal mixing as "Future Extensions (Out of Scope for MVP)".
Notes