Deltares / Ribasim

Water resources modeling
https://ribasim.org/
MIT License
39 stars 5 forks source link

Regression testing #462

Closed SouthEndMusic closed 1 month ago

SouthEndMusic commented 1 year ago

There are a few use cases for testing which are quite expensive:

These could possibly also involve large models like the one mentioned in https://github.com/Deltares/Ribasim/issues/419#issue-1799111085.

@evetion suggested regression testing for this.

evetion commented 1 year ago

So we want:

Open for discussion, is this a Python tool, or do we do this in pure Julia? Probably should follow the same ideas as in #151, part of #419.

evetion commented 4 months ago

Check in with the coupler, as they already do some reference checks.

Jingru923 commented 2 months ago

Regression test in Ribasim should have following content which I think it's most important for now. I will build benchmark for these content.

I selected 4 representative small test models: basic, pid_control, trivial, subnetwork_with_sources. With 7 implicit different solvers, Jacobian densities, autodiff on-off, the following output value will be check:

For the larger models, their performance is also important. I see overlapping with issue #1471. So they will be worked on in coming sprint.

Jingru923 commented 2 months ago

When testing different solver for trivial model (a simple model) all solver can give very approximate result (results of different solver can ≈ each other).

However, this is not the case for the more complex model basic and pid_control. I believe same will happen for the subnetwork_with_sources model. Due to the time limit, I will search for a good margin for all the different solvers to pass the regression tests. For long-term goal, we should revise if all the solvers are actually suitable and necessary for Ribasim, and which one is better to keep