dune-pdelab 2.8
Loading...
Searching...
No Matches
Dune::PDELab::LeafLocalFunctionSpaceNode< GFS, DOFIndex > Class Template Reference

single component local function space More...

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

Inheritance diagram for Dune::PDELab::LeafLocalFunctionSpaceNode< GFS, DOFIndex >:
Inheritance graph

Public Types

typedef LeafLocalFunctionSpaceTraits< GFS, DOFIndex, LeafLocalFunctionSpaceNodeTraits
 
typedef LeafLocalFunctionSpaceTag ImplementationTag
 
typedef LeafNodeTag NodeTag
 

Public Member Functions

template<typename Transformation >
 LeafLocalFunctionSpaceNode (std::shared_ptr< const GFS > gfs, const Transformation &t)
 initialize with grid function space
 
template<typename Transformation >
 LeafLocalFunctionSpaceNode (const GFS &gfs, const Transformation &t)
 
const Traits::FiniteElementTypefiniteElement () const
 get finite element
 
const Traits::ConstraintsTypeconstraints () const
 get constraints engine
 
template<typename Entity , typename DOFIndexIterator , bool fast>
void dofIndices (const Entity &e, DOFIndexIterator it, DOFIndexIterator endit, std::integral_constant< bool, fast >)
 Calculates the multiindices associated with the given entity.
 
template<typename GC , typename LC >
void insert_constraints (const LC &lc, GC &gc) const
 
template<bool fast = false>
void bind (const typename Traits::Element &e, std::integral_constant< bool, fast > fast_=std::integral_constant< bool, fast >{})
 bind local function space to entity
 
template<class FE >
void bindFiniteElement (FE &&fe)
 Binds a finite element to the local space If the finite element is lvalue, the caller (i.e. FEM) must guarantee the lifetime of the object since we only keep a view on it. On the other hand, if it is rvalue, we store it locally but we require the object to be fully movable.
 
void unbindFiniteElement () noexcept
 Release view of the bound finite element.
 
template<typename NodeType , bool fast>
void bind (NodeType &node, const typename GridViewLocalFunctionSpaceBaseNode< GFS, DOFIndex >::Traits::Element &e, std::integral_constant< bool, fast >)
 
Traits::IndexContainer::size_type size () const
 number of degrees of freedom contained in this lfs node
 
std::size_t subSpaceDepth () const
 
Traits::IndexContainer::size_type maxSize () const
 get maximum possible size (which is maxLocalSize from grid function space)
 
Traits::IndexContainer::size_type localVectorSize () const
 get size of an appropriate local vector object
 
Traits::IndexContainer::size_type localIndex (typename Traits::IndexContainer::size_type index) const
 map index in this local function space to root local function space
 
const Traits::DOFIndexdofIndex (typename Traits::IndexContainer::size_type index) const
 Maps given index in this local function space to its corresponding global MultiIndex.
 
void debug () const
 print debug information about this local function space
 
const GFS & gridFunctionSpace () const
 Returns the GridFunctionSpace underlying this LocalFunctionSpace.
 
template<typename NodeType >
void setup (NodeType &node)
 

Static Public Member Functions

static constexpr auto degree ()
 

Public Attributes

std::shared_ptr< GFS const > pgfs
 
Traits::DOFIndexContainer _dof_index_storage
 
Traits::DOFIndexContainer_dof_indices
 
Traits::IndexContainer::size_type n
 
Traits::IndexContainer::size_type offset
 

Static Public Attributes

static const bool isLeaf
 
static const bool isPower
 
static const bool isComposite
 
static const std::size_t CHILDREN
 

Protected Member Functions

template<typename NodeType , bool fast = false>
void bind (NodeType &node, const typename Traits::Element &e, std::integral_constant< bool, fast >=std::integral_constant< bool, fast >{})
 bind local function space to entity
 

Detailed Description

template<typename GFS, typename DOFIndex>
class Dune::PDELab::LeafLocalFunctionSpaceNode< GFS, DOFIndex >

single component local function space

Member Typedef Documentation

◆ ImplementationTag

