From bb9753998f8f44326c76739dbe939459709631f5 Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Tue, 28 Oct 2025 14:46:37 +0100 Subject: [PATCH 01/25] Update list of dependencies --- .../installation-source-dependencies.md | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/content/docs/installation/building-from-source/installation-source-dependencies.md b/content/docs/installation/building-from-source/installation-source-dependencies.md index c55ed075a95..39ae653dd9d 100644 --- a/content/docs/installation/building-from-source/installation-source-dependencies.md +++ b/content/docs/installation/building-from-source/installation-source-dependencies.md @@ -28,32 +28,32 @@ If you find a problem with preCICE and a latest versions of these dependencies, #### Required dependencies -| preCICE | {{ site.precice_version }} | -| [C++ compiler](#c-compiler) | C++14 | -| [CMake](#cmake) | >= 3.16.1 | -| [Eigen](#eigen) | >= 3.3.7 | -| [Boost](#boost) | >= 1.71.0 | -| [libxml2](#libxml2) | >= 2 | +| preCICE | {{ site.precice_version }} | Available | +| [C++ compiler](#c-compiler) | C++17 | [![c++ standard](https://img.shields.io/badge/c%2B%2B-17-blue.svg)](https://cppreference.com/w/cpp/compiler_support/17.html) | +| [CMake](#cmake) | >= 3.22.1 | [![Repology - CMake](https://img.shields.io/repology/repositories/cmake)](https://repology.org/project/cmake/versions) | +| [Eigen](#eigen) | >= 3.4.0 | [![Repology - Eigen](https://img.shields.io/repology/repositories/eigen)](https://repology.org/project/eigen/versions) | +| [Boost](#boost) | >= 1.74.0 | [![Repology - Boost](https://img.shields.io/repology/repositories/boost)](https://repology.org/project/boost/versions) | +| [libxml2](#libxml2) | >= 2 | [![Repology - libxml2](https://img.shields.io/repology/repositories/libxml2)](https://repology.org/project/libxml2/versions) | + +Note that more recent versions of some dependencies (e.g., Boost) might also need more recent or upcoming releases of preCICE. #### Required optional dependencies -| preCICE | {{ site.precice_version }} | -| [MPI](#mpi) | implementation of MPI-3 | -| [PETSc](#petsc) | >= 3.12 | -| [Python](#python) | >= 3 | -| [Ginkgo](#ginkgo) | >= 1.8 with Kokkos >= 4.1 | +| preCICE | {{ site.precice_version }} | Available | +| [MPI](#mpi) | implementation of MPI-3 | | +| [PETSc](#petsc) | >= 3.15 | [![Repology - PETSc](https://img.shields.io/repology/repositories/petsc)](https://repology.org/project/petsc/versions) | +| [Python](#python) | >= 3 | [![Repology - Python](https://img.shields.io/repology/repositories/python)](https://repology.org/project/python/versions) | +| [Ginkgo](#ginkgo) | >= 1.8 with Kokkos >= 4.1 | [![Repology - Ginkgo](https://img.shields.io/repology/repositories/ginkgo-linear-algebra)](https://repology.org/project/ginkgo-linear-algebra/versions) | ### C++ compiler -preCICE requires a [C++ compiler with full C++14 support](https://en.cppreference.com/w/cpp/compiler_support#cpp14). +preCICE requires a [C++ compiler with full C++17 support](https://cppreference.com/w/cpp/compiler_support/17.html). The following table lists the minimal requirement for compiler versions: | Toolchain | Minimal Version | Note | -| GCC | `5` | | -| Intel | `17` | also requires GCC `5` | -| Cray | `8.6` | also requires GCC `5` | -| Clang | `3.4`| | -| MSVC | `19.10` | _For future reference_ | +| GCC | 7 | | +| Intel | all | Classic: v19, OneAPI: all | +| Clang | 14 | | If you are using Debian/Ubuntu, the `build-essential` package will install everything needed. From 2230cb3a59e2581c24b7512e04177f3bc519ac8e Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Sat, 3 Jan 2026 17:32:06 +0100 Subject: [PATCH 02/25] Add a tip about preCICE version, previous versions, and upgrade guides --- .../installation-source-dependencies.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/content/docs/installation/building-from-source/installation-source-dependencies.md b/content/docs/installation/building-from-source/installation-source-dependencies.md index 39ae653dd9d..c59243ee84c 100644 --- a/content/docs/installation/building-from-source/installation-source-dependencies.md +++ b/content/docs/installation/building-from-source/installation-source-dependencies.md @@ -20,15 +20,20 @@ This section lists all dependencies alongside required versions and steps on how Meaning, installing dependencies based on the steps in this section should be the _last resort_ for normal users. Prefer to follow the [system guides](#system-guides) and only install custom versions if you have a reason to do so. +{% tip %} +This documentation concerns preCICE v{{ site.precice_version }}. +Read about [previous versions](fundamentals-previous-versions.html) or [how to upgrade](http://127.0.0.1:4000/couple-your-code-porting-overview.html). +{% endtip %} + ### Overview -The following is an overview of the required dependencies of the latest preCICE release. +The following is an overview of the required dependencies of preCICE. Note that we always strive to be forwards-compatible. If you find a problem with preCICE and a latest versions of these dependencies, please let us know. #### Required dependencies -| preCICE | {{ site.precice_version }} | Available | +| Dependency | Version | Availability | | [C++ compiler](#c-compiler) | C++17 | [![c++ standard](https://img.shields.io/badge/c%2B%2B-17-blue.svg)](https://cppreference.com/w/cpp/compiler_support/17.html) | | [CMake](#cmake) | >= 3.22.1 | [![Repology - CMake](https://img.shields.io/repology/repositories/cmake)](https://repology.org/project/cmake/versions) | | [Eigen](#eigen) | >= 3.4.0 | [![Repology - Eigen](https://img.shields.io/repology/repositories/eigen)](https://repology.org/project/eigen/versions) | @@ -39,7 +44,7 @@ Note that more recent versions of some dependencies (e.g., Boost) might also nee #### Required optional dependencies -| preCICE | {{ site.precice_version }} | Available | +| Dependency | Version | Availability | | [MPI](#mpi) | implementation of MPI-3 | | | [PETSc](#petsc) | >= 3.15 | [![Repology - PETSc](https://img.shields.io/repology/repositories/petsc)](https://repology.org/project/petsc/versions) | | [Python](#python) | >= 3 | [![Repology - Python](https://img.shields.io/repology/repositories/python)](https://repology.org/project/python/versions) | From b505acb444826888485503d7148bcf463df2fd8c Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Sat, 3 Jan 2026 17:44:45 +0100 Subject: [PATCH 03/25] Add link to MPI implementations Wikipedia page --- .../building-from-source/installation-source-dependencies.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/docs/installation/building-from-source/installation-source-dependencies.md b/content/docs/installation/building-from-source/installation-source-dependencies.md index c59243ee84c..f6d3ceb11a2 100644 --- a/content/docs/installation/building-from-source/installation-source-dependencies.md +++ b/content/docs/installation/building-from-source/installation-source-dependencies.md @@ -34,7 +34,7 @@ If you find a problem with preCICE and a latest versions of these dependencies, #### Required dependencies | Dependency | Version | Availability | -| [C++ compiler](#c-compiler) | C++17 | [![c++ standard](https://img.shields.io/badge/c%2B%2B-17-blue.svg)](https://cppreference.com/w/cpp/compiler_support/17.html) | +| [C++ compiler](#c-compiler) | C++17 | [C++17 compiler support](https://cppreference.com/w/cpp/compiler_support/17.html) | | [CMake](#cmake) | >= 3.22.1 | [![Repology - CMake](https://img.shields.io/repology/repositories/cmake)](https://repology.org/project/cmake/versions) | | [Eigen](#eigen) | >= 3.4.0 | [![Repology - Eigen](https://img.shields.io/repology/repositories/eigen)](https://repology.org/project/eigen/versions) | | [Boost](#boost) | >= 1.74.0 | [![Repology - Boost](https://img.shields.io/repology/repositories/boost)](https://repology.org/project/boost/versions) | @@ -45,7 +45,7 @@ Note that more recent versions of some dependencies (e.g., Boost) might also nee #### Required optional dependencies | Dependency | Version | Availability | -| [MPI](#mpi) | implementation of MPI-3 | | +| [MPI](#mpi) | implementation of MPI-3 | Various [implementations](https://en.wikipedia.org/wiki/Message_Passing_Interface#Official_implementations) | | [PETSc](#petsc) | >= 3.15 | [![Repology - PETSc](https://img.shields.io/repology/repositories/petsc)](https://repology.org/project/petsc/versions) | | [Python](#python) | >= 3 | [![Repology - Python](https://img.shields.io/repology/repositories/python)](https://repology.org/project/python/versions) | | [Ginkgo](#ginkgo) | >= 1.8 with Kokkos >= 4.1 | [![Repology - Ginkgo](https://img.shields.io/repology/repositories/ginkgo-linear-algebra)](https://repology.org/project/ginkgo-linear-algebra/versions) | From 248789ce0fe66766682309d4a2eb445226a0a6b9 Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Sun, 4 Jan 2026 00:22:50 +0100 Subject: [PATCH 04/25] Update dependency sections - Update with current requirement - Add historical table or pivot and update existing one - Link to the documentation pages of the optional features --- .../installation-source-dependencies.md | 145 +++++++++++------- 1 file changed, 87 insertions(+), 58 deletions(-) diff --git a/content/docs/installation/building-from-source/installation-source-dependencies.md b/content/docs/installation/building-from-source/installation-source-dependencies.md index f6d3ceb11a2..abffbce3420 100644 --- a/content/docs/installation/building-from-source/installation-source-dependencies.md +++ b/content/docs/installation/building-from-source/installation-source-dependencies.md @@ -34,6 +34,7 @@ If you find a problem with preCICE and a latest versions of these dependencies, #### Required dependencies | Dependency | Version | Availability | +| --- | --- | --- | | [C++ compiler](#c-compiler) | C++17 | [C++17 compiler support](https://cppreference.com/w/cpp/compiler_support/17.html) | | [CMake](#cmake) | >= 3.22.1 | [![Repology - CMake](https://img.shields.io/repology/repositories/cmake)](https://repology.org/project/cmake/versions) | | [Eigen](#eigen) | >= 3.4.0 | [![Repology - Eigen](https://img.shields.io/repology/repositories/eigen)](https://repology.org/project/eigen/versions) | @@ -45,6 +46,7 @@ Note that more recent versions of some dependencies (e.g., Boost) might also nee #### Required optional dependencies | Dependency | Version | Availability | +| --- | --- | --- | | [MPI](#mpi) | implementation of MPI-3 | Various [implementations](https://en.wikipedia.org/wiki/Message_Passing_Interface#Official_implementations) | | [PETSc](#petsc) | >= 3.15 | [![Repology - PETSc](https://img.shields.io/repology/repositories/petsc)](https://repology.org/project/petsc/versions) | | [Python](#python) | >= 3 | [![Repology - Python](https://img.shields.io/repology/repositories/python)](https://repology.org/project/python/versions) | @@ -55,10 +57,11 @@ Note that more recent versions of some dependencies (e.g., Boost) might also nee preCICE requires a [C++ compiler with full C++17 support](https://cppreference.com/w/cpp/compiler_support/17.html). The following table lists the minimal requirement for compiler versions: -| Toolchain | Minimal Version | Note | -| GCC | 7 | | -| Intel | all | Classic: v19, OneAPI: all | -| Clang | 14 | | +| Toolchain | Version | Notes | +| --- | --- | --- | +| GCC | min 7 | | +| Intel | all | Classic: v19, OneAPI: all | +| Clang | min 14 | | If you are using Debian/Ubuntu, the `build-essential` package will install everything needed. @@ -68,15 +71,20 @@ Check the section on [MPI](#mpi) for more information.j ### CMake -| preCICE | | 1.4 | 2.4 | -| Required | 3.5 | 3.10.2 | 3.16.3 | - -preCICE requires the build system CMake at a minimal version of `3.16.1`. +preCICE requires the build system CMake at a minimal version of `3.22.1` (CMake 4 also works). You can check your CMake version using `cmake --version`. Depending on the versions of CMake and Boost, CMake may not find all libraries in boost and display warnings when configuring preCICE. -This can be safely ignored as preCICE does not use problematic libraries. -[Fixing this requires to upgrade CMake.](https://stackoverflow.com/a/42124857/5158031). +This can be safely ignored, and can be [fixed by upgrading CMake](https://stackoverflow.com/a/42124857/5158031). + +History of required version: + +| preCICE | CMake | +| --- | --- | +| 1.4.0 | min 3.10.2 | +| 2.4.0 | min 3.16.3 | +| 3.2.0 | min 3.22.1 | +| 3.3.0 | as above | #### Download CMake binaries @@ -84,24 +92,29 @@ Download the [official binaries](https://cmake.org/download/#latest) for your pl Then extend the path environment variable by executing the following: ```bash -export PATH=$PATH:/path/to/extracted/location/version/bin +export PATH="$PATH:/path/to/extracted/location/version/bin" cmake --version ``` -This should now display the version of the latest release. -If the version is correct, you can make this change persistent by appending the above export statement to your `.bashrc` or similar. +This should now display the version of the downloaded release. +If the version is correct, you can make this change persistent by appending the above export statement to your `.bashrc`. ### Eigen -| preCICE | | 1.5 | -| Required | 3.2 | 3.3.7 | +preCICE uses [Eigen](http://eigen.tuxfamily.org/) for linear algebra computations and for a version of [global RBF mappings](configuration-mapping.html#execution-backends) which does not require PETSc. -preCICE uses [Eigen](http://eigen.tuxfamily.org/) for linear algebra computations and for a version of RBF mappings which does not require PETSc. +History of required version: + +| preCICE | Eigen | +| --- | --- | +| older | min 3.2.0 | +| 1.5.0 | min 3.3.7 | +| 3.3.0 | min 3.4.0 | #### Download the Eigen headers Eigen is a header-only library, i.e. it is compiled into preCICE and does not require linkage. -Download the sources from their [latest release](https://gitlab.com/libeigen/eigen/-/releases/) and extract them to some location. +Download the sources from their [latest compatible release](https://gitlab.com/libeigen/eigen/-/releases/) and extract them to some location. The folder of your choice should now contain a folder called `eigen-x.y.z` for version `x.y.z`. Set the environment variable `Eigen3_ROOT` to the `eigen-x.y.z` folder by adding this to your `~.bashrc`. @@ -112,12 +125,7 @@ export Eigen3_ROOT=/path/to/eigen/eigen-x.y.z ### Boost preCICE uses [Boost](http://www.boost.org/) for several features. -Boost 1.67 and newer, it may complicate how you install adapters that use yaml-cpp. -Note that users have experienced problems building Boost 1.68 and 1.69 with some compilers. - -| preCICE | | 1.4.0 | 2.0.2 | 2.1.1 | 2.3.0 | 2.4.0 | -| Required | 1.60.0 | 1.65.1 | <- | <- | <- | 1.71.0 | -| Incompatible | 1.72.0 | <- | <- | 1.74.0 | 1.78.0 | None | +The minimum required version is 1.74.0, but newer Boost versions are not always compatible to previous ones. You might save some time and space by installing only the necessary libraries: @@ -131,7 +139,23 @@ You might save some time and space by installing only the necessary libraries: These libraries may also depend on other Boost libraries. Make sure that these get installed, too. -The following header-only Boost libraries are also needed: 'asio', `vmd`, `geometry`, `signals2`, `container`, `ranges`. +The following header-only Boost libraries are also needed: `asio`, `vmd`, `geometry`, `signals2`, `container`, `ranges`. + +History of required versions: + +| preCICE | Boost required | Boost incompatible | +| --- | --- | --- | +| older | 1.60.0 | 1.72.0 | +| 1.4.0 | 1.65.1 | as above | +| 2.0.2 | as above | as above | +| 2.1.1 | as above | 1.74.0 | +| 2.3.0 | as above | 1.78.0 | +| 2.4.0 | 1.71.0 | as above | +| 3.1.2 | as above | 1.86.0 | +| 3.2.0 | 1.74.0 | 1.89.0 | +| 3.3.0 | 1.74.0 | none known yet | + +For help, see also the ranges set in the [Spack recipe](https://github.com/spack/spack-packages/blob/develop/repos/spack_repo/builtin/packages/precice/package.py). #### Build boost from source @@ -170,10 +194,10 @@ For more information, please refer to the "[Getting Started](http://www.boost.or preCICE uses [libxml2](http://www.xmlsoft.org/) for parsing the configuration file. -{% note %} +{% tip %} libxml2 is available on close to any system you can imagine. -Please double check if there are no system packages before attempting to build this dependency from source. -{% endnote %} +Double check if there are any system packages before attempting to build this dependency from source. +{% endtip %} #### Install libxml2 from source @@ -192,21 +216,24 @@ Please double check if there are no system packages before attempting to build t Add the following to your `~/.bashrc` replacing prefix with the chosen directory: ```bash - export LIBRARY_PATH=/lib:$LIBRARY_PATH - export LD_LIBRARY_PATH=/lib:$LD_LIBRARY_PATH - export CPLUS_INCLUDE_PATH=/include:$CPLUS_INCLUDE_PATH - export PKG_CONFIG_PATH=/lib/pkgconfig:$PKG_CONFIG_PATH + export LIBRARY_PATH="/lib:$LIBRARY_PATH" + export LD_LIBRARY_PATH="/lib:$LD_LIBRARY_PATH" + export CPLUS_INCLUDE_PATH="/include:$CPLUS_INCLUDE_PATH" + export PKG_CONFIG_PATH="/lib/pkgconfig:$PKG_CONFIG_PATH" ``` ### PETSc -| preCICE | | 2.1.0 | -| Required | 3.6 | 3.12 | -| Incompatible | 3.12 | <- | +preCICE optionally uses [PETSc](https://petsc.org/) (at least 3.15) for some [global RBF mappings](configuration-mapping.html#execution-backends) and is highly recommended for large cases. For small/medium-size cases, preCICE can still do a global RBF mapping in parallel without PETSc. If you don't need this feature, you may specify `-DPRECICE_FEATURE_PETSC_MAPPING=off` when building preCICE. -[PETSc](https://www.mcs.anl.gov/petsc/) is used for RBF mappings and is highly recommended for large cases. For small/medium-size cases, preCICE can still do an RBF mapping in parallel without PETSc. If you don't need this feature, you may specify `-DPRECICE_FEATURE_PETSC_MAPPING=off` when building preCICE. +History of required versions: -We require at least version 3.12. For preCICE versions earlier than v2.1.0, PETSc version between 3.6 and 3.12 might still work, but needs to be built with 64bit index sizes. In particular on [Ubuntu 18.04, we require at least 3.12](https://github.com/precice/precice/issues/115). +| preCICE | PETSc required | PETSc incompatible | +| --- | --- | --- | +| older | 3.6.0 (with 64bit indices) | 3.12.0 | +| 2.1.0 | 3.12.0 | none known yet | +| 3.2.0 | 3.15.0 | as above | +| 3.3.0 | as above | as above | #### Build PETSc from source @@ -222,34 +249,33 @@ If you prefer to install the most recent version from source, do the following: Finally, in some cases you may need to have PETSc in your `CPATH`, `LIBRARY_PATH`, or `PYTHONPATH`. Here is an example: ```bash - export PETSC_DIR=/path/to/petsc - export PETSC_ARCH=arch-linux-c-opt - export LD_LIBRARY_PATH=$PETSC_DIR/$PETSC_ARCH/lib:$LD_LIBRARY_PATH + export PETSC_DIR="/path/to/petsc" + export PETSC_ARCH="arch-linux-c-opt" + export LD_LIBRARY_PATH="$PETSC_DIR/$PETSC_ARCH/lib:$LD_LIBRARY_PATH" ``` ### Python -| preCICE | | 2.0.0 | -| Required libypthon | 2.7 | 3 | -| Incompatible libypthon | 2.8 | None | -| Required NumPy | | 1.17 | -| Incompatible NumPy | 1.17 | None | - -You only need [Python](https://www.python.org/) if you want to use the Python action interface (only used for rare applications). If you don't need this feature, you may specify `-DPRECICE_FEATURE_PYTHON_ACTIONS=off`. +preCICE optionally uses [Python](https://www.python.org/) for the [Python action interface](configuration-action.html#python-callback-interface) (only used for rare applications). If you don't need this feature, you may specify `-DPRECICE_FEATURE_PYTHON_ACTIONS=off`. In particular, you don't need to build with Python if you only want to use the [preCICE Python bindings](installation-bindings-python.html). -You probably already have Python installed. However, in order to use the Python interface, you also need to install NumPy and the header files for Python and NumPy. On Debian/Ubuntu, install the packages `python3-numpy` and `python3-dev`. +You probably already have Python installed. However, in order to use the Python action interface, you also need to install NumPy and the header files for Python and NumPy. -### MPI +History of required versions: -preCICE requires an implementation of the MPI-3 specification, which is provided by all major vendors including OpenMPI, MPICH, and Intel MPI. +| preCICE | Python required | Python incompatible | NumPy required | NumPy incompatible | +| --- | --- | --- | --- | --- | +| older | 2.7 | 2.8 | not defined | 1.17 | +| 2.0.0 | 3 | None known yet | 1.17 | None known yet | +| 3.3.0 | same as above | same as above | same as above | same as above | -You can build preCICE without [MPI](https://en.wikipedia.org/wiki/Message_Passing_Interface#Official_implementations) in case of compatibility issues with a certain solver (e.g. a closed source solver with a binary-distributed MPI version, or when running on Windows). To do so, use `-DPRECICE_FEATURE_MPI_COMMUNICATION=OFF` when building with CMake. In such a case, you can still use TCP/IP sockets instead. This might, however, result in lower performance and is, therefore, not recommended if not necessary. +### MPI -Please note that many MPI implementations implement the client-server functionality in various ways. -They often require special setup such as environment variables, servers or infrastructure setup. +preCICE optionally requires an implementation of the MPI-3 specification for [communication](configuration-communication.html), which is [provided by all major vendors](https://en.wikipedia.org/wiki/Message_Passing_Interface#Official_implementations) including OpenMPI, MPICH, and Intel MPI. -Keep in mind that already [PETSc](installation-source-dependencies.html#petsc) should have installed MPI. +You can build preCICE without MPI in case of compatibility issues with a certain solver (e.g. a closed source solver with a binary-distributed MPI version, or when running on Windows). To do so, use `-DPRECICE_FEATURE_MPI_COMMUNICATION=OFF`. In such a case, you can still use TCP/IP sockets for inter- and intra-participant communication, instead. This might, however, result in lower performance and is, therefore, not recommended if not necessary. + +Keep in mind that, if you already installed [PETSc](installation-source-dependencies.html#petsc), MPI must also already be installed. {% important %} Make sure that PETSc, preCICE, and your solvers are all compiled with the same MPI version! @@ -257,14 +283,17 @@ Make sure that PETSc, preCICE, and your solvers are all compiled with the same M ### Ginkgo -| preCICE | 3.2.0 >= | -| Required Ginkgo | 1.8.0 >= | -| Required Kokkos | 4.1.0 >= | - -[Ginkgo](https://ginkgo-project.github.io/) enables support for GPU- and OpenMP-accelerated (global) radial-basis function mappings. To enable the feature in preCICE, use the CMake option `-DPRECICE_FEATURE_GINKGO_MAPPING=ON`. Using this feature in preCICE requires additionally [Kokkos](https://kokkos.org/). +preCICE optionally uses [Ginkgo](https://ginkgo-project.github.io/) for GPU- and OpenMP-accelerated [global radial-basis function mappings](configuration-mapping.html#execution-backends). To enable the feature in preCICE, use the CMake option `-DPRECICE_FEATURE_GINKGO_MAPPING=ON`. Using this feature in preCICE requires additionally [Kokkos](https://kokkos.org/). Both packages follow the usual CMake build instructions and can be downloaded on the GitHub release page for [Ginkgo](https://github.com/ginkgo-project/ginkgo/releases) and [Kokkos](https://github.com/kokkos/kokkos/releases). For Kokkos, system packages might be available through your package manager as well. +History of required versions: + +| preCICE | Ginkgo required | Kokkos required | +| --- | --- | --- | +| 3.2.0 | 1.8.0 | 4.1.0 | +| 3.3.0 | same as above | same as above | + ## System guides If you want build preCICE on your own computer and you are using one of the following Linux distributions, we provide a summary here to quickly install everything you need. If everything works, you may ignore the rest of this page. From 8e4bf913236411fb6089c530d4d044847bdd41d8 Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Sun, 4 Jan 2026 00:32:12 +0100 Subject: [PATCH 05/25] Restructure sections --- .../installation-source-dependencies.md | 44 +++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/content/docs/installation/building-from-source/installation-source-dependencies.md b/content/docs/installation/building-from-source/installation-source-dependencies.md index abffbce3420..38b54c3b5cf 100644 --- a/content/docs/installation/building-from-source/installation-source-dependencies.md +++ b/content/docs/installation/building-from-source/installation-source-dependencies.md @@ -12,28 +12,17 @@ Start by checking if there is a [guide for your system](#system-guides). It will If there is no guide for your system, find out if there are suitable system packages for the dependencies. Then use the [dependencies](#dependencies) section to install all missing dependencies from source. -After all dependencies are ready to use, proceed with [configuring preCICE](installation-source-configuration). +After all dependencies are ready to use, proceed with [configuring the preCICE build](installation-source-configuration). -## Dependencies - -This section lists all dependencies alongside required versions and steps on how to install them from source. -Meaning, installing dependencies based on the steps in this section should be the _last resort_ for normal users. -Prefer to follow the [system guides](#system-guides) and only install custom versions if you have a reason to do so. - -{% tip %} -This documentation concerns preCICE v{{ site.precice_version }}. -Read about [previous versions](fundamentals-previous-versions.html) or [how to upgrade](http://127.0.0.1:4000/couple-your-code-porting-overview.html). -{% endtip %} - -### Overview +## Overview The following is an overview of the required dependencies of preCICE. Note that we always strive to be forwards-compatible. If you find a problem with preCICE and a latest versions of these dependencies, please let us know. -#### Required dependencies +### Required dependencies -| Dependency | Version | Availability | +| Dependency | Version required | Availability | | --- | --- | --- | | [C++ compiler](#c-compiler) | C++17 | [C++17 compiler support](https://cppreference.com/w/cpp/compiler_support/17.html) | | [CMake](#cmake) | >= 3.22.1 | [![Repology - CMake](https://img.shields.io/repology/repositories/cmake)](https://repology.org/project/cmake/versions) | @@ -43,14 +32,25 @@ If you find a problem with preCICE and a latest versions of these dependencies, Note that more recent versions of some dependencies (e.g., Boost) might also need more recent or upcoming releases of preCICE. -#### Required optional dependencies +### Optional dependencies -| Dependency | Version | Availability | -| --- | --- | --- | -| [MPI](#mpi) | implementation of MPI-3 | Various [implementations](https://en.wikipedia.org/wiki/Message_Passing_Interface#Official_implementations) | -| [PETSc](#petsc) | >= 3.15 | [![Repology - PETSc](https://img.shields.io/repology/repositories/petsc)](https://repology.org/project/petsc/versions) | -| [Python](#python) | >= 3 | [![Repology - Python](https://img.shields.io/repology/repositories/python)](https://repology.org/project/python/versions) | -| [Ginkgo](#ginkgo) | >= 1.8 with Kokkos >= 4.1 | [![Repology - Ginkgo](https://img.shields.io/repology/repositories/ginkgo-linear-algebra)](https://repology.org/project/ginkgo-linear-algebra/versions) | +| Dependency | Required for | Version required | Availability | +| --- | --- | --- | --- | +| [MPI](#mpi) | [Communication over MPI](configuration-communication.html) | implementation of MPI-3 | Various [implementations](https://en.wikipedia.org/wiki/Message_Passing_Interface#Official_implementations) | +| [PETSc](#petsc) | [Some RBF mappings](configuration-mapping.html#execution-backends) | >= 3.15 | [![Repology - PETSc](https://img.shields.io/repology/repositories/petsc)](https://repology.org/project/petsc/versions) | +| [Ginkgo](#ginkgo) | [Some RBF mappings](configuration-mapping.html#execution-backends) | >= 1.8, with Kokkos >= 4.1 | [![Repology - Ginkgo](https://img.shields.io/repology/repositories/ginkgo-linear-algebra)](https://repology.org/project/ginkgo-linear-algebra/versions) | +| [Python](#python) | [Python Action interface](configuration-action.html#python-callback-interface) | >= 3 | [![Repology - Python](https://img.shields.io/repology/repositories/python)](https://repology.org/project/python/versions) | + +{% tip %} +This documentation concerns preCICE v{{ site.precice_version }}. +Read about [previous versions](fundamentals-previous-versions.html) or [how to upgrade](http://127.0.0.1:4000/couple-your-code-porting-overview.html). +{% endtip %} + +## Dependencies + +This section lists all dependencies alongside required versions and steps on how to install them from source. +Meaning, installing dependencies based on the steps in this section should be the _last resort_ for normal users. +Prefer to follow the [system guides](#system-guides) and only install custom versions if you have a reason to do so. ### C++ compiler From 5a8c173a4a6d13d8887da7abd0696a8d63cb478e Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Sun, 4 Jan 2026 00:39:24 +0100 Subject: [PATCH 06/25] Ubuntu guides: Remove 18.04, 20.04, add common section --- .../installation-source-dependencies.md | 40 ++----------------- 1 file changed, 3 insertions(+), 37 deletions(-) diff --git a/content/docs/installation/building-from-source/installation-source-dependencies.md b/content/docs/installation/building-from-source/installation-source-dependencies.md index 38b54c3b5cf..6c1aeca7eb6 100644 --- a/content/docs/installation/building-from-source/installation-source-dependencies.md +++ b/content/docs/installation/building-from-source/installation-source-dependencies.md @@ -300,37 +300,16 @@ If you want build preCICE on your own computer and you are using one of the foll Other modern versions of popular Linux distributions are also perfectly compatible, here we just list a few popular options. Since our users have tried preCICE on various distributions, you may as well ask on our [forum](https://precice.discourse.group/) for any questions. -### Ubuntu 22.04 LTS Jammy Jellyfish +### Ubuntu -With every release, we also ship [binary packages for Ubuntu 22.04](https://github.com/precice/precice/releases). However, if you still want to build from source, everything is available through the distribution's repositories: +With every release, we also ship [binary packages for Ubuntu](https://github.com/precice/precice/releases). However, if you still want to build from source, everything is available through the distribution's repositories: ```bash sudo apt update && \ sudo apt install build-essential cmake libeigen3-dev libxml2-dev libboost-all-dev petsc-dev python3-dev python3-numpy ``` -The same instructions apply for later Ubuntu releases. - -### Ubuntu 20.04 LTS Focal Fossa - -Follow the same instructions as for Ubuntu 22.04. - -### Ubuntu 18.04 Bionic Beaver - -{% warning %} -The last release of preCICE to support Ubuntu 18.04 was [preCICE v2.3.0](https://github.com/precice/precice/releases/tag/v2.3.0). -{% endwarning %} - -With every release, we also ship [binary packages for Ubuntu 18.04](https://github.com/precice/precice/releases). -However, if you still want to build from source, almost everything is available through the distribution's repositories: - -```bash -sudo apt update && \ -sudo apt install build-essential cmake libeigen3-dev libxml2-dev libboost-all-dev python3-dev python3-numpy -``` - -If you don't plan to use RBF mappings in large parallel cases you can continue without installing PETSc and build with `-DPRECICE_FEATURE_PETSC_MAPPING=OFF`. -If you need PETSc, follow the steps in the [PETSc](#petsc) section and you are done. +These instructions are known to work for Ubuntu 22.04, 24.04, and they should apply for later Ubuntu releases as well. ### Debian 11 Bullseye @@ -342,19 +321,6 @@ apt update && \ apt install build-essential cmake libeigen3-dev libxml2-dev libboost-all-dev petsc-dev python3-dev python3-numpy ``` -### Debian 10 Buster - -In Debian 10.5, almost everything is available through the distribution's repositories: - -```bash -su -apt update && \ -apt install build-essential cmake libeigen3-dev libxml2-dev libboost-all-dev python3-dev python3-numpy -``` - -If you don't plan to use RBF mappings in large parallel cases you can continue without installing PETSc and build with `-DPRECICE_FEATURE_PETSC_MAPPING=OFF`. -If you need PETSc, follow the steps in the [PETSc](#petsc) section and you are done. - ### Fedora 36 In Fedora, everything is available through the distribution's repositories: From abf331e273f4cbe55269a1cbf5309324aab4ce3b Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Sun, 4 Jan 2026 00:41:06 +0100 Subject: [PATCH 07/25] Common section for Debian --- .../building-from-source/installation-source-dependencies.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/docs/installation/building-from-source/installation-source-dependencies.md b/content/docs/installation/building-from-source/installation-source-dependencies.md index 6c1aeca7eb6..e525bab111a 100644 --- a/content/docs/installation/building-from-source/installation-source-dependencies.md +++ b/content/docs/installation/building-from-source/installation-source-dependencies.md @@ -311,9 +311,9 @@ sudo apt install build-essential cmake libeigen3-dev libxml2-dev libboost-all-de These instructions are known to work for Ubuntu 22.04, 24.04, and they should apply for later Ubuntu releases as well. -### Debian 11 Bullseye +### Debian -Everything is available from the distribution's repositories: +With every release, we also ship [binary packages for Debian](https://github.com/precice/precice/releases). However, if you still want to build from source, everything is available through the distribution's repositories: ```bash su From 99d16c42999e084efc45f5cbc827f83d11b24dc8 Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Sun, 4 Jan 2026 00:46:14 +0100 Subject: [PATCH 08/25] Remove guides for EOL CentOS 7 and 8 --- .../installation-source-dependencies.md | 85 ------------------- 1 file changed, 85 deletions(-) diff --git a/content/docs/installation/building-from-source/installation-source-dependencies.md b/content/docs/installation/building-from-source/installation-source-dependencies.md index e525bab111a..4de630d021a 100644 --- a/content/docs/installation/building-from-source/installation-source-dependencies.md +++ b/content/docs/installation/building-from-source/installation-source-dependencies.md @@ -372,91 +372,6 @@ Rocky Linux very closely follows the conventions previously set by CentOS. We fi 4. Unfortunately, [PETSc does not seem to be available in this distribution.](https://pkgs.org/search/?q=petsc), so we need to switch that off later when building preCICE. If you don't plan to use RBF mappings in large parallel cases, you can continue without installing PETSc and build preCICE with `-DPRECICE_FEATURE_PETSC_MAPPING=OFF`. If you need PETSc, follow the steps in the [PETSc](#petsc) section and you are done. -### CentOS 8 - -{% warning %} -The last release of preCICE to support CentOS 8 was [preCICE v2.3.0](https://github.com/precice/precice/releases/tag/v2.3.0). -{% endwarning %} - -(The same instructions apply also to Rocky Linux 8) - -This system requires to install some tools in a fixed order. - -1. First, make sure that a few common dependencies are installed. - You need to enable the [PowerTools](https://serverfault.com/questions/997896/how-to-enable-powertools-repository-in-centos-8) repository (for Eigen) and to - install the [Development Tools](https://serverfault.com/questions/814671/centos-how-do-i-check-if-development-tools-is-installed) group (compilers, Git, make, pkg-config, ...). - - ```bash - sudo dnf update - sudo dnf install dnf-plugins-core - sudo dnf groupinstall "Development Tools" - sudo dnf config-manager --set-enabled powertools - sudo dnf update - ``` - - Note that, instead of `dnf`, you can also type `yum` with the same options. -2. Then, install the available preCICE dependencies: - - ```bash - sudo dnf install cmake libxml2-devel boost-devel openmpi-devel eigen3-devel python3-devel - pip3 install --user numpy - ``` - -3. Before configuring & building preCICE, load MPI (you may need to log out and in again, if `module` is not found): - - ```bash - module load mpi/openmpi-x86_64 - ``` - -4. Unfortunately, the PETSc package (`petsc-openmpi-devel`) in this distribution is too old. If you don't plan to use RBF mappings in large parallel cases you can continue without installing PETSc, and build preCICE with `-DPRECICE_FEATURE_PETSC_MAPPING=OFF`. If you need PETSc, follow the steps in the [PETSc](#petsc) section and you are done. - -### CentOS 7 - -{% warning %} -The last release of preCICE to support CentOS 7 was [preCICE v2.3.0](https://github.com/precice/precice/releases/tag/v2.3.0). -{% endwarning %} - -This system requires to install some tools in a fixed order. - -1. First install the group 'Development Tools'. - - ```bash - sudo yum groupinstall 'Development Tools' - sudo yum update - ``` - -2. Then install available dependencies from the repositories: - - ```bash - sudo yum install cmake3 libxml2-devel eigen3 openmpi-devel python3-devel boost169-devel - ``` - -3. Then add the following to your `~./bashrc`: - - ```bash - export PATH=/usr/lib64/openmpi/bin:$PATH - export CC=/opt/rh/devtoolset-7/root/usr/bin/gcc - export BOOST_LIBRARYDIR=/usr/lib64/boost169/ - export BOOST_INCLUDEDIR=/usr/include/boost169/ - ``` - -4. Then install install a newer version of gcc using a software development package: - - ```bash - sudo yum install centos-release-scl - sudo yum install devtoolset-7 - ``` - - To enable the new gcc compiler in a terminal: - - ```bash - scl enable devtoolset-7 bash - ``` - -{% important %} -Use `cmake3` instead of `cmake` to configure preCICE! -{% endimportant %} - ### OpenSUSE Leap 15.4 In OpenSUSE Leap 15.4, things are a bit more complicated (please contribute in this section). Get the basic dependencies: From 75ed02dacccc3455018f2985da3aec541cc6acc5 Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Sun, 4 Jan 2026 01:05:13 +0100 Subject: [PATCH 09/25] System guides: Drop version from headings, add notes instead --- .../installation-source-dependencies.md | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/content/docs/installation/building-from-source/installation-source-dependencies.md b/content/docs/installation/building-from-source/installation-source-dependencies.md index 4de630d021a..adcdc2a290c 100644 --- a/content/docs/installation/building-from-source/installation-source-dependencies.md +++ b/content/docs/installation/building-from-source/installation-source-dependencies.md @@ -321,7 +321,9 @@ apt update && \ apt install build-essential cmake libeigen3-dev libxml2-dev libboost-all-dev petsc-dev python3-dev python3-numpy ``` -### Fedora 36 +These instructions are known to work with Debian 10, and should apply for later Debian releases as well. + +### Fedora In Fedora, everything is available through the distribution's repositories: @@ -346,7 +348,9 @@ In case you use the docker image of fedora, you need to install the support for If you don't plan to use RBF mappings in large parallel cases you can continue without installing PETSc and build with `-DPRECICE_FEATURE_PETSC_MAPPING=OFF`. You may need this with older preCICE and Fedora versions (e.g. preCICE v2.1 on Fedora 32 or earlier, see a [related issue](https://github.com/precice/precice/issues/864). -### Rocky Linux 9 +These instructions are known to work with Fedora 36, and should apply for later Fedora releases as well. + +### Rocky Linux Rocky Linux very closely follows the conventions previously set by CentOS. We first need to install common development tools, enable the [CRB repository](https://wiki.rockylinux.org/rocky/repo/) (only for Eigen), install the dependencies, load the MPI module, and continue with building preCICE. @@ -372,7 +376,9 @@ Rocky Linux very closely follows the conventions previously set by CentOS. We fi 4. Unfortunately, [PETSc does not seem to be available in this distribution.](https://pkgs.org/search/?q=petsc), so we need to switch that off later when building preCICE. If you don't plan to use RBF mappings in large parallel cases, you can continue without installing PETSc and build preCICE with `-DPRECICE_FEATURE_PETSC_MAPPING=OFF`. If you need PETSc, follow the steps in the [PETSc](#petsc) section and you are done. -### OpenSUSE Leap 15.4 +These instructions are known to work with Rocky Linux 9, and should apply for later Rocky releases as well. + +### OpenSUSE In OpenSUSE Leap 15.4, things are a bit more complicated (please contribute in this section). Get the basic dependencies: @@ -398,9 +404,11 @@ cmake -DPRECICE_FEATURE_MPI_COMMUNICATION=OFF -DPRECICE_FEATURE_PETSC_MAPPING=OF See also a related [discussion on the preCICE forum](https://precice.discourse.group/t/compiling-precice-on-opensuse-leap/1148/4) for more details. +These instructions are known to work with OpenSUSE Leap 15.4, and should apply to later OpenSUSE releases as well. + ### Arch Linux -(The same applies to Manjaro and other derived distributions) +(The same applies to Manjaro, EndeavourOS, and other derived distributions) Good news: [preCICE is already on AUR](https://aur.archlinux.org/packages/precice/), so you can directly use or modify the respective `PKGBUILD`. From 4052157495d2fcb3c0871568dff1d54e5d6165e3 Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Sun, 4 Jan 2026 09:42:37 +0100 Subject: [PATCH 10/25] Update fedora instructions --- .../installation-source-dependencies.md | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/content/docs/installation/building-from-source/installation-source-dependencies.md b/content/docs/installation/building-from-source/installation-source-dependencies.md index adcdc2a290c..09ba2a65324 100644 --- a/content/docs/installation/building-from-source/installation-source-dependencies.md +++ b/content/docs/installation/building-from-source/installation-source-dependencies.md @@ -329,26 +329,21 @@ In Fedora, everything is available through the distribution's repositories: ```bash sudo dnf update -sudo dnf install gcc-c++ cmake libxml2-devel boost-devel openmpi-devel petsc-openmpi-devel hdf5-openmpi-devel eigen3-devel python3-devel +sudo dnf install gcc-c++ cmake libxml2-devel boost-devel openmpi-devel petsc-openmpi-devel eigen3-devel python3-devel ``` -Note that `hdf5-openmpi-devel` is only needed to detect the PETSc installation ([details](https://github.com/precice/precice.github.io/pull/179#issuecomment-1207865435)). - Afterwards, start a new terminal, to make MPI discoverable (read more about [MPI on Fedora](https://docs.fedoraproject.org/en-US/neurofedora/mpi/)). Before configuring & building preCICE, load MPI using the module: ```bash module load mpi/openmpi-x86_64 ``` -(if `module` is not available, you may need to log out and in again) - {% note %} -In case you use the docker image of fedora, you need to install the support for environment modules first: `sudo dnf install environment-modules` +In case `module` is not available, you may need to log out and in again first. +If you use the docker image of fedora, you need to install the support for environment modules: `sudo dnf install environment-modules` {% endnote %} -If you don't plan to use RBF mappings in large parallel cases you can continue without installing PETSc and build with `-DPRECICE_FEATURE_PETSC_MAPPING=OFF`. You may need this with older preCICE and Fedora versions (e.g. preCICE v2.1 on Fedora 32 or earlier, see a [related issue](https://github.com/precice/precice/issues/864). - -These instructions are known to work with Fedora 36, and should apply for later Fedora releases as well. +These instructions are known to work with Fedora 43, and should apply for later Fedora releases as well. ### Rocky Linux From 96458442bd80a33574435126ec64e4fc9b119f3f Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Sun, 4 Jan 2026 09:50:51 +0100 Subject: [PATCH 11/25] Add links to CI images --- .../building-from-source/installation-source-dependencies.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/content/docs/installation/building-from-source/installation-source-dependencies.md b/content/docs/installation/building-from-source/installation-source-dependencies.md index 09ba2a65324..f128736edd1 100644 --- a/content/docs/installation/building-from-source/installation-source-dependencies.md +++ b/content/docs/installation/building-from-source/installation-source-dependencies.md @@ -310,6 +310,7 @@ sudo apt install build-essential cmake libeigen3-dev libxml2-dev libboost-all-de ``` These instructions are known to work for Ubuntu 22.04, 24.04, and they should apply for later Ubuntu releases as well. +See also the [Ubuntu Dockerfile used in the preCICE tests](https://github.com/precice/ci-images/blob/master/ci-ubuntu-2404.dockerfile). ### Debian @@ -344,6 +345,7 @@ If you use the docker image of fedora, you need to install the support for envir {% endnote %} These instructions are known to work with Fedora 43, and should apply for later Fedora releases as well. +See also the [Fedora Dockerfile used in the preCICE tests](https://github.com/precice/ci-images/blob/master/ci-fedora.dockerfile). ### Rocky Linux @@ -407,6 +409,8 @@ These instructions are known to work with OpenSUSE Leap 15.4, and should apply t Good news: [preCICE is already on AUR](https://aur.archlinux.org/packages/precice/), so you can directly use or modify the respective `PKGBUILD`. +See also the [Arch Linux Dockerfile used in the preCICE tests](https://github.com/precice/ci-images/blob/master/ci-archlinux.dockerfile). + ### macOS These instructions were written for macOS Catalina (10). We are aware of users using preCICE in newer macOS versions, including macOS Big Sur (11), while our [automated tests](https://github.com/precice/precice/actions/workflows/build-and-test-mac.yml) run on the [GitHub Actions macos-latest runner](https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources). Contributions to this section would be particularly helpful. From 7ed765d48c738b7640d90cbe795081c282db7949 Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Sun, 4 Jan 2026 10:05:53 +0100 Subject: [PATCH 12/25] Add links to EOL/release history --- .../installation-source-dependencies.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/content/docs/installation/building-from-source/installation-source-dependencies.md b/content/docs/installation/building-from-source/installation-source-dependencies.md index f128736edd1..9af1a133921 100644 --- a/content/docs/installation/building-from-source/installation-source-dependencies.md +++ b/content/docs/installation/building-from-source/installation-source-dependencies.md @@ -309,7 +309,7 @@ sudo apt update && \ sudo apt install build-essential cmake libeigen3-dev libxml2-dev libboost-all-dev petsc-dev python3-dev python3-numpy ``` -These instructions are known to work for Ubuntu 22.04, 24.04, and they should apply for later Ubuntu releases as well. +These instructions are known to work for Ubuntu 22.04, 24.04, and they should apply to later releases as well ([release history](https://endoflife.date/ubuntu)). See also the [Ubuntu Dockerfile used in the preCICE tests](https://github.com/precice/ci-images/blob/master/ci-ubuntu-2404.dockerfile). ### Debian @@ -322,7 +322,7 @@ apt update && \ apt install build-essential cmake libeigen3-dev libxml2-dev libboost-all-dev petsc-dev python3-dev python3-numpy ``` -These instructions are known to work with Debian 10, and should apply for later Debian releases as well. +These instructions are known to work with Debian 10, and should apply to later releases as well ([release history](https://endoflife.date/debian)). ### Fedora @@ -344,7 +344,7 @@ In case `module` is not available, you may need to log out and in again first. If you use the docker image of fedora, you need to install the support for environment modules: `sudo dnf install environment-modules` {% endnote %} -These instructions are known to work with Fedora 43, and should apply for later Fedora releases as well. +These instructions are known to work with Fedora 43, and should apply to later releases as well ([release history](https://endoflife.date/fedora)). See also the [Fedora Dockerfile used in the preCICE tests](https://github.com/precice/ci-images/blob/master/ci-fedora.dockerfile). ### Rocky Linux @@ -373,7 +373,7 @@ Rocky Linux very closely follows the conventions previously set by CentOS. We fi 4. Unfortunately, [PETSc does not seem to be available in this distribution.](https://pkgs.org/search/?q=petsc), so we need to switch that off later when building preCICE. If you don't plan to use RBF mappings in large parallel cases, you can continue without installing PETSc and build preCICE with `-DPRECICE_FEATURE_PETSC_MAPPING=OFF`. If you need PETSc, follow the steps in the [PETSc](#petsc) section and you are done. -These instructions are known to work with Rocky Linux 9, and should apply for later Rocky releases as well. +These instructions are known to work with Rocky 9, and should apply to later releases as well ([release history](https://endoflife.date/rocky-linux)). ### OpenSUSE @@ -401,7 +401,7 @@ cmake -DPRECICE_FEATURE_MPI_COMMUNICATION=OFF -DPRECICE_FEATURE_PETSC_MAPPING=OF See also a related [discussion on the preCICE forum](https://precice.discourse.group/t/compiling-precice-on-opensuse-leap/1148/4) for more details. -These instructions are known to work with OpenSUSE Leap 15.4, and should apply to later OpenSUSE releases as well. +These instructions are known to work with OpenSUSE Leap 15.4, and should apply to later releases as well ([release history](https://endoflife.date/opensuse)). ### Arch Linux @@ -413,7 +413,7 @@ See also the [Arch Linux Dockerfile used in the preCICE tests](https://github.co ### macOS -These instructions were written for macOS Catalina (10). We are aware of users using preCICE in newer macOS versions, including macOS Big Sur (11), while our [automated tests](https://github.com/precice/precice/actions/workflows/build-and-test-mac.yml) run on the [GitHub Actions macos-latest runner](https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources). Contributions to this section would be particularly helpful. +These instructions were written for macOS Catalina (10) ([release history](https://endoflife.date/macos)). We are aware of users using preCICE in newer macOS versions, including macOS Big Sur (11), while our [automated tests](https://github.com/precice/precice/actions/workflows/build-and-test-mac.yml) run on the [GitHub Actions macos-latest runner](https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources). Contributions to this section would be particularly helpful. First, install `XCode Command Line Tools` from the [Apple Developer page](https://developer.apple.com/download/more/) or from XCode. From 7de3639ebab4a1857439b34fe56ed40de74c5dbf Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Sun, 4 Jan 2026 10:29:36 +0100 Subject: [PATCH 13/25] Update macOS --- .../installation-source-dependencies.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/content/docs/installation/building-from-source/installation-source-dependencies.md b/content/docs/installation/building-from-source/installation-source-dependencies.md index 9af1a133921..369a751a0a3 100644 --- a/content/docs/installation/building-from-source/installation-source-dependencies.md +++ b/content/docs/installation/building-from-source/installation-source-dependencies.md @@ -285,7 +285,8 @@ Make sure that PETSc, preCICE, and your solvers are all compiled with the same M preCICE optionally uses [Ginkgo](https://ginkgo-project.github.io/) for GPU- and OpenMP-accelerated [global radial-basis function mappings](configuration-mapping.html#execution-backends). To enable the feature in preCICE, use the CMake option `-DPRECICE_FEATURE_GINKGO_MAPPING=ON`. Using this feature in preCICE requires additionally [Kokkos](https://kokkos.org/). -Both packages follow the usual CMake build instructions and can be downloaded on the GitHub release page for [Ginkgo](https://github.com/ginkgo-project/ginkgo/releases) and [Kokkos](https://github.com/kokkos/kokkos/releases). For Kokkos, system packages might be available through your package manager as well. +Both packages follow the usual CMake build instructions and can be downloaded on the GitHub release page for [Ginkgo](https://github.com/ginkgo-project/ginkgo/releases) and [Kokkos](https://github.com/kokkos/kokkos/releases). +For Kokkos, system packages might be available through your package manager as well. History of required versions: @@ -413,8 +414,6 @@ See also the [Arch Linux Dockerfile used in the preCICE tests](https://github.co ### macOS -These instructions were written for macOS Catalina (10) ([release history](https://endoflife.date/macos)). We are aware of users using preCICE in newer macOS versions, including macOS Big Sur (11), while our [automated tests](https://github.com/precice/precice/actions/workflows/build-and-test-mac.yml) run on the [GitHub Actions macos-latest runner](https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources). Contributions to this section would be particularly helpful. - First, install `XCode Command Line Tools` from the [Apple Developer page](https://developer.apple.com/download/more/) or from XCode. You can then install all dependencies using [Homebrew](https://brew.sh/): @@ -428,3 +427,8 @@ or, alternatively, using [MacPorts](https://www.macports.org/) ```bash port install cmake eigen3 libxml2 boost petsc openmpi python3 numpy ``` + +These instructions were written for macOS Catalina (10) ([release history](https://endoflife.date/macos)). +We are aware of users using preCICE in newer macOS versions, while our [automated tests](https://github.com/precice/precice/blob/develop/.github/workflows/build-and-test.yml) +run on the [GitHub Actions macos-latest runner](https://docs.github.com/en/actions/reference/runners/github-hosted-runners). +Contributions to this section would be particularly helpful. \ No newline at end of file From d89e971d025051f10110254e9bed6bca66834ea9 Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Sun, 4 Jan 2026 10:47:05 +0100 Subject: [PATCH 14/25] Update Rocky Linux --- .../installation-source-dependencies.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/content/docs/installation/building-from-source/installation-source-dependencies.md b/content/docs/installation/building-from-source/installation-source-dependencies.md index 369a751a0a3..a9e19cc545b 100644 --- a/content/docs/installation/building-from-source/installation-source-dependencies.md +++ b/content/docs/installation/building-from-source/installation-source-dependencies.md @@ -298,6 +298,7 @@ History of required versions: ## System guides If you want build preCICE on your own computer and you are using one of the following Linux distributions, we provide a summary here to quickly install everything you need. If everything works, you may ignore the rest of this page. +Contributions to this section are particularly welcome (click "Edit me"). Other modern versions of popular Linux distributions are also perfectly compatible, here we just list a few popular options. Since our users have tried preCICE on various distributions, you may as well ask on our [forum](https://precice.discourse.group/) for any questions. @@ -360,10 +361,12 @@ Rocky Linux very closely follows the conventions previously set by CentOS. We fi sudo dnf groupinstall "Development Tools" ``` -2. Then, install the available preCICE dependencies: +2. Then, enable the CRB repostitory to install Eigen3, and the install the rest of the available preCICE dependencies: ```bash - sudo dnf install cmake libxml2-devel boost-devel openmpi-devel eigen3-devel python3-devel + sudo dnf config-manager --set-enabled crb + sudo dnf install eigen3-devel + sudo dnf install cmake libxml2-devel boost-devel openmpi-devel python3-devel ``` 3. Before configuring & building preCICE, load MPI (you may need to log out and in again, if `module` is not found): @@ -374,7 +377,7 @@ Rocky Linux very closely follows the conventions previously set by CentOS. We fi 4. Unfortunately, [PETSc does not seem to be available in this distribution.](https://pkgs.org/search/?q=petsc), so we need to switch that off later when building preCICE. If you don't plan to use RBF mappings in large parallel cases, you can continue without installing PETSc and build preCICE with `-DPRECICE_FEATURE_PETSC_MAPPING=OFF`. If you need PETSc, follow the steps in the [PETSc](#petsc) section and you are done. -These instructions are known to work with Rocky 9, and should apply to later releases as well ([release history](https://endoflife.date/rocky-linux)). +These instructions are known to work with Rocky 9, 10, and should apply to later releases as well ([release history](https://endoflife.date/rocky-linux)). ### OpenSUSE From 66f0f53d1ecfa2d4751a9b1496c638c7b32b32dc Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Sun, 4 Jan 2026 11:08:10 +0100 Subject: [PATCH 15/25] Add links to pkgs.org --- .../installation-source-dependencies.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/content/docs/installation/building-from-source/installation-source-dependencies.md b/content/docs/installation/building-from-source/installation-source-dependencies.md index a9e19cc545b..dc1491998e2 100644 --- a/content/docs/installation/building-from-source/installation-source-dependencies.md +++ b/content/docs/installation/building-from-source/installation-source-dependencies.md @@ -25,10 +25,10 @@ If you find a problem with preCICE and a latest versions of these dependencies, | Dependency | Version required | Availability | | --- | --- | --- | | [C++ compiler](#c-compiler) | C++17 | [C++17 compiler support](https://cppreference.com/w/cpp/compiler_support/17.html) | -| [CMake](#cmake) | >= 3.22.1 | [![Repology - CMake](https://img.shields.io/repology/repositories/cmake)](https://repology.org/project/cmake/versions) | -| [Eigen](#eigen) | >= 3.4.0 | [![Repology - Eigen](https://img.shields.io/repology/repositories/eigen)](https://repology.org/project/eigen/versions) | -| [Boost](#boost) | >= 1.74.0 | [![Repology - Boost](https://img.shields.io/repology/repositories/boost)](https://repology.org/project/boost/versions) | -| [libxml2](#libxml2) | >= 2 | [![Repology - libxml2](https://img.shields.io/repology/repositories/libxml2)](https://repology.org/project/libxml2/versions) | +| [CMake](#cmake) | >= 3.22.1 | [![Repology - CMake](https://img.shields.io/repology/repositories/cmake)](https://repology.org/project/cmake/versions) [![pkgs.org](https://img.shields.io/badge/pkgs.org-cmake-blue)](https://pkgs.org/search/?q=cmake) | +| [Eigen](#eigen) | >= 3.4.0 | [![Repology - Eigen](https://img.shields.io/repology/repositories/eigen)](https://repology.org/project/eigen/versions) [![pkgs.org](https://img.shields.io/badge/pkgs.org-eigen3-blue)](https://pkgs.org/search/?q=eigen3) | +| [Boost](#boost) | >= 1.74.0 | [![Repology - Boost](https://img.shields.io/repology/repositories/boost)](https://repology.org/project/boost/versions) [![pkgs.org](https://img.shields.io/badge/pkgs.org-libboost-blue)](https://pkgs.org/search/?q=libboost) | +| [libxml2](#libxml2) | >= 2 | [![Repology - libxml2](https://img.shields.io/repology/repositories/libxml2)](https://repology.org/project/libxml2/versions) [![pkgs.org](https://img.shields.io/badge/pkgs.org-libxml2-blue)](https://pkgs.org/search/?q=libxml2) | Note that more recent versions of some dependencies (e.g., Boost) might also need more recent or upcoming releases of preCICE. @@ -37,9 +37,9 @@ Note that more recent versions of some dependencies (e.g., Boost) might also nee | Dependency | Required for | Version required | Availability | | --- | --- | --- | --- | | [MPI](#mpi) | [Communication over MPI](configuration-communication.html) | implementation of MPI-3 | Various [implementations](https://en.wikipedia.org/wiki/Message_Passing_Interface#Official_implementations) | -| [PETSc](#petsc) | [Some RBF mappings](configuration-mapping.html#execution-backends) | >= 3.15 | [![Repology - PETSc](https://img.shields.io/repology/repositories/petsc)](https://repology.org/project/petsc/versions) | -| [Ginkgo](#ginkgo) | [Some RBF mappings](configuration-mapping.html#execution-backends) | >= 1.8, with Kokkos >= 4.1 | [![Repology - Ginkgo](https://img.shields.io/repology/repositories/ginkgo-linear-algebra)](https://repology.org/project/ginkgo-linear-algebra/versions) | -| [Python](#python) | [Python Action interface](configuration-action.html#python-callback-interface) | >= 3 | [![Repology - Python](https://img.shields.io/repology/repositories/python)](https://repology.org/project/python/versions) | +| [PETSc](#petsc) | [Some RBF mappings](configuration-mapping.html#execution-backends) | >= 3.15 | [![Repology - PETSc](https://img.shields.io/repology/repositories/petsc)](https://repology.org/project/petsc/versions) [![pkgs.org](https://img.shields.io/badge/pkgs.org-petsc-blue)](https://pkgs.org/search/?q=petsc) | +| [Ginkgo](#ginkgo) | [Some RBF mappings](configuration-mapping.html#execution-backends) | >= 1.8, with Kokkos >= 4.1 | [![Repology - Ginkgo](https://img.shields.io/repology/repositories/ginkgo-linear-algebra)](https://repology.org/project/ginkgo-linear-algebra/versions) [![pkgs.org](https://img.shields.io/badge/pkgs.org-ginkgo-blue)](https://pkgs.org/search/?q=ginkgo) | +| [Python](#python) | [Python Action interface](configuration-action.html#python-callback-interface) | >= 3 | [![Repology - Python](https://img.shields.io/repology/repositories/python)](https://repology.org/project/python/versions) [![pkgs.org](https://img.shields.io/badge/pkgs.org-python-blue)](https://pkgs.org/search/?q=python) | {% tip %} This documentation concerns preCICE v{{ site.precice_version }}. From 17b6614a9f43aabce6428d31fabe8eb35a093bee Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Sun, 4 Jan 2026 11:10:21 +0100 Subject: [PATCH 16/25] Fix EOF --- .../building-from-source/installation-source-dependencies.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/installation/building-from-source/installation-source-dependencies.md b/content/docs/installation/building-from-source/installation-source-dependencies.md index dc1491998e2..e1436a6f17c 100644 --- a/content/docs/installation/building-from-source/installation-source-dependencies.md +++ b/content/docs/installation/building-from-source/installation-source-dependencies.md @@ -434,4 +434,4 @@ port install cmake eigen3 libxml2 boost petsc openmpi python3 numpy These instructions were written for macOS Catalina (10) ([release history](https://endoflife.date/macos)). We are aware of users using preCICE in newer macOS versions, while our [automated tests](https://github.com/precice/precice/blob/develop/.github/workflows/build-and-test.yml) run on the [GitHub Actions macos-latest runner](https://docs.github.com/en/actions/reference/runners/github-hosted-runners). -Contributions to this section would be particularly helpful. \ No newline at end of file +Contributions to this section would be particularly helpful. From 10f46d784eee5d88d3cc5a29a226b1f84a725214 Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Sun, 4 Jan 2026 11:15:53 +0100 Subject: [PATCH 17/25] Link to system packages page --- .../installation-source-dependencies.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/content/docs/installation/building-from-source/installation-source-dependencies.md b/content/docs/installation/building-from-source/installation-source-dependencies.md index e1436a6f17c..69319b38f91 100644 --- a/content/docs/installation/building-from-source/installation-source-dependencies.md +++ b/content/docs/installation/building-from-source/installation-source-dependencies.md @@ -297,10 +297,13 @@ History of required versions: ## System guides -If you want build preCICE on your own computer and you are using one of the following Linux distributions, we provide a summary here to quickly install everything you need. If everything works, you may ignore the rest of this page. -Contributions to this section are particularly welcome (click "Edit me"). +If you want build preCICE on your own computer and you are using one of the following Linux distributions, we provide a summary here to quickly install the dependencies. +Other modern versions of popular Linux distributions are also perfectly compatible, here we just list a few popular options. +Contributions to this section are particularly welcome (click "Edit me"). Trouble? [Ask for help](https://precice.discourse.group/). -Other modern versions of popular Linux distributions are also perfectly compatible, here we just list a few popular options. Since our users have tried preCICE on various distributions, you may as well ask on our [forum](https://precice.discourse.group/) for any questions. +{% tip %} +preCICE also has pre-compiled [system packages](installation-packages.html) in many repositories. +{% endtip %} ### Ubuntu From f2fbfad90e9415b370553fdc1690605c2fe51bbb Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Sun, 4 Jan 2026 12:46:17 +0100 Subject: [PATCH 18/25] Overview: Specify which optional dependencies are opt-in/opt-out --- .../installation-source-dependencies.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/docs/installation/building-from-source/installation-source-dependencies.md b/content/docs/installation/building-from-source/installation-source-dependencies.md index 69319b38f91..036bc691b5d 100644 --- a/content/docs/installation/building-from-source/installation-source-dependencies.md +++ b/content/docs/installation/building-from-source/installation-source-dependencies.md @@ -36,10 +36,10 @@ Note that more recent versions of some dependencies (e.g., Boost) might also nee | Dependency | Required for | Version required | Availability | | --- | --- | --- | --- | -| [MPI](#mpi) | [Communication over MPI](configuration-communication.html) | implementation of MPI-3 | Various [implementations](https://en.wikipedia.org/wiki/Message_Passing_Interface#Official_implementations) | -| [PETSc](#petsc) | [Some RBF mappings](configuration-mapping.html#execution-backends) | >= 3.15 | [![Repology - PETSc](https://img.shields.io/repology/repositories/petsc)](https://repology.org/project/petsc/versions) [![pkgs.org](https://img.shields.io/badge/pkgs.org-petsc-blue)](https://pkgs.org/search/?q=petsc) | -| [Ginkgo](#ginkgo) | [Some RBF mappings](configuration-mapping.html#execution-backends) | >= 1.8, with Kokkos >= 4.1 | [![Repology - Ginkgo](https://img.shields.io/repology/repositories/ginkgo-linear-algebra)](https://repology.org/project/ginkgo-linear-algebra/versions) [![pkgs.org](https://img.shields.io/badge/pkgs.org-ginkgo-blue)](https://pkgs.org/search/?q=ginkgo) | -| [Python](#python) | [Python Action interface](configuration-action.html#python-callback-interface) | >= 3 | [![Repology - Python](https://img.shields.io/repology/repositories/python)](https://repology.org/project/python/versions) [![pkgs.org](https://img.shields.io/badge/pkgs.org-python-blue)](https://pkgs.org/search/?q=python) | +| [MPI](#mpi) (opt-out) | [Communication over MPI](configuration-communication.html) | implementation of MPI-3 | Various [implementations](https://en.wikipedia.org/wiki/Message_Passing_Interface#Official_implementations) | +| [PETSc](#petsc) (opt-out) | [Some RBF mappings](configuration-mapping.html#execution-backends) | >= 3.15 | [![Repology - PETSc](https://img.shields.io/repology/repositories/petsc)](https://repology.org/project/petsc/versions) [![pkgs.org](https://img.shields.io/badge/pkgs.org-petsc-blue)](https://pkgs.org/search/?q=petsc) | +| [Ginkgo](#ginkgo) (opt-in) | [Some RBF mappings](configuration-mapping.html#execution-backends) | >= 1.8, with Kokkos >= 4.1 | [![Repology - Ginkgo](https://img.shields.io/repology/repositories/ginkgo-linear-algebra)](https://repology.org/project/ginkgo-linear-algebra/versions) [![pkgs.org](https://img.shields.io/badge/pkgs.org-ginkgo-blue)](https://pkgs.org/search/?q=ginkgo) | +| [Python](#python) (opt-out) | [Python Action interface](configuration-action.html#python-callback-interface) | >= 3 | [![Repology - Python](https://img.shields.io/repology/repositories/python)](https://repology.org/project/python/versions) [![pkgs.org](https://img.shields.io/badge/pkgs.org-python-blue)](https://pkgs.org/search/?q=python) | {% tip %} This documentation concerns preCICE v{{ site.precice_version }}. From f3cd65a4aaa32e8d6683466d7027cf28389ecbaf Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Sun, 4 Jan 2026 13:13:38 +0100 Subject: [PATCH 19/25] Update OpenSUSE --- .../installation-source-dependencies.md | 28 ++++++++----------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/content/docs/installation/building-from-source/installation-source-dependencies.md b/content/docs/installation/building-from-source/installation-source-dependencies.md index 036bc691b5d..c1afff954aa 100644 --- a/content/docs/installation/building-from-source/installation-source-dependencies.md +++ b/content/docs/installation/building-from-source/installation-source-dependencies.md @@ -384,40 +384,34 @@ These instructions are known to work with Rocky 9, 10, and should apply to later ### OpenSUSE -In OpenSUSE Leap 15.4, things are a bit more complicated (please contribute in this section). Get the basic dependencies: +In OpenSUSE, things are a bit more complicated (please contribute in this section). Get the basic dependencies: ```bash sudo zypper refresh -sudo zypper install gcc-c++ make cmake libxml2-devel \ -libboost_log1_75_0-devel libboost_thread1_75_0-devel libboost_system1_75_0-devel libboost_filesystem1_75_0-devel libboost_program_options1_75_0-devel libboost_test1_75_0-devel \ -eigen3-devel python3-devel +sudo zypper install gcc-c++ make cmake libxml2-devel eigen3-devel +sudo zypper install libboost_log*-devel libboost_thread*-devel libboost_system*-devel libboost_filesystem*-devel libboost_program_options*-devel libboost_test*-devel +sudo zypper install python3-devel python3*-numpy # optional +sudo zypper install openmpi5-devel # optional, other versions work as well ``` -Furthermore, Numpy is needed. It can be installed through pip: `pip3 install --user numpy`. -You may need to set the Eigen location when configuring preCICE: +If you don't already have a fitting combination of PETSc (not shown here), disable the respective feature when configuring preCICE: ```bash -cmake -DEIGEN3_INCLUDE_DIR=/usr/include/eigen3 +cmake -DPRECICE_FEATURE_PETSC_MAPPING=OFF ``` -If you don't already have a fitting combination of MPI and PETSc (not shown here), disable the respective features when configuring preCICE: +or [get PETSc from source](installation-source-dependencies.html#build-petsc-from-source). See also a related [discussion on the preCICE forum](https://precice.discourse.group/t/compiling-precice-on-opensuse-leap/1148/4) for more details. -```bash -cmake -DPRECICE_FEATURE_MPI_COMMUNICATION=OFF -DPRECICE_FEATURE_PETSC_MAPPING=OFF -``` - -See also a related [discussion on the preCICE forum](https://precice.discourse.group/t/compiling-precice-on-opensuse-leap/1148/4) for more details. - -These instructions are known to work with OpenSUSE Leap 15.4, and should apply to later releases as well ([release history](https://endoflife.date/opensuse)). +These instructions are known to work with OpenSUSE Leap 16, and should apply to later releases as well ([release history](https://endoflife.date/opensuse)). ### Arch Linux -(The same applies to Manjaro, EndeavourOS, and other derived distributions) - Good news: [preCICE is already on AUR](https://aur.archlinux.org/packages/precice/), so you can directly use or modify the respective `PKGBUILD`. See also the [Arch Linux Dockerfile used in the preCICE tests](https://github.com/precice/ci-images/blob/master/ci-archlinux.dockerfile). +The same instructions apply to Manjaro, EndeavourOS, and other derived distributions. + ### macOS First, install `XCode Command Line Tools` from the [Apple Developer page](https://developer.apple.com/download/more/) or from XCode. From 30d07a889b10287efed2648bfa6863656fb1c728 Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Sun, 4 Jan 2026 13:18:49 +0100 Subject: [PATCH 20/25] Sort system guides alphabetically --- .../installation-source-dependencies.md | 64 +++++++++---------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/content/docs/installation/building-from-source/installation-source-dependencies.md b/content/docs/installation/building-from-source/installation-source-dependencies.md index c1afff954aa..1709c879fb8 100644 --- a/content/docs/installation/building-from-source/installation-source-dependencies.md +++ b/content/docs/installation/building-from-source/installation-source-dependencies.md @@ -305,17 +305,13 @@ Contributions to this section are particularly welcome (click "Edit me"). Troubl preCICE also has pre-compiled [system packages](installation-packages.html) in many repositories. {% endtip %} -### Ubuntu +### Arch Linux -With every release, we also ship [binary packages for Ubuntu](https://github.com/precice/precice/releases). However, if you still want to build from source, everything is available through the distribution's repositories: +Good news: [preCICE is already on AUR](https://aur.archlinux.org/packages/precice/), so you can directly use or modify the respective `PKGBUILD`. -```bash -sudo apt update && \ -sudo apt install build-essential cmake libeigen3-dev libxml2-dev libboost-all-dev petsc-dev python3-dev python3-numpy -``` +See also the [Arch Linux Dockerfile used in the preCICE tests](https://github.com/precice/ci-images/blob/master/ci-archlinux.dockerfile). -These instructions are known to work for Ubuntu 22.04, 24.04, and they should apply to later releases as well ([release history](https://endoflife.date/ubuntu)). -See also the [Ubuntu Dockerfile used in the preCICE tests](https://github.com/precice/ci-images/blob/master/ci-ubuntu-2404.dockerfile). +The same instructions apply to Manjaro, EndeavourOS, and other derived distributions. ### Debian @@ -352,6 +348,28 @@ If you use the docker image of fedora, you need to install the support for envir These instructions are known to work with Fedora 43, and should apply to later releases as well ([release history](https://endoflife.date/fedora)). See also the [Fedora Dockerfile used in the preCICE tests](https://github.com/precice/ci-images/blob/master/ci-fedora.dockerfile). +### OpenSUSE + +In OpenSUSE, things are a bit more complicated (please contribute in this section). Get the basic dependencies: + +```bash +sudo zypper refresh +sudo zypper install gcc-c++ make cmake libxml2-devel eigen3-devel +sudo zypper install libboost_log*-devel libboost_thread*-devel libboost_system*-devel libboost_filesystem*-devel libboost_program_options*-devel libboost_test*-devel +sudo zypper install python3-devel python3*-numpy # optional +sudo zypper install openmpi5-devel # optional, other versions work as well +``` + +If you don't already have a fitting combination of PETSc (not shown here), disable the respective feature when configuring preCICE: + +```bash +cmake -DPRECICE_FEATURE_PETSC_MAPPING=OFF +``` + +or [get PETSc from source](installation-source-dependencies.html#build-petsc-from-source). See also a related [discussion on the preCICE forum](https://precice.discourse.group/t/compiling-precice-on-opensuse-leap/1148/4) for more details. + +These instructions are known to work with OpenSUSE Leap 16, and should apply to later releases as well ([release history](https://endoflife.date/opensuse)). + ### Rocky Linux Rocky Linux very closely follows the conventions previously set by CentOS. We first need to install common development tools, enable the [CRB repository](https://wiki.rockylinux.org/rocky/repo/) (only for Eigen), install the dependencies, load the MPI module, and continue with building preCICE. @@ -382,35 +400,17 @@ Rocky Linux very closely follows the conventions previously set by CentOS. We fi These instructions are known to work with Rocky 9, 10, and should apply to later releases as well ([release history](https://endoflife.date/rocky-linux)). -### OpenSUSE - -In OpenSUSE, things are a bit more complicated (please contribute in this section). Get the basic dependencies: - -```bash -sudo zypper refresh -sudo zypper install gcc-c++ make cmake libxml2-devel eigen3-devel -sudo zypper install libboost_log*-devel libboost_thread*-devel libboost_system*-devel libboost_filesystem*-devel libboost_program_options*-devel libboost_test*-devel -sudo zypper install python3-devel python3*-numpy # optional -sudo zypper install openmpi5-devel # optional, other versions work as well -``` +### Ubuntu -If you don't already have a fitting combination of PETSc (not shown here), disable the respective feature when configuring preCICE: +With every release, we also ship [binary packages for Ubuntu](https://github.com/precice/precice/releases). However, if you still want to build from source, everything is available through the distribution's repositories: ```bash -cmake -DPRECICE_FEATURE_PETSC_MAPPING=OFF +sudo apt update && \ +sudo apt install build-essential cmake libeigen3-dev libxml2-dev libboost-all-dev petsc-dev python3-dev python3-numpy ``` -or [get PETSc from source](installation-source-dependencies.html#build-petsc-from-source). See also a related [discussion on the preCICE forum](https://precice.discourse.group/t/compiling-precice-on-opensuse-leap/1148/4) for more details. - -These instructions are known to work with OpenSUSE Leap 16, and should apply to later releases as well ([release history](https://endoflife.date/opensuse)). - -### Arch Linux - -Good news: [preCICE is already on AUR](https://aur.archlinux.org/packages/precice/), so you can directly use or modify the respective `PKGBUILD`. - -See also the [Arch Linux Dockerfile used in the preCICE tests](https://github.com/precice/ci-images/blob/master/ci-archlinux.dockerfile). - -The same instructions apply to Manjaro, EndeavourOS, and other derived distributions. +These instructions are known to work for Ubuntu 22.04, 24.04, and they should apply to later releases as well ([release history](https://endoflife.date/ubuntu)). +See also the [Ubuntu Dockerfile used in the preCICE tests](https://github.com/precice/ci-images/blob/master/ci-ubuntu-2404.dockerfile). ### macOS From c92400fbbc2bc9db1100599c2e328e7a05730aaf Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Sun, 4 Jan 2026 13:20:45 +0100 Subject: [PATCH 21/25] Move tip up --- .../installation-source-dependencies.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/content/docs/installation/building-from-source/installation-source-dependencies.md b/content/docs/installation/building-from-source/installation-source-dependencies.md index 1709c879fb8..ab75f5f70f4 100644 --- a/content/docs/installation/building-from-source/installation-source-dependencies.md +++ b/content/docs/installation/building-from-source/installation-source-dependencies.md @@ -14,6 +14,11 @@ Then use the [dependencies](#dependencies) section to install all missing depend After all dependencies are ready to use, proceed with [configuring the preCICE build](installation-source-configuration). +{% tip %} +This documentation concerns preCICE v{{ site.precice_version }}. +Read about [previous versions](fundamentals-previous-versions.html) or [how to upgrade](http://127.0.0.1:4000/couple-your-code-porting-overview.html). +{% endtip %} + ## Overview The following is an overview of the required dependencies of preCICE. @@ -41,11 +46,6 @@ Note that more recent versions of some dependencies (e.g., Boost) might also nee | [Ginkgo](#ginkgo) (opt-in) | [Some RBF mappings](configuration-mapping.html#execution-backends) | >= 1.8, with Kokkos >= 4.1 | [![Repology - Ginkgo](https://img.shields.io/repology/repositories/ginkgo-linear-algebra)](https://repology.org/project/ginkgo-linear-algebra/versions) [![pkgs.org](https://img.shields.io/badge/pkgs.org-ginkgo-blue)](https://pkgs.org/search/?q=ginkgo) | | [Python](#python) (opt-out) | [Python Action interface](configuration-action.html#python-callback-interface) | >= 3 | [![Repology - Python](https://img.shields.io/repology/repositories/python)](https://repology.org/project/python/versions) [![pkgs.org](https://img.shields.io/badge/pkgs.org-python-blue)](https://pkgs.org/search/?q=python) | -{% tip %} -This documentation concerns preCICE v{{ site.precice_version }}. -Read about [previous versions](fundamentals-previous-versions.html) or [how to upgrade](http://127.0.0.1:4000/couple-your-code-porting-overview.html). -{% endtip %} - ## Dependencies This section lists all dependencies alongside required versions and steps on how to install them from source. From 60cac2d3b3ed88df4f13494da3de9a123ac3f1fa Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Sun, 4 Jan 2026 13:22:15 +0100 Subject: [PATCH 22/25] Demote note box to plaintext --- .../building-from-source/installation-source-dependencies.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/content/docs/installation/building-from-source/installation-source-dependencies.md b/content/docs/installation/building-from-source/installation-source-dependencies.md index ab75f5f70f4..080a9e8324e 100644 --- a/content/docs/installation/building-from-source/installation-source-dependencies.md +++ b/content/docs/installation/building-from-source/installation-source-dependencies.md @@ -340,10 +340,8 @@ Afterwards, start a new terminal, to make MPI discoverable (read more about [MPI module load mpi/openmpi-x86_64 ``` -{% note %} In case `module` is not available, you may need to log out and in again first. If you use the docker image of fedora, you need to install the support for environment modules: `sudo dnf install environment-modules` -{% endnote %} These instructions are known to work with Fedora 43, and should apply to later releases as well ([release history](https://endoflife.date/fedora)). See also the [Fedora Dockerfile used in the preCICE tests](https://github.com/precice/ci-images/blob/master/ci-fedora.dockerfile). From cf0390476c9d2cabb804c7c48c7502778f761fd5 Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Sun, 4 Jan 2026 13:23:36 +0100 Subject: [PATCH 23/25] Demote tip box to plain text --- .../installation-source-dependencies.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/content/docs/installation/building-from-source/installation-source-dependencies.md b/content/docs/installation/building-from-source/installation-source-dependencies.md index 080a9e8324e..fc0f6e739c1 100644 --- a/content/docs/installation/building-from-source/installation-source-dependencies.md +++ b/content/docs/installation/building-from-source/installation-source-dependencies.md @@ -194,10 +194,8 @@ For more information, please refer to the "[Getting Started](http://www.boost.or preCICE uses [libxml2](http://www.xmlsoft.org/) for parsing the configuration file. -{% tip %} -libxml2 is available on close to any system you can imagine. -Double check if there are any system packages before attempting to build this dependency from source. -{% endtip %} +Since libxml2 is available on close to any system you can imagine, +double check if there are any system packages before attempting to build this dependency from source. #### Install libxml2 from source From c5c8c01b8e95d37d55c017654ce2404379e4e201 Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Sun, 4 Jan 2026 13:26:01 +0100 Subject: [PATCH 24/25] Reorder optional dependency sections --- .../installation-source-dependencies.md | 52 +++++++++---------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/content/docs/installation/building-from-source/installation-source-dependencies.md b/content/docs/installation/building-from-source/installation-source-dependencies.md index fc0f6e739c1..32de725852d 100644 --- a/content/docs/installation/building-from-source/installation-source-dependencies.md +++ b/content/docs/installation/building-from-source/installation-source-dependencies.md @@ -220,6 +220,18 @@ double check if there are any system packages before attempting to build this de export PKG_CONFIG_PATH="/lib/pkgconfig:$PKG_CONFIG_PATH" ``` +### MPI + +preCICE optionally requires an implementation of the MPI-3 specification for [communication](configuration-communication.html), which is [provided by all major vendors](https://en.wikipedia.org/wiki/Message_Passing_Interface#Official_implementations) including OpenMPI, MPICH, and Intel MPI. + +You can build preCICE without MPI in case of compatibility issues with a certain solver (e.g. a closed source solver with a binary-distributed MPI version, or when running on Windows). To do so, use `-DPRECICE_FEATURE_MPI_COMMUNICATION=OFF`. In such a case, you can still use TCP/IP sockets for inter- and intra-participant communication, instead. This might, however, result in lower performance and is, therefore, not recommended if not necessary. + +Keep in mind that, if you already installed [PETSc](installation-source-dependencies.html#petsc), MPI must also already be installed. + +{% important %} +Make sure that PETSc, preCICE, and your solvers are all compiled with the same MPI version! +{% endimportant %} + ### PETSc preCICE optionally uses [PETSc](https://petsc.org/) (at least 3.15) for some [global RBF mappings](configuration-mapping.html#execution-backends) and is highly recommended for large cases. For small/medium-size cases, preCICE can still do a global RBF mapping in parallel without PETSc. If you don't need this feature, you may specify `-DPRECICE_FEATURE_PETSC_MAPPING=off` when building preCICE. @@ -252,6 +264,20 @@ Finally, in some cases you may need to have PETSc in your `CPATH`, `LIBRARY_PATH export LD_LIBRARY_PATH="$PETSC_DIR/$PETSC_ARCH/lib:$LD_LIBRARY_PATH" ``` +### Ginkgo + +preCICE optionally uses [Ginkgo](https://ginkgo-project.github.io/) for GPU- and OpenMP-accelerated [global radial-basis function mappings](configuration-mapping.html#execution-backends). To enable the feature in preCICE, use the CMake option `-DPRECICE_FEATURE_GINKGO_MAPPING=ON`. Using this feature in preCICE requires additionally [Kokkos](https://kokkos.org/). + +Both packages follow the usual CMake build instructions and can be downloaded on the GitHub release page for [Ginkgo](https://github.com/ginkgo-project/ginkgo/releases) and [Kokkos](https://github.com/kokkos/kokkos/releases). +For Kokkos, system packages might be available through your package manager as well. + +History of required versions: + +| preCICE | Ginkgo required | Kokkos required | +| --- | --- | --- | +| 3.2.0 | 1.8.0 | 4.1.0 | +| 3.3.0 | same as above | same as above | + ### Python preCICE optionally uses [Python](https://www.python.org/) for the [Python action interface](configuration-action.html#python-callback-interface) (only used for rare applications). If you don't need this feature, you may specify `-DPRECICE_FEATURE_PYTHON_ACTIONS=off`. @@ -267,32 +293,6 @@ History of required versions: | 2.0.0 | 3 | None known yet | 1.17 | None known yet | | 3.3.0 | same as above | same as above | same as above | same as above | -### MPI - -preCICE optionally requires an implementation of the MPI-3 specification for [communication](configuration-communication.html), which is [provided by all major vendors](https://en.wikipedia.org/wiki/Message_Passing_Interface#Official_implementations) including OpenMPI, MPICH, and Intel MPI. - -You can build preCICE without MPI in case of compatibility issues with a certain solver (e.g. a closed source solver with a binary-distributed MPI version, or when running on Windows). To do so, use `-DPRECICE_FEATURE_MPI_COMMUNICATION=OFF`. In such a case, you can still use TCP/IP sockets for inter- and intra-participant communication, instead. This might, however, result in lower performance and is, therefore, not recommended if not necessary. - -Keep in mind that, if you already installed [PETSc](installation-source-dependencies.html#petsc), MPI must also already be installed. - -{% important %} -Make sure that PETSc, preCICE, and your solvers are all compiled with the same MPI version! -{% endimportant %} - -### Ginkgo - -preCICE optionally uses [Ginkgo](https://ginkgo-project.github.io/) for GPU- and OpenMP-accelerated [global radial-basis function mappings](configuration-mapping.html#execution-backends). To enable the feature in preCICE, use the CMake option `-DPRECICE_FEATURE_GINKGO_MAPPING=ON`. Using this feature in preCICE requires additionally [Kokkos](https://kokkos.org/). - -Both packages follow the usual CMake build instructions and can be downloaded on the GitHub release page for [Ginkgo](https://github.com/ginkgo-project/ginkgo/releases) and [Kokkos](https://github.com/kokkos/kokkos/releases). -For Kokkos, system packages might be available through your package manager as well. - -History of required versions: - -| preCICE | Ginkgo required | Kokkos required | -| --- | --- | --- | -| 3.2.0 | 1.8.0 | 4.1.0 | -| 3.3.0 | same as above | same as above | - ## System guides If you want build preCICE on your own computer and you are using one of the following Linux distributions, we provide a summary here to quickly install the dependencies. From b877f1f154d0019450ee634817a3615c4515868f Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Sun, 4 Jan 2026 13:42:00 +0100 Subject: [PATCH 25/25] Disable external link icon in badges --- .../installation-source-dependencies.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/content/docs/installation/building-from-source/installation-source-dependencies.md b/content/docs/installation/building-from-source/installation-source-dependencies.md index 32de725852d..21abdd4f005 100644 --- a/content/docs/installation/building-from-source/installation-source-dependencies.md +++ b/content/docs/installation/building-from-source/installation-source-dependencies.md @@ -30,10 +30,10 @@ If you find a problem with preCICE and a latest versions of these dependencies, | Dependency | Version required | Availability | | --- | --- | --- | | [C++ compiler](#c-compiler) | C++17 | [C++17 compiler support](https://cppreference.com/w/cpp/compiler_support/17.html) | -| [CMake](#cmake) | >= 3.22.1 | [![Repology - CMake](https://img.shields.io/repology/repositories/cmake)](https://repology.org/project/cmake/versions) [![pkgs.org](https://img.shields.io/badge/pkgs.org-cmake-blue)](https://pkgs.org/search/?q=cmake) | -| [Eigen](#eigen) | >= 3.4.0 | [![Repology - Eigen](https://img.shields.io/repology/repositories/eigen)](https://repology.org/project/eigen/versions) [![pkgs.org](https://img.shields.io/badge/pkgs.org-eigen3-blue)](https://pkgs.org/search/?q=eigen3) | -| [Boost](#boost) | >= 1.74.0 | [![Repology - Boost](https://img.shields.io/repology/repositories/boost)](https://repology.org/project/boost/versions) [![pkgs.org](https://img.shields.io/badge/pkgs.org-libboost-blue)](https://pkgs.org/search/?q=libboost) | -| [libxml2](#libxml2) | >= 2 | [![Repology - libxml2](https://img.shields.io/repology/repositories/libxml2)](https://repology.org/project/libxml2/versions) [![pkgs.org](https://img.shields.io/badge/pkgs.org-libxml2-blue)](https://pkgs.org/search/?q=libxml2) | +| [CMake](#cmake) | >= 3.22.1 | [![Repology - CMake](https://img.shields.io/repology/repositories/cmake)](https://repology.org/project/cmake/versions){:.no-icon} [![pkgs.org](https://img.shields.io/badge/pkgs.org-cmake-blue)](https://pkgs.org/search/?q=cmake){:.no-icon} | +| [Eigen](#eigen) | >= 3.4.0 | [![Repology - Eigen](https://img.shields.io/repology/repositories/eigen)](https://repology.org/project/eigen/versions){:.no-icon} [![pkgs.org](https://img.shields.io/badge/pkgs.org-eigen3-blue)](https://pkgs.org/search/?q=eigen3){:.no-icon} | +| [Boost](#boost) | >= 1.74.0 | [![Repology - Boost](https://img.shields.io/repology/repositories/boost)](https://repology.org/project/boost/versions){:.no-icon} [![pkgs.org](https://img.shields.io/badge/pkgs.org-libboost-blue)](https://pkgs.org/search/?q=libboost){:.no-icon} | +| [libxml2](#libxml2) | >= 2 | [![Repology - libxml2](https://img.shields.io/repology/repositories/libxml2)](https://repology.org/project/libxml2/versions){:.no-icon} [![pkgs.org](https://img.shields.io/badge/pkgs.org-libxml2-blue)](https://pkgs.org/search/?q=libxml2){:.no-icon} | Note that more recent versions of some dependencies (e.g., Boost) might also need more recent or upcoming releases of preCICE. @@ -42,9 +42,9 @@ Note that more recent versions of some dependencies (e.g., Boost) might also nee | Dependency | Required for | Version required | Availability | | --- | --- | --- | --- | | [MPI](#mpi) (opt-out) | [Communication over MPI](configuration-communication.html) | implementation of MPI-3 | Various [implementations](https://en.wikipedia.org/wiki/Message_Passing_Interface#Official_implementations) | -| [PETSc](#petsc) (opt-out) | [Some RBF mappings](configuration-mapping.html#execution-backends) | >= 3.15 | [![Repology - PETSc](https://img.shields.io/repology/repositories/petsc)](https://repology.org/project/petsc/versions) [![pkgs.org](https://img.shields.io/badge/pkgs.org-petsc-blue)](https://pkgs.org/search/?q=petsc) | -| [Ginkgo](#ginkgo) (opt-in) | [Some RBF mappings](configuration-mapping.html#execution-backends) | >= 1.8, with Kokkos >= 4.1 | [![Repology - Ginkgo](https://img.shields.io/repology/repositories/ginkgo-linear-algebra)](https://repology.org/project/ginkgo-linear-algebra/versions) [![pkgs.org](https://img.shields.io/badge/pkgs.org-ginkgo-blue)](https://pkgs.org/search/?q=ginkgo) | -| [Python](#python) (opt-out) | [Python Action interface](configuration-action.html#python-callback-interface) | >= 3 | [![Repology - Python](https://img.shields.io/repology/repositories/python)](https://repology.org/project/python/versions) [![pkgs.org](https://img.shields.io/badge/pkgs.org-python-blue)](https://pkgs.org/search/?q=python) | +| [PETSc](#petsc) (opt-out) | [Some RBF mappings](configuration-mapping.html#execution-backends) | >= 3.15 | [![Repology - PETSc](https://img.shields.io/repology/repositories/petsc)](https://repology.org/project/petsc/versions){:.no-icon} [![pkgs.org](https://img.shields.io/badge/pkgs.org-petsc-blue)](https://pkgs.org/search/?q=petsc){:.no-icon} | +| [Ginkgo](#ginkgo) (opt-in) | [Some RBF mappings](configuration-mapping.html#execution-backends) | >= 1.8, with Kokkos >= 4.1 | [![Repology - Ginkgo](https://img.shields.io/repology/repositories/ginkgo-linear-algebra)](https://repology.org/project/ginkgo-linear-algebra/versions){:.no-icon} [![pkgs.org](https://img.shields.io/badge/pkgs.org-ginkgo-blue)](https://pkgs.org/search/?q=ginkgo){:.no-icon} | +| [Python](#python) (opt-out) | [Python Action interface](configuration-action.html#python-callback-interface) | >= 3 | [![Repology - Python](https://img.shields.io/repology/repositories/python)](https://repology.org/project/python/versions){:.no-icon} [![pkgs.org](https://img.shields.io/badge/pkgs.org-python-blue)](https://pkgs.org/search/?q=python){:.no-icon} | ## Dependencies