Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
sette.rst 44.18 KiB

A guide to using SETTE

Overview

SETTE is a suite of bash scripts that automates the building, running and basic validation and verification of a broad spectrum of NEMO reference and test configurations. Because compilation and batch running environments differ wildly, automation is only achieved after some effort by the user for each new test platform. However, examples are provided for all the major systems used by the NEMO System team and many new platforms can be incorporated simply by adapting these templates.

When configured correctly, a single command will:

  • Compile multiple reference and test configurations
  • Run restartability and reproducibility tests with each configuration
  • Run additional conformance checks with any AGRIF-based configurations
  • Archive sufficient output measures for meaningful comparsion between future tests at different revisions
  • On completion, run a secondary script to table the successes or failures of each test

Many namelist-controlled options can be varied using command line arguments to the main sette script and test results can be compared across different innvocations. Thus, by chaining sette innvocations with different options, more complex and comprehensive testing can be achieved.

Installation

SETTE is provided within the main NEMO git repository and will be found in the subdirectory sette below the top-level of a checked out (cloned) copy (at the same level as src/ or cfgs/).

Initial setup

Assuming, for now, that you are intending to run SETTE on one of the platforms already supported then there are only a few settings required to setup for each individual user. These settings are all to be found in the sette/param.default file:

NEMO_VALIDATION_REF=/path/to/reference/sette/results
NEMO_REV_REF=0000
COMPILER=${SETTE_COMPILER:-XXXXXXXX}
BATCH_CMD=${SETTE_BATCH_CMD:-llsubmit}
BATCH_STAT=${SETTE_BATCH_STAT:-llq}
FORCING_DIR=${SETTE_FORCING_DIR:-$WORKDIR/FORCING}
NEMO_VALIDATION_DIR=${SETTE_NEMO_VALIDATION_DIR:-$MAIN_DIR}/NEMO_VALIDATION
JOB_PREFIX_NOMPMD=${SETTE_JOB_PREFIX_NOMPMD:-batch}
JOB_PREFIX_MPMD=${SETTE_JOB_PREFIX_MPMD:-batch-mpmd}

and each can be set either in a param.cfg file (created by copying param.default to param.cfg and editing) or through the corresponding environment variable. For example, changing the contents of a param.cfg to include:

NEMO_VALIDATION_REF=/work/n01/n01/acc/NEMO/2022/4.2.0/sette/NEMO_VALIDATION
NEMO_REV_REF=14550
COMPILER=X86_ARCHER2-Cray
BATCH_CMD=sbatch
BATCH_STAT=squeue
FORCING_DIR=/work/n01/n01/acc/FORCING/SETTE_inputs/r4.2.0
NEMO_VALIDATION_DIR=/work/n01/n01/acc/NEMO/2022/4.2.0/sette/NEMO_VALIDATION
JOB_PREFIX_NOMPMD=batch
JOB_PREFIX_MPMD=batch

or settings:

export SETTE_COMPILER=X86_ARCHER2-Cray
export SETTE_BATCH_CMD=sbatch
export SETTE_BATCH_STAT=squeue
export SETTE_FORCING_DIR=/work/n01/n01/acc/FORCING/SETTE_inputs/r4.2.0
export SETTE_NEMO_VALIDATION_DIR=/work/n01/n01/acc/NEMO/2021/4.2.0/sette/NEMO_VALIDATION
export SETTE_JOB_PREFIX_NOMPMD=batch
export SETTE_JOB_PREFIX_MPMD=batch

in your runtime environment will achieve the same result. The requirement to create a param.cfg from param.default for each installation protects against developers accidentally returning a local param.cfg to the main repository. The param.default file should only be altered by SETTE developers.