External Libraries¶
Cleo depends upon Kokkos and YAC and may depend upon some additional external libraries
such as yaml-cpp or CVODE depending on your setup.
YAC¶
YAC is required if Cleo couples to dynamics using YAC and/or uses MPI domain decompoisiton. You can find more information about it from its documentation.
To build Cleo with dependency on YAC, you will first need to install YAXT and YAC manually. (YAXT is a dependency of YAC.)
How to Install YAC (and YAXT)¶
To help install YAXT and YAC, we have created bash scripts for installation on
DKRZ’s Levante HPC or on a generic/arbitrary, so-called “vanilla”, computer in
scripts/levante/bash/ and scripts/vanilla/bash/ respectively. First you need to ensure
your python version has pip installed first, e.g. with uv via
$ uv run python -m ensurepip --upgrade
Then to use install_yac.sh you will need to provide the path to the directory where you want
to put the installations, as well as the compiler type (e.g. intel or gcc), and the python
interpreter you want to use for YAC’s python bindings.
E.g. On Levante
for intel:
$ mkdir -p /work/mh0731/m300950/yacyaxt/intel/
$ scripts/levante/bash/install_yac.sh /work/mh0731/m300950/yacyaxt/intel/ intel /home/m/m300950/CLEO/.venv/bin/python3
for gcc:
$ mkdir -p /work/mh0731/m300950/yacyaxt/gcc/
$ scripts/levante/bash/install_yac.sh /work/mh0731/m300950/yacyaxt/gcc/ gcc /home/m/m300950/CLEO/.venv/bin/python3
E.g. On “vanilla” computer
(With a gcc compiler:) First you may need to edit the paths to certain packages
in scripts/vanilla/bash/vanilla_packages.sh to match your system setup. You may also need to install YAC/YAXT’s
dependencies, as described in YAC’s documentation
Then you should be able to run:
$ scripts/vanilla/bash/install_yac.sh ${CLEO_YACYAXTROOT} gcc ${CLEO_PYTHON}
Alternatively you can download YAXT and YAC as compressed files and then configure and compile them yourself.
Kokkos¶
All builds of Cleo require Kokkos in order to implement thread parallelism. You can read more about how we use Kokkos on our page about Kokkos.
The Kokkos libaries for Cleo are automatically built using CMAKE and compiled if required.
yaml-cpp¶
Cleo’s configuration library depends on the `yaml-cpp` package to read and write YAML files. You
can find more information about it from the yaml-cpp repository:.
The yaml-cpp library for Cleo is automatically built using CMAKE and compiled if required.
CVODE¶
Cleo’s coupldyn_cvode library requires the SUNDIALS CVODE package. You can find more information
about it from its webpage:.
The CVODE libraries for Cleo are automatically built using CMAKE and compiled if required.
pybind11¶
Cleo’s cleo_python_bindings library requires pybind11 to create python binding for selected parts of Cleo’s
libraries. You can find more information about it from the pybind11 repository:.
Using python bindings with python version >= 3.14
CLEO’s python bindings may not work with python versions higher than 3.13.*. One way
to ensure you have a reasonable version of python for the bindings is to change the python
requirement to requires-python=">=3.13,<3.14" in the cleopy pyproject.toml and then
update your python environment, e.g. with uv sync --extra examples --extra yac
The pybind11 library for Cleo is automatically built using CMAKE and compiled if required.
Note: you can avoid making Cleo’s python bindings, and thereby avoid the pybind11
dependency on your build, by passing a non-empty “CLEO_NO_PYBINDINGS” flag to
cmake. E.g. cmake [...] -DCLEO_NO_PYBINDINGS=true