dune-functions 2.9.0
Public Types | Public Member Functions | Static Public Attributes | Protected Types | Static Protected Attributes | List of all members
Dune::Functions::CompositePreBasis< IMS, SPB > Class Template Reference

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

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

Public Types

using SubPreBases = std::tuple< SPB... >
 Tuple of child pre-bases. More...
 
template<std::size_t i>
using SubPreBasis = std::tuple_element_t< i, SubPreBases >
 Export individual child pre-bases by index. More...
 
using GridView = typename std::tuple_element_t< 0, SubPreBases >::GridView
 The grid view that the FE basis is defined on. More...
 
using size_type = std::size_t
 Type used for indices and size information. More...
 
using IndexMergingStrategy = IMS
 Strategy used to merge the global indices of the child pre-bases. More...
 
using Node = CompositeBasisNode< typename SPB::Node... >
 Template mapping root tree path to type of created tree node. More...
 

Public Member Functions

template<class... SFArgs, disableCopyMove< CompositePreBasis, SFArgs... > = 0, enableIfConstructible< std::tuple< SPB... >, SFArgs... > = 0>
 CompositePreBasis (SFArgs &&... sfArgs)
 Constructor for given child pre-basis objects. More...
 
template<class GV , std::enable_if_t< std::conjunction_v< std::bool_constant<(children > 1)>, std::is_same< GV, GridView >, std::is_constructible< SPB, GridView >... > , int >
 CompositePreBasis (const GV &gv)
 Constructor for given GridView. More...
 
void initializeIndices ()
 Initialize the global indices. More...
 
const GridViewgridView () const
 Obtain the grid view that the basis is defined on. More...
 
void update (const GridView &gv)
 Update the stored grid view, to be called if the grid has changed. More...
 
Node makeNode () const
 Create tree node. More...
 
size_type size () const
 Same as size(prefix) with empty prefix. More...
 
template<class SizePrefix >
size_type size (const SizePrefix &prefix) const
 Return number of possible values for next position in multi index. More...
 
size_type dimension () const
 Get the total dimension of the space spanned by this basis. More...
 
size_type maxNodeSize () const
 Get the maximal number of DOFs associated to node for any element. More...
 
template<std::size_t i>
const SubPreBasis< i > & subPreBasis (Dune::index_constant< i >={}) const
 Const access to the stored prebasis of the factor in the power space. More...
 
template<std::size_t i>
SubPreBasis< i > & subPreBasis (Dune::index_constant< i >={})
 Mutable access to the stored prebasis of the factor in the power space. More...
 
template<typename It >
It indices (const Node &node, It it) const
 Maps from subtree index set [0..size-1] to a globally unique multi index in global basis. More...
 

Static Public Attributes

static constexpr size_type maxMultiIndexSize = std::max({SPB::maxMultiIndexSize...}) + isBlocked
 
static constexpr size_type minMultiIndexSize = std::min({SPB::minMultiIndexSize...}) + isBlocked
 
static constexpr size_type multiIndexBufferSize = std::max({SPB::multiIndexBufferSize...}) + isBlocked
 

Protected Types

using ChildIndices = std::make_index_sequence< children >
 

Static Protected Attributes

static const std::size_t children = sizeof...(SPB)
 

Detailed Description

template<class IMS, class... SPB>
class Dune::Functions::CompositePreBasis< IMS, SPB >

A pre-basis for composite bases.

This pre-basis represents a composition of several given pre-bases. Its node type is a CompositeBasisNodes for the given subnodes.

Template Parameters
IMSAn IndexMergingStrategy used to merge the global indices of the child pre-bases
SPBThe child pre-bases

Member Typedef Documentation

◆ ChildIndices

template<class IMS , class... SPB>
using Dune::Functions::CompositePreBasis< IMS, SPB >::ChildIndices = std::make_index_sequence<children>
protected

◆ GridView

template<class IMS , class... SPB>
using Dune::Functions::CompositePreBasis< IMS, SPB >::GridView = typename std::tuple_element_t<0, SubPreBases>::GridView

The grid view that the FE basis is defined on.

◆ IndexMergingStrategy

template<class IMS , class... SPB>
using Dune::Functions::CompositePreBasis< IMS, SPB >::IndexMergingStrategy = IMS

Strategy used to merge the global indices of the child pre-bases.

◆ Node

template<class IMS , class... SPB>
using Dune::Functions::CompositePreBasis< IMS, SPB >::Node = CompositeBasisNode<typename SPB::Node...>

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

◆ size_type

template<class IMS , class... SPB>
using Dune::Functions::CompositePreBasis< IMS, SPB >::size_type = std::size_t

Type used for indices and size information.

◆ SubPreBases

