dune-functions 2.10
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Attributes | Protected Member Functions | Static Protected Member Functions | Protected Attributes | List of all members
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 , std::enable_if_t< NodeType::isPower, int > = 0>
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 GridViewgridView () 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 SubPreBasissubPreBasis () const
 Const access to the stored prebasis of the factor in the power space.
 
SubPreBasissubPreBasis ()
 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 , std::enable_if_t< NodeType::isPower, int > = 0>
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 >
static void Dune::Functions::DynamicPowerPreBasis< IMS, SPB >::multiIndexPopFront ( MultiIndex &  M)
inlinestaticprotectedinherited

◆ multiIndexPushFront()

template<class IMS , class SPB >
template<class MultiIndex >
static 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>
constexpr 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 >
constexpr size_type Dune::Functions::DynamicPowerPreBasis< IMS, SPB >::maxMultiIndexSize = SubPreBasis::maxMultiIndexSize + isBlocked
staticconstexprinherited

◆ minMultiIndexSize

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

◆ multiIndexBufferSize

template<class IMS , class SPB >
constexpr 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: