Reference documentation for deal.II version 9.0.0
Classes
MeshWorker::Assembler Namespace Reference

Classes

class  CellsAndFaces
 
class  Functional
 
class  GnuplotPatch
 
class  MatrixLocalBlocksToGlobalBlocks
 
class  MatrixSimple
 
class  MGMatrixLocalBlocksToGlobalBlocks
 
class  MGMatrixSimple
 
class  ResidualLocalBlocksToGlobalBlocks
 
class  ResidualSimple
 
class  SystemSimple
 

Detailed Description

The namespace containing objects that can be used to assemble data computed on cells and faces into global objects. This can reach from collecting the total error estimate from cell and face contributions to assembling matrices and multilevel matrices.

Data models

The class chosen from this namespace determines which data model is used. For the local as well as the global objects, we have the choice between two models:

The comprehensive data model

This is the structure set up by the FESystem class. Globally, this means, data is assembled into one residual vector and into one matrix. These objects may be block vectors and block matrices, but the process of assembling ignores this fact.

Similarly, there is only a single cell vector and cell matrix, respectively, which is indexed by all degrees of freedom of the FESystem. When building the cell matrix, it is necessary to distinguish between the different components of the system and select the right operator for each pair.

The blocked data model

Here, all the blocks are treated separately (in spite of using FESystem for its convenience in other places). For instance, no block matrix is assembled, but a list of blocks, which can be combined later by BlockMatrixArray. Locally, this means, that each matrix block of a system is generated separately and assembled into the corresponding global block.

This approach is advantageous, if the number of matrices for each block position in the global system is different. For instance, block preconditioners for the Oseen problem require 3 pressure matrices, but only one divergence and one advection-diffusion operator for velocities.

Additionally, this approach enables the construction of a system of equations from building blocks for each equation and coupling operator.

Nevertheless, since a separate FEValues object must be created for each base element, it is not quite clear a priori, which data model is more efficient.

Author
Guido Kanschat, 2009