dune-fem  2.4.1-rc
Modules
dune-fem
Collaboration diagram for dune-fem:

Modules

 View of grid for defining discrete functions
 
 Function and function spaces
 
 Operators
 
 Integration
 
 Adaptation and Parallelization
 
 Input and output
 
 Utility classes
 

Detailed Description

Introduction to the dune-fem package

Concept

The dune-fem module is based on the dune-grid interface library. extending the grid interface by a number of discretization algorithms for solving non-linear systems of partial differential equations.

The main notion is that of a "spatial discrete operator" which models a mapping between two discrete function spaces: $ L_h : U_h \to V_h $. This operator might for example be a second order elliptic operator, a first order hyperbolic operator, or a projector operator. Basic operators can be combined to construct more complex operators. In addition to standard vector space operations, the most flexible construction process is the pass concept, which implements the nesting of operators allowing to define operators $ L_h : U_h \to V_h $ of the form

\begin{eqnarray*} L_h(u_h) = \Pi_h L_{h,n}(L_{h,n-1}(\dots L_1(u_h)\dots) \end{eqnarray*}

build from `simple' discrete operators

\begin{eqnarray*} L_{i+1} : U_{h,i}\times\dots\times U_{h,1}\times U_h \to U_{h,i+1}\times U_{h,i}\times\dots\times U_{h,1}\times U_h \end{eqnarray*}

and a projection $ \Pi_h : U_{h,n}\times\dots\times U_{h,1}\times U_h \to V_h $. By inverting the discrete operator using non-linear or linear solvers (see Linear solver) or by plugging $ L_h $ into an ode solver a wide range of applications can be tackled.

Here is a short list of available simple operators:

By combining these operators in the fashion describt above and using (non)-linear solvers or ode time stepping schemes, very complex problem can be solved, e.g., non-linear elliptic and parabolic problems, advection diffusion or even dispersion equations. Available solvers at this time are

Discrete operators are constructed by choosing a continuous function space, a set of base functions, and a view of the underlying grid which determines that part of the dune grid on which the functions are to be defined. Implementations for discontinuous and Lagrange finite element spaces are available so far.

Adaptation and Parallelization

Handling of the degrees of freedom (dof) on locally adapted and parallel grids - including dynamic load balancing - is automatically performed by the Dune::DofManager so that very little additional coding is required from the user. The Dune::AdaptiveLeafIndexSet implements an efficient reorganization of the dofs during adaptation and grid reorganization. To use this feature the Dune::AdaptationManager should be used.

For handling parallel tasks the Dune::CommunicationManager is available which performs the required communication for a given set of discrete functions. Mostly the operators, the ode, the linear, and the non-linear solvers are implemented for use in a parallel environment so that the step from serial to parallel is almost effortless for the user.

Quadrature and Caching

Quadratures are available from the dune-grid module and for efficiency caching is performed for the basis functions at the quadrature points.

Input and Output

Output routines of simulation results are available for Grape and in vtk - as used for example by paraview. Furthermore checkpointing of the data and the underlying grid structure can be used.