|
| Linear ()=default |
| Construct affine-linear mapping. More...
|
|
| Linear (const Point< space_dimT, map_float_t > &translation, const SmallMat< space_dimT, hyEdge_dimT, map_float_t > &matrix) |
| Construct affine-linear mapping. More...
|
|
map_float_t | functional_determinant_hyEdge () const |
| The functional determinant of the affine-linear mappring. More...
|
|
map_float_t | functional_determinant_hyNode (const unsigned int index) const |
| The functional determinant of the affine-linear mapping of a hypernode. More...
|
|
SmallVec< space_dimT, map_float_t > | matrix_column (const unsigned int col) const |
| Return vector representing matrix column of specified index. More...
|
|
template<unsigned int n_vec> |
SmallMat< space_dimT, n_vec, map_float_t > | map_reference_to_physical (const SmallMat< hyEdge_dimT, n_vec, map_float_t > &points) const |
| Map n_vec points from reference to physical element. More...
|
|
template<unsigned int n_vec> |
SmallMat< hyEdge_dimT, n_vec, map_float_t > | map_physical_to_reference (const SmallMat< space_dimT, n_vec, map_float_t > &phy_points) const |
| Map n_vec points from physical to element. More...
|
|
const SmallSquareMat< space_dimT, map_float_t > & | mat_q () const |
| Return matrix Q of the QR decomposition. More...
|
|
const SmallSquareMat< hyEdge_dimT, map_float_t > & | mat_r () const |
| Return matrix R of the QR decomposition. More...
|
|
SmallVec< hyEdge_dimT, map_float_t > | local_normal (const unsigned int index) const |
| Return local normal of given index. More...
|
|
SmallVec< space_dimT, map_float_t > | inner_normal (const unsigned int index) const |
| Return inner normal of given index. More...
|
|
SmallVec< space_dimT, map_float_t > | outer_normal (const unsigned int index) const |
| Return outer normal of given index. More...
|
|
const SmallMat< space_dimT, hyEdge_dimT, map_float_t > & | matrix () const |
| Return matrix associated to affine-linear transformation. More...
|
|
const SmallVec< space_dimT, map_float_t > & | translation () const |
| Return shifting vector associated to affine-linear transformation. More...
|
|
template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename map_float_t>
class Mapping::Linear< hyEdge_dimT, space_dimT, map_float_t >
Mapping of a unit hypercube to a parallelotope — can also be used for simplices.
The affine-linear mapping of a hyEdge_dimT
dimensional unit square to an parallelotope which lives in space_dimT
dimensions.
- Authors
- Guido Kanschat, Heidelberg University, 2019–2020.
-
Andreas Rupp, Heidelberg University, 2019–2020.
template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename map_float_t >
map_float_t Mapping::Linear< hyEdge_dimT, space_dimT, map_float_t >::functional_determinant_hyEdge |
( |
| ) |
const |
|
inline |
The functional determinant of the affine-linear mappring.
The determinant, in general is only defined for square matrices. In our case, the determinant is related to the ratio of Lebesque measure of the reference cell and the Haussdorff measure of the physical cell. This induces a natural generalization to rectangular matrices (with at least as many rows as columns), where the generalized determinant can be defined as the product of the diagonal entries of matrix R of the QR decomposition if normalized as it is described above.
This determinant corresponds (up to its sign) to the general Haussdorff transformation formula of measures by a factor of g = sqrt( (D Phi)^T (D Phi) ). The difference in the sign will become important for the transformation of gradients.
template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename map_float_t >
map_float_t Mapping::Linear< hyEdge_dimT, space_dimT, map_float_t >::functional_determinant_hyNode |
( |
const unsigned int |
index | ) |
const |
|
inline |
The functional determinant of the affine-linear mapping of a hypernode.
For details consider the description of functional_determinant_hyEdge()
, and that a hypernode is spanned by all, but one columns of the matrix for the affine-linear mapping.
- Parameters
-
index | Index of the vector in the matrix which is not related to the node. |
template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename map_float_t >
SmallVec<space_dimT, map_float_t> Mapping::Linear< hyEdge_dimT, space_dimT, map_float_t >::inner_normal |
( |
const unsigned int |
index | ) |
const |
|
inline |
Return inner normal of given index.
Return outer unit normal with respect to the hypernode which is spanned by all columns of the transformation matrix but the column of the given index. The vector has to be in the span of the columns of the transformation matrix. This is an element of the same dimension as the full space.
- Parameters
-
index | Index of the vector in the matrix which is not related to the node. |
template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename map_float_t >
SmallVec<hyEdge_dimT, map_float_t> Mapping::Linear< hyEdge_dimT, space_dimT, map_float_t >::local_normal |
( |
const unsigned int |
index | ) |
const |
|
inline |
Return local normal of given index.
Return outer unit normal with respect to the hypernode which is spanned by all columns of R, but the column of the given index. This is an element of the same dimension as the reference square.
- Parameters
-
index | Index of the vector in the matrix which is not related to the node. |
template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename map_float_t >
Matrix R of QR decomposition of the matrix of the affine transformation.
This matrix actually is a rectangular matrix. Due to our assumption that the space dimension is larger than or equal to the dimension of a hyperedge, the matrix matrix
and its R of the QR decomposition have at least as many rows, as they have columns. Nonetheless, R is an upper triangular matrix. This allows to remove the zero rows (actually below our saved R) without loss of generality, but saving some space.
This matrix is normalized to have non-negative diagonal entries, except for the very first.