This page contains a guide to the building and running a Single-Column Model (SCM), which is derived from OpenIFS 48r1.



1. Installing and building the SCM

The SCM source code is extracted and installed alongside OpenIFS. Thus, if not done already, to install the SCM please follow the instructions detailed in Getting started to install OpenIFS. 

In short, once the source code is extracted and installed from https://sites.ecmwf.int/openifs/openifs-data/src/48r1/openifs-48r1.tar.gz, then the code can be built using the following:

# load the OpenIFS and SCM environment variables
source /path/to/file/location/oifs-config.edit_me.sh
# using our installation example:
# source $HOME/openifs-48r1/oifs-config.edit_me.sh

# change to the home directory for OpenIFS and SCM 
cd $OIFS_HOME
# Use the openifs-test.sh script to build and automatically test OpenIFS and the SCM
$OIFS_TEST/openifs-test.sh -cbt

The above commands assume that the base prerequisites for OpenIFS and the SCM are installed on the system. This is the case on the ECMWF Atos Sequana XH2000 HPC facility (hpc2020) but on other systems, the prerequisites need to be installed. A description/recipe for the prerequisites can be found on the Getting started on docker page.

Once successful, the above commands will build double and single precision SCM executables (MASTER_scm.DP and MASTER_scm.SP, respectively), which are used to run the SCM derived from OpenIFS. The executables are located in  $OIFS_HOME/build/bin.

  • The location and name of the executable for the SCM are defined in the platform configuration file (oifs-config.edit_me.sh) as $SCM_EXEC

Download and extraction of the OpenIFS 48r1 sources tarball is only required if a user has not previously done this for a general OpenIFS install.

If a user has already downloaded the OpenIFS package to install the 3D model, there is no need to extract the package again, since the SCM is packaged with OpenIFS. 

2. Setting up the SCM for a test-case

Before the SCM can be run, it is necessary to

  • load the SCM environment variables by source the oifs-config.edit_me.sh
  • obtain and extract the SCM test-case package

2.1. Load SCM environment variables

As with OpenIFS, the operation of the SCM depends on some environment variables being loaded. The recommended way to load is by sourcing the oifs-config.edit_me.sh file, i.e., 

source /path/to/file/location/oifs-config.edit_me.sh
# using our installation example:
# source $HOME/openifs-48r1/oifs-config.edit_me.sh

This will load all the OpenIFS and SCM environment variables. The OpenIFS variables are described in Getting started, so here we focus on the SCM variables, which are defined in oifs-config.edit_me.sh, with comments, as shown below

#---Path to the executable for the SCM. This is the
#---default path for the exe, produced by openifs-test.sh.
#---DP means double precision. To run single precision change
#---DP to SP
export SCM_EXEC="${OIFS_HOME}/build/bin/MASTER_scm.DP"

#---Default assumed paths, only change if you know what you are doing
export SCM_TEST="${OIFS_HOME}/scripts/scm"
export SCM_RUNDIR="${OIFS_EXPT}/scm_openifs/48r1/scm-projects/ref48r1"
export SCM_PROJDIR="${OIFS_EXPT}/scm_openifs/48r1/scm-projects"
export SCM_VERSIONDIR="${OIFS_EXPT}/scm_openifs/48r1"
export SCM_LOGFILE="${SCM_RUNDIR}/scm_run_log.txt"

It is worth noting that the SCM environment variables depend on the OIFS_HOME  and OIFS_EXPT, which are also defined by sourcing oifs-config.edit_me.sh. In the above there is the assumption that the SCM executable exists in ${OIFS_HOME}/build/bin and that the SCM test case package exists in $OIFS_EXPT.

2.2. Extract SCM test-case package

In a similar fashion to the OpenIFS package and the experiment data, the SCM test-case package can be download from https://sites.ecmwf.int/openifs/openifs-data/scm/48r1/scm_openifs_48r1.tar.gz. Please note that access to this web site is restricted to registered OpenIFS users, i.e. your personal ECMWF account must have been added to the OpenIFS user policy.

In the example below we assume that the SCM package shall be installed in the $OIFS_EXPT directory, where the $OIFS_EXPT is the OpenIFS experiment directory, which is defined oifs-config.edit_me.sh

