Skip to content

Support kinematic wave floodplain routing#870

Open
vers-w wants to merge 90 commits into
masterfrom
feat/kinwave_floodplain
Open

Support kinematic wave floodplain routing#870
vers-w wants to merge 90 commits into
masterfrom
feat/kinwave_floodplain

Conversation

@vers-w

@vers-w vers-w commented Mar 18, 2026

Copy link
Copy Markdown
Collaborator

Issue addressed

Fixes #235

Explanation

This PR is about:

  • Support of 1D floodplain schematization for kinematic wave routing, making use of the same 1D floodplain schematization that is already in place for local inertial river flow routing. Routing is done separately for the river channel and floodplain. Floodplain water is routed down slope using the accucapacityflux function with a transport capacity based on Manning's equation.
  • Added for river and floodplain flow on a staggered grid the option to use the Manning's equation, in addition to the local inertial equation, for applications where water flow is mostly controlled by the topography.

Besides these implementations river and overland flow routing (except local inertial overland flow) has been refactored, the type of routing (routing_method) is now used to distinguish between different routing types for RiverFlowModel and OverlandFlowModel.

Checklist

  • Updated tests or added new tests
  • Branch is up to date with master
  • Tests & pre-commit hooks pass
  • Updated documentation if needed
  • Updated changelog.qmd if needed

vers-w added 30 commits March 11, 2026 09:15
Initialized as `nothing`.
Introduce one struct for riverflow routing `RiverFlowModel` and one struct for overlandflow routing `OverlandFlowModel`. The routing method (subtype of `AbstractRoutingMethod`) is used to differentiate between different routing approaches for river and overland flow. Extending to other routing methods is now easier.
Remove `AbstractRoutingMethod` from these abstract types and add the routing method as first field to `RiverFlowModel` and `OverlandFlowModel`. This simplifies dispatching a bit and looks a bit cleaner.
Also add `slope` parameter that can be used by kinematic wave routing (as alternative to local inertial routing) using a staggered scheme.
Use a separate function for reading river parameters that can also be used by kinematic wave routing with a staggered scheme.
Using the term kinematic wave is not entirely correct as the Manning's equation is used as an alternative for the local inertial approach on a staggered grid.
For manning flow on a staggered grid.
To run manning river and floodplain flow on a staggered grid.
Edge/node variables and parameters.
Remove update of `alpha` at each model timestep as dynamic input of manning roughness is not allowed.
vers-w added 26 commits June 8, 2026 15:17
To support different slope values for river channel and floodplain for `kinematic_wave` routing.
For river flow on a staggered grid using Manning's equation.
Keeping `x` and `y` dir in the name, bit more generic than `left`/`right`.
From `KinematicWave` to `Manning`, a better description as it uses the Manning equation and not the full kinematic wave equation.
@vers-w vers-w marked this pull request as ready for review June 12, 2026 16:44
@vers-w vers-w requested a review from JoostBuitink June 12, 2026 16:44
vers-w added 2 commits June 16, 2026 17:06
Removed flow area and hydraulic radius fields of local inertial structs as these are used only internally (per function) and are not part of model output. Added check for hydraulic radius floodplain.
Already part of release/v1.0 branch: this check was based on `water_depth_at_edge` of river nodes and should be based on `water_depth_at_edge` of floodplain nodes. However, testing showed there is no performance benefit from this check and looping over active floodplain indices.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add 1D floodplain schematization to kinematic wave routing

3 participants