DUNE PDELab (2.7)

Dune::PDELab::PowerGridFunctionSpace< T, k, Backend, OrderingTag > Class Template Reference

base class for tuples of grid function spaces product of identical grid function spaces base class that holds implementation of the methods More...

#include <dune/pdelab/gridfunctionspace/powergridfunctionspace.hh>

Classes

struct  ConstraintsContainer
 extract type for storing constraints More...
 

Public Types

typedef ImplementationBase::Traits Traits
 export traits class
 
typedef PowerNodeTag NodeTag
 The type tag that describes a PowerNode.
 
typedef T ChildType
 The type of each child.
 
typedef std::shared_ptr< T > ChildStorageType
 The storage type of each child.
 
typedef std::shared_ptr< const T > ChildConstStorageType
 The const version of the storage type of each child.
 
typedef std::array< ChildStorageType, k > NodeStorage
 The type used for storing the children.
 

Public Member Functions

 PowerGridFunctionSpace (const std::array< std::shared_ptr< T >, k > &container, const Backend &backend=Backend(), const OrderingTag ordering_tag=OrderingTag())
 Construct a new Power Grid Function Space object. More...
 
const Ordering & ordering () const
 Direct access to the DOF ordering.
 
Ordering & ordering ()
 Direct access to the DOF ordering.
 
std::shared_ptr< const Ordering > orderingStorage () const
 Direct access to the storage of the DOF ordering.
 
std::shared_ptr< Ordering > orderingStorage ()
 Direct access to the storage of the DOF ordering.
 
const Traits::GridView & gridView () const
 get grid view
 
const Traits::EntitySet & entitySet () const
 get grid view partition
 
Traits::SizeType maxLocalSize () const
 get max dimension of shape function space
 
void update (bool force=false)
 Update the indexing information of the GridFunctionSpace. More...
 
bool dataHandleContains (int codim) const
 returns true if data for this codim should be communicated
 
bool dataHandleFixedSize (int codim) const
 returns true if size per entity of given dim and codim is a constant
 
constexpr bool sendLeafSizes () const
 Returns true if the sizes of the leaf orderings in this tree should be sent as part of the communcation. More...
 
template<typename Entity >
size_type dataHandleSize (const Entity &e) const
 
template<typename Entity , typename ContainerIndex , typename DOFIndex , typename OffsetIterator , bool map_dof_indices>
void dataHandleIndices (const Entity &e, std::vector< ContainerIndex > &container_indices, std::vector< DOFIndex > &dof_indices, OffsetIterator oit, std::integral_constant< bool, map_dof_indices > map_dof_indices_value) const
 return vector of global indices associated with the given entity
 
Child Access (templated methods)
template<std::size_t i>
T & child (index_constant< i >={})
 Returns the i-th child. More...
 
template<std::size_t i>
const T & child (index_constant< i >={}) const
 Returns the i-th child (const version). More...
 
template<std::size_t i>
ChildStorageType childStorage (index_constant< i >={})
 Returns the storage of the i-th child. More...
 
template<std::size_t i>
ChildConstStorageType childStorage (index_constant< i >={}) const
 Returns the storage of the i-th child (const version). More...
 
template<std::size_t i>
void setChild (T &t, index_constant< i >={})
 Sets the i-th child to the passed-in value.
 
template<std::size_t i>
void setChild (T &&t, index_constant< i >={})
 Store the passed value in i-th child.
 
template<std::size_t i>
void setChild (ChildStorageType st, index_constant< i >={})
 Sets the stored value representing the i-th child to the passed-in value.
 
Child Access (Dynamic methods)
T & child (std::size_t i)
 Returns the i-th child. More...
 
const T & child (std::size_t i) const
 Returns the i-th child (const version). More...
 
ChildStorageType childStorage (std::size_t i)
 Returns the storage of the i-th child. More...
 
ChildConstStorageType childStorage (std::size_t i) const
 Returns the storage of the i-th child (const version). More...
 
void setChild (std::size_t i, T &t)
 Sets the i-th child to the passed-in value.
 
void setChild (std::size_t i, T &&t)
 Store the passed value in i-th child.
 
void setChild (std::size_t i, ChildStorageType st)
 Sets the stored value representing the i-th child to the passed-in value.
 
const NodeStoragenodeStorage () const
 
Nested Child Access
template<typename... Indices>
ImplementationDefinedchild (Indices... indices)
 Returns the child given by the list of indices. More...
 
template<typename... Indices>
const ImplementationDefinedchild (Indices... indices)
 Returns the child given by the list of indices. More...
 

Static Public Attributes

static const bool isLeaf = false
 Mark this class as non leaf in the dune-typetree.
 
static const bool isPower = true
 Mark this class as a power in the dune-typetree.
 
static const bool isComposite = false
 Mark this class as a non composite in the dune-typetree.
 
static const std::size_t CHILDREN = k
 The number of children.
 

Detailed Description

template<typename T, std::size_t k, typename Backend, typename OrderingTag = LexicographicOrderingTag>
class Dune::PDELab::PowerGridFunctionSpace< T, k, Backend, OrderingTag >

base class for tuples of grid function spaces product of identical grid function spaces base class that holds implementation of the methods

PGFS(T,k) = {T}^k