# download the scm_openifs_48r1.tar.gz from https://sites.ecmwf.int/openifs/openifs-data/scm/48r1/scm_openifs_48r1.tar.gz model and copy the tarball to your $OIFS_EXPT directory:
cp scm_openifs_48r1.tar.gz $OIFS_EXPT
tar -xvzf scm_openifs-48r1.tar.gz

The untarred SCM package is small, ~45 Mb and data produced by a standard individual SCM simulation is also low. However, if I user is planning to perform many simulations and store the data, which is often the case, the disk space usage can become large. If this is the plan, then a user may need to consider installing the SCM test-case package on a larger disk area than $HOME

Once installed it is important to ensure that the $OIFS_EXPT is set to the directory that scm_openifs has been installed in. For example, in the template oifs-config.edit_me.sh, $OIFS_EXPT=${HOME}/openifs-expt . In this scenario, the directory scm_openifs needs to be in $OIFS_EXPT or `${HOME}/openifs-expt/.  

3. Run the SCM

Once the above has been completed, you are ready to run the SCM. The scm_openifs  contains 3 testcases, each representative of different cloudy regimes

  • DYCOMS - marine stratocumulus case
  • BOMEX - trade-wind cumulus case 
  • TWPICE - A multi-day deep convective case

The SCM is run using the callscm script, which is a wrapper for the main run.scm. Both scripts can found in $SCM_TEST , which is set in the oifs-config.edit_me.sh file to ${OIFS_HOME}/scripts/scm

callscm  includes default settings, which are the all cases, with a 450 s timestep and an experiment name of ref-oifs-scm . To run with these settings, enter the following

cd $OIFS_HOME
$SCM_TEST/callscm

It is important to note that if running on the ECMWF ATOS the mpi environment needs to be loaded before running callscm

# If OpenIFS and SCM built with intel compiler use 
module load prgenv/intel
module load intel-mpi
# if OpenIFS and SCM built with gnu compiler use
module load prgenv/gnu
module load gcc/11.2.0
module load openmpi/4.1.1.1

If the appropriate modules are not loaded, the SCM fails to run and outputs an MPI error.

callscm  (with defaults, i.e. no arguments) will run the DYCOMS case with the SCM and create an output directory in $SCM_RUNDIR/scmout_DYCOMS_ref-oifs-scm_450s , which contains the diagnostic output from the SCM. In addition, the file scm_run_log.txt will be created in $SCM_RUNDIR . This file contains the print output from the SCM, which is useful for checking all the sources and paths for a simulation. 

A user can change the defaults by using the available command-line options

callscm -h -c <case_name or list of case_names> -t <timestep or list of timesteps>
        -x <expt_name>
where :
-h is help which returns basic usage options and exits
-c case_name or list of case_names (space delimited) of the case study
   used for namelist and output directory. Default list is
   "DYCOMS BOMEX TWPICE" 
-t timestep or list of timesteps in seconds. The default is 450s. An
   example of a list is "1800 900 300" 
-x expt_name shortname to identify experiment. Default is ref-oifs-scm

 For example, if a user wanted to run the BOMEX case with timesteps of 1800 s and 900 s and an experiment name of "bomex_test", they would enter the following

$SCM_TEST/callscm -c BOMEX -t "1800 900" -x "bomex_test"

This command results in the following output directories $SCM_RUNDIR/scmout_BOMEX_bomex_test_900s  and scmout_BOMEX_bomex_test_1800s.

4. Example plotting script

Once the SCM has successfully, it will produce output in $SCM_RUNDIR/scmout_<casename>_<expt_name>_<timestep>, which contains some netcdf files. 

As part of the scm_openifs  download package we provide a python script $SCM_RUNDIR/plotscm.py , which can be used to plot some profiles at a certain time, 2-d time height plots and some scalar timeseries. This script will work without any changes for the DYCOMS case and the default settings of callscm by type the following

cd $SCM_RUNDIR
python3 plotscm.py

 For the defaults, the above will produce plot_DYCOMS  directory, which contains png plots

On ECMWF ATOS, it is necessary to load python3 before attempting to run plotscm.py, i.e., 

module load python3


To plot the other cases or experiments with different names and/or timesteps to the defaults, at present, the user will need to edit plotscm.py appropriately.