HyperHDG
Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | List of all members
Geometry::UnitCube< hyEdge_dimT, space_dimT, pt_coord_t, ConstructorVecT, hyEdge_index_t >::hyEdge Class Reference

Definition of the geometry of a single hyperedge. More...

Collaboration diagram for Geometry::UnitCube< hyEdge_dimT, space_dimT, pt_coord_t, ConstructorVecT, hyEdge_index_t >::hyEdge:
Collaboration graph
[legend]

Public Member Functions

 hyEdge (const hyEdge_index_t index, const UnitCube &geometry)
 Construct a orthotopic hyperedge from its index and the surrounding unit hypercube. More...
 
template<unsigned int n_vec>
SmallMat< space_dimT, n_vec, pt_coord_t > map_ref_to_phys (const SmallMat< hyEdge_dimT, n_vec, pt_coord_t > &points) const
 Map n_vec points from reference to physical element. More...
 
template<unsigned int n_vec>
SmallMat< space_dimT, n_vec, pt_coord_t > & map_ref_to_phys (SmallMat< space_dimT, n_vec, pt_coord_t > &points) const
 Map n_vec points from reference to physical element. More...
 
SmallVec< space_dimT, pt_coord_t > span_vec (const unsigned int index) const
 Return matrix column of the affine-linear transformation. More...
 
const SmallSquareMat< hyEdge_dimT, pt_coord_t > mat_r () const
 Return reduced matrix R of the QR decomposition of the linear transoformation. More...
 
const SmallSquareMat< space_dimT, pt_coord_t > mat_q () const
 Return matrix Q of the QR decomposition of the linear transoformation. More...
 
pt_coord_t area () const
 Return Haussdorff/Lebesque measure of the hyperedge. More...
 
pt_coord_t face_area (const unsigned int index) const
 Return Haussdorff measure of the specified hypernode. More...
 
Point< hyEdge_dimT, pt_coord_t > local_normal (const unsigned int index) const
 Return local normal of given index. More...
 
Point< space_dimT, pt_coord_t > inner_normal (const unsigned int index) const
 Return inner normal of given index. More...
 
Point< space_dimT, pt_coord_t > face_barycenter (const unsigned int index) const
 Return barycenter of face of given index. More...
 
Point< space_dimT, pt_coord_t > outer_normal (const unsigned int index) const
 Return outer normal of given index. More...
 
template<unsigned int n_sub_points, typename one_dim_float_t >
Point< space_dimT, pt_coord_t > lexicographic (unsigned int index, const SmallVec< n_sub_points, one_dim_float_t > &points_1d) const
 Return lexicographically ordered equidistant tensorial point of given index. More...
 
template<unsigned int n_sub_points, typename one_dim_float_t >
Point< space_dimT, pt_coord_t > boundary_lexicographic (unsigned int index, unsigned int boundary_number, float boundary_scale, const SmallVec< n_sub_points, one_dim_float_t > &points_1d) const
 Return equidistant tensorial point of given index on a given boundary face (slightly moved away from the boundary using boundary_scale), ordered lexicographically. More...
 

Static Public Member Functions

static constexpr unsigned int hyEdge_dim ()
 Return dimension of the hyperedge. More...
 
static constexpr unsigned int space_dim ()
 Return dimension of the surrounding space. More...
 

Private Member Functions

template<unsigned int hyEdge_dimTT>
unsigned int fill_data (unsigned int index, const Wrapper::tpcc_elem_t< hyEdge_dimTT, space_dimT > &elem, const UnitCube &geometry)
 Fill data of hyEdge. More...
 
void adapt_data (const Wrapper::tpcc_elem_t< hyEdge_dimT, hyEdge_dimT > &elem, const UnitCube &geometry)
 Refine coarse elememnt. More...
 

Private Attributes

Point< space_dimT, pt_coord_t > translation
 Translation vector of the origin. More...
 
SmallVec< hyEdge_dimT, unsigned int > dim_indices
 The dimensions in wihch the orthotope evolves. More...
 
SmallVec< hyEdge_dimT, pt_coord_t > char_length
 Lengths of the orthotope's lines which are parallel to the dim_indices axes. More...
 

Detailed Description

template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename pt_coord_t = double, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = unsigned int>
class Geometry::UnitCube< hyEdge_dimT, space_dimT, pt_coord_t, ConstructorVecT, hyEdge_index_t >::hyEdge

Definition of the geometry of a single hyperedge.


A hyperege is uniquely defined by a translation, the spanning dimensions, and the lengths of the lines along the these spanning dimensions.

Authors
Guido Kanschat, Heidelberg University, 2019–2020.
Andreas Rupp, Heidelberg University, 2019–2020.

Constructor & Destructor Documentation

◆ hyEdge()

template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename pt_coord_t = double, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = unsigned int>
Geometry::UnitCube< hyEdge_dimT, space_dimT, pt_coord_t, ConstructorVecT, hyEdge_index_t >::hyEdge::hyEdge ( const hyEdge_index_t  index,
const UnitCube geometry 
)
inline

