Reference documentation for deal.II version 9.2.0
\(\newcommand{\dealvcentcolon}{\mathrel{\mathop{:}}}\) \(\newcommand{\dealcoloneq}{\dealvcentcolon\mathrel{\mkern-1.2mu}=}\) \(\newcommand{\jump}[1]{\left[\!\left[ #1 \right]\!\right]}\) \(\newcommand{\average}[1]{\left\{\!\left\{ #1 \right\}\!\right\}}\)
Modules | Namespaces
Integrators

A collection of namespaces and functions which simplify the coding of forms and bilinear forms on finite element spaces. Functions for two different purposes are gathered here: the abstract integration on finite element meshes in MeshWorker and actual implementations of the integration of cell and face terms for concrete problems in LocalIntegrators. More...

Collaboration diagram for Integrators:

Modules

 The MeshWorker interface
 A collection of classes and functions simplifying the coding of loops over all cells and faces. All classes and functions of this module are in the MeshWorker namespace, which also contains documentation on the usage.
 

Namespaces

 LocalIntegrators::Advection
 Local integrators related to advection along a vector field and its DG formulations.
 
 LocalIntegrators::Divergence
 Local integrators related to the divergence operator and its trace.
 
 LocalIntegrators::Elasticity
 Local integrators related to elasticity problems.
 
 LocalIntegrators::GradDiv
 
 LocalIntegrators::L2
 Local integrators related to L2-inner products.
 
 LocalIntegrators::Laplace
 Local integrators related to the Laplacian and its DG formulations.
 
 LocalIntegrators
 Library of integrals over cells and faces.
 
 LocalIntegrators::Maxwell
 Local integrators related to curl operators and their traces.
 
 MeshWorker
 

Detailed Description

A collection of namespaces and functions which simplify the coding of forms and bilinear forms on finite element spaces. Functions for two different purposes are gathered here: the abstract integration on finite element meshes in MeshWorker and actual implementations of the integration of cell and face terms for concrete problems in LocalIntegrators.

Note
Documentation on coding conventions, relations between classes, and details of the implementation is found in the documentation of namespaces in this module.

Integration on finite element meshes

When we integrate a function or a functional on a finite element space, the structure of the integration loop is always the same. We have between 3 and 5 nested loops, from outside to inside:

  1. Loop over all cells
  2. Optionally, loop over all faces to compute fluxes
  3. Loop over all quadrature points of the cell/face
  4. Optionally, loop over all test functions to compute forms
  5. Optionally, loop over all trial functions to compute bilinear forms

These loops naturally fall into two classes, namely the computation of cell and face contributions (loops 3 to 5), and the outer loops over the mesh objects, often referred to as assembling.

Support for the outer loop in deal.II can be found in the namespace MeshWorker (see the documentation there). In order to support the cell and face contributions (referred to as local contributions from now on), deal.II offers FEValuesBase and its derived classes. While the outer loop is generic (with exception of the data types), the computation of local contributions is problem dependent. Therefore, no generic algorithm is possible here. Nevertheless, we can define a generic interface for functions for this purpose and provide a library of local integrators for use in applications. These are collected in the namespace LocalIntegrators