Template Parameters
Tthe underlying are all grid function spaces
kpower factor
Mapperis the ordering parameter. Use e.g. GridFunctionSpaceLexicographicMapper or GridFunctionSpaceComponentBlockwiseMapper or GridFunctionSpaceBlockwiseMapper or GridFunctionSpaceDynamicBlockwiseMapper
Examples
recipe-blocking.cc, and recipe-operator-splitting.cc.

Constructor & Destructor Documentation

◆ PowerGridFunctionSpace()

template<typename T , std::size_t k, typename Backend , typename OrderingTag = LexicographicOrderingTag>
Dune::PDELab::PowerGridFunctionSpace< T, k, Backend, OrderingTag >::PowerGridFunctionSpace ( const std::array< std::shared_ptr< T >, k > &  container,
const Backend &  backend = Backend(),
const OrderingTag  ordering_tag = OrderingTag() 
)
inline

Construct a new Power Grid Function Space object.

Parameters
containerarray with pointers to child spaces
backendbackend object
ordering_tagordering tag object

Member Function Documentation

◆ child() [1/6]

template<typename T , std::size_t k>
template<std::size_t i>
T& Dune::TypeTree::PowerNode< T, k >::child ( index_constant< i >  = {})
inlineinherited

Returns the i-th child.

Returns
a reference to the i-th child.

◆ child() [2/6]

template<typename T , std::size_t k>
template<std::size_t i>
const T& Dune::TypeTree::PowerNode< T, k >::child ( index_constant< i >  = {}) const
inlineinherited

Returns the i-th child (const version).

Returns
a const reference to the i-th child.

◆ child() [3/6]

template<typename T , std::size_t k>
template<typename... Indices>
ImplementationDefined& Dune::TypeTree::PowerNode< T, k >::child ( Indices...  indices)
inlineinherited

Returns the child given by the list of indices.

This method simply forwards to the freestanding function child(). See that function for further information.

References Dune::TypeTree::child().

◆ child() [4/6]

template<typename T , std::size_t k>
template<typename... Indices>
const ImplementationDefined& Dune::TypeTree::PowerNode< T, k >::child ( Indices...  indices)
inlineinherited

Returns the child given by the list of indices.

This method simply forwards to the freestanding function child(). See that function for further information.

References Dune::TypeTree::child().

◆ child() [5/6]

template<typename T , std::size_t k>
T& Dune::TypeTree::PowerNode< T, k >::child ( std::size_t  i)
inlineinherited

Returns the i-th child.

Returns
a reference to the i-th child.

References Dune::TypeTree::PowerNode< T, k >::CHILDREN.

◆ child() [6/6]

template<typename T , std::size_t k>
const T& Dune::TypeTree::PowerNode< T, k >::child ( std::size_t  i) const
inlineinherited

Returns the i-th child (const version).

Returns
a const reference to the i-th child.

References Dune::TypeTree::PowerNode< T, k >::CHILDREN.

◆ childStorage() [1/4]

template<typename T , std::size_t k>
template<std::size_t i>
ChildStorageType Dune::TypeTree::PowerNode< T, k >::childStorage ( index_constant< i >  = {})
inlineinherited

Returns the storage of the i-th child.

Returns
a copy of the object storing the i-th child.

◆ childStorage() [2/4]

template<typename T , std::size_t k>
template<std::size_t i>
ChildConstStorageType Dune::TypeTree::PowerNode< T, k >::childStorage ( index_constant< i >  = {}) const
inlineinherited

Returns the storage of the i-th child (const version).

This method is only important if the child is stored as some kind of pointer, as this allows the pointee type to become const.

Returns
a copy of the object storing the i-th child.

◆ childStorage() [3/4]

template<typename T , std::size_t k>
ChildStorageType Dune::TypeTree::PowerNode< T, k >::childStorage ( std::size_t  i)
inlineinherited

Returns the storage of the i-th child.

Returns
a copy of the object storing the i-th child.

References Dune::TypeTree::PowerNode< T, k >::CHILDREN.

◆ childStorage() [4/4]

template<typename T , std::size_t k>
ChildConstStorageType Dune::TypeTree::PowerNode< T, k >::childStorage ( std::size_t  i) const
inlineinherited

Returns the storage of the i-th child (const version).

This method is only important if the child is stored as some kind of pointer, as this allows the pointee type to become const.

Returns
a copy of the object storing the i-th child.

References Dune::TypeTree::PowerNode< T, k >::CHILDREN.

◆ dataHandleSize()

template<typename GFS >
template<typename Entity >
size_type Dune::PDELab::DataHandleProvider< GFS >::dataHandleSize ( const Entity e) const
inlineinherited

how many objects of type DataType have to be sent for a given entity

Note: Only the sender side needs to know this size.

◆ sendLeafSizes()

template<typename GFS >
constexpr bool Dune::PDELab::DataHandleProvider< GFS >::sendLeafSizes ( ) const
inlineconstexprinherited

Returns true if the sizes of the leaf orderings in this tree should be sent as part of the communcation.

The MultiDomain extensions require knowledge about the size of the individual orderings, which might belong to separate subdomains. Otherwise it is possible to have size mismatches for entities with codim > 0 if there are protruding edges in the parallel mesh partitioning.

By default, this method will always return false. It must be overridden for cases where the data actually needs to be sent.

This flag also modifies the behavior of the generic data handles, which will automatically send, receive and process the additional information. Note that if sendLeafSizes() returns true, the underlying DataHandleIF of the grid will always use the data type char to be able to send different types of data, which will automatically be marshalled to / from a byte stream.


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 (Apr 27, 22:29, 2024)