User Manual

This is the Feel++ user manual version 0.110.

1. Authors

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

There are many other and past contributors to Feel++ and to this manual.

The Feel++ project is the flagship software of Cemosis, the Center of Modeling and Simulation in Strasbourg for mathematics, industry and other disciplines, is currently managed by Christophe Prud’homme, Professor in applied mathematic and scientific computing at the University of Strasbourg, France.

2. 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++ comprises three components: Feel++:: the mathematical kernel libraries, applications and tools. Feel++ Toolboxes:: the Feel++ mono and multi-physics toolboxes to solve physic based problems Feel++ Model Order Reduction:: the Feel++ model order reduction applications, tools and models

Each component provides a Python interface to access that mimic the C++ counterpart.

2.1. Feel++

  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.

  6. pyFeel++ to manipulate Feel++ mathematical objects in Python to solve PDE

2.2. Feel++ Toolboxes

Feel++ Toolboxes provides :

  1. libraries to manipulate physics based models and couple them

  2. a set of mono and multi-physics application readily available :

    • fluid mechanics

    • solid mechanics

    • heat transfer and conjuguate heat transfer

    • fluid structure interaction

    • electro and magnetostatic

    • thermoelectric

    • levelset and multifluid

  3. pyFeel++ Toolboxes which provides an interface to the different physical based models and reproduces the main toolbox applications in Python.

2.3. Feel++ Model Order Reduction

Feel++ Model Order Reduction provides:

  1. tools to manipulate reduced order models

  2. examples of reduced order models

  3. pyFeel++ MOR to manipulate reduced order models in Python

3. What is the purpose of this manual ?

The purpose of this manual is to allow the Feel++ user

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

  • a Python developer who uses pyFeel++ to solve PDEs.

This book discusses the Feel++ user perspective. This book does not discuss or present in-depth Feel++ API or internal programming but rather present the principles and essential ingredients to get started.

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

  • more generally develop numerical methods in a framework readily available for high performance computing.

6. 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 support@feelpp.org.

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

joinslack

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.

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

9. 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!