Reference documentation for deal.II version 9.4.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\}}\)
Classes | Enumerations
Mappings between reference and real cell
Collaboration diagram for Mappings between reference and real cell:


class  Mapping< dim, spacedim >
 Abstract base class for mapping classes. More...


enum  MappingKind {
  mapping_none = 0x0000 , mapping_covariant = 0x0001 , mapping_contravariant = 0x0002 , mapping_covariant_gradient = 0x0003 ,
  mapping_contravariant_gradient = 0x0004 , mapping_piola = 0x0100 , mapping_piola_gradient = 0x0101 , mapping_nedelec = 0x0200 ,
  mapping_raviart_thomas = 0x0300 , mapping_bdm = mapping_raviart_thomas , mapping_covariant_hessian , mapping_contravariant_hessian ,

Detailed Description

The classes in this module are used to map from unit coordinates to the coordinates of a cell in real cell. Most commonly, one uses the MappingQ1 class that provides a Q1 (bi-/trilinear) mapping (i.e. a mapping that is isoparametric for the usual Q1 elements). However, there are other classes that implement higher-order mappings as well to provide for curvilinear elements. These are discussed in the step-11 and step-12 tutorial programs.

The MappingQ1Eulerian class is an extension to the MappingQ1 class in that it accepts a vector that describes a displacement field for each position of the domain. This is used in Eulerian computations without the need to actually move vertices after each time step.

In addition, the MappingC1 class provides for a boundary of the computational domain that is not only curved, but also has a continuous derivative at the interface between two cells on the boundary.

Finally, the MappingCartesian class is an optimization for elements that are brick-shaped and with edges parallel to the coordinate axes.

In the grand scheme of things, the pieces of this module interact with a variety of other parts of the library:

Enumeration Type Documentation

◆ MappingKind

The transformation kind used for the Mapping::transform() functions.

Special finite elements may need special Mapping from the reference cell to the actual mesh cell. In order to be most flexible, this enum provides an extensible interface for arbitrary transformations. Nevertheless, these must be implemented in the transform() functions of inheriting classes in order to work.


No mapping, i.e., shape functions are not mapped from a reference cell but instead are defined right on the real-space cell.


Covariant mapping (see Mapping::transform() for details).


Contravariant mapping (see Mapping::transform() for details).


Mapping of the gradient of a covariant vector field (see Mapping::transform() for details).


Mapping of the gradient of a contravariant vector field (see Mapping::transform() for details).


The Piola transform usually used for Hdiv elements. Piola transform is the standard transformation of vector valued elements in Hdiv. It amounts to a contravariant transformation scaled by the inverse of the volume element.


Transformation for the gradient of a vector field corresponding to a mapping_piola transformation (see Mapping::transform() for details).


The mapping used for Nedelec elements.

Curl-conforming elements are mapped as covariant vectors. Nevertheless, we introduce a separate mapping kind, such that we can use the same flag for the vector and its gradient (see Mapping::transform() for details).


The mapping used for Raviart-Thomas elements.


The mapping used for BDM elements.


The mappings for 2-forms and third order tensors.

These are mappings typpically applied to hessians transformed to the reference cell.

Mapping of the hessian of a covariant vector field (see Mapping::transform() for details).


Mapping of the hessian of a contravariant vector field (see Mapping::transform() for details).


Mapping of the hessian of a piola vector field (see Mapping::transform() for details).

Definition at line 71 of file mapping.h.