All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
LifeV - A Parallel Finite Element Library


LifeV (to be read Life Five) is an open source library for the numerical solution of partial differential equations with the finite element method. The choice of the finite element method is motivated by its rigorous mathematical background, with a sound control of the accuracy, coupled with excellent flexibility in managing complex geometries.

LifeV is written in C++ and is entirely coded with an Object Oriented approach and advanced programming features. The project started in 1999 from the collaboration of the Department of Mathematics at EPFL, Lausanne, Switzerland, of the Department of Mathematics at Politecnico di Milano, Italy and the INRIA Rocquencourt, France, under the supervision of Alfio Quarteroni. Nowadays, LifeV is concurrently developed and maintained by CMCS Lausanne (group coordinator), MOX di Milano, REO and ESTIME and the E(CM)2 group at the Department of Mathematics and Computer Science at Emory University, Atlanta (GA), USA.

As for now, the library includes solvers for incompressible fluid dynamics, (linear) structural problems, transport in porous media, fluid-structure interaction, electrical conduction in the heart. Even though this library is a research code oriented to the development and test of new numerical methods and algorithms, it is intended to be an effective tool for solving complex "real-life" engineering problems. One of the main field of applications (although not the only one) is cardiovascular mathematics.

The code is distributed under the LGPL license and is downloadable on CMCSFORGE.
There are two distributed versions of LifeV, one is parallel, for complex three dimensional engineering problems, the other is serial, for one, two and three dimensional problems (prototyping, testing). These pages review the parallel version.
For other details, see the LifeV web site.

Overview of LifeV

In the following we briefly describe the main features of LifeV.

Boundary Conditions

LifeV provides classes and methods to prescribe the most common boundary conditions (Dirichlet, Neumann, Robin). Normal and tangential boundary conditions are also allowed for vectorial (3D) fields. In addition, a few kinds of boundary conditions specific for flow problems are available. Boundary conditions are prescribed by modifying the system matrix and the right-hand side after the assembling phase. The parameters of the boundary condition can be defined as functions of the space and time, or as finite element fields. The regions where to apply boundary conditions are determined by markers associated to the boundary faces of the mesh. Boundary conditions settings are stored in the BCHandler class (BCHandler.hpp), whereas the file BCManage.hpp contains the routines used to prescribe the conditions. The BCInterface class (BCInterface.hpp) contains tools to set the boundary conditions directly from data files.

Time discretization

LifeV provides the class TimeAdvance to integrate in time a generic non-linear PDE with derivates in time of order m = 1, 2.
This class is a virtual class, that defines the main features of a generic time advancing scheme:

The needed coefficients, variables and methods are specified in derived classes.
LifeV provides two different implementations, namely:

Space discretization

LifeV provides classes to perform easily and quickly the assembly of the most common problems (e.g. advection-diffusion-reaction, Stokes and Navier-Stokes). These classes are called Assemblers and can be considered as building blocks that can be combined at will. The user has moreover access to lower level structures and instructions in order to provide the maximal flexibility.

Algebraic solvers and preconditioners

Linear systems are solved using the preconditioned GMRES method. LifeV provides the following preconditioners:

It is also possible to develop new preconditioners using the abstract class Preconditioner (Preconditioner.hpp).

Physical solvers

In the following we briefly mention all the available physical solvers.

Geometrical Multiscale Framework

The geometrical multiscale framework provides a general and abstract way to couple different dimensionally-heterogeneous physical solvers. In the framework, the local specific mathematical equations (partial differential equations, differential algebraic equations, etc.) and the numerical approximation (finite elements, finite differences, etc.) of the heterogeneous compartments are hidden behind generic operators. Consequently, the resulting global interface problem is formulated and solved in a completely transparent way. The coupling between models of different dimensional scale (three-dimensional, one-dimensional, etc.) and type (Navier–Stokes, fluid-structure interaction, etc.) is addressed writing the interface equations in terms of scalar quantities, i.e., area, flow rate, and mean (total) normal stress. In the resulting flexible framework the heterogeneous models are treated as black boxes, each one equipped with a specific number of compatible interfaces such that (i) the arrangement of the compartments in the network can be easily manipulated, thus allowing a high level of customization in the design and optimization of the global geometrical multiscale model, (ii) the parallelization of the solution of the different compartments is straightforward, leading to the opportunity to make use of the latest high-performance computing facilities, and (iii) new models can be easily added and connected to the existing ones.

At the present time the framework includes the following models

  1. Fluid3D
  2. FSI3D
  3. OneDimensional
  4. Multiscale
  5. Windkessel0D

which can be coupled through the following interface equations (or just closed by boundary conditions)

  1. BoundaryCondition
  2. MeanNormalStress
  3. MeanNormalStressArea
  4. MeanNormalStressValve
  5. MeanTotalNormalStress
  6. MeanTotalNormalStressArea

while the interface problem can be solved through the following algorithms

  1. Aitken
  2. Broyden
  3. Explicit
  4. Newton


In the following we briefly describe some of the main tools inside the library.


LifeV is available for download under the terms of the GNU Lesser General Public License.


LifeV can be downloaded from the LifeV downloads page. For additional documentation about the LifeV architecture please check the LifeV documentation page.

Mailing lists

We recommend that users and developers subscribe to the following mailing lists as appropriate.

LifeV contributors

LifeV is the joint collaboration between four institutions:

The following people are active developers:

The following people are former developers:

For other questions and comments...

Please visit the LifeV web site.

This file is part of the documentation for LifeV - LifeV .
Documentation copyright © 2004, 2005, 2007 EPFL, Politecnico di Milano, INRIA.
Documentation copyright © 2010 EPFL, Politecnico di Milano, Emory University.
Generated on Wed Jun 17 2015 07:02:18 for LifeV by doxygen