1.9.1. Testing

Technically, you could use the customization we gave in Chapter 1 to test various configuration and namelist options for CLM. Sometimes, it’s also useful to have automated tests though to test that restarts give exactly the same results as without a restart. It’s also useful to have automated tests to run over a wide variety of configurations, resolutions, and namelist options. To do that we have several different types of scripts set up to make running comprehensive testing of CLM easy. There are two types of testing scripts for CLM. The first are the CESM test scripts, which utilize the create_newcase scripts that we shown how to use in this User’s Guide. The second are a set of stand-alone scripts that use the CLM configure and build-namelist scripts to build and test the model as well as testing the CLM tools as well. Below we will go into further details of how to use both methods.

1.9.1.1. CIME Testing scripts

We first introduce the test scripts that work for all CESM components. The CIME script create_test runs a specific type of test, at a given resolution, for a given compset using a given machine. See CIME Chapter on Testing for how to use it to run single tests as well as lists of tests. The standard testname for CLM is “aux_clm” for cheyenne with intel and gnu compilers as well as the CGD machine hobart for intel, nag, and pgi compilers. There’s also a shorter test list called “clm_short”. Also see the CTSM Wiki on Testing.

1.9.1.2. CTSM Fortran Unit Tests

# To run all CTSM unit tests on caldera, run the following command:
#
# The creation of a temporary directory ensures that you are doing a completely
# clean build of the unit tests. (The use of the --clean flag to run_tests.py
# cleans most, but not all of the files created by the unit test build.) For
# rerunning the tests after an incremental change, you can instead use an
# existing build directory.

# From a standalone CTSM checkout:
../cime/scripts/fortran_unit_testing/run_tests.py --build-dir `mktemp -d --tmpdir=. unit_tests.XXXXXXXX`

# If you are within a full CESM checkout, you would instead do:
# ../../../cime/scripts/fortran_unit_testing/run_tests.py --build-dir `mktemp -d --tmpdir=. unit_tests.XXXXXXXX`

1.9.1.3. CTSM Build-namelist Tests

Run the following perl tester that

::

> cd bld/unit_testers > ./build-namelist_test.pl