DUNE PDELab (git)

Dune::PDELab::DOFIndex< T, tree_n, entity_n > Class Template Reference

A multi-index representing a degree of freedom in a GridFunctionSpace. More...

#include <dune/pdelab/common/dofindex.hh>

Public Member Functions

 DOFIndex ()
 Default constructor.
 
EntityIndex & entityIndex ()
 Returns the index of the grid entity associated with the DOF.
 
const EntityIndex & entityIndex () const
 Returns the index of the grid entity associated with the DOF.
 
TreeIndextreeIndex ()
 Returns the tuple of entity-local indices associated with the DOF.
 
const TreeIndextreeIndex () const
 Returns the tuple of entity-local indices associated with the DOF.
 
bool operator== (const DOFIndex &r) const
 Tests whether two DOFIndices are equal. More...
 
bool operator!= (const DOFIndex &r) const
 Tests whether two DOFIndices are not equal.
 

Static Public Attributes

static const std::size_t entity_capacity = entity_n
 The maximum possible length of a tuple which represents the entity index.
 
static const std::size_t max_depth = tree_n
 The maximum possible length of the tuple of entity-local indices.
 

Friends

std::ostream & operator<< (std::ostream &s, const DOFIndex &di)
 Writes a pretty representation of the DOFIndex to the given std::ostream.
 

Detailed Description

template<typename T, std::size_t tree_n, std::size_t entity_n = 1>
class Dune::PDELab::DOFIndex< T, tree_n, entity_n >

A multi-index representing a degree of freedom in a GridFunctionSpace.

A DOFIndex provides a way for identifying degrees of freedom in a (possibly nested) GridFunctionSpace without imposing any kind of ordering. For that purpose, a DOFIndex identifies a degree of freedom by recording

  • the geometry type of the grid entity associated with the DOF,
  • an index value uniquely identifying the grid entity among all grid entities of its geometry type (usually just the index value of some Grid IndexSet),
  • a tuple of entity-local indices.

The length of this index tuple is limited by the template parameter tree_n, which will usually be equal to the maximum depth of the current GridFunctionSpace tree. Moreover, there will never be two identical index tuples associated with the same grid entity.

The index tuple is oriented from left to right when traversing up the tree (i.e. towards the root node) and from right to left when drilling down from the root node towards a leaf. For non-leaf nodes, the associated index entry identifies the child GridFunctionSpace that the degree of freedom is associated with, while for leafs, it provides a way to provide multiple degrees of freedom for a single grid entity (usually, the index value for a leaf space will correspond to the LocalKey::index() value from the finite element).

Note that in general, the length of the index tuple will not be the same for all degrees of freedom in a GridFunctionSpace. Consider the following example of a Taylor-Hood element (P2-P1):

dot_inline_dotgraph_1.png

In this case, degrees of freedom for the velocity components will have an index tuple of length 3, while those related to pressure will only have an index tuple of length 2. For the Taylor-Hood space given above, the DOFIndex associated with a triangle with vertex and edge indices in the range {0,1,2} are

GeometryType grid entity index entity-local index tuple
Point 0 0, 0, 0
Point 1 0, 0, 0
Point 2 0, 0, 0
Line 0 0, 0, 0
Line 1 0, 0, 0
Line 2 0, 0, 0
Point 0 0, 1, 0
Point 1 0, 1, 0
Point 2 0, 1, 0
Line 0 0, 1, 0
Line 1 0, 1, 0
Line 2 0, 1, 0
Point 0 0, 1
Point 1 0, 1
Point 2 0, 1
Template Parameters
Tthe type of the index entries.
tree_nthe maximum length of the tuple of entity-local indices.
entity_nthe maximum length of a tuple which represents the entity index.

Member Function Documentation

◆ operator==()

template<typename T , std::size_t tree_n, std::size_t entity_n = 1>
bool Dune::PDELab::DOFIndex< T, tree_n, entity_n >::operator== ( const DOFIndex< T, tree_n, entity_n > &  r) const
inline

Tests whether two DOFIndices are equal.

Note
Only DOFIndices of identical max_depth are comparable.

The documentation for this class was generated from the following file:
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.80.0 (May 1, 22:29, 2024)