template<class IMS , class... SPB>
using Dune::Functions::CompositePreBasis< IMS, SPB >::SubPreBases = std::tuple<SPB...>

Tuple of child pre-bases.

◆ SubPreBasis

template<class IMS , class... SPB>
template<std::size_t i>
using Dune::Functions::CompositePreBasis< IMS, SPB >::SubPreBasis = std::tuple_element_t<i, SubPreBases>

Export individual child pre-bases by index.

Constructor & Destructor Documentation

◆ CompositePreBasis() [1/2]

template<class IMS , class... SPB>
template<class... SFArgs, disableCopyMove< CompositePreBasis, SFArgs... > = 0, enableIfConstructible< std::tuple< SPB... >, SFArgs... > = 0>
Dune::Functions::CompositePreBasis< IMS, SPB >::CompositePreBasis ( SFArgs &&...  sfArgs)
inline

Constructor for given child pre-basis objects.

The child pre-basis will be stored as copies

◆ CompositePreBasis() [2/2]

template<class IMS , class... SPB>
template<class GV , std::enable_if_t< std::conjunction_v< std::bool_constant<(children > 1)>, std::is_same< GV, GridView >, std::is_constructible< SPB, GridView >... > , int >
Dune::Functions::CompositePreBasis< IMS, SPB >::CompositePreBasis ( const GV &  gv)
inline

Constructor for given GridView.

This constructor is only available if all child pre-bases are constructible from the grid view.

Member Function Documentation

◆ dimension()

template<class IMS , class... SPB>
size_type Dune::Functions::CompositePreBasis< IMS, SPB >::dimension ( ) const
inline

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

◆ gridView()

template<class IMS , class... SPB>
const GridView & Dune::Functions::CompositePreBasis< IMS, SPB >::gridView ( ) const
inline

Obtain the grid view that the basis is defined on.

◆ indices()

template<class IMS , class... SPB>
template<typename It >
It Dune::Functions::CompositePreBasis< IMS, SPB >::indices ( const Node node,
It  it 
) const
inline

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

◆ initializeIndices()

template<class IMS , class... SPB>
void Dune::Functions::CompositePreBasis< IMS, SPB >::initializeIndices ( )
inline

Initialize the global indices.

◆ makeNode()

template<class IMS , class... SPB>
Node Dune::Functions::CompositePreBasis< IMS, SPB >::makeNode ( ) const
inline

Create tree node.

◆ maxNodeSize()

template<class IMS , class... SPB>
size_type Dune::Functions::CompositePreBasis< IMS, SPB >::maxNodeSize ( ) const
inline

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

◆ size() [1/2]

template<class IMS , class... SPB>
size_type Dune::Functions::CompositePreBasis< IMS, SPB >::size ( ) const
inline

Same as size(prefix) with empty prefix.

◆ size() [2/2]

template<class IMS , class... SPB>
template<class SizePrefix >
size_type Dune::Functions::CompositePreBasis< IMS, SPB >::size ( const SizePrefix &  prefix) const
inline

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

◆ subPreBasis() [1/2]

template<class IMS , class... SPB>
template<std::size_t i>
SubPreBasis< i > & Dune::Functions::CompositePreBasis< IMS, SPB >::subPreBasis ( Dune::index_constant< i >  = {})
inline

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

◆ subPreBasis() [2/2]

template<class IMS , class... SPB>
template<std::size_t i>
const SubPreBasis< i > & Dune::Functions::CompositePreBasis< IMS, SPB >::subPreBasis ( Dune::index_constant< i >  = {}) const
inline

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

◆ update()

template<class IMS , class... SPB>
void Dune::Functions::CompositePreBasis< IMS, SPB >::update ( const GridView gv)
inline

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

Member Data Documentation

◆ children

template<class IMS , class... SPB>
const std::size_t Dune::Functions::CompositePreBasis< IMS, SPB >::children = sizeof...(SPB)
staticprotected

◆ maxMultiIndexSize

template<class IMS , class... SPB>
constexpr size_type Dune::Functions::CompositePreBasis< IMS, SPB >::maxMultiIndexSize = std::max({SPB::maxMultiIndexSize...}) + isBlocked
staticconstexpr

◆ minMultiIndexSize

template<class IMS , class... SPB>
constexpr size_type Dune::Functions::CompositePreBasis< IMS, SPB >::minMultiIndexSize = std::min({SPB::minMultiIndexSize...}) + isBlocked
staticconstexpr

◆ multiIndexBufferSize

template<class IMS , class... SPB>
constexpr size_type Dune::Functions::CompositePreBasis< IMS, SPB >::multiIndexBufferSize = std::max({SPB::multiIndexBufferSize...}) + isBlocked
staticconstexpr

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