The Processing Chain is a python script that prepares necessary input data, submits compute-jobs to the Slurm queue of the supported HPC systems and does post-processing steps. It supports different types of models and simulation types, including COSMO, COSMO-GHG, COSMO-ART, ICON and ICON-ART. The chain can flexibly be adapted according to your needs, e.g., by creating your own case or adding new jobs.
The Processing Chain uses a pip virtual environment at <repo_root>/.venv.
See the
full documentation
for step-by-step instructions.
Note:
cdoandncoare not available via pip. On HPC systems, load them via the module system first (see machine-specific setup below).
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtReady-made scripts under machines/ load system software and activate the
environment in one step.
Euler (ETH Zürich)
# 1. Load system modules
source machines/euler/modules.sh
# 2. Create the environment (once)
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtAfterwards, activate everything in one step:
# Load system modules only (e.g. in job scripts):
source machines/euler/modules.sh
# Modules + venv activation (interactive sessions):
source machines/euler/setup_env.shSantis (CSCS)
On Santis, uenv start spawns a new shell and cannot be sourced; use the
wrapper instead:
# One-stop interactive setup (uenv + venv):
bash machines/santis/setup_env.sh
# Or start the uenv manually:
uenv start climtools/25.2:v1 --view=climtools
# Run a single command without an interactive shell:
uenv run climtools/25.2:v1 --view=climtools -- ./run_chain.py <casename>See machines/ for the structure to follow when adding other machines.
To activate your environment, type:
source .venv/bin/activate
To test if your environment has been successfully set, use the command line help to display the available arguments for the main script:
./run_chain.py -h
To run the test cases with their standard jobs, please ensure
that you clone the Processing Chain to $SCRATCH, as input and
output data are stored in subdirectories of the Processing Chain repository
itself.
Note: For your own setups, you can use the Processing Chain on a backed-up file system like
/projector/store. In that case, adapt the configuration fileconfig.yamlin your case folder so that the output files are written to a specified folder on$SCRATCH.
For the pre-defined test cases, you can use the driver script
./testing/run_tests.sh
This script calls the other scripts in testing/scripts/ and will:
- create the Python virtual environment
- stage the input data for
icon-test-euler - test the
icon-test-eulercase
icon-test-euler reads its grid, extpar and ERA5 files from
/cluster/work/climate/icon_input/processing-chain/icon-test-euler
testing/scripts/stage_icon-test-euler_input.sh copies them there from
their sources on Euler; it only has to run once per system. The other test
cases still use the input archive, fetched by
./testing/scripts/get_data.sh.
The ICON executable is not built by the Processing Chain. On Euler a pre-built one is provided at
/cluster/work/climate/icon_input/icon-model/release-2026.04-public/bin/icon
and referenced from the case configuration via icon.binary_file. Point
that key at your own build if you need a different version.
To run the test cases manually, type:
# replace <casename> with one of the above tests
./run_chain.py <casename>
For more information about the file structure, configuration options, namelist templates etc., please read the official documentation.
If you think your (well-documented) developments might also be useful to others, we encourage you to create a pull request for this repository.
The Processing Chain was originally developed in 2018 at Empa by the Atmospheric Modeling and Remote Sensing group. The following persons contributed significantly to the initial development (in alphabetic order):
- Pavle Arsenovic
- Dominik Brunner
- Jean-Matthieu Haussaire
- Gerrit Kuhlmann
- Qing Mu
- David Ochsner
- Michael Steiner
Since 2021, the code is public and hosted by C2SM. More information can be found at the C2SM User Landing Page. The current code owner is Michael Jähn (michael.jaehn@c2sm.ethz.ch).