|
dune-geometry 2.10
|

Classes | |
| struct | Dune::Geo::ReferenceElements< ctype_, dim > |
| Class providing access to the singletons of the reference elements. More... | |
| class | Dune::Geo::ReferenceElement< Implementation > |
| This class provides access to geometric and topological properties of a reference element. More... | |
Functions | |
| template<typename... T> | |
| unspecified value type | Dune::referenceElement (T &&... t) |
| Returns a reference element for the objects t.... | |
| template<typename T, int dim> | |
| auto | Dune::referenceElement (const Dune::GeometryType >, Dune::Dim< dim >={}) |
| Returns a reference element of dimension dim for the given geometry type and coordinate field type. | |
| template<typename T, int dim, std::enable_if_t< IsNumber< std::decay_t< T > >::value, int > = 0> | |
| auto | Dune::referenceElement (const T &, const Dune::GeometryType >, Dune::Dim< dim >) |
| Returns a reference element of dimension dim for the given geometry type and coordinate field type. | |
In the following we will give a definition of reference elements and subelement numbering. This is used to define geometries by prescribing a set of points in the space 
The basic building block for these elements is given by a recursion formula which assigns to each set 


![$ E^\vert = \lbrace (x,\bar{x}) \mid
x \in E, \bar{x} \in [0,1] \rbrace $](form_56.png)
![$ E^\circ = \lbrace ((1-\bar{x})x,\bar{x}) \mid
x \in E, \bar{x} \in [0,1] \rbrace $](form_57.png)

For 

![$ L_1 = P_0^\vert = P_0^\circ = [0,1] $](form_61.png)








In general if 



Based on the recursion formula we can also define a numbering of the subentities and also of the sub-subentities of 











For the subentity of codimension 



Here is a graphical representation of the reference elements:
Face Numbering |
Edge Numbering |
Face Numbering |
Edge Numbering |
Face Numbering |
Edge Numbering |
Face Numbering |
Edge Numbering |
In addition to the numbering and the corner coordinates of a reference element 



The recursion formula is also used to define mappings from reference elements 









![\[ D\Phi(x)^{-T}:=Q^T L^{-1}. \]](form_95.png)
![\[ \sqrt{\mathrm{det}(D\Phi(x)^T D\Phi(x))} =
\sqrt{\mathrm{det}(LL^T)} =
\Pi_{i=1}^d l_{ii}. \]](form_96.png)
![\[ \int_{\hat{E}} \Pi_{i=1}^d l_{ii}(x) d\;x
= |\hat{E}| \Pi_{i=1}^d l_{ii}(b(\hat{E})). \]](form_97.png)
The next sections describe the details of the construction.
We define the set 










For each reference topology 
























![\[S_{c,i}(T) = \left\{\begin{array}{ll}
S_{c,i}(t)^\vert & \mbox{for}\; i=1,\dots,p, \\
S_{c-1,i-p}(t) & \mbox{for}\; i=p+1,\dots,p+q, \\
S_{c-1,i-p-q}(t) & \mbox{for}\; i=p+q+1,\dots,p+2q.
\end{array}\right.
\]](form_123.png)



![\[S_{c,i}(T) = \left\{\begin{array}{ll}
S_{c-1,i}(t) & \mbox{for}\; i=1,\dots,q, \\
S_{c,i-q}(t)^\circ & \mbox{for}\; i=q+1,\dots,q+p.
\end{array}\right.
\]](form_124.png)
Notice that the number of vertices (i.e., subtopologies of codimension 




For each reference topology 












The convex hall of the set of points 



![$\mathrm{domain}( T^\vert ) := \mathrm{domain}( T ) \times [0,1]$](form_142.png)
![$\mathrm{domain}( T^\circ )
:= \lbrace ((1-\bar{x})x,\bar{x}) \mid
x \in \mathrm{domain}( T ),
\bar{x} \in [0,1] \rbrace$](form_143.png)
A pair 



The reference element is the pair 
For a given set of points 






![$\bar{x}\in[0,1]$](form_155.png)


![$\bar{x}\in[0,1]$](form_155.png)
Given a reference topology 



























Given these subsets we define subreference elements 


Furthermore we define a numbering of the subreference elements of each subreference element in 





![\[\Phi_{c,i}(S_{c,i}(T))\circ \Phi_{cc,ii}(S_{cc,ii}(S_{c,i}(T))) =
\Phi_{c+cc,k}(T).\]](form_183.png)
| auto Dune::referenceElement | ( | const Dune::GeometryType & | gt, |
| Dune::Dim< dim > | = {} ) |
Returns a reference element of dimension dim for the given geometry type and coordinate field type.
This function allows you to obtain a reference element for a given coordinate type, dimension and GeometryType:
| auto Dune::referenceElement | ( | const T & | , |
| const Dune::GeometryType & | gt, | ||
| Dune::Dim< dim > | ) |
Returns a reference element of dimension dim for the given geometry type and coordinate field type.
This function allows you to obtain a reference element for a given coordinate type, dimension and GeometryType:
| unspecified value type Dune::referenceElement | ( | T &&... | t | ) |
Returns a reference element for the objects t....
The freestanding function referenceElement is a generic entry point for getting reference elements for arbitrary objects that support the operation. As it relies on argument-dependent lookup, the function should be called without any qualifying namespace. Note, however, that the versions of referenceElement() for a dimension and GeometryType with explicit template arguments cannot be found by ADL, so you have to explicitly pull them in or qualify the call using Dune:::
The returned object is guaranteed to have value semantics, so you can copy it around and store it by value.
The grid geometries in dune-grid support this function, and thus most people will use this function as
This does of course also work for entities of other codimensions.