HyperHDG
Classes | Public Types | Public Member Functions | Static Public Member Functions | Private Attributes | List of all members
NodeDescriptor::Cubic< hyEdge_dimT, space_dimT, NodeTypeVecT, ConstructorVecT, hyEdge_index_t, hyNode_index_t > Class Template Reference

Definition of the node types of a cubic hypergraph. More...

#include <cubic.hxx>

Collaboration diagram for NodeDescriptor::Cubic< hyEdge_dimT, space_dimT, NodeTypeVecT, ConstructorVecT, hyEdge_index_t, hyNode_index_t >:
Collaboration graph
[legend]

Classes

class  hyEdge
 Definition of the node types of a hypergraph's edges. More...
 

Public Types

typedef hyEdge value_type
 Defines the return value of the class to be a hyEdge. More...
 
typedef ConstructorVecT constructor_value_type
 Defines the value type of input argument for standard constructor. More...
 

Public Member Functions

 Cubic (const ConstructorVecT &n_elements)
 Construct a node descriptor of a cubic hypergraph. More...
 
 Cubic (const Topology::Cubic< hyEdge_dimT, space_dimT > &other)
 Construct a cubic node descruiptor from a cubic topology. More...
 
const value_type operator[] (const hyEdge_index_t index) const
 Get topological hyperedge of given index. More...
 
const ConstructorVecT & n_elements () const
 Return the array / vector of elements per dimensions. More...
 
const hyEdge_index_t n_hyEdges () const
 Returns the number of hyperedges making up the hypergraph. More...
 
unsigned int get_refinement () const
 Return the refinement level (equal to number of subintervals). More...
 
void set_refinement (unsigned int level)
 Set the refinement level (equal to number of subintervals). More...
 

Static Public Member Functions

static constexpr unsigned int hyEdge_dim ()
 Return the template parameter representing the dimension of a hyperedge. More...
 
static constexpr unsigned int space_dim ()
 Return the template parameter representing the dimension of the space. More...
 

Private Attributes

const ConstructorVecT n_elements_
 Number of elements per spatial dimension. More...
 
const Wrapper::tpcc_t< hyEdge_dimT, space_dimT, TPCC::boundaries::both, hyNode_index_t > tpcc_elements_
 Tensor product chain complex for elements. More...
 
unsigned int n_subintervals_
 Refinment level corresponds to number of subintervals per dimension. More...
 
Wrapper::tpcc_t< hyEdge_dimT, hyEdge_dimT, TPCC::boundaries::both, hyNode_index_t > tpcc_ref_elem_
 Tensor product chain complex for refined elements of hypergedge. More...
 
hyEdge_index_t n_hyEdges_
 Total amount of hyperedges in hypergraph. More...
 

Detailed Description

template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeTypeVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = unsigned int, typename hyNode_index_t = hyEdge_index_t>
class NodeDescriptor::Cubic< hyEdge_dimT, space_dimT, NodeTypeVecT, ConstructorVecT, hyEdge_index_t, hyNode_index_t >

Definition of the node types of a cubic hypergraph.


In a cubic hypergraph \(\mathcal G\), the nodes receive their indices according to their positions. Thus, the node type \(t\) of node \(\mathcal N\) is defined as

\[ t = \sum_{n=1}^\text{space_dim} 3^n \left[ ( \Pi_n \mathcal N == \{ \min \Pi_n \mathcal G \} ) + 2 ( \Pi_n \mathcal N == \{ \max \Pi_n \mathcal G \} ) \right], \]

where \(\Pi_n\) is the orthonormal projection onto the \(n\)-th axis of the canonical basis.

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

Member Typedef Documentation

◆ constructor_value_type

template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeTypeVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = unsigned int, typename hyNode_index_t = hyEdge_index_t>
typedef ConstructorVecT NodeDescriptor::Cubic< hyEdge_dimT, space_dimT, NodeTypeVecT, ConstructorVecT, hyEdge_index_t, hyNode_index_t >::constructor_value_type

Defines the value type of input argument for standard constructor.


◆ value_type

template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeTypeVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = unsigned int, typename hyNode_index_t = hyEdge_index_t>
typedef hyEdge NodeDescriptor::Cubic< hyEdge_dimT, space_dimT, NodeTypeVecT, ConstructorVecT, hyEdge_index_t, hyNode_index_t >::value_type

Defines the return value of the class to be a hyEdge.


Constructor & Destructor Documentation

◆ Cubic() [1/2]

template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeTypeVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = unsigned int, typename hyNode_index_t = hyEdge_index_t>
NodeDescriptor::Cubic< hyEdge_dimT, space_dimT, NodeTypeVecT, ConstructorVecT, hyEdge_index_t, hyNode_index_t >::Cubic ( const ConstructorVecT &  n_elements)
inline

Construct a node descriptor of a cubic hypergraph.


Parameters
n_elementsA vector/array containing number of elements per spatial dimension.

◆ Cubic() [2/2]

template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeTypeVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = unsigned int, typename hyNode_index_t = hyEdge_index_t>
NodeDescriptor::Cubic< hyEdge_dimT, space_dimT, NodeTypeVecT, ConstructorVecT, hyEdge_index_t, hyNode_index_t >::Cubic ( const Topology::Cubic< hyEdge_dimT, space_dimT > &  other)
inline

Construct a cubic node descruiptor from a cubic topology.


Parameters
otherTopology to which the node descriptor will fit.

Member Function Documentation

◆ get_refinement()

