Dune-Functions 2.11
Loading...
Searching...
No Matches
Dune::Functions::PowerPreBasis< IMS, SPB, C > Class Template Reference

A pre-basis for power bases. More...

#include <dune/functions/functionspacebases/powerbasis.hh>

Inheritance diagram for Dune::Functions::PowerPreBasis< IMS, SPB, C >:
Inheritance graph

Public Types

using SubPreBasis = SPB
 The child pre-basis.
using Node = PowerBasisNode<typename SubPreBasis::Node, C>
 Template mapping root tree path to type of created tree node.
using size_type = typename Base::size_type
 Type used for indices and size information.
using IndexMergingStrategy = IMS
 Strategy used to merge the global indices of the child factories.
using GridView = typename SPB::GridView
 The grid view that the FE basis is defined on.

Public Member Functions

template<class... SFArgs, disableCopyMove< PowerPreBasis, SFArgs... > = 0, enableIfConstructible< SubPreBasis, SFArgs... > = 0>
 PowerPreBasis (SFArgs &&... sfArgs)
 Constructor for given child pre-basis objects for static size of the power-basis.
Node makeNode () const
 Create tree node.
size_type size () const
 Same as size(prefix) with empty prefix.
template<class SizePrefix>
size_type size (const SizePrefix &prefix) const
 Return number of possible values for next position in multi index.
template<class NodeType, typename It>
requires Dune::TypeTree::Concept::UniformInnerTreeNode<NodeType>
It indices (const NodeType &node, It it) const
 Maps from subtree index set [0..size-1] to a globally unique multi index in global basis.
auto containerDescriptor () const
 Return the associated container descriptor.
void initializeIndices ()
 Initialize the global indices.
const GridView & gridView () const
 Obtain the grid view that the basis is defined on.
void update (const GridView &gv)
 Update the stored grid view, to be called if the grid has changed.
std::size_t children () const
size_type dimension () const
 Get the total dimension of the space spanned by this basis.
size_type maxNodeSize () const
 Get the maximal number of DOFs associated to node for any element.
const SubPreBasis & subPreBasis () const
 Const access to the stored prebasis of the factor in the power space.
SubPreBasis & subPreBasis ()
 Mutable access to the stored prebasis of the factor in the power space.

Static Public Attributes

static constexpr std::integral_constant< std::size_t, C > children = {}
 Number of children provided as an integral constant.
static constexpr size_type maxMultiIndexSize = SubPreBasis::maxMultiIndexSize + isBlocked
static constexpr size_type minMultiIndexSize = SubPreBasis::minMultiIndexSize + isBlocked
static constexpr size_type multiIndexBufferSize = SubPreBasis::multiIndexBufferSize + isBlocked

Protected Member Functions

template<class SizePrefix, class Children>
size_type sizeImpl (SizePrefix prefix, Children children, BasisFactory::FlatInterleaved) const
template<class SizePrefix, class Children>
size_type sizeImpl (SizePrefix prefix, Children children, BasisFactory::FlatLexicographic) const
template<class SizePrefix, class Children>
size_type sizeImpl (SizePrefix prefix, Children children, BasisFactory::BlockedLexicographic) const
template<class SizePrefix, class Children>
size_type sizeImpl (SizePrefix prefix, Children children, BasisFactory::BlockedInterleaved) const
template<class NodeType, typename It, class Children>
It indicesImpl (const NodeType &node, It multiIndices, Children children, BasisFactory::FlatInterleaved) const
template<class NodeType, typename It, class Children>
It indicesImpl (const NodeType &node, It multiIndices, Children children, BasisFactory::FlatLexicographic) const
template<class NodeType, typename It, class Children>
It indicesImpl (const NodeType &node, It multiIndices, Children children, BasisFactory::BlockedLexicographic) const
template<class NodeType, typename It, class Children>
It indicesImpl (const NodeType &node, It multiIndices, Children children, BasisFactory::BlockedInterleaved) const
template<class Children>
auto containerDescriptorImpl (Children children) const

Static Protected Member Functions

template<class MultiIndex>
static void multiIndexPopFront (MultiIndex &M)
template<class MultiIndex>
static void multiIndexPushFront (MultiIndex &M, size_type M0)

Protected Attributes

std::size_t children_
SubPreBasis subPreBasis_

Detailed Description

template<class IMS, class SPB, std::size_t C>
class Dune::Functions::PowerPreBasis< IMS, SPB, C >

A pre-basis for power bases.

This pre-basis represents a power of a given pre-basis. Its node type is a PowerBasisNodes for the given subnode.

Template Parameters
IMSAn IndexMergingStrategy used to merge the global indices of the child factories
SPBThe child pre-basis
CThe exponent of the power node

Member Typedef Documentation

◆ GridView

template<class IMS, class SPB>
using Dune::Functions::DynamicPowerPreBasis< IMS, SPB >::GridView = typename SPB::GridView
inherited