Construct a orthotopic hyperedge from its index and the surrounding unit hypercube.


Parameters
indexThe index of the hyperedge to be created.
geometryThe surrounding unit hypercube.
Here is the call graph for this function:

Member Function Documentation

◆ adapt_data()

template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename pt_coord_t = double, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = unsigned int>
void Geometry::UnitCube< hyEdge_dimT, space_dimT, pt_coord_t, ConstructorVecT, hyEdge_index_t >::hyEdge::adapt_data ( const Wrapper::tpcc_elem_t< hyEdge_dimT, hyEdge_dimT > &  elem,
const UnitCube geometry 
)
inlineprivate

Refine coarse elememnt.


Here is the call graph for this function:

◆ area()

template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename pt_coord_t = double, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = unsigned int>
pt_coord_t Geometry::UnitCube< hyEdge_dimT, space_dimT, pt_coord_t, ConstructorVecT, hyEdge_index_t >::hyEdge::area ( ) const
inline

Return Haussdorff/Lebesque measure of the hyperedge.


◆ boundary_lexicographic()

template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename pt_coord_t = double, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = unsigned int>
template<unsigned int n_sub_points, typename one_dim_float_t >
Point<space_dimT, pt_coord_t> Geometry::UnitCube< hyEdge_dimT, space_dimT, pt_coord_t, ConstructorVecT, hyEdge_index_t >::hyEdge::boundary_lexicographic ( unsigned int  index,
unsigned int  boundary_number,
float  boundary_scale,
const SmallVec< n_sub_points, one_dim_float_t > &  points_1d 
) const
inline

Return equidistant tensorial point of given index on a given boundary face (slightly moved away from the boundary using boundary_scale), ordered lexicographically.


Here is the call graph for this function:

◆ face_area()

template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename pt_coord_t = double, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = unsigned int>
pt_coord_t Geometry::UnitCube< hyEdge_dimT, space_dimT, pt_coord_t, ConstructorVecT, hyEdge_index_t >::hyEdge::face_area ( const unsigned int  index) const
inline

Return Haussdorff measure of the specified hypernode.


Here is the call graph for this function:

◆ face_barycenter()

template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename pt_coord_t = double, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = unsigned int>
Point<space_dimT, pt_coord_t> Geometry::UnitCube< hyEdge_dimT, space_dimT, pt_coord_t, ConstructorVecT, hyEdge_index_t >::hyEdge::face_barycenter ( const unsigned int  index) const
inline

Return barycenter of face of given index.


Here is the call graph for this function:

◆ fill_data()

template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename pt_coord_t = double, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = unsigned int>
template<unsigned int hyEdge_dimTT>
unsigned int Geometry::UnitCube< hyEdge_dimT, space_dimT, pt_coord_t, ConstructorVecT, hyEdge_index_t >::hyEdge::fill_data ( unsigned int  index,
const Wrapper::tpcc_elem_t< hyEdge_dimTT, space_dimT > &  elem,
const UnitCube geometry 
)
inlineprivate

Fill data of hyEdge.


Recursive function that fills translation, dim_indices, and \ยข char_length. To do so, it considers a single hyperedge and takes its zeroth and first faces, and the zeroth and first faces of these faces, and so on to determine the positions of the translation and the other spanning points of the interface.

Template Parameters
hyEdge_dimTTDimension of the hyperedge or face that is considered.
Parameters
indexVariable that indicates which point is investigated. Supposed to be 0, initially.
elemHyperedge or face which is considered.
geometryThe overall unit cube of which the initial elem is a hyperedge of.
Return values
indexIndex that is used for further (recursive) executions of the function.
Here is the call graph for this function:

◆ hyEdge_dim()

template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename pt_coord_t = double, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = unsigned int>
static constexpr unsigned int Geometry::UnitCube< hyEdge_dimT, space_dimT, pt_coord_t, ConstructorVecT, hyEdge_index_t >::hyEdge::hyEdge_dim ( )
inlinestaticconstexpr

Return dimension of the hyperedge.


◆ inner_normal()

template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename pt_coord_t = double, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = unsigned int>
Point<space_dimT, pt_coord_t> Geometry::UnitCube< hyEdge_dimT, space_dimT, pt_coord_t, ConstructorVecT, hyEdge_index_t >::hyEdge::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 vectors spanning the phyiscal element, but the vector of the given index. The vector has to be in the span of the columns of the local transformation matrix. This is an element of the same dimension as the full space.

◆ lexicographic()

template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename pt_coord_t = double, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = unsigned int>
template<unsigned int n_sub_points, typename one_dim_float_t >
Point<space_dimT, pt_coord_t> Geometry::UnitCube< hyEdge_dimT, space_dimT, pt_coord_t, ConstructorVecT, hyEdge_index_t >::hyEdge::lexicographic ( unsigned int  index,
const SmallVec< n_sub_points, one_dim_float_t > &  points_1d 
) const
inline

Return lexicographically ordered equidistant tensorial point of given index.


