dune-fem (dune-fem)

A discretization module providing an implementation of mathematical abstractions to solve PDEs on parallel computers including local grid adaptivity, dynamic load balancing, and higher order discretization schemes.

dune-common dune-geometry dune-grid
Suggests: dune-alugrid dune-istl dune-localfunctions dune-spgrid
Python bindings:
Maintainer: The dune-fem team
Git repository:
DUNE-FEM tutorial


DUNE-FEM is a discretization module based on DUNE containing all the building blocks required to implement efficient solvers for a wide range of (systems of non linear) partial differential equations. DUNE-FEM can also be used through an extensive Python interface which brings all components of DUNE-FEM and the DUNE core modules to Python.

In addition to pip install dune-fem one can build DUNE-FEM from source.

DUNE-FEM provides interfaces for:

  • Discrete function spaces and functions
  • Linear operators and inverse linear operators
  • Methods for solving non-linear equations and time dependent problems
  • MPI and multithread based parallelization
  • Additional grid views e.g. for removing parts of the grid (filtering) or replacing geometry information

In addition DUNE-FEM provides many auxiliary classes for

  • Flexible parameter input
  • Data output including checkpointing
  • Computation of eoc tables, timers for subroutines, and much more…

Efficient strategies for parallelization, adaptivity, and load balancing is a central aspect in the construction of DUNE-FEM. Both are handled by central classes and require very little input from the user. To increase efficiency we try to use caching as much as possible, e.g., for communication patterns in parallel computations and of base function sets in quadrature points on the reference elements. All this is done transparently from the user but can be turned off anywhere in the code.

To measure efficiency we have used a Discontinuous Galerkin method for the compressible Navier-Stokes equation to compute both parallel scale up and FLOP performance. The code showed a parallel efficiency close to one up to 16K processors and we measured 5 GFLOPs on an Intel Core i7 QM 720 @ 1.6 GHz which is about 41 percent of the FLOPs we measured for LINPACK on the same machine.

Main Features

DUNE-FEM does not only provide interfaces but also comes with realizations of these interfaces:

  • Discrete function spaces:
    • Arbitrary order spaces with Lagrange basis functions and orthonormal basis functions
    • Arbitrary order Lagrange spaces
    • p-adaptive DG and Lagrange spaces
    • spaces for reduced basis methods
  • Discrete function implementations:
    • Discrete function spaces especially build to allow for very efficient grid refinement and coarsening
    • Discrete function based on the block vectors provided by dune-istl
    • Different approaches to extend scalar discrete function spaces to product spaces
  • Inverse linear operators:
    • DUNE-FEM provides some build in iterative solvers, e.g., cg, gmres, and bicgstab
    • There are bindings for dune-istl, UMFPACK, and PETSc
  • Time step methods:
    • SSP Runge-Kutta methods (explicit, implicit, and IMEX)
    • Multistep methods


DUNE-FEM has been used for a wide range of applications:

  • Higher order methods for conservation laws (both finite-volume and discontinuous Galerkin)
  • Convection dominated convection-diffusion equations (mostly Discontinuous Galerkin)
  • Higher order methods for parabolic and elliptic problems (both conforming and Discontinuous Galerkin)
  • Hamilton Jacobi equations (different methods used)
  • Two-phase flow in porous media (finite-volume and Discontinuous Galerkin)
  • Reduced basis methods

Most methods have been tested for both problems formulated in Euclidean space and on surfaces including moving surfaces and also moving domains.

Implementations for a wide range of different Discontinuous Galerkin and based on the Virtual Element method are available in additional modules.

Documentation and Tutorial

The DUNE-FEM tutorial contains a step by step introduction to DUNE-FEM and the Python front end. In addition to introducing all the basic concepts of DUNE, the tutorial contains a number of individual Python script/Jupyter notebooks showing how to solve different types of equations which provide a good starting point for projects.

For the underlying C++ code there is also a documentation of DUNE-FEM master is generated using Doxygen.

There is one main publication describing some of the underlying principals and giving some examples and we ask all users of DUNE-FEM to cite in publications using DUNE-FEM:

A. Dedner, R. Klöfkorn, M. Nolte, M. Ohlberger: “A generic interface for parallel and adaptive scientific computing: Abstraction principles and the DUNE-FEM module”. Computing Vol. 90, No. 3, pp. 165–196, 2011 November 2010.


The full repository is hosted on our GitLab instance. In order to use a stable release, please check out the corresponding branch.

Please also read the tutorial for installation instructions.

Known issues

All the known issues of DUNE-FEM can be found on the online bug tracker. Please use it to report any bug.


DUNE-FEM provides its own user mailing lists and a developer mailing lists.


Former Contributors

Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.111.3 (Jun 24, 22:26, 2024)