User Manual

This is the Feel++ user manual version 0.105.


The Feel++ user manual is actively developed by Christophe Prud’homme, Vincent Chabannes, Guillaume Dollé.

There are many other and past contributors to this manual.

The Feel++ project is currently managed by Christophe Prud’homme, Professor in applied mathematic and scientific computing at the University of Strasbourg, France.


1. What is Feel++?

Feel++ is a unified C++ implementation of Galerkin methods (finite and spectral element methods) in 1D, 2D and 3D to solve partial differential equations.

Feel++ is

  1. a versatile mathematical kernel solving easily problems using different techniques thus allowing testing and comparing methods, e.g. cG versus dG.

  2. a small and manageable library which nevertheless encompasses a wide range of numerical methods and techniques and in particular reduced order methods such as the reduced basis method.

  3. a software that follows closely the mathematical abstractions associated with partial differential equations (PDE) and in particular the finite element mathematical framework and variational formulations.

  4. a library that offers solving strategies that scales up to thousands and even tens of thousands of cores.

  5. a library entirely in C++ allowing to create C++ complex and typically non-linear multi-physics applications currently in industry, physics and health-care.

2. What is the purpose of this manual ?

The purpose of this manual is to allow user

3. What is the scope of this manual?

We need to define first what is a Feel++ user to define the scope.

Feel++ User

A Feel++ user can be either

  • an application-user who runs the applications provided by Feel++ either via Docker or via an installation on a system or infrastructure.

  • a dsel-user who implements C++ code using Feel++ Galerkin domain specific embdedded language, see e.g. Laplacian.

This book discusses the Feel++ user perspective. This book does not discuss Feel++ API or programming.

4. Who is this book for?

This book is for students, engineers, scientists and researchers who want to use Feel++:

  • solve PDEs using Feel++ toolboxes

  • solve PDEs using the embedded language for Galerkin methods

5. Where to discuss about this manual?

To discuss this manual, we provide Slack channel (recommended) to announce, support and discuss book modifications. Don’t hesitate to participate to the discussions!

Click the button to join the channel joinslack

Joining Slack channels works by invitation, to receive an invitation send an email to

6. How to contribute to this manual

We’re always happy to help out with Feel++ or any other questions you might have. You can ask a question or signal an issue at the Slack support salon.

Join the Feel++ chat


If you find an bug or have a feature proposal, please check first the issue does not already exist in the issue list. If not, post a new issue on the github repository. If you want to go further, you can contribute to the code by forking the repository, then proposing a pull request (PR) into the develop branch.

For more information about PR, see github documentation.

7. Licenses

Feel++ and its documentation is copyrighted

Copyright © 2010-2018 by Feel++ Consortium
Copyright © 2005-2015 by Université Joseph Fourier (Grenoble, France)
Copyright © 2005-2015 by University of Coimbra (Portugal)
Copyright © 2011-2018 by Université de Strasbourg (France)
Copyright © 2011-2018 by CNRS (France)
Copyright © 2005-2006 by Ecole Polytechnique Fédérale de Lausanne (EPFL, Switzerland)

Free use of this software is granted under the terms of the LGPL License.

See the LICENSE file for details

This book is part of Feel++ and is licensed under the LGPL license.

cc LGPL a.

8. Conventions

The following typographical conventions are used in the book

Italic indicates new terms

typewriter is used on program listings as well as when referring to programming elements, e.g. functions, variables, statements, data types, environment variables or keywords.

\$ typewriter or > typewriter displays commands that the user types literally without the \$ or >.

this is a general note.
this is a general warning.
be cautious

Hereafter, in the context of tutorial or the documentation of a specific process, four difficulty levels can be displayed:

  1. Difficulty: difficulty easy easy!

  2. Difficulty: difficulty average average!

  3. Difficulty: difficulty advanced advanced!

  4. Difficulty: difficulty hard hard!