Get Feel++ Programming Environment

Difficulty: difficulty advanced advanced!

We present here the Feel++ toolchain with both required and suggested tools to either compile Feel++ or use with Feel++.

1. System Environments

Feel++ is compiled and tested on various systems:

Table 1. Table of linux operating systems

Flavor

Version

Compiler

Notes

Ubuntu

20.04

clang

Docker images and packages available

Ubuntu

22.04

clang

Docker images and packages available

Ubuntu

22.10

clang

Scheduled build once per week

Debian

11

clang

Docker images and packages available

Debian

testing

clang

Scheduled build once per week

Debian

unstable

clang

Scheduled build once per week

Fedora

36

clang

Scheduled build once per week

Fedora

37

clang

Scheduled build once per week

2. Compilers

Feel++ uses C++17 compilers such as GCC8 and Clang (\(\geq 5\)).

It is mandatory not only to have a C++17 compiler but also C++ stantard library compatible with C++17 We don’t use yet C++17 standard library features

Table 2. Table C++ compilers and standard libraries combinations

Compiler

Minimal Version

Recommended Version

Standard Library

Clang++

6

>= 9

libstdc++ 7

Clang++

6

>= 9

libc++ (corresponding clang version)

G++

8

>=11

libstdc++ 7

Clang++ is the preferred compiler by far for Feel++, it compiles much faster and use far less memory than G++

A few applications are not built with GCC, GCC ICEs (Internal Compiler Error) on them.

Table 3. List of applications disabled with GCC

feelpp_elasticity_pure_traction_{2d,3d}

pure traction elasticity applications in feelpp/quickstart

feelpp_toolbox_hdg_*

all toolbox HDG applications are disabled with GCC.

3. Required tools and libraries

Other than C++17 compilers, Feel++ requires only a few tools and libraries, namely CMake, Boost C++ libraries and an MPI implementation such as open-mpi or mpich. The table below provides information regarding the minimum and maximum version supported. A — means it has not necessarily been tested with the latest version but we do not expect any issues. Note that for MPI, an implementation with MPI-IO support would be best.

Table 4. Table required tools to compile Feel++
Name Minimum Version Recommended Version Maximum Version Notes

CMake

3.13.0

>= 3.21

 — 

MPI

 — 

 — 

 — 

OpenMPI or MPICH

Boost

1.61

>= 1.70

 — 

Boost C++ libraries

Python Interpreter

3.8

>= 3.8

 — 

Version 2 has never been tested

Here is a list of libraries that we recommend to use jointly with Feel++.

Table 5. Table optional external libraries
Library Minimum Version Maximum Version Notes

HDF5

1.8.6

 — 

PETSc

3.5

 — 

We strongly recommand to install PETSc with MUMPS packages. Others packages like Suitesparse, Trilinos/ML, Boomeramg can be appreciable.

SLEPc

3.5

 — 

Depends on PETSc

Gmsh

2.8.7

 — 

Python Libs

3.0

Python SymPy

1.1

Python 3 module sympy

Here is a list of tools that we recommend to use jointly with Feel++.

Table 6. Table of recommended tools
Tool License Notes

Computer Aided Design

Gmsh

Open Source

Mesh Generation

Gmsh

Open Source

MeshGems

Commercial

Post-Processing

Paraview

Open Source

Ensight

Commercial

Octave

Open Source

Gmsh

Open Source

Scripting Languages

Python

Open Source

Python 3 interpreter

Note that all these packages are available under Debian GNU/Linux and Ubuntu. Once you have installed those dependencies, you can go to Compiling.

6. Suggested tools

Here is a list of tools that we suggest to use jointly with Feel++.

Table 7. Table of suggested tools
Tool License Notes

Computer Aided Design (CAD)

Freecad

Open Source

Salome

Open Source

HDF5 version in Debian/sid currently breaks MED format support.

Modeling, Compilation and Simulation Environment

Open Modelica

Open Source

Debugging and Profiling

Google perftools

Open Source

Valgrind

Open Source

7. What’s next?

  • Checkout the Linux installation from sources in Ubuntu or Debian

  • Checkout the MacOsX installation from sources using Homebrew or Macport