SETTE tests
The SETTE tests are a group of validation tests made on a regular basis onto NEMO to make sure that a bug-fix or development branch won't break the model. It enables to test that different configuration of the code will compile, run, are restartable and reproducible. It also enable to compare the code performances to a previously-tested-reference version of the code.
NEMO now uses SETTE on a regular basis using the git "continuous-integration".
We will continue to do it by hand with MEDUSA, at least for now, but of course, we want to benefit from all these tests to check MEDUSA the same way!
MEDUSA on SETTE
when adding MEDUSA
to nemo using add_msa_to_nemo
, all necessary MEDUSA files and bit of scripts are automatically added in the nemo/sette
directory.
it enables to test different MEDUSA and non-MEDUSA configurations :
-
ORCA2_MEDUSA
: Normal MEDUSA- online. -
ORCA2_OFF_MEDUSA
: MEDUSA Offline (the ocean circulation is read - not calculated). -
ORCA2_MED_OFF_TRC
: CFCs and C14 Offline (No-MEDUSA) - make sure NEMO and other passive tracers still run without MEDUSA -- nothing has been broken by the new dev outside of MEDUSA. -
ORCA2_MED_NO_TOP
: NEMO-ice without passive tracers - make sure NEMO runs -
C1D_MED_PAPA
: NEMO-MEDUSA 1D - make sure the 1D version runs (can be very useful for new developments) -
ORCA2_PAC_MED
: MEDUSA-PAC online - PAC stands forParticle-Associated Copepods
- a modified version of MEDUSA with additional copepods impacting the sinking particles scheme.
when available we'll add a river-nutrients config to be tested.
How to Run the tests.
Running the tests requires very little work.
A detailed How-to page explaining SETTE tests has already been written, but to be short :
- Set your local environment.
- Make sure you've
module loaded
all needed modules to compile NEMO (see the relevant how-to page : how-to run on ANEMONE or on Archer2). - In the
nemo/sette/
directory add alocal_settings.sh
files that should look like the following :
This is an example file for Archer2. make sure to adapt to your environment, and make sure you have the apropriate compiler in#!/bin/bash export SETTE_COMPILER=X86_ARCHER2-Gnu_4.2 export SETTE_BATCH_CMD=sbatch export SETTE_BATCH_STAT=squeue export SETTE_FORCING_DIR=/work/n01/shared/nemo/FORCING/SETTE_inputs/r4.2.0 export SETTE_NEMO_VALIDATION_DIR=/work/n01/n01/julpal/NEMO/MEDUSA_dev/nemo/sette
nemo/arch/
.
Then run it :
. ./local_settings.sh
- Make sure you've
- A little tweak
That should not remain for long, but in
nemo/sette/BATCH_TEMPLATE/
, the SETTE scripts looks for abatch-mpmd-${your-compiler-name}
file. it's not really used as, as you can see, the files are only comments. just copy a similar file with the right name. that does the trick.
Once these steps are done, you're ready to run your test!
3. Running :
In nemo/sette/
, run :
./sette.sh
it will test all the configs listed above. If you wish to only test one config, run instead
./sette.sh -n ${your_config_name}
Check the results
what it does, in case it does not work and you need to check and debug :
SETTE will create a new config in nemo/cfgs
named ${your_config}_ST
\
- there, your config is compiled and the different runs are done.
there are a LONG and a SHORT run; the SHORT run starting from a middle restar of the LONG one.
If both ended identically, the restartability test succeeds - Then there are also a REPRO4_8 and a REPRO8_4 runto test the different decomposition of the grid soes not change the results. if both ends identically, the reproducibility test succeeds. All runs are normal runs, with their usual ocean.output,... files to check how they are doing.
To see if your tests succeed, in nemo/sette/
, run :
./sette_rpt.sh
and if it succeeds, you should see something similar appearing : \
Here, all tests were successful. That's what you are looking for. (it shows the 1D reproducibility test being incomplete, but that's because it's 1D, we can't run a reproducibility test 1D.)