HyperHDG
Classes | Public Types | Public Member Functions | Static Public Member Functions | Private Types | 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 > Class Template Reference

Hypergraph geometry based on an input file. More...

#include <file.hxx>

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 >:
Collaboration graph
[legend]

Classes

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

Public Types

typedef hyEdge value_type
 Defines the return value of the class. More...
 
typedef Topology::File< hyEdge_dimT, space_dimT, vectorT, pointT, hyEdge_index_t, hyNode_index_t, pt_index_t > constructor_value_type
 Define the value type of input argument for standard constructor. More...
 

Public Member Functions

 File (const constructor_value_type &topology)
 Construct a hypergraph which is read from a file. More...
 
value_type operator[] (const hyEdge_index_t index) const
 Get geometrical hyperedge of given index. More...
 
value_type get_hyEdge (const hyEdge_index_t index) const
 Get geometrical hyperedge of given index. 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 ()
 Returns the template parameter representing the dimension of a hyperedge. More...
 
static constexpr unsigned int space_dim ()
 Returns the template parameter representing the dimension of the space. More...
 

Private Types

using pt_coord_t = typename pointT::value_type
 The point type is the floating point type of pointT. More...
 
using mapping_t = mapping_tM< hyEdge_dimTM, space_dimTM, pt_coord_tM >
 The mapping type is mapping_tt with given template parameters. More...
 

Private Attributes

const DomainInfo< hyEdge_dimT, space_dimT, vectorT, pointT, hyEdge_index_t, hyNode_index_t, pt_index_t > & domain_info_
 Domain Info containing all the information of the hypergraph (cf. ReadDomain.hxx). 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, hyEdge_index_t > tpcc_ref_elem_
 Tensor product chain complex for refined elements. More...
 
unsigned int n_loc_ref_elem
 Number of refined elements per element. 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 >

Hypergraph geometry based on an input file.


The geometry class File is a set of hyperedges. Each of these tensorial hyperedges is represented by its vertices (given within the file). For consistency, it is assumed that the vertices are given in lexicographical order. Also the hypernodes are assumed to be given in lexicographical order to ensure that geometry and topology of all hyperedges fit.

Template Parameters
hyEdge_dimTDimension 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_dimTThe dimension of the space, the object is located in. This number should be larger than or equal to hyEdge_dimT.
vectorTThe typename of the large vector type. Defaults to std::vector.
pointTThe typename of a Point class. Defaults to Point<space_dimT, float>.
mapping_tMThe mapping which should depened on the aforementioned three template arguments. Default is linear mapping.
hyEdge_dimTMDimension 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. Template parameter for the mapping which defaults to hyEdge_dimT.
space_dimTMThe dimension of the space, the object is located in. This number should be larger than or equal to hyEdge_dimT. Template parameter for the mapping which defaults to space_dimT.
pt_coord_tMThe floating point type in which points/vertices are represented. Default is the floating point of the point class. Template parameter for the mapping which defaults to pt_coord_t.
hyEdge_index_tThe index type for hyperedges. Default is unsigned int.
hyNode_index_tThe index type for hypernodes. Default is hyNode_index_t.
pt_index_tThe index type of points. Default is hyNode_index_t.
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, 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>
typedef Topology:: File<hyEdge_dimT, space_dimT, vectorT, pointT, hyEdge_index_t, hyNode_index_t, pt_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 >::constructor_value_type

Define the value type of input argument for standard constructor.


◆ mapping_t

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>
using 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 >::mapping_t = mapping_tM<hyEdge_dimTM, space_dimTM, pt_coord_tM>
private

The mapping type is mapping_tt with given template parameters.


◆ pt_coord_t

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>
using 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 >::pt_coord_t = typename pointT::value_type
private

The point type is the floating point type of pointT.


◆ value_type

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>
typedef hyEdge 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 >::value_type

Defines the return value of the class.


The class Geometry::File defines the geometry of the hypergraph. It "contains" the different hyperedges (that actually are constructed everytime access is needed from e.g. the solver class). Thus, its main purpose is to provide a structure that administrates the hyperedges that are the return value of this structure.

Constructor & Destructor Documentation

◆ File()

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 >::File ( const constructor_value_type topology)
inline

Construct a hypergraph which is read from a file.


Constructs a hypergraph from a Topology::File containing the elementens per spatial dimension which is given as by its topology.

Parameters
topologyThe topology of the hypergraph that has the geometry of the unit cube.

Member Function Documentation

◆ get_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>
value_type 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 >::get_hyEdge ( const hyEdge_index_t  index) const
inline

Get geometrical hyperedge of given index.


This function returns the hyperedge of the given index, i.e., it returns the geometrical hyperedge (not the topological information). The geometrical informatiom comprises the indices of adjacent vertices (i.e. points) and information about their respective positions. It is equivalent to operator[].

Parameters
indexThe index of the hyperedge to be returned.
Return values
hyperedgeGeometrical information on the hyperedge (cf. value_type).
Here is the call graph for this function:

◆ get_refinement()

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>
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 >::get_refinement ( ) const
inline

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


◆ 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_dim ( )
inlinestaticconstexpr

Returns the template parameter representing the dimension of a hyperedge.


Return values
hyEdge_dimTThe dimension of a hyperedge.

◆ operator[]()

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>
value_type 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 >::operator[] ( const hyEdge_index_t  index) const
inline

Get geometrical hyperedge of given index.


This function returns the hyperedge of the given index, i.e., it returns the geometrical hyperedge (not the topological information). The geometrical informatiom comprises the indices of adjacent vertices (i.e. points) and information about their respective positions. It is equivalent to get_hyEdge.

Parameters
indexThe index of the hyperedge to be returned.
Return values
hyperedgeGeometrical information on the hyperedge (cf. value_type).
Here is the call graph for this function:

◆ set_refinement()

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>
void 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 >::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, 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 >::space_dim ( )
inlinestaticconstexpr

Returns the template parameter representing the dimension of the space.


Return values
space_dimTThe dimension of the space.

Member Data Documentation

◆ domain_info_

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 DomainInfo<hyEdge_dimT, space_dimT, vectorT, pointT, hyEdge_index_t, hyNode_index_t, pt_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 >::domain_info_
private

Domain Info containing all the information of the hypergraph (cf. ReadDomain.hxx).


◆ n_loc_ref_elem

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>
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 >::n_loc_ref_elem
private

Number of refined elements per element.


◆ n_subintervals_

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>
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 >::n_subintervals_
private

Refinment level corresponds to number of subintervals per dimension.


◆ tpcc_ref_elem_

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>
Wrapper::tpcc_t<hyEdge_dimT, hyEdge_dimT, TPCC::boundaries::both, 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 >::tpcc_ref_elem_
private

Tensor product chain complex for refined elements.



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