The grid view that the FE basis is defined on.

◆ IndexMergingStrategy

template<class IMS, class SPB, std::size_t C>
using Dune::Functions::PowerPreBasis< IMS, SPB, C >::IndexMergingStrategy = IMS

Strategy used to merge the global indices of the child factories.

◆ Node

template<class IMS, class SPB, std::size_t C>
using Dune::Functions::PowerPreBasis< IMS, SPB, C >::Node = PowerBasisNode<typename SubPreBasis::Node, C>

Template mapping root tree path to type of created tree node.

◆ size_type

template<class IMS, class SPB, std::size_t C>
using Dune::Functions::PowerPreBasis< IMS, SPB, C >::size_type = typename Base::size_type

Type used for indices and size information.

◆ SubPreBasis

template<class IMS, class SPB, std::size_t C>
using Dune::Functions::PowerPreBasis< IMS, SPB, C >::SubPreBasis = SPB

The child pre-basis.

Constructor & Destructor Documentation

◆ PowerPreBasis()

template<class IMS, class SPB, std::size_t C>
template<class... SFArgs, disableCopyMove< PowerPreBasis, SFArgs... > = 0, enableIfConstructible< SubPreBasis, SFArgs... > = 0>
Dune::Functions::PowerPreBasis< IMS, SPB, C >::PowerPreBasis ( SFArgs &&... sfArgs)
inlineexplicit

Constructor for given child pre-basis objects for static size of the power-basis.

The child factories will be stored as copies

Member Function Documentation

◆ children()

template<class IMS, class SPB>
std::size_t Dune::Functions::DynamicPowerPreBasis< IMS, SPB >::children ( ) const
inlineinherited

◆ containerDescriptor()

template<class IMS, class SPB, std::size_t C>
auto Dune::Functions::PowerPreBasis< IMS, SPB, C >::containerDescriptor ( ) const
inline

Return the associated container descriptor.

◆ containerDescriptorImpl()

template<class IMS, class SPB>
template<class Children>
auto Dune::Functions::DynamicPowerPreBasis< IMS, SPB >::containerDescriptorImpl ( Children children) const
inlineprotectedinherited

◆ dimension()

template<class IMS, class SPB>
size_type Dune::Functions::DynamicPowerPreBasis< IMS, SPB >::dimension ( ) const
inlineinherited

Get the total dimension of the space spanned by this basis.

◆ gridView()

template<class IMS, class SPB>
const GridView & Dune::Functions::DynamicPowerPreBasis< IMS, SPB >::gridView ( ) const
inlineinherited

Obtain the grid view that the basis is defined on.

◆ indices()

template<class IMS, class SPB, std::size_t C>
template<class NodeType, typename It>
requires Dune::TypeTree::Concept::UniformInnerTreeNode<NodeType>
It Dune::Functions::PowerPreBasis< IMS, SPB, C >::indices ( const NodeType & node,
It it ) const
inline

Maps from subtree index set [0..size-1] to a globally unique multi index in global basis.

◆ indicesImpl() [1/4]

template<class IMS, class SPB>
template<class NodeType, typename It, class Children>
It Dune::Functions::DynamicPowerPreBasis< IMS, SPB >::indicesImpl ( const NodeType & node,
It multiIndices,
Children children,
BasisFactory::BlockedInterleaved  ) const
inlineprotectedinherited

◆ indicesImpl() [2/4]

template<class IMS, class SPB>
template<class NodeType, typename It, class Children>
It Dune::Functions::DynamicPowerPreBasis< IMS, SPB >::indicesImpl ( const NodeType & node,
It multiIndices,
Children children,
BasisFactory::BlockedLexicographic  ) const
inlineprotectedinherited

◆ indicesImpl() [3/4]

template<class IMS, class SPB>
template<class NodeType, typename It, class Children>
It Dune::Functions::DynamicPowerPreBasis< IMS, SPB >::indicesImpl ( const NodeType & node,
It multiIndices,
Children children,
BasisFactory::FlatInterleaved  ) const
inlineprotectedinherited

◆ indicesImpl() [4/4]

template<class IMS, class SPB>
template<class NodeType, typename It, class Children>
It Dune::Functions::DynamicPowerPreBasis< IMS, SPB >::indicesImpl ( const NodeType & node,
It multiIndices,
Children children,
BasisFactory::FlatLexicographic  ) const
inlineprotectedinherited

◆ initializeIndices()

template<class IMS, class SPB>
void Dune::Functions::DynamicPowerPreBasis< IMS, SPB >::initializeIndices ( )
inlineinherited

Initialize the global indices.

◆ makeNode()

template<class IMS, class SPB, std::size_t C>
Node Dune::Functions::PowerPreBasis< IMS, SPB, C >::makeNode ( ) const
inline