template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeTypeVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = unsigned int, typename hyNode_index_t = hyEdge_index_t>
unsigned int NodeDescriptor::Cubic< hyEdge_dimT, space_dimT, NodeTypeVecT, ConstructorVecT, hyEdge_index_t, hyNode_index_t >::get_refinement ( ) const
inline

Return the refinement level (equal to number of subintervals).


◆ hyEdge_dim()

template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeTypeVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = unsigned int, typename hyNode_index_t = hyEdge_index_t>
static constexpr unsigned int NodeDescriptor::Cubic< hyEdge_dimT, space_dimT, NodeTypeVecT, ConstructorVecT, hyEdge_index_t, hyNode_index_t >::hyEdge_dim ( )
inlinestaticconstexpr

Return the template parameter representing the dimension of a hyperedge.


Return values
hyEdge_dimTThe dimension of a hyperedge.

◆ n_elements()

template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeTypeVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = unsigned int, typename hyNode_index_t = hyEdge_index_t>
const ConstructorVecT& NodeDescriptor::Cubic< hyEdge_dimT, space_dimT, NodeTypeVecT, ConstructorVecT, hyEdge_index_t, hyNode_index_t >::n_elements ( ) const
inline

Return the array / vector of elements per dimensions.


Return values
n_elementsA vector / array containing the elements in the repective dimension.

◆ n_hyEdges()

template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeTypeVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = unsigned int, typename hyNode_index_t = hyEdge_index_t>
const hyEdge_index_t NodeDescriptor::Cubic< hyEdge_dimT, space_dimT, NodeTypeVecT, ConstructorVecT, hyEdge_index_t, hyNode_index_t >::n_hyEdges ( ) const
inline

Returns the number of hyperedges making up the hypergraph.


Return values
n_hyperedgesThe total amount of hyperedges of a hypergraph.

◆ operator[]()

template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeTypeVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = unsigned int, typename hyNode_index_t = hyEdge_index_t>
const value_type NodeDescriptor::Cubic< hyEdge_dimT, space_dimT, NodeTypeVecT, ConstructorVecT, hyEdge_index_t, hyNode_index_t >::operator[] ( const hyEdge_index_t  index) const
inline

Get topological hyperedge of given index.


This function returns the hyperedge of the given index, i.e., it returns the hyperedge 's node description info.

Parameters
indexThe index of the hyperedge to be returned.
Return values
hyperedgeInformation on the hyperedge's nodes (cf. value_type).

◆ set_refinement()

template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeTypeVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = unsigned int, typename hyNode_index_t = hyEdge_index_t>
void NodeDescriptor::Cubic< hyEdge_dimT, space_dimT, NodeTypeVecT, ConstructorVecT, hyEdge_index_t, hyNode_index_t >::set_refinement ( unsigned int  level)
inline

Set the refinement level (equal to number of subintervals).


Here is the call graph for this function:

◆ space_dim()

template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeTypeVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = unsigned int, typename hyNode_index_t = hyEdge_index_t>
static constexpr unsigned int NodeDescriptor::Cubic< hyEdge_dimT, space_dimT, NodeTypeVecT, ConstructorVecT, hyEdge_index_t, hyNode_index_t >::space_dim ( )
inlinestaticconstexpr

Return the template parameter representing the dimension of the space.


Return values
space_dimTThe dimension of the space.

Member Data Documentation

◆ n_elements_

template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeTypeVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = unsigned int, typename hyNode_index_t = hyEdge_index_t>
const ConstructorVecT NodeDescriptor::Cubic< hyEdge_dimT, space_dimT, NodeTypeVecT, ConstructorVecT, hyEdge_index_t, hyNode_index_t >::n_elements_
private

Number of elements per spatial dimension.


◆ n_hyEdges_

template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeTypeVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = unsigned int, typename hyNode_index_t = hyEdge_index_t>
hyEdge_index_t NodeDescriptor::Cubic< hyEdge_dimT, space_dimT, NodeTypeVecT, ConstructorVecT, hyEdge_index_t, hyNode_index_t >::n_hyEdges_
private

Total amount of hyperedges in hypergraph.


◆ n_subintervals_

template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeTypeVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = unsigned int, typename hyNode_index_t = hyEdge_index_t>
unsigned int NodeDescriptor::Cubic< hyEdge_dimT, space_dimT, NodeTypeVecT, ConstructorVecT, hyEdge_index_t, hyNode_index_t >::n_subintervals_
private

Refinment level corresponds to number of subintervals per dimension.


◆ tpcc_elements_

template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeTypeVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = unsigned int, typename hyNode_index_t = hyEdge_index_t>
const Wrapper::tpcc_t<hyEdge_dimT, space_dimT, TPCC::boundaries::both, hyNode_index_t> NodeDescriptor::Cubic< hyEdge_dimT, space_dimT, NodeTypeVecT, ConstructorVecT, hyEdge_index_t, hyNode_index_t >::tpcc_elements_
private

Tensor product chain complex for elements.


◆ tpcc_ref_elem_

template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeTypeVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = unsigned int, typename hyNode_index_t = hyEdge_index_t>
Wrapper::tpcc_t<hyEdge_dimT, hyEdge_dimT, TPCC::boundaries::both, hyNode_index_t> NodeDescriptor::Cubic< hyEdge_dimT, space_dimT, NodeTypeVecT, ConstructorVecT, hyEdge_index_t, hyNode_index_t >::tpcc_ref_elem_
private

Tensor product chain complex for refined elements of hypergedge.



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