HyperHDG
Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | List of all members
Geometry::File< hyEdge_dimT, space_dimT, vectorT, pointT, mapping_tM, hyEdge_dimTM, space_dimTM, pt_coord_tM, hyEdge_index_t, hyNode_index_t, pt_index_t >::hyEdge Class Reference

Definition of the geometry of a hypergraph's edges. More...

Collaboration diagram for Geometry::File< hyEdge_dimT, space_dimT, vectorT, pointT, mapping_tM, hyEdge_dimTM, space_dimTM, pt_coord_tM, hyEdge_index_t, hyNode_index_t, pt_index_t >::hyEdge:
Collaboration graph
[legend]

Public Member Functions

 hyEdge (const File &hyGraph_geometry, const hyEdge_index_t index)
 Construct hyperedge from hypergraph and index. More...
 
template<unsigned int n_vec>
SmallMat< space_dimT, n_vec, pt_coord_tmap_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_tspan_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. More...
 
const SmallSquareMat< space_dimT, pt_coord_tmat_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_tlocal_normal (const unsigned int index) const
 Return local normal of given index. More...
 
Point< space_dimT, pt_coord_tinner_normal (const unsigned int index) const
 Return inner normal of given index. More...
 
Point< space_dimT, pt_coord_tface_barycenter (const unsigned int index) const
 Return barycenter of face of given index. More...
 
