The following guidelines describe how to manipulate the database for the non-regression tests.
The database is used to compare the result from a non-regression test. By default, the databases are located in test_cases/database/
.
There are 2 databases : teh non-regression database and the non-regression scalability database.
The non-regression database is common to everyone and it is downloaded with git at test_cases/database/non-regression.db
.
A non-regression scalabilty database has to be created for each computer where a scalability non-regression test will be launched.
After running Notus in non-regression or non-regression-scalability mode, you can add a new test case name.nts
to the database from the results you obtain, using the command:
./notus.py database --add name.nts --database-path test_cases/database/non-regresson.db
The argument --database-path
is not mandatory, by default it is test_cases/database/non-regression.db
. So you could have done:
./notus.py database --add name.nts
The script read a regex, so you can select multiple cases, insted of selection only name.nts
. It works the same way for all the option add
, edit
, show
and remove
.
You can choose the tolerance value using the following arguments:
default-tolerance
:default-convergence-tolerance
:default-time-tolerance
:default-scalability-tolerance
:For instance, if you want to add the 2D poiseuille flow with a 1e-11 tolerance:
./notus.py database --add poiseuille_2D --default-tolerance 1e-11
The arguments --directory
indicate to the script where to take information from the computation to create the database. Note that by default, after running the non-regression-scalability mode, your result will be located in non-regression-scalability
and by default, --directory
is non-regression
.
So remember to use the argument --directory non-regression-scalability
when you want to add non-regression-scalability tests.
It is possible to change the value for cases which already exist, with the option --edit
. This option does not require you to run Notus in non-regression before. The script will ask you which set of parameters you to modify and next, which value you want to modify. You can change the reference value or the tolerance.
For instance, if you want to change the tolerance of the 2D poiseuille flow, you can run the command:
./notus.py database --edit poiseuille_2D.nts./notus.py database --edit poiseuille_2D.nts
After selecting the value you want to modify, you will insert the new value of the tolerance, for example 1e-11:
Reference values: Name │ Value │ Tolerance ──────────────┼─────────────────────────┼────────── mean velocity │ 1.00173015541651922e-01 │ 1e-13 Edit this set of parameter? (N[o]|y[es]) yes Edit 'mean velocity'? (N[o]|y[es]) yes Change the reference value of 'mean velocity'? (N[o]|y[es]) no Change the tolerance of 'mean velocity'? (N[o]|y[es]) yes Enter the new tolerance of 'mean velocity': 1e-11 ────────────────────────────────
If you want to modify the tolerance for all the values, you can use all the --default-tolerance
option. Then you will have to select the file you want to modify also as the set of parameters. You can now skip the modifications and save your changes.
It is possible to print into the shell the value stocked in the database. You can see all the database or only the values for a case, with the command:
./notus.py database --show name.nts --database-path path\to\database.db
It is possible to remove a case, using:
./notus.py database --remove name.nts --database-path path\to\database.db
You can remove the full case, or you can choose to remove only a parameter of the case:
Match in database: 'verification/navier/poiseuille_2D_convergence.nts' Remove this file from the database? (N[o]|y[es]) no Remove a specific set of parameters for this file? (N[o]|y[es]) yes File: 'verification/navier/poiseuille_2D_convergence.nts' No parameters Convergence: space Error reference velocity : Mesh │ error reference velocity │ Tolerance │ Local order │ Tolerance ─────────┼──────────────────────────┼───────────┼─────────────┼─────────── (10, 10) │ 8.237304715143119e-04 │ 1.0 │ n/a │ 0.1 (20, 20) │ 2.883605984136343e-04 │ 1.0 │ n/a │ 0.1 (40, 40) │ 8.281227149995775e-05 │ 1.0 │ 1.381 │ 0.1 Mean velocity : Mesh │ mean velocity │ Tolerance │ Local order │ Tolerance ─────────┼───────────────────────┼───────────┼─────────────┼─────────── (10, 10) │ 1.005000274462560e-01 │ 1.0 │ n/a │ 0.1 (20, 20) │ 1.001250029479938e-01 │ 1.0 │ n/a │ 0.1 (40, 40) │ 1.000312502359342e-01 │ 1.0 │ 2.000 │ 0.1 Remove this convergence cases ? (N[o]|y[es])yes ════════════════════════════════ Save changes from the remove function? (N[o]|y[es]) yes Database updated