Dune Core Modules (2.9.0)

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

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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 

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

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

References Dune::Hybrid::forEach(), Dune::models(), and Dune::Functions::CompositePreBasis< IMS, SPB >::subPreBasis().

◆ 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.

References Dune::Hybrid::forEach(), Dune::models(), and Dune::Functions::CompositePreBasis< IMS, SPB >::subPreBasis().


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 18, 22:30, 2024)