template<typename GFS , typename DOFIndex >
typedef LeafLocalFunctionSpaceTag Dune::PDELab::LeafLocalFunctionSpaceNode< GFS, DOFIndex >::ImplementationTag

◆ Traits

Constructor & Destructor Documentation

◆ LeafLocalFunctionSpaceNode() [1/2]

template<typename GFS , typename DOFIndex >
template<typename Transformation >
Dune::PDELab::LeafLocalFunctionSpaceNode< GFS, DOFIndex >::LeafLocalFunctionSpaceNode ( std::shared_ptr< const GFS >  gfs,
const Transformation &  t 
)
inline

initialize with grid function space

◆ LeafLocalFunctionSpaceNode() [2/2]

template<typename GFS , typename DOFIndex >
template<typename Transformation >
Dune::PDELab::LeafLocalFunctionSpaceNode< GFS, DOFIndex >::LeafLocalFunctionSpaceNode ( const GFS &  gfs,
const Transformation &  t 
)
inline

Member Function Documentation

◆ bind() [1/2]

template<typename GFS , typename DOFIndex >
template<bool fast = false>
void Dune::PDELab::LeafLocalFunctionSpaceNode< GFS, DOFIndex >::bind ( const typename Traits::Element e,
std::integral_constant< bool, fast >  fast_ = std::integral_constant<bool,fast>{} 
)
inline

bind local function space to entity

◆ bind() [2/2]

template<typename GFS , typename DOFIndex >
template<typename NodeType , bool fast = false>
void Dune::PDELab::GridViewLocalFunctionSpaceBaseNode< GFS, DOFIndex >::bind ( NodeType &  node,
const typename Traits::Element e,
std::integral_constant< bool, fast >  = std::integral_constant< bool, fast >{} 
)
protectedinherited

bind local function space to entity

This is a generic implementation of the bind function. It is parametrized with the NodeType, which the type of the derived LocalFunctionSpaceNode. Handing the NodeType as a parammeter avoid the need for the CRTP construct, but all derived classes have to add a method bind, which forward to this method.

Parameters
nodereference to the derived node, the address must be the same as this
eentity to bind to

◆ bindFiniteElement()

template<typename GFS , typename DOFIndex >
template<class FE >
void Dune::PDELab::LeafLocalFunctionSpaceNode< GFS, DOFIndex >::bindFiniteElement ( FE &&  fe)
inline

Binds a finite element to the local space If the finite element is lvalue, the caller (i.e. FEM) must guarantee the lifetime of the object since we only keep a view on it. On the other hand, if it is rvalue, we store it locally but we require the object to be fully movable.

Template Parameters
FErvalue or lvalue type of the finite element
Parameters
fethe finite element to be bound

◆ constraints()

template<typename GFS , typename DOFIndex >
const Traits::ConstraintsType & Dune::PDELab::LeafLocalFunctionSpaceNode< GFS, DOFIndex >::constraints ( ) const
inline

get constraints engine

◆ debug()

template<typename GFS , typename DOFIndex >
void Dune::PDELab::LocalFunctionSpaceBaseNode< GFS, DOFIndex >::debug ( ) const
inlineinherited

print debug information about this local function space

◆ dofIndex()

template<typename GFS , typename DOFIndex >
const Traits::DOFIndex & Dune::PDELab::LocalFunctionSpaceBaseNode< GFS, DOFIndex >::dofIndex ( typename Traits::IndexContainer::size_type  index) const
inlineinherited

Maps given index in this local function space to its corresponding global MultiIndex.

Parameters
indexThe local index value from the range 0,...,size()-1
Returns
A const reference to the associated, globally unique MultiIndex. Note that the returned object may (and must) be copied if it needs to be stored beyond the time of the next call to bind() on this LocalFunctionSpace (e.g. when the MultiIndex is used as a DOF identifier in a constraints container).

◆ dofIndices()

template<typename GFS , typename DOFIndex >
template<typename Entity , typename DOFIndexIterator , bool fast>
void Dune::PDELab::LeafLocalFunctionSpaceNode< GFS, DOFIndex >::dofIndices ( const Entity e,
DOFIndexIterator  it,
DOFIndexIterator  endit,
std::integral_constant< bool, fast >   
)
inline

