Go to the documentation of this file. 1 #pragma once // Ensure that file is included only once in a single compilation.
23 template <
unsigned int hyEdge_dimT,
24 unsigned int space_dimT,
27 typename hyEdge_index_t =
unsigned int,
28 typename hyNode_index_t = hyEdge_index_t>
60 for (
unsigned int dim = 0; dim < space_dimT - hyEdge_dimT + 1; ++dim)
64 if (coordinate == 0 || coordinate == node_desc.
n_elements().operator[](direction))
65 hyFace_types_[i] += (1 + (coordinate != 0)) * std::pow(3, direction);
95 static constexpr
unsigned int hyEdge_dim() {
return hyEdge_dimT; };
101 static constexpr
unsigned int space_dim() {
return space_dimT; };
177 "The index of an hyperedge must be non-negative and smaller than the total amount "
178 <<
"of hyperedges, which is " <<
n_hyEdges_ <<
". Nonetheless, the " <<
index
179 <<
"-th hyperedge is tried to be accessed.");
205 Wrapper::create_tpcc<hyEdge_dimT, hyEdge_dimT, TPCC::boundaries::both, hyEdge_index_t>(
Tensor coordinates for a facet of dimension k in the complex of dimension n.
Definition: element.h:38
This file provides the function hy_assert.
A namespace containing the different wrapper functions.
Definition: lapack.hxx:20
static constexpr unsigned int hyEdge_dim()
Return the template parameter representing the dimension of a hyperedge.
Definition: cubic.hxx:95
const NodeTypeVecT & get_hyFace_types() const
Return types of hypernodes adjacent to the hyperedge.
Definition: cubic.hxx:82
index
Definition: check_push_test.py:10
@ both
Definition: lexicographic.h:11
const Wrapper::tpcc_t< hyEdge_dimT, space_dimT, TPCC::boundaries::both, hyNode_index_t > tpcc_elements_
Tensor product chain complex for elements.
Definition: cubic.hxx:112
const hyEdge_index_t n_hyEdges() const
Returns the number of hyperedges making up the hypergraph.
Definition: cubic.hxx:193
boundaries
Definition: lexicographic.h:9
const ConstructorVecT n_elements_
Number of elements per spatial dimension.
Definition: cubic.hxx:101
unsigned int operator[](const unsigned int index) const
Return types of hypernode of given index.
Definition: cubic.hxx:86
unsigned int exterior_coordinate(const auto &elem, const unsigned int index)
Return coordinate value with respect to index-th orthonormal direction on element.
Definition: tpcc.hxx:150
auto get_face(const auto &elem, const unsigned int index)
Return i-th element facet.
Definition: tpcc.hxx:121
const ConstructorVecT & n_elements() const
Return the array / vector of elements per dimensions.
Definition: cubic.hxx:187
auto get_element(const auto &tpcc, const auto index)
Return the element of given index the TPCC.
Definition: tpcc.hxx:92
Definition of the node types of a cubic hypergraph.
Definition: cubic.hxx:29
Definition: combinations.h:8
unsigned int get_refinement() const
Return the refinement level (equal to number of subintervals).
Definition: cubic.hxx:197
hyEdge_index_t n_hyEdges_
Total amount of hyperedges in hypergraph.
Definition: cubic.hxx:124
Definition of the node types of a hypergraph's edges.
Definition: cubic.hxx:37
index_t n_elements(const auto &tpcc)
Return the element of given index the TPCC.
Definition: tpcc.hxx:80
ConstructorVecT constructor_value_type
Defines the value type of input argument for standard constructor.
Definition: cubic.hxx:134
Cubic(const Topology::Cubic< hyEdge_dimT, space_dimT > &other)
Construct a cubic node descruiptor from a cubic topology.
Definition: cubic.hxx:157
Lexicographic enumeration of the k-dimensional faces in a tensor product chain complex of dimension n...
Definition: lexicographic.h:44
Definition of the topology of a hypergraph — Cubic HyperGraphs.
Definition: cubic.hxx:40
static constexpr unsigned int space_dim()
Return the template parameter representing the dimension of the space.
Definition: cubic.hxx:101
Cubic(const ConstructorVecT &n_elements)
Construct a node descriptor of a cubic hypergraph.
Definition: cubic.hxx:140
unsigned int n_subintervals_
Refinment level corresponds to number of subintervals per dimension.
Definition: cubic.hxx:116
hyEdge value_type
Defines the return value of the class to be a hyEdge.
Definition: cubic.hxx:130
#define hy_assert(Expr, Msg)
The assertion to be used within HyperHDG — deactivate using -DNDEBUG compile flag.
Definition: hy_assert.hxx:38
A namespace containing different classes describing the types of hypernodes.
Definition: cubic.hxx:7
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.
Definition: cubic.hxx:120
const value_type operator[](const hyEdge_index_t index) const
Get topological hyperedge of given index.
Definition: cubic.hxx:174
tpcc_t< hyEdge_dim, space_dim, bndT, index_t > create_tpcc(const SmallVec< space_dim, index_t > &vec)
Create a tensor product chain complex.
Definition: tpcc.hxx:62
hyEdge(const hyEdge_index_t index, const Cubic &node_desc)
Construct a hyperEdge, i.e. determine its node indices.
Definition: cubic.hxx:52
NodeTypeVecT hyFace_types_
Types of the hypernodes adjacent to the hyperedge.
Definition: cubic.hxx:43
void set_refinement(unsigned int level)
Set the refinement level (equal to number of subintervals).
Definition: cubic.hxx:201
This class implements a small/dense matrix.
Definition: dense_la.hxx:34
unsigned int exterior_direction(const auto &elem, const unsigned int index)
Return the index-th orthonormal direction to element.
Definition: tpcc.hxx:138