Point< space_dimT, pt_coord_touter_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_tlexicographic (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_tboundary_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 (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

pointT point (const unsigned int pt_index) const
 Return vertex of specified index of a hyperedge. More...
 

Private Attributes

const FilehyGraph_geometry_
 Reference to parent hypergraph. More...
 
const hyEdge_index_t index_
 Index of the hyperedge within the hypergraph. More...
 
mapping_t mapping
 Hold an instance of a mapping type to be able to calculate normals and so on. More...
 

Detailed Description

template<unsigned int hyEdge_dimT, unsigned int space_dimT, template< typename... > typename vectorT = std::vector, typename pointT = Point<space_dimT, float>, template< unsigned int, unsigned int, typename > typename mapping_tM = Mapping::Linear, unsigned int hyEdge_dimTM = hyEdge_dimT, unsigned int space_dimTM = space_dimT, typename pt_coord_tM = typename pointT::value_type, typename hyEdge_index_t = unsigned int, typename hyNode_index_t = hyEdge_index_t, typename pt_index_t = hyNode_index_t>
class Geometry::File< hyEdge_dimT, space_dimT, vectorT, pointT, mapping_tM, hyEdge_dimTM, space_dimTM, pt_coord_tM, hyEdge_index_t, hyNode_index_t, pt_index_t >::hyEdge

Definition of the geometry of a hypergraph's edges.


Constructor & Destructor Documentation

◆ hyEdge()

template<unsigned int hyEdge_dimT, unsigned int space_dimT, template< typename... > typename vectorT = std::vector, typename pointT = Point<space_dimT, float>, template< unsigned int, unsigned int, typename > typename mapping_tM = Mapping::Linear, unsigned int hyEdge_dimTM = hyEdge_dimT, unsigned int space_dimTM = space_dimT, typename pt_coord_tM = typename pointT::value_type, typename hyEdge_index_t = unsigned int, typename hyNode_index_t = hyEdge_index_t, typename pt_index_t = hyNode_index_t>
Geometry::File< hyEdge_dimT, space_dimT, vectorT, pointT, mapping_tM, hyEdge_dimTM, space_dimTM, pt_coord_tM, hyEdge_index_t, hyNode_index_t, pt_index_t >::hyEdge::hyEdge ( const File hyGraph_geometry,
const hyEdge_index_t  index 
)
inline

Construct hyperedge from hypergraph and index.


Here is the call graph for this function:

Member Function Documentation

◆ area()

template<unsigned int hyEdge_dimT, unsigned int space_dimT, template< typename... > typename vectorT = std::vector, typename pointT = Point<space_dimT, float>, template< unsigned int, unsigned int, typename > typename mapping_tM = Mapping::Linear, unsigned int hyEdge_dimTM = hyEdge_dimT, unsigned int space_dimTM = space_dimT, typename pt_coord_tM = typename pointT::value_type, typename hyEdge_index_t = unsigned int, typename hyNode_index_t = hyEdge_index_t, typename pt_index_t = hyNode_index_t>
pt_coord_t Geometry::File< hyEdge_dimT, space_dimT, vectorT, pointT, mapping_tM, hyEdge_dimTM, space_dimTM, pt_coord_tM, hyEdge_index_t, hyNode_index_t, pt_index_t >::hyEdge::area ( ) const
inline

Return Haussdorff/Lebesque measure of the hyperedge.


◆ boundary_lexicographic()

template<unsigned int hyEdge_dimT, unsigned int space_dimT, template< typename... > typename vectorT = std::vector, typename pointT = Point<space_dimT, float>, template< unsigned int, unsigned int, typename > typename mapping_tM = Mapping::Linear, unsigned int hyEdge_dimTM = hyEdge_dimT, unsigned int space_dimTM = space_dimT, typename pt_coord_tM = typename pointT::value_type, typename hyEdge_index_t = unsigned int, typename hyNode_index_t = hyEdge_index_t, typename pt_index_t = hyNode_index_t>
template<unsigned int n_sub_points, typename one_dim_float_t >
Point<space_dimT, pt_coord_t> Geometry::File< hyEdge_dimT, space_dimT, vectorT, pointT, mapping_tM, hyEdge_dimTM, space_dimTM, pt_coord_tM, hyEdge_index_t, hyNode_index_t, pt_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 (slightly moved away from the boundary using boundary_scale), ordered lexicographically.


◆ face_area()

template<unsigned int hyEdge_dimT, unsigned int space_dimT, template< typename... > typename vectorT = std::vector, typename pointT = Point<space_dimT, float>, template< unsigned int, unsigned int, typename > typename mapping_tM = Mapping::Linear, unsigned int hyEdge_dimTM = hyEdge_dimT, unsigned int space_dimTM = space_dimT, typename pt_coord_tM = typename pointT::value_type, typename hyEdge_index_t = unsigned int, typename hyNode_index_t = hyEdge_index_t, typename pt_index_t = hyNode_index_t>
pt_coord_t Geometry::File< hyEdge_dimT, space_dimT, vectorT, pointT, mapping_tM, hyEdge_dimTM, space_dimTM, pt_coord_tM, hyEdge_index_t, hyNode_index_t, pt_index_t >::hyEdge::face_area ( const unsigned int  index) const
inline

Return Haussdorff measure of the specified hypernode.


◆ face_barycenter()

template<unsigned int hyEdge_dimT, unsigned int space_dimT, template< typename... > typename vectorT = std::vector, typename pointT = Point<space_dimT, float>, template< unsigned int, unsigned int, typename > typename mapping_tM = Mapping::Linear, unsigned int hyEdge_dimTM = hyEdge_dimT, unsigned int space_dimTM = space_dimT, typename pt_coord_tM = typename pointT::value_type, typename hyEdge_index_t = unsigned int, typename hyNode_index_t = hyEdge_index_t, typename pt_index_t = hyNode_index_t>
Point<space_dimT, pt_coord_t> Geometry::File< hyEdge_dimT, space_dimT, vectorT, pointT, mapping_tM, hyEdge_dimTM, space_dimTM, pt_coord_tM, hyEdge_index_t, hyNode_index_t, pt_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:

◆ hyEdge_dim()

template<unsigned int hyEdge_dimT, unsigned int space_dimT, template< typename... > typename vectorT = std::vector, typename pointT = Point<space_dimT, float>, template< unsigned int, unsigned int, typename > typename mapping_tM = Mapping::Linear, unsigned int hyEdge_dimTM = hyEdge_dimT, unsigned int space_dimTM = space_dimT, typename pt_coord_tM = typename pointT::value_type, typename hyEdge_index_t = unsigned int, typename hyNode_index_t = hyEdge_index_t, typename pt_index_t = hyNode_index_t>
static constexpr unsigned int Geometry::File< hyEdge_dimT, space_dimT, vectorT, pointT, mapping_tM, hyEdge_dimTM, space_dimTM, pt_coord_tM, hyEdge_index_t, hyNode_index_t, pt_index_t >::hyEdge::hyEdge_dim ( )
inlinestaticconstexpr

Return dimension of the hyperedge.


◆ inner_normal()

template<unsigned int hyEdge_dimT, unsigned int space_dimT, template< typename... > typename vectorT = std::vector, typename pointT = Point<space_dimT, float>, template< unsigned int, unsigned int, typename > typename mapping_tM = Mapping::Linear, unsigned int hyEdge_dimTM = hyEdge_dimT, unsigned int space_dimTM = space_dimT, typename pt_coord_tM = typename pointT::value_type, typename hyEdge_index_t = unsigned int, typename hyNode_index_t = hyEdge_index_t, typename pt_index_t = hyNode_index_t>
Point<space_dimT, pt_coord_t> Geometry::File< hyEdge_dimT, space_dimT, vectorT, pointT, mapping_tM, hyEdge_dimTM, space_dimTM, pt_coord_tM, hyEdge_index_t, hyNode_index_t, pt_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, template< typename... > typename vectorT = std::vector, typename pointT = Point<space_dimT, float>, template< unsigned int, unsigned int, typename > typename mapping_tM = Mapping::Linear, unsigned int hyEdge_dimTM = hyEdge_dimT, unsigned int space_dimTM = space_dimT, typename pt_coord_tM = typename pointT::value_type, typename hyEdge_index_t = unsigned int, typename hyNode_index_t = hyEdge_index_t, typename pt_index_t = hyNode_index_t>
template<unsigned int n_sub_points, typename one_dim_float_t >
Point<space_dimT, pt_coord_t> Geometry::File< hyEdge_dimT, space_dimT, vectorT, pointT, mapping_tM, hyEdge_dimTM, space_dimTM, pt_coord_tM, hyEdge_index_t, hyNode_index_t, pt_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.


◆ local_normal()

template<unsigned int hyEdge_dimT, unsigned int space_dimT, template< typename... > typename vectorT = std::vector, typename pointT = Point<space_dimT, float>, template< unsigned int, unsigned int, typename > typename mapping_tM = Mapping::Linear, unsigned int hyEdge_dimTM = hyEdge_dimT, unsigned int space_dimTM = space_dimT, typename pt_coord_tM = typename pointT::value_type, typename hyEdge_index_t = unsigned int, typename hyNode_index_t = hyEdge_index_t, typename pt_index_t = hyNode_index_t>
Point<hyEdge_dimT, pt_coord_t> Geometry::File< hyEdge_dimT, space_dimT, vectorT, pointT, mapping_tM, hyEdge_dimTM, space_dimTM, pt_coord_tM, hyEdge_index_t, hyNode_index_t, pt_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, template< typename... > typename vectorT = std::vector, typename pointT = Point<space_dimT, float>, template< unsigned int, unsigned int, typename > typename mapping_tM = Mapping::Linear, unsigned int hyEdge_dimTM = hyEdge_dimT, unsigned int space_dimTM = space_dimT, typename pt_coord_tM = typename pointT::value_type, typename hyEdge_index_t = unsigned int, typename hyNode_index_t = hyEdge_index_t, typename pt_index_t = hyNode_index_t>
template<unsigned int n_vec>
SmallMat<space_dimT, n_vec, pt_coord_t> Geometry::File< hyEdge_dimT, space_dimT, vectorT, pointT, mapping_tM, hyEdge_dimTM, space_dimTM, pt_coord_tM, hyEdge_index_t, hyNode_index_t, pt_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, template< typename... > typename vectorT = std::vector, typename pointT = Point<space_dimT, float>, template< unsigned int, unsigned int, typename > typename mapping_tM = Mapping::Linear, unsigned int hyEdge_dimTM = hyEdge_dimT, unsigned int space_dimTM = space_dimT, typename pt_coord_tM = typename pointT::value_type, typename hyEdge_index_t = unsigned int, typename hyNode_index_t = hyEdge_index_t, typename pt_index_t = hyNode_index_t>
template<unsigned int n_vec>
SmallMat<space_dimT, n_vec, pt_coord_t>& Geometry::File< hyEdge_dimT, space_dimT, vectorT, pointT, mapping_tM, hyEdge_dimTM, space_dimTM, pt_coord_tM, hyEdge_index_t, hyNode_index_t, pt_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, template< typename... > typename vectorT = std::vector, typename pointT = Point<space_dimT, float>, template< unsigned int, unsigned int, typename > typename mapping_tM = Mapping::Linear, unsigned int hyEdge_dimTM = hyEdge_dimT, unsigned int space_dimTM = space_dimT, typename pt_coord_tM = typename pointT::value_type, typename hyEdge_index_t = unsigned int, typename hyNode_index_t = hyEdge_index_t, typename pt_index_t = hyNode_index_t>
const SmallSquareMat<space_dimT, pt_coord_t> Geometry::File< hyEdge_dimT, space_dimT, vectorT, pointT, mapping_tM, hyEdge_dimTM, space_dimTM, pt_coord_tM, hyEdge_index_t, hyNode_index_t, pt_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, template< typename... > typename vectorT = std::vector, typename pointT = Point<space_dimT, float>, template< unsigned int, unsigned int, typename > typename mapping_tM = Mapping::Linear, unsigned int hyEdge_dimTM = hyEdge_dimT, unsigned int space_dimTM = space_dimT, typename pt_coord_tM = typename pointT::value_type, typename hyEdge_index_t = unsigned int, typename hyNode_index_t = hyEdge_index_t, typename pt_index_t = hyNode_index_t>
const SmallSquareMat<hyEdge_dimT, pt_coord_t>& Geometry::File< hyEdge_dimT, space_dimT, vectorT, pointT, mapping_tM, hyEdge_dimTM, space_dimTM, pt_coord_tM, hyEdge_index_t, hyNode_index_t, pt_index_t >::hyEdge::mat_r ( ) const
inline

Return reduced matrix R of the QR decomposition.


◆ outer_normal()

template<unsigned int hyEdge_dimT, unsigned int space_dimT, template< typename... > typename vectorT = std::vector, typename pointT = Point<space_dimT, float>, template< unsigned int, unsigned int, typename > typename mapping_tM = Mapping::Linear, unsigned int hyEdge_dimTM = hyEdge_dimT, unsigned int space_dimTM = space_dimT, typename pt_coord_tM = typename pointT::value_type, typename hyEdge_index_t = unsigned int, typename hyNode_index_t = hyEdge_index_t, typename pt_index_t = hyNode_index_t>
Point<space_dimT, pt_coord_t> Geometry::File< hyEdge_dimT, space_dimT, vectorT, pointT, mapping_tM, hyEdge_dimTM, space_dimTM, pt_coord_tM, hyEdge_index_t, hyNode_index_t, pt_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.

◆ point()

template<unsigned int hyEdge_dimT, unsigned int space_dimT, template< typename... > typename vectorT = std::vector, typename pointT = Point<space_dimT, float>, template< unsigned int, unsigned int, typename > typename mapping_tM = Mapping::Linear, unsigned int hyEdge_dimTM = hyEdge_dimT, unsigned int space_dimTM = space_dimT, typename pt_coord_tM = typename pointT::value_type, typename hyEdge_index_t = unsigned int, typename hyNode_index_t = hyEdge_index_t, typename pt_index_t = hyNode_index_t>
pointT Geometry::File< hyEdge_dimT, space_dimT, vectorT, pointT, mapping_tM, hyEdge_dimTM, space_dimTM, pt_coord_tM, hyEdge_index_t, hyNode_index_t, pt_index_t >::hyEdge::point ( const unsigned int  pt_index) const
inlineprivate

Return vertex of specified index of a hyperedge.


◆ space_dim()

template<unsigned int hyEdge_dimT, unsigned int space_dimT, template< typename... > typename vectorT = std::vector, typename pointT = Point<space_dimT, float>, template< unsigned int, unsigned int, typename > typename mapping_tM = Mapping::Linear, unsigned int hyEdge_dimTM = hyEdge_dimT, unsigned int space_dimTM = space_dimT, typename pt_coord_tM = typename pointT::value_type, typename hyEdge_index_t = unsigned int, typename hyNode_index_t = hyEdge_index_t, typename pt_index_t = hyNode_index_t>
static constexpr unsigned int Geometry::File< hyEdge_dimT, space_dimT, vectorT, pointT, mapping_tM, hyEdge_dimTM, space_dimTM, pt_coord_tM, hyEdge_index_t, hyNode_index_t, pt_index_t >::hyEdge::space_dim ( )
inlinestaticconstexpr

Return dimension of the surrounding space.


◆ span_vec()

template<unsigned int hyEdge_dimT, unsigned int space_dimT, template< typename... > typename vectorT = std::vector, typename pointT = Point<space_dimT, float>, template< unsigned int, unsigned int, typename > typename mapping_tM = Mapping::Linear, unsigned int hyEdge_dimTM = hyEdge_dimT, unsigned int space_dimTM = space_dimT, typename pt_coord_tM = typename pointT::value_type, typename hyEdge_index_t = unsigned int, typename hyNode_index_t = hyEdge_index_t, typename pt_index_t = hyNode_index_t>
SmallVec<space_dimT, pt_coord_t> Geometry::File< hyEdge_dimT, space_dimT, vectorT, pointT, mapping_tM, hyEdge_dimTM, space_dimTM, pt_coord_tM, hyEdge_index_t, hyNode_index_t, pt_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

◆ hyGraph_geometry_

template<unsigned int hyEdge_dimT, unsigned int space_dimT, template< typename... > typename vectorT = std::vector, typename pointT = Point<space_dimT, float>, template< unsigned int, unsigned int, typename > typename mapping_tM = Mapping::Linear, unsigned int hyEdge_dimTM = hyEdge_dimT, unsigned int space_dimTM = space_dimT, typename pt_coord_tM = typename pointT::value_type, typename hyEdge_index_t = unsigned int, typename hyNode_index_t = hyEdge_index_t, typename pt_index_t = hyNode_index_t>
const File& Geometry::File< hyEdge_dimT, space_dimT, vectorT, pointT, mapping_tM, hyEdge_dimTM, space_dimTM, pt_coord_tM, hyEdge_index_t, hyNode_index_t, pt_index_t >::hyEdge::hyGraph_geometry_
private

Reference to parent hypergraph.


◆ index_

template<unsigned int hyEdge_dimT, unsigned int space_dimT, template< typename... > typename vectorT = std::vector, typename pointT = Point<space_dimT, float>, template< unsigned int, unsigned int, typename > typename mapping_tM = Mapping::Linear, unsigned int hyEdge_dimTM = hyEdge_dimT, unsigned int space_dimTM = space_dimT, typename pt_coord_tM = typename pointT::value_type, typename hyEdge_index_t = unsigned int, typename hyNode_index_t = hyEdge_index_t, typename pt_index_t = hyNode_index_t>
const hyEdge_index_t Geometry::File< hyEdge_dimT, space_dimT, vectorT, pointT, mapping_tM, hyEdge_dimTM, space_dimTM, pt_coord_tM, hyEdge_index_t, hyNode_index_t, pt_index_t >::hyEdge::index_
private

Index of the hyperedge within the hypergraph.


◆ mapping

template<unsigned int hyEdge_dimT, unsigned int space_dimT, template< typename... > typename vectorT = std::vector, typename pointT = Point<space_dimT, float>, template< unsigned int, unsigned int, typename > typename mapping_tM = Mapping::Linear, unsigned int hyEdge_dimTM = hyEdge_dimT, unsigned int space_dimTM = space_dimT, typename pt_coord_tM = typename pointT::value_type, typename hyEdge_index_t = unsigned int, typename hyNode_index_t = hyEdge_index_t, typename pt_index_t = hyNode_index_t>
mapping_t Geometry::File< hyEdge_dimT, space_dimT, vectorT, pointT, mapping_tM, hyEdge_dimTM, space_dimTM, pt_coord_tM, hyEdge_index_t, hyNode_index_t, pt_index_t >::hyEdge::mapping
private

Hold an instance of a mapping type to be able to calculate normals and so on.



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