Support kinematic wave floodplain routing#870
Open
vers-w wants to merge 110 commits into
Open
Conversation
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.
As implemented in PR#835.
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.
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.
JoostBuitink
reviewed
Jul 1, 2026
JoostBuitink
left a comment
Contributor
There was a problem hiding this comment.
Thanks for this work! I will still do a run with a different model to check the effects, will update the review in the PR once I have done that (hopefully this week!) Other than that, I only have a couple of small comments, see below
Contributor
|
When running a simulation for the Meuse, I noticed two things:
|
By using the "upwind"option (instead of "max" as used for local inertial routing) for water level and depth estimation at edge.
For zero flows the maximum waterlevel between two adjacent cells was computed. For slope based mannings flow (one direction) this is not required.
Collaborator
Author
Thanks for testing this functionality thoroughly! Changing the estimation of water level and depth at the edge in commit 5faf1fd resolves this. |
Fix floodplain states check.
The floodplain water depth was incorrect as it was based on the floodplain storage excluding river channel storage using the floodplain profile, while river channel storage should be included. This is now resolved by using the floodplain storage as state instead of the water depth. Additonally, for floodplain routing a check if the downstream floodplain is active (based on flow area) has been added.
Collaborator
Author
This has been fixed in commit 20ce151. There was also a state issue for the kinematic wave floodplain routing, this has been fixed in commit 7fe5253. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Issue addressed
Fixes #235
Explanation
This PR is about:
accucapacityfluxfunction with a transport capacity based on Manning's equation.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 forRiverFlowModelandOverlandFlowModel.Checklist
master