Calculates the multiindices associated with the given entity.

◆ finiteElement()

template<typename GFS , typename DOFIndex >
const Traits::FiniteElementType & Dune::PDELab::LeafLocalFunctionSpaceNode< GFS, DOFIndex >::finiteElement ( ) const
inline

get finite element

◆ gridFunctionSpace()

template<typename GFS , typename DOFIndex >
const GFS & Dune::PDELab::LocalFunctionSpaceBaseNode< GFS, DOFIndex >::gridFunctionSpace ( ) const
inlineinherited

Returns the GridFunctionSpace underlying this LocalFunctionSpace.

◆ insert_constraints()

template<typename GFS , typename DOFIndex >
template<typename GC , typename LC >
void Dune::PDELab::LeafLocalFunctionSpaceNode< GFS, DOFIndex >::insert_constraints ( const LC &  lc,
GC &  gc 
) const
inline

◆ localIndex()

template<typename GFS , typename DOFIndex >
Traits::IndexContainer::size_type Dune::PDELab::LocalFunctionSpaceBaseNode< GFS, DOFIndex >::localIndex ( typename Traits::IndexContainer::size_type  index) const
inlineinherited

map index in this local function space to root local function space

◆ localVectorSize()

template<typename GFS , typename DOFIndex >
Traits::IndexContainer::size_type Dune::PDELab::LocalFunctionSpaceBaseNode< GFS, DOFIndex >::localVectorSize ( ) const
inlineinherited

get size of an appropriate local vector object

this is the number of dofs of the complete local function space tree, i.e. the size() of the root node. The local vector objects must always have this size and the localIndex method maps into the range [0,localVectorSize()[

◆ maxSize()

template<typename GFS , typename DOFIndex >
Traits::IndexContainer::size_type Dune::PDELab::LocalFunctionSpaceBaseNode< GFS, DOFIndex >::maxSize ( ) const
inlineinherited

get maximum possible size (which is maxLocalSize from grid function space)

◆ setup()

template<typename GFS , typename DOFIndex >
template<typename NodeType >
void Dune::PDELab::LocalFunctionSpaceBaseNode< GFS, DOFIndex >::setup ( NodeType &  node)
inlineinherited

◆ size()

template<typename GFS , typename DOFIndex >
Traits::IndexContainer::size_type Dune::PDELab::LocalFunctionSpaceBaseNode< GFS, DOFIndex >::size ( ) const
inlineinherited

number of degrees of freedom contained in this lfs node

◆ subSpaceDepth()

template<typename GFS , typename DOFIndex >
std::size_t Dune::PDELab::LocalFunctionSpaceBaseNode< GFS, DOFIndex >::subSpaceDepth ( ) const
inlineinherited

◆ unbindFiniteElement()

template<typename GFS , typename DOFIndex >
void Dune::PDELab::LeafLocalFunctionSpaceNode< GFS, DOFIndex >::unbindFiniteElement ( )
inlinenoexcept

Release view of the bound finite element.

Member Data Documentation

◆ _dof_index_storage

template<typename GFS , typename DOFIndex >
Traits::DOFIndexContainer Dune::PDELab::LocalFunctionSpaceBaseNode< GFS, DOFIndex >::_dof_index_storage
inherited

◆ _dof_indices

template<typename GFS , typename DOFIndex >
Traits::DOFIndexContainer* Dune::PDELab::LocalFunctionSpaceBaseNode< GFS, DOFIndex >::_dof_indices
inherited

◆ n

template<typename GFS , typename DOFIndex >
Traits::IndexContainer::size_type Dune::PDELab::LocalFunctionSpaceBaseNode< GFS, DOFIndex >::n
inherited

◆ offset

template<typename GFS , typename DOFIndex >
Traits::IndexContainer::size_type Dune::PDELab::LocalFunctionSpaceBaseNode< GFS, DOFIndex >::offset
inherited

◆ pgfs

template<typename GFS , typename DOFIndex >
std::shared_ptr<GFS const> Dune::PDELab::LocalFunctionSpaceBaseNode< GFS, DOFIndex >::pgfs
inherited

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