dune-pdelab  2.0.0
Public Types | Public Member Functions | List of all members
Dune::PDELab::GridFunctionSpaceOrderingInterface Struct Reference

Interface for merging index spaces. More...

#include <dune/pdelab/ordering/orderinginterface.hh>

Inheritance diagram for Dune::PDELab::GridFunctionSpaceOrderingInterface:
Inheritance graph

Public Types

typedef ImplementationDefined SizeType
 

Public Member Functions

 GridFunctionSpaceOrderingInterface (const TypeTree::NodeInterface::NodeStorage &children)
 Construct ordering object. More...
 
 GridFunctionSpaceOrderingInterface ()
 Construct ordering object. More...
 
void update ()
 update internal data structures More...
 
bool blocked () const
 whether dofs are blocked per entity/intersection More...
 
bool fixedSize () const
 whether all entites of the same geometry type/all intersections have the same number of dofs More...
 
SizeType subMap (SizeType child, SizeType indexInChild) const
 map a global dof index from a child More...
 
SizeType size () const
 number of indices in this ordering More...
 
SizeType maxLocalSize () const
 maximum number of dofs attached to any given element and all of its subentities and intersections More...
 
template<class Entity >
SizeType entitySize (const Entity &e) const
 number of indices attached to a given entity (of arbitrary codimension) More...
 
template<class Element >
SizeType entitySize (const Element &e, std::size_t codim, std::size_t subentity) const
 number of indices attached to a given subentity of an element More...
 
template<class Intersection >
SizeType intersectionSize (const Intersection &i) const
 number of indices attached to a given intersection More...
 
template<class Entity >
SizeType entityOffset (const Entity &e) const
 offset of the block of dofs attached to a given entity (of arbitrary codimension) More...
 
template<class Element >
SizeType entityOffset (const Element &e, std::size_t codim, std::size_t subentity) const
 offset of the blocks of dofs attached to a given subentity of an element More...
 
template<class Intersection >
SizeType intersectionOffset (const Intersection &i) const
 offset of the block of dofs attached to a given intersection More...
 

Detailed Description

Interface for merging index spaces.

Member Typedef Documentation

Constructor & Destructor Documentation

Dune::PDELab::GridFunctionSpaceOrderingInterface::GridFunctionSpaceOrderingInterface ( const TypeTree::NodeInterface::NodeStorage &  children)

Construct ordering object.

In general, an ordering object is not properly setup after construction. This must be done by a seperate call to update() after all the children have been properly set up.

Note
This constructor must be present for ordering objects not at the leaf of the tree.
Dune::PDELab::GridFunctionSpaceOrderingInterface::GridFunctionSpaceOrderingInterface ( )

Construct ordering object.

In general, an ordering object is not properly setup after construction. This must be done by a seperate call to update() after all the children have been properly set up.

Note
This constructor must be present for ordering objects at the leaf of the tree.

Member Function Documentation

bool Dune::PDELab::GridFunctionSpaceOrderingInterface::blocked ( ) const

whether dofs are blocked per entity/intersection

template<class Entity >
SizeType Dune::PDELab::GridFunctionSpaceOrderingInterface::entityOffset ( const Entity &  e) const

offset of the block of dofs attached to a given entity (of arbitrary codimension)

Note
This method should be available for all types of entities required by the grid. It is mostly required for communcation, so if it is known that this method is not actually called for a given entity type the implementation may throw NotImplemented.
If the grid does not support a given entity type, it may still be possible to get this information using entityOffset(const Element &e, std::size_t codim, std::size_t subentity).
Exceptions
NotImplementedIf this EntityType is not supported by the ordering.
InvalidStateExceptionIf blocked()==false.
template<class Element >
SizeType Dune::PDELab::GridFunctionSpaceOrderingInterface::entityOffset ( const Element &  e,
std::size_t  codim,
std::size_t  subentity 
) const

offset of the blocks of dofs attached to a given subentity of an element

This method determines the starting offset of the block of dofs attached to a subentity of the given codim 0 entity. If the grid (and the ordering) directly support entities of the given codimension, this is equivalent to calling entityOffset(*e.subEntity<codim>(subentity)).

template<class Entity >
SizeType Dune::PDELab::GridFunctionSpaceOrderingInterface::entitySize ( const Entity &  e) const

number of indices attached to a given entity (of arbitrary codimension)

Note
This method should be available for all types of entities required by the grid. It is mostly required for communication, so if it is known that this method is not actually called for a given entity type the implementation may throw NotImplemented.
If the grid does not support a given entity type, it may still be possible to get this information using entitySize(const Element &e, std::size_t codim, std::size_t subentity).
Exceptions
NotImplementedIf this EntityType is not supported by the ordering.
template<class Element >
SizeType Dune::PDELab::GridFunctionSpaceOrderingInterface::entitySize ( const Element &  e,
std::size_t  codim,
std::size_t  subentity 
) const

number of indices attached to a given subentity of an element

This method determines the number of indices attached to a subentity of the given codim 0 entity. If the grid (and the ordering) directly supports entities of the given codimension, this is equivalent to calling entitySize((*e.subEntity<codim>(subentity)).

bool Dune::PDELab::GridFunctionSpaceOrderingInterface::fixedSize ( ) const

whether all entites of the same geometry type/all intersections have the same number of dofs

Note
Even if fixedSize()==true the number of dofs may still vary between entities of different geometry type or between entities and intersections.
template<class Intersection >
SizeType Dune::PDELab::GridFunctionSpaceOrderingInterface::intersectionOffset ( const Intersection &  i) const

offset of the block of dofs attached to a given intersection

template<class Intersection >
SizeType Dune::PDELab::GridFunctionSpaceOrderingInterface::intersectionSize ( const Intersection &  i) const

number of indices attached to a given intersection

SizeType Dune::PDELab::GridFunctionSpaceOrderingInterface::maxLocalSize ( ) const

maximum number of dofs attached to any given element and all of its subentities and intersections

This is generally not an exact maximum and may be bigger than the actual maximum. There is however one special case: it is guaranteed to be the exact maximum for fixedSize()==true.

SizeType Dune::PDELab::GridFunctionSpaceOrderingInterface::size ( ) const

number of indices in this ordering

SizeType Dune::PDELab::GridFunctionSpaceOrderingInterface::subMap ( SizeType  child,
SizeType  indexInChild 
) const

map a global dof index from a child

Given the index of a dof in the global dof-vector of one of the children, compute the index of the same dof in the global dof-vector of this ordering.

Note
update() must have been called before this method may be used.
This is only required on non-leafs.
void Dune::PDELab::GridFunctionSpaceOrderingInterface::update ( )

update internal data structures

This method must be called after initialization and every time the structure of the dof-vector of one of gfs's children changes. All the children must have been set up properly before the call to update().


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