Create tree node.

◆ maxNodeSize()

template<class IMS, class SPB>
size_type Dune::Functions::DynamicPowerPreBasis< IMS, SPB >::maxNodeSize ( ) const
inlineinherited

Get the maximal number of DOFs associated to node for any element.

◆ multiIndexPopFront()

template<class IMS, class SPB>
template<class MultiIndex>
void Dune::Functions::DynamicPowerPreBasis< IMS, SPB >::multiIndexPopFront ( MultiIndex & M)
inlinestaticprotectedinherited

◆ multiIndexPushFront()

template<class IMS, class SPB>
template<class MultiIndex>
void Dune::Functions::DynamicPowerPreBasis< IMS, SPB >::multiIndexPushFront ( MultiIndex & M,
size_type M0 )
inlinestaticprotectedinherited

◆ size() [1/2]

template<class IMS, class SPB, std::size_t C>
size_type Dune::Functions::PowerPreBasis< IMS, SPB, C >::size ( ) const
inline

Same as size(prefix) with empty prefix.

◆ size() [2/2]

template<class IMS, class SPB, std::size_t C>
template<class SizePrefix>
size_type Dune::Functions::PowerPreBasis< IMS, SPB, C >::size ( const SizePrefix & prefix) const
inline

Return number of possible values for next position in multi index.

◆ sizeImpl() [1/4]

template<class IMS, class SPB>
template<class SizePrefix, class Children>
size_type Dune::Functions::DynamicPowerPreBasis< IMS, SPB >::sizeImpl ( SizePrefix prefix,
Children children,
BasisFactory::BlockedInterleaved  ) const
inlineprotectedinherited

◆ sizeImpl() [2/4]

template<class IMS, class SPB>
template<class SizePrefix, class Children>
size_type Dune::Functions::DynamicPowerPreBasis< IMS, SPB >::sizeImpl ( SizePrefix prefix,
Children children,
BasisFactory::BlockedLexicographic  ) const
inlineprotectedinherited

◆ sizeImpl() [3/4]

template<class IMS, class SPB>
template<class SizePrefix, class Children>
size_type Dune::Functions::DynamicPowerPreBasis< IMS, SPB >::sizeImpl ( SizePrefix prefix,
Children children,
BasisFactory::FlatInterleaved  ) const
inlineprotectedinherited

◆ sizeImpl() [4/4]

template<class IMS, class SPB>
template<class SizePrefix, class Children>
size_type Dune::Functions::DynamicPowerPreBasis< IMS, SPB >::sizeImpl ( SizePrefix prefix,
Children children,
BasisFactory::FlatLexicographic  ) const
inlineprotectedinherited

◆ subPreBasis() [1/2]

template<class IMS, class SPB>
SubPreBasis & Dune::Functions::DynamicPowerPreBasis< IMS, SPB >::subPreBasis ( )
inlineinherited

Mutable access to the stored prebasis of the factor in the power space.

◆ subPreBasis() [2/2]

template<class IMS, class SPB>
const SubPreBasis & Dune::Functions::DynamicPowerPreBasis< IMS, SPB >::subPreBasis ( ) const
inlineinherited

Const access to the stored prebasis of the factor in the power space.

◆ update()

template<class IMS, class SPB>
void Dune::Functions::DynamicPowerPreBasis< IMS, SPB >::update ( const GridView & gv)
inlineinherited

Update the stored grid view, to be called if the grid has changed.

Member Data Documentation

◆ children

template<class IMS, class SPB, std::size_t C>
std::integral_constant<std::size_t,C> Dune::Functions::PowerPreBasis< IMS, SPB, C >::children = {}
inlinestaticconstexpr

Number of children provided as an integral constant.

◆ children_

template<class IMS, class SPB>
std::size_t Dune::Functions::DynamicPowerPreBasis< IMS, SPB >::children_
protectedinherited

◆ maxMultiIndexSize

template<class IMS, class SPB>
size_type Dune::Functions::DynamicPowerPreBasis< IMS, SPB >::maxMultiIndexSize = SubPreBasis::maxMultiIndexSize + isBlocked
staticconstexprinherited

◆ minMultiIndexSize

template<class IMS, class SPB>
size_type Dune::Functions::DynamicPowerPreBasis< IMS, SPB >::minMultiIndexSize = SubPreBasis::minMultiIndexSize + isBlocked
staticconstexprinherited

◆ multiIndexBufferSize

template<class IMS, class SPB>
size_type Dune::Functions::DynamicPowerPreBasis< IMS, SPB >::multiIndexBufferSize = SubPreBasis::multiIndexBufferSize + isBlocked
staticconstexprinherited

◆ subPreBasis_

template<class IMS, class SPB>
SubPreBasis Dune::Functions::DynamicPowerPreBasis< IMS, SPB >::subPreBasis_
protectedinherited

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