Here is the call graph for this function:

◆ local_normal()

template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename pt_coord_t = double, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = unsigned int>
Point<hyEdge_dimT, pt_coord_t> Geometry::UnitCube< hyEdge_dimT, space_dimT, pt_coord_t, ConstructorVecT, hyEdge_index_t >::hyEdge::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 the vectors spanning the phyiscal element, orthogonally projected to a hyEdge_dimT dimensional space, but the vector of the given index. This is an element of the same dimension as the reference element.

◆ map_ref_to_phys() [1/2]

template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename pt_coord_t = double, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = unsigned int>
template<unsigned int n_vec>
SmallMat<space_dimT, n_vec, pt_coord_t> Geometry::UnitCube< hyEdge_dimT, space_dimT, pt_coord_t, ConstructorVecT, hyEdge_index_t >::hyEdge::map_ref_to_phys ( const SmallMat< hyEdge_dimT, n_vec, pt_coord_t > &  points) const
inline

Map n_vec points from reference to physical element.


Parameters
pointsMatrix whose columns consist of the points to be mapped.
Return values
phy_pointsMatrix whose columns consist of the mapped points.
Here is the call graph for this function:

◆ map_ref_to_phys() [2/2]

template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename pt_coord_t = double, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = unsigned int>
template<unsigned int n_vec>
SmallMat<space_dimT, n_vec, pt_coord_t>& Geometry::UnitCube< hyEdge_dimT, space_dimT, pt_coord_t, ConstructorVecT, hyEdge_index_t >::hyEdge::map_ref_to_phys ( SmallMat< space_dimT, n_vec, pt_coord_t > &  points) const
inline

Map n_vec points from reference to physical element.


Parameters
pointsMatrix whose columns consist of the points to be mapped.
Return values
pointsMatrix whose columns consist of the mapped points.
Here is the call graph for this function:

◆ mat_q()

template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename pt_coord_t = double, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = unsigned int>
const SmallSquareMat<space_dimT, pt_coord_t> Geometry::UnitCube< hyEdge_dimT, space_dimT, pt_coord_t, ConstructorVecT, hyEdge_index_t >::hyEdge::mat_q ( ) const
inline

Return matrix Q of the QR decomposition of the linear transoformation.


◆ mat_r()

template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename pt_coord_t = double, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = unsigned int>
const SmallSquareMat<hyEdge_dimT, pt_coord_t> Geometry::UnitCube< hyEdge_dimT, space_dimT, pt_coord_t, ConstructorVecT, hyEdge_index_t >::hyEdge::mat_r ( ) const
inline

Return reduced matrix R of the QR decomposition of the linear transoformation.


◆ outer_normal()

template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename pt_coord_t = double, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = unsigned int>
Point<space_dimT, pt_coord_t> Geometry::UnitCube< hyEdge_dimT, space_dimT, pt_coord_t, ConstructorVecT, hyEdge_index_t >::hyEdge::outer_normal ( const unsigned int  index) const
inline

Return outer normal of given index.


Return unit normal with respect to the hyperedge within the full space.

◆ space_dim()

template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename pt_coord_t = double, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = unsigned int>
static constexpr unsigned int Geometry::UnitCube< hyEdge_dimT, space_dimT, pt_coord_t, ConstructorVecT, hyEdge_index_t >::hyEdge::space_dim ( )
inlinestaticconstexpr

Return dimension of the surrounding space.


◆ span_vec()

template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename pt_coord_t = double, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = unsigned int>
SmallVec<space_dimT, pt_coord_t> Geometry::UnitCube< hyEdge_dimT, space_dimT, pt_coord_t, ConstructorVecT, hyEdge_index_t >::hyEdge::span_vec ( const unsigned int  index) const
inline

Return matrix column of the affine-linear transformation.


Parameters
indexIndex of the matrix column to be returned.
Return values
columnThe specified matrix column.

Member Data Documentation

◆ char_length

template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename pt_coord_t = double, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = unsigned int>
SmallVec<hyEdge_dimT, pt_coord_t> Geometry::UnitCube< hyEdge_dimT, space_dimT, pt_coord_t, ConstructorVecT, hyEdge_index_t >::hyEdge::char_length
private

Lengths of the orthotope's lines which are parallel to the dim_indices axes.


◆ dim_indices

template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename pt_coord_t = double, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = unsigned int>
SmallVec<hyEdge_dimT, unsigned int> Geometry::UnitCube< hyEdge_dimT, space_dimT, pt_coord_t, ConstructorVecT, hyEdge_index_t >::hyEdge::dim_indices
private

The dimensions in wihch the orthotope evolves.


◆ translation

template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename pt_coord_t = double, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = unsigned int>
Point<space_dimT, pt_coord_t> Geometry::UnitCube< hyEdge_dimT, space_dimT, pt_coord_t, ConstructorVecT, hyEdge_index_t >::hyEdge::translation
private

Translation vector of the origin.



The documentation for this class was generated from the following file: