Test models
Ribasim developers use the following models in their testbench and in order to test new features.
Code
import ribasim_testmodels
import matplotlib.pyplot as plt
from IPython.display import Markdown, display
for model_name, model_constructor in ribasim_testmodels.constructors.items():
if model_name.startswith("invalid"):
continue
f"\n# {model_name}\n"))
display(Markdown(if model_constructor.__doc__ is not None:
display(Markdown(model_constructor.__doc__))
= model_constructor()
model = plt.subplots(figsize=(6, 4))
fig, ax
model.plot(ax)"off")
ax.axis(
plt.show() plt.close(fig)
1 allocation_control
Create a model that has a pump controlled by allocation.
2 allocation_training
3 allocation_example
Generate a model that is used as an example of allocation in the docs.
4 backwater
Backwater curve as an integration test for ManningResistance.
5 basic_arrow
6 basic
7 basic_basin_only_area
8 basic_basin_only_storage
9 basic_basin_both_area_and_storage
10 basic_transient
Update the basic model with transient forcing.
11 bommelerwaard
12 bucket
Bucket model with just a single basin at Deltares’ headquarter.
13 compound_variable_condition
Model with a condition on a compound variable for DiscreteControl.
14 concentration_condition
DiscreteControl based on a concentration condition.
15 continuous_concentration_condition
DiscreteControl based on a continuous (calculated) concentration condition.
In this case, we setup a salt concentration and mimic the Dutch coast.
dc
/ |
lb --> lr -> basin <-- fb
|
out
|
term
16 connector_node_flow_condition
DiscreteControl with a condition on the flow through a connector node.
17 cyclic_demand
Create a model that has cyclic User- Flow- and LevelDemand.
18 cyclic_time
19 discrete_control_of_pid_control
Set up a basic model where a discrete control node sets the target level of a pid control node.
20 drought
Create a small subsection of the LHM Vechtstromen model containing a basin that runs dry (#2189).
21 fair_distribution
See the behavior of allocation with few restrictions within the graph.
22 flow_boundary_interpolation
23 flow_boundary_time
Set up a minimal model with time-varying flow boundary.
24 flow_condition
Set up a basic model that involves discrete control based on a flow condition.
25 flow_demand
Small model with a FlowDemand.
26 junction_combined
Testmodel combining confluence and bifurcation junctions.
27 junction_chained
Testmodel with chained junctions.
28 leaky_bucket
Bucket model with dynamic forcing with missings at Deltares’ headquarter.
29 level_boundary_condition
Set up a small model with a condition on a level boundary.
30 level_demand
Small model with LevelDemand nodes.
31 level_range
Keep the level of a Basin within a range around a setpoint, under the influence of time-varying forcing.
This is done by bringing the level back to the setpoint once the level goes beyond this range.
32 linear_resistance_demand
Small model with a FlowDemand for a node with a max flow rate.
33 linear_resistance
Set up a minimal model which uses a linear_resistance node.
34 local_pidcontrolled_cascade
Demonstrating model for the cascade polder project from our partner.
35 looped_subnetwork
Create a UserDemand testmodel representing a subnetwork containing a loop in the topology.
This model is merged into main_network_with_subnetworks_model.
36 main_network_with_subnetworks
Generate a model which consists of a main network and multiple connected subnetworks.
37 manning_resistance
Set up a minimal model which uses a manning_resistance node.
38 minimal_subnetwork
Create a subnetwork that is minimal with non-trivial allocation.
39 misc_nodes
Set up a minimal model using flow_boundary and pump nodes.
40 outlet_continuous_control
Set up a small model that distributes flow over 2 branches.
41 outlet
Set up a basic model with an outlet that encounters various physical constraints.
42 pid_control_equation
Set up a model with pid control for an analytical solution test.
43 pid_control
Set up a basic model with a PID controlled pump controlling a basin with abundant inflow.
44 pump_discrete_control
Set up a basic model with a Pump controlled based on Basin levels.
The LinearResistance is deactivated when the levels are almost equal.
45 rating_curve
Set up a minimal model which uses a tabulated_rating_curve node.
46 subnetwork
Create a UserDemand testmodel representing a subnetwork.
This model is merged into main_network_with_subnetworks_model.
47 subnetworks_with_sources
Generate a model with subnetworks which contain sources.
48 tabulated_rating_curve_control
Discrete control on a TabulatedRatingCurve.
The Basin drains over a TabulatedRatingCurve into a Terminal. The Control
node will effectively increase the crest level to prevent further drainage
at some threshold level.
49 tabulated_rating_curve
Set up a model where the upstream Basin has two TabulatedRatingCurve attached.
They both flow to the same downstream Basin, but one has a static rating curve,
and the other one a time-varying rating curve.
Only the upstream Basin receives a (constant) precipitation.
50 transient_condition
DiscreteControl based on transient condition.
51 transient_pump_outlet
Set up a model with time dependent pump and outlet flows.
52 trivial
Trivial model with just a basin, tabulated rating curve and terminal node.
53 two_basin
Create a model of two basins.
The basins are not connected; the model is mostly designed to test in
combination with a groundwater model.
The left basin receives water. In case of a coupled run, the water
infiltrates in the left basin, and exfiltrates in the right basin.
The right basin fills up and discharges over the rating curve.
54 user_demand
Create a UserDemand test model with static and dynamic UserDemand on the same basin.