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-FEM is a discretization module based on DUNE. It 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.
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-adptive 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.
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. The master branch is the current trunk version. In order to use a stable release, please check out the corresponding branch.
The last DUNE-FEM stable releases are also available as tar balls: + DUNE-FEM-1.3.1.tar.gz - compatible with DUNE-2.2.1 + DUNE-FEM-1.4.0.tar.gz - compatible with DUNE-2.3.1 + DUNE-FEM-2.4.0.tar.gz - compatible with DUNE-2.4.1
All the known issues of DUNE-FEM can be found on the online bug traker. Please use it to report any bug.