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. 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 1. 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

9

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 2. 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.

2. 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 3. Table required tools to compile Feel++
Name Minimum Version Maximum Version Notes

CMake

3.13.0

 — 

MPI

 — 

 — 

OpenMPI or MPICH

Boost

1.61

1.70

Python Interpreter

3

3

Version 2 has never been tested

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

Table 4. 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

4.4.1

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 5. 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.

5. Suggested tools

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

Table 6. 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

6. What’s next?

  • Checkout the Linux installation from sources in Ubuntu or Debian

  • Checkout the MacOsX installation from sources using Homebrew or Macport