dune-geometry  2.2.0
Classes | Modules
Generic Reference Elements
dune-geometry

Classes

struct  Dune::GenericReferenceElements< ctype, dim >
 Class providing access to the singletons of the generic reference elements. Special methods are available for simplex and cube elements of any dimension. The method general can be used to obtain the reference element for a given geometry type. More...
class  Dune::GenericReferenceElement< ctype, dim >
 This class provides access to geometric and topological properties of a reference element. This includes its type, the number of subentities, the volume, and a method for checking if a point is inside. The embedding of each subentity into the reference element is also provided. More...

Modules

 Transition to Generic Reference Elements

Generic Geometries

Introduction

In the following we will give a definition of reference elements and subelement numbering. This is used to define geometries by prescibing a set of points in the space $ \mathbf{R}^w $.

The basic building block for these elements is given by a recursion formula which assignes to each set $ E \subset \mathbf{R}^d $ either a pyramid element $ E^\vert\subset \mathbf{R}^{d+1} $ and a prism element $ E^\vert\subset \mathbf{R}^{d+1} $ with $ E^\vert = \lbrace (x,\bar{x}) \mid x \in E, \bar{x} \in [0,1] \rbrace $ and $ E^\circ = \lbrace ((1-\bar{x})x,\bar{x}) \mid x \in E, \bar{x} \in [0,1] \rbrace $. The recursion starts with a single point $ P_0=0\in\mathbf{R}^0 $.

For $ d=1,2,3 $ this leads to the following elements

In general if $ Q_d $ is a cube then $ Q_d^\vert $ is also a cube and if $ S_d $ is a simplex then $ S_d^\vert $ is also a simplex.

Based on the recursion formula we can also define a numbering of the subentities and also of the sub-subentities of $ E^\vert $ or $ E^\circ $ based on a numbering of $ E $. For the subentities of codimension $ c $ we use the numbering

For the subentity of codimension $ cc $ in a codimension $ c $ subentity $ E' $ we use the numbering induced by the numbering the reference element corresponding to $ E' $.

Here is a graphical representation of the reference elements:

  1. One-dimensional reference element. For d=1 the simplex and cube are identical
    gg_line.png
  2. Two-dimensional reference simplex (a.k.a. triangle)
    gg_triangle.png
  3. Three-dimensional reference simplex (a.k.a. tetrahedron)
    gg_tetrahedron.png
    Face Numbering
    gg_tetrahedron_edges.png
    Edge Numbering
  4. Two-dimensional reference cube (a.k.a. quadrilateral)
    gg_quadrilateral.png
  5. Three-dimensional reference cube (a.k.a. hexahedron)
    gg_hexahedron.png
    Face Numbering
    gg_hexahedron_edges.png
    Edge Numbering
  6. Prism reference element
    gg_prism.png
    Face Numbering
    gg_prism_edges.png
    Edge Numbering
  7. Pyramid reference element
    gg_pyramid.png
    Face Numbering
    gg_pyramid_edges.png
    Edge Numbering

In addition to the numbering and the corner coordinates of a reference element $ \hat{E} $ we also define the barycenters $ b(\hat{E}) $, the volume $ |\hat{E}| $ and the normals $ n_i(\hat{E}) $ to all codimension one subelements.

The recursion formula is also used to define mappings from reference elements $ E $ to general polytop given by a set of coordinates for the corner points - together with the mapping $ \Phi $, the transpose of the jacobian $ D\Phi^T(x)\in\mathbf{R}^{d,w} $ is also defined where $ d $ is the dimension of the reference element and $ w $ the dimension of the coordinates. This sufficies to define other necessary parts of a Dune geometry by LQ-decomposing $ D\Phi^T $: let $ D\Phi^T(x) = LQ $ be given with a lower diagonal matrix $ L\in \mathbf{R}^{d,d} $ and a matrix $ Q\in\mathbf{R}^{d,w} $ which satisfies $ Q Q^T = I $:

The next sections describe the details of the construction.

Reference Topology

We define the set $\mathcal{T}$ of reference topologies by the following rules:

For each reference topology $T$ we define the following values:

Notice that the number of vertices (i.e., subtopologies of codimension $d(T)$) of a topology $T$ does not uniquely identify the topology. To see this, consider the topologies $T_1 = \mathbf{p}^{\vert\vert\vert\circ\circ}$ and $T_2 = \mathbf{p}^{\circ\circ\circ\circ\vert}$. For these topologies we have $s_d( T_1 ) = s_d( T_2 ) = 10$.

Reference Domains

For each reference topology $T$ we assosiate the set of corners $\mathcal{C}(T):=(p_i(T))_{1=1}^{s_d(T)}\subset\mathbf{R}^d(T)$ defined through

The convex hall of the set of points $\mathcal{C}(T)$ defines the reference domain $\mathrm{domain}(T)$ for the reference topology $T$; it follows that

Reference Elements and Mappings

A pair $E=(T,\Phi)$ of a topology $T$ and a map $\Phi:\mathrm{domain}( T ) \to \mathbf{R}^w$ with $w\geq d(T)$ is called an element.

The reference element is the pair $E(T)=(T,{\rm id})$.

For a given set of points $\mathcal{C}:=(p_i)_{1=1}^{s_d(T)}\subset\mathbf{R}^w$ we define a mapping $\Phi_T(\mathcal{C},\cdot)\mathrm{domain}( T ) \to \mathbf{R}^w$ through $\Phi_T(\mathcal{C};p_i(T))=p_i$ for all $p_i(T)\in \mathcal{C}(T)$. This mapping can be expressed using the recurive definition of the reference topologies through:

Numbering of Subelements

Given a reference topology $T$, a codimension $c\in\{0,\dots,d(T)\}$ and a subtopology $S_{c,i}(T)$ we define a subset of the corner set $\mathcal{C}(T)$ $ \mathcal{C}_{c,i}(T)= (p_{k_j}(T))_{j=1}^{s_{d(S_{c,i}(T)}(S_{c,i}(T))} $ given by the subsequence $ \mathcal{K}_{c,i}(T)=(k_j)_{j=1}^{s_{d(S_{c,i}(T)}(S_{c,i}(T))} $ of $ \{1,dots,s_{d(T)}(T)\} $:

$ \mathcal{C}_{0,0}(T) = \mathcal{C}(T)$, $ \mathcal{C}_{d(T),i}(T) = (p_i(T)) $, and for $c\in\{1,\dots,d(T)-1\}$ we define $ \mathcal{K}_{c,i}(T)=(k_j)_{j=1}^{s_{d(S_{c,i}(T)}(S_{c,i}(T))} $ through the recursion

Given these subsets we define subreference elements $E_{c,i}(T)=(S_{c,i}(T),\Phi_{c,i}(T))$ of $E(T)$ given by the following mapping $ \Phi_{c,i}(T,\cdot)=\Phi(S_{c,i}(T),\mathcal{C}_{c,i}(T),\cdot) $.

Furthermore we define a numbering of the subreference elements of each subreference element in $T$. This is the number $ k=\mathrm{index}_{c,i,cc,ii}(T)$ for $c\in\{0,\dots,d(T)\}$, $ i\in\{1,\dots,s_c(T)\} $, and $ cc\in\{0,\dots,d(S_{c,i})\}$, $ ii\in\{1,\dots,s_{cc}(S_{c,i})\} $ for which

\[\Phi_{c,i}(S_{c,i}(T))\circ \Phi_{cc,ii}(S_{cc,ii}(S_{c,i}(T))) = \Phi_{c+cc,k}(T).\]