|
| Cubic (const constructor_value_type &n_elements) |
| Construct a cubic hypergraph. More...
|
|
| Cubic (const Cubic< hyEdge_dimT, space_dimT > &other) |
| Construct a hypergraph topology from another hypergraph topology. More...
|
|
const value_type | operator[] (const hyEdge_index_t index) const |
| Get topological hyperedge of given index. More...
|
|
const ConstructorVecT & | n_elements () const |
| Read the array of elements per dimensions. More...
|
|
const Wrapper::tpcc_t< hyEdge_dimT, space_dimT, TPCC::boundaries::both, hyNode_index_t > & | tpcc_elem () const |
| Tensor product chain complex for elements. More...
|
|
const Wrapper::tpcc_t< hyEdge_dimT - 1, space_dimT, TPCC::boundaries::both, hyNode_index_t > & | tpcc_face () const |
| Tensor product chain complex for faces. More...
|
|
const Wrapper::tpcc_t< hyEdge_dimT, hyEdge_dimT, TPCC::boundaries::both, hyNode_index_t > & | tpcc_ref_elem () const |
| Tensor product chain complex of 'local' / refined elements. More...
|
|
const hyEdge_index_t | n_hyEdges () const |
| Return the number of hyperedges making up the hypergraph. More...
|
|
const hyNode_index_t | n_hyNodes () const |
| Return the number of hypernodes 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...
|
|
|
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...
|
|
const Wrapper::tpcc_t< hyEdge_dimT - 1, space_dimT, TPCC::boundaries::both, hyNode_index_t > | tpcc_faces_ |
| Tensor product chain complex for faces. 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 refining a hyperedge into elements. More...
|
|
Wrapper::tpcc_t< hyEdge_dimT - 1, hyEdge_dimT, TPCC::boundaries::none, hyNode_index_t > | tpcc_ref_faces_ |
| Tensor product chain complex for refining a hyperedge into faces. More...
|
|
unsigned int | n_elem_per_elem |
| Number of refined elements per corase element. More...
|
|
unsigned int | n_face_per_face |
| Number of refined faces per corase face. More...
|
|
unsigned int | n_face_per_elem |
| Number of refined faces per corase element. More...
|
|
unsigned int | n_coarse_elem |
| Number of refined corase elements. More...
|
|
unsigned int | n_coarse_face |
| Number of refined corase faces. More...
|
|
hyEdge_index_t | n_hyEdges_ |
| Total amount of hyperedges. More...
|
|
hyNode_index_t | n_hyNodes_ |
| Total amount of hypernodes. More...
|
|
template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeIndexVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = typename NodeIndexVecT::value_type, typename NodeOrientationT = SmallVec<2 * hyEdge_dimT - 2, unsigned int>>
class Topology::Cubic< hyEdge_dimT, space_dimT, NodeIndexVecT, ConstructorVecT, hyEdge_index_t, NodeOrientationT >
Definition of the topology of a hypergraph — Cubic HyperGraphs.
One of the advantages of this software package is the strict discrimination between the topology and the geometry of the domain \(\Omega\). Thus, one can exemplarily define a single topology (the one of a cube) to approximate PDEs that live on the cube's boundary and PDEs that live on a sphere, since their topology is the same. However, different geometries have to be defined, since these obviously are not equal. Thus, all parts of the code that involve communication and/or solving systems of equations are reusable in a much more general (than the standard) sense. Beyond that, absurd (on first sight) domains can be defined easily. This also covers variously periodic domains, for example.
- Template Parameters
-
hyEdge_dimT | Dimension of a hyperedge, i.e., 1 is for PDEs defined on graphs, 2 is for PDEs defined on surfaces, and 3 is for PDEs defined on volumes. |
space_dimT | The dimension of the space, the object is located in. This number should be larger than or equal to hyEdge_dimT. |
NodeIncesVecT | The vector type of an array containing the node indices of an hyperedge. |
ConstructorVecT | The vector type of the constructor. |
hyEdge_index_t | The index type of an hyperedge. |
NodeOrientationT | The class type that encodes the orientation of the hypernodes with respect to a given hyperedge. |
- Authors
- Guido Kanschat, Heidelberg University, 2019–2020.
-
Andreas Rupp, Heidelberg University, 2019–2020.
template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeIndexVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = typename NodeIndexVecT::value_type, typename NodeOrientationT = SmallVec<2 * hyEdge_dimT - 2, unsigned int>>
Define the value type of input argument for standard constructor.
template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeIndexVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = typename NodeIndexVecT::value_type, typename NodeOrientationT = SmallVec<2 * hyEdge_dimT - 2, unsigned int>>
using Topology::Cubic< hyEdge_dimT, space_dimT, NodeIndexVecT, ConstructorVecT, hyEdge_index_t, NodeOrientationT >::hyNode_index_t = typename NodeIndexVecT::value_type |
|
private |
template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeIndexVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = typename NodeIndexVecT::value_type, typename NodeOrientationT = SmallVec<2 * hyEdge_dimT - 2, unsigned int>>
Define the return value of the class.
template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeIndexVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = typename NodeIndexVecT::value_type, typename NodeOrientationT = SmallVec<2 * hyEdge_dimT - 2, unsigned int>>
Construct a cubic hypergraph.
- Parameters
-
n_elements | A vector / array containing number of elements per dimension. |
template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeIndexVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = typename NodeIndexVecT::value_type, typename NodeOrientationT = SmallVec<2 * hyEdge_dimT - 2, unsigned int>>
Topology::Cubic< hyEdge_dimT, space_dimT, NodeIndexVecT, ConstructorVecT, hyEdge_index_t, NodeOrientationT >::Cubic |
( |
const Cubic< hyEdge_dimT, space_dimT > & |
other | ) |
|
|
inline |
Construct a hypergraph topology from another hypergraph topology.
Create a (value based) copy of another hypergraph.
- Parameters
-
other | Hypergraph to be copied. |
template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeIndexVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = typename NodeIndexVecT::value_type, typename NodeOrientationT = SmallVec<2 * hyEdge_dimT - 2, unsigned int>>
unsigned int Topology::Cubic< hyEdge_dimT, space_dimT, NodeIndexVecT, ConstructorVecT, hyEdge_index_t, NodeOrientationT >::get_refinement |
( |
| ) |
const |
|
inline |
Return the refinement level (equal to number of subintervals).
template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeIndexVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = typename NodeIndexVecT::value_type, typename NodeOrientationT = SmallVec<2 * hyEdge_dimT - 2, unsigned int>>
static constexpr unsigned int Topology::Cubic< hyEdge_dimT, space_dimT, NodeIndexVecT, ConstructorVecT, hyEdge_index_t, NodeOrientationT >::hyEdge_dim |
( |
| ) |
|
|
inlinestaticconstexpr |
Return the template parameter representing the dimension of a hyperedge.
- Return values
-
hyEdge_dimT | The dimension of a hyperedge. |
template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeIndexVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = typename NodeIndexVecT::value_type, typename NodeOrientationT = SmallVec<2 * hyEdge_dimT - 2, unsigned int>>
const ConstructorVecT& Topology::Cubic< hyEdge_dimT, space_dimT, NodeIndexVecT, ConstructorVecT, hyEdge_index_t, NodeOrientationT >::n_elements |
( |
| ) |
const |
|
inline |
Read the array of elements per dimensions.
- Return values
-
n_elements | A vector / arary containing the elements in the repective dimension. |
template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeIndexVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = typename NodeIndexVecT::value_type, typename NodeOrientationT = SmallVec<2 * hyEdge_dimT - 2, unsigned int>>
const hyEdge_index_t Topology::Cubic< hyEdge_dimT, space_dimT, NodeIndexVecT, ConstructorVecT, hyEdge_index_t, NodeOrientationT >::n_hyEdges |
( |
| ) |
const |
|
inline |
Return the number of hyperedges making up the hypergraph.
- Return values
-
n_hyperedges | The total amount of hyperedges of a hypergraph. |
template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeIndexVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = typename NodeIndexVecT::value_type, typename NodeOrientationT = SmallVec<2 * hyEdge_dimT - 2, unsigned int>>
const hyNode_index_t Topology::Cubic< hyEdge_dimT, space_dimT, NodeIndexVecT, ConstructorVecT, hyEdge_index_t, NodeOrientationT >::n_hyNodes |
( |
| ) |
const |
|
inline |
Return the number of hypernodes making up the hypergraph.
- Return values
-
n_hypernodes | The total amount of hypernodes of a hypergraph. |
template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeIndexVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = typename NodeIndexVecT::value_type, typename NodeOrientationT = SmallVec<2 * hyEdge_dimT - 2, unsigned int>>
const value_type Topology::Cubic< hyEdge_dimT, space_dimT, NodeIndexVecT, ConstructorVecT, hyEdge_index_t, NodeOrientationT >::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 topological hyperedge (not the geometrical information). The topological informatiom comprises the indices of adjacent hypernodes and information about their respective orientations.
- Parameters
-
index | The index of the hyperedge to be returned. |
- Return values
-
hyperedge | Topological information on the hyperedge (cf. value_type ). |
template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeIndexVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = typename NodeIndexVecT::value_type, typename NodeOrientationT = SmallVec<2 * hyEdge_dimT - 2, unsigned int>>
void Topology::Cubic< hyEdge_dimT, space_dimT, NodeIndexVecT, ConstructorVecT, hyEdge_index_t, NodeOrientationT >::set_refinement |
( |
unsigned int |
level | ) |
|
|
inline |
Set the refinement level (equal to number of subintervals).
template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeIndexVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = typename NodeIndexVecT::value_type, typename NodeOrientationT = SmallVec<2 * hyEdge_dimT - 2, unsigned int>>
static constexpr unsigned int Topology::Cubic< hyEdge_dimT, space_dimT, NodeIndexVecT, ConstructorVecT, hyEdge_index_t, NodeOrientationT >::space_dim |
( |
| ) |
|
|
inlinestaticconstexpr |
Return the template parameter representing the dimension of the space.
- Return values
-
space_dimT | The dimension of the space. |
template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeIndexVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = typename NodeIndexVecT::value_type, typename NodeOrientationT = SmallVec<2 * hyEdge_dimT - 2, unsigned int>>
Tensor product chain complex for elements.
template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeIndexVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = typename NodeIndexVecT::value_type, typename NodeOrientationT = SmallVec<2 * hyEdge_dimT - 2, unsigned int>>
const Wrapper::tpcc_t<hyEdge_dimT - 1, space_dimT, TPCC::boundaries::both, hyNode_index_t>& Topology::Cubic< hyEdge_dimT, space_dimT, NodeIndexVecT, ConstructorVecT, hyEdge_index_t, NodeOrientationT >::tpcc_face |
( |
| ) |
const |
|
inline |
Tensor product chain complex for faces.
template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeIndexVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = typename NodeIndexVecT::value_type, typename NodeOrientationT = SmallVec<2 * hyEdge_dimT - 2, unsigned int>>
const Wrapper::tpcc_t<hyEdge_dimT, hyEdge_dimT, TPCC::boundaries::both, hyNode_index_t>& Topology::Cubic< hyEdge_dimT, space_dimT, NodeIndexVecT, ConstructorVecT, hyEdge_index_t, NodeOrientationT >::tpcc_ref_elem |
( |
| ) |
const |
|
inline |
Tensor product chain complex of 'local' / refined elements.
template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeIndexVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = typename NodeIndexVecT::value_type, typename NodeOrientationT = SmallVec<2 * hyEdge_dimT - 2, unsigned int>>
unsigned int Topology::Cubic< hyEdge_dimT, space_dimT, NodeIndexVecT, ConstructorVecT, hyEdge_index_t, NodeOrientationT >::n_coarse_elem |
|
private |
Number of refined corase elements.
template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeIndexVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = typename NodeIndexVecT::value_type, typename NodeOrientationT = SmallVec<2 * hyEdge_dimT - 2, unsigned int>>
unsigned int Topology::Cubic< hyEdge_dimT, space_dimT, NodeIndexVecT, ConstructorVecT, hyEdge_index_t, NodeOrientationT >::n_coarse_face |
|
private |
Number of refined corase faces.
template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeIndexVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = typename NodeIndexVecT::value_type, typename NodeOrientationT = SmallVec<2 * hyEdge_dimT - 2, unsigned int>>
unsigned int Topology::Cubic< hyEdge_dimT, space_dimT, NodeIndexVecT, ConstructorVecT, hyEdge_index_t, NodeOrientationT >::n_elem_per_elem |
|
private |
Number of refined elements per corase element.
template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeIndexVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = typename NodeIndexVecT::value_type, typename NodeOrientationT = SmallVec<2 * hyEdge_dimT - 2, unsigned int>>
const ConstructorVecT Topology::Cubic< hyEdge_dimT, space_dimT, NodeIndexVecT, ConstructorVecT, hyEdge_index_t, NodeOrientationT >::n_elements_ |
|
private |
Number of elements per spatial dimension.
template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeIndexVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = typename NodeIndexVecT::value_type, typename NodeOrientationT = SmallVec<2 * hyEdge_dimT - 2, unsigned int>>
unsigned int Topology::Cubic< hyEdge_dimT, space_dimT, NodeIndexVecT, ConstructorVecT, hyEdge_index_t, NodeOrientationT >::n_face_per_elem |
|
private |
Number of refined faces per corase element.
template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeIndexVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = typename NodeIndexVecT::value_type, typename NodeOrientationT = SmallVec<2 * hyEdge_dimT - 2, unsigned int>>
unsigned int Topology::Cubic< hyEdge_dimT, space_dimT, NodeIndexVecT, ConstructorVecT, hyEdge_index_t, NodeOrientationT >::n_face_per_face |
|
private |
Number of refined faces per corase face.
template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeIndexVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = typename NodeIndexVecT::value_type, typename NodeOrientationT = SmallVec<2 * hyEdge_dimT - 2, unsigned int>>
hyEdge_index_t Topology::Cubic< hyEdge_dimT, space_dimT, NodeIndexVecT, ConstructorVecT, hyEdge_index_t, NodeOrientationT >::n_hyEdges_ |
|
private |
Total amount of hyperedges.
template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeIndexVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = typename NodeIndexVecT::value_type, typename NodeOrientationT = SmallVec<2 * hyEdge_dimT - 2, unsigned int>>
Total amount of hypernodes.
template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeIndexVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = typename NodeIndexVecT::value_type, typename NodeOrientationT = SmallVec<2 * hyEdge_dimT - 2, unsigned int>>
unsigned int Topology::Cubic< hyEdge_dimT, space_dimT, NodeIndexVecT, ConstructorVecT, hyEdge_index_t, NodeOrientationT >::n_subintervals_ |
|
private |
Refinment level corresponds to number of subintervals per dimension.
template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeIndexVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = typename NodeIndexVecT::value_type, typename NodeOrientationT = SmallVec<2 * hyEdge_dimT - 2, unsigned int>>
Tensor product chain complex for elements.
template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeIndexVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = typename NodeIndexVecT::value_type, typename NodeOrientationT = SmallVec<2 * hyEdge_dimT - 2, unsigned int>>
Tensor product chain complex for faces.
template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeIndexVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = typename NodeIndexVecT::value_type, typename NodeOrientationT = SmallVec<2 * hyEdge_dimT - 2, unsigned int>>
Tensor product chain complex for refining a hyperedge into elements.
template<unsigned int hyEdge_dimT, unsigned int space_dimT, typename NodeIndexVecT = SmallVec<2 * hyEdge_dimT, unsigned int>, typename ConstructorVecT = SmallVec<space_dimT, unsigned int>, typename hyEdge_index_t = typename NodeIndexVecT::value_type, typename NodeOrientationT = SmallVec<2 * hyEdge_dimT - 2, unsigned int>>
Tensor product chain complex for refining a hyperedge into faces.