Skip to Content
InstallationDependencies

Dependencies

Building SurfATT from source requires a C++/Fortran toolchain, MPI, HDF5, Eigen, and CMake. Conda, Homebrew, and the Linux system package managers below are alternative ways to install these dependencies.

This page is only needed if you are building SurfATT from source. If you just want to run SurfATT, use the package install instead.

Required software

DependencyMinimum versionRecommended versionPurpose
CMake3.183.25 or newerConfigure the build
C++ compilerGCC 13 / Clang 14GCC 14 / Clang 17Compile the C++17 source
Fortran compilerGFortran 10GFortran 12 or newerCompile Fortran routines
MPI3.0Open MPI 4 or newerParallel execution
HDF51.101.14 or newerModel and data I/O
Eigen33.43.4 or newerLinear algebra
GitCurrent stable releaseCurrent stable releaseClone SurfATT and its submodules

SurfATT can use system installations of yaml-cpp and spdlog. If CMake cannot find them, the copies included with the source tree are used instead.

Install the dependencies

Choose one method below. Avoid mixing compilers, MPI, and HDF5 libraries from different package managers in the same build directory.

Conda is useful when you want an isolated and reproducible toolchain.

For Conda users:

conda create -n surfatt -c conda-forge -y cxx-compiler fortran-compiler cmake make openmpi hdf5 eigen yaml-cpp spdlog conda activate surfatt
mamba create -n surfatt -y cxx-compiler fortran-compiler cmake make openmpi hdf5 eigen yaml-cpp spdlog mamba activate surfatt

This installs SurfATT’s dependencies only. You will compile SurfATT in the next step. On an HPC system, prefer the MPI implementation provided by the cluster.

Verify the toolchain

Check that the build tools and MPI compiler wrapper are visible:

cmake --version mpicxx --version gfortran --version

Continue with Build on a Local Machine, or use Build on an HPC System on a managed cluster.

Last updated on