dune-pdelab 2.7-git
Loading...
Searching...
No Matches
Public Types | Public Member Functions | List of all members
Dune::PDELab::gfs::GridFunctionSubSpace< GFS, TreePath > Class Template Reference

Non-nesting implementation of GridFunctionSubSpace. More...

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

Inheritance diagram for Dune::PDELab::gfs::GridFunctionSubSpace< GFS, TreePath >:
Inheritance graph

Public Types

typedef GFS BaseGridFunctionSpace
 The base GridFunctionSpace that this GridFunctionSubSpace is based on. More...
 
using ChildGridFunctionSpace = TypeTree::ChildForTreePath< GFS, TreePath >
 The type of the original GridFunctionSpace that is the root of this GridFunctionSpace. More...
 
typedef ChildGridFunctionSpace::Traits Traits
 Re-exported Traits from the original GridFunctionSpace. More...
 
typedef GridFunctionSubSpaceTag< TypeTree::ImplementationTag< ChildGridFunctionSpace > > ImplementationTag
 Our ImplementationTag is derived from the tag of the original GridFunctionSpace. More...
 

Public Member Functions

 GridFunctionSubSpace (std::shared_ptr< const GFS > gfs_storage)
 Construct a GridFunctionSubSpace from the storage object of a root space. More...
 
 GridFunctionSubSpace (const GFS &gfs)
 Construct a GridFunctionSubSpace from a root space. More...
 
template<typename TP >
 GridFunctionSubSpace (std::shared_ptr< const GridFunctionSubSpace< GFS, TP > > gfs_storage, typename std::enable_if<!std::is_same< TP, TreePath >::value, void * >::type=nullptr)
 Construct a GridFunctionSubSpace from the storage of another GridFunctionSubSpace. More...
 
template<typename TP >
 GridFunctionSubSpace (const GridFunctionSubSpace< GFS, TP > &gfs, typename std::enable_if<!std::is_same< TP, TreePath >::value, void * >::type=nullptr)
 Construct a GridFunctionSubSpace from another GridFunctionSubSpace. More...
 
const BaseGridFunctionSpacebaseGridFunctionSpace () const
 Returns the root GridFunctionSpace that this subspace view is based on. More...
 
std::shared_ptr< const BaseGridFunctionSpacebaseGridFunctionSpaceStorage () const
 Returns the storage object of the root GridFunctionSpace that this subspace view is based on. More...
 
const ChildGridFunctionSpacechildGridFunctionSpace () const
 Returns the original GridFunctionSpace that we provide a view for. More...
 
std::shared_ptr< const ChildGridFunctionSpacechildGridFunctionSpaceStorage () const
 Returns the storage object of the original GridFunctionSpace that we provide a view for. More...
 
std::string name () const
 
void name (const std::string &name)
 
void inheritDataSetType (const TypeTree::ChildForTreePath< GFS, TreePath > &t)
 

Default Functionality for all GridFunctionSpaces

typedef TreePath SubSpacePath
 The TreePath from the root of the space hierarchy to this subspace. More...
 
typedef ChildGridFunctionSpace::OrderingTag OrderingTag
 Re-exported OrderingTag from the original GridFunctionSpace. More...
 
template<typename E >
using Constraintscontainer = typename GFS::template ConstraintsContainer< E >
 Re-exported constraints container from the original GridFunctionSpace. More...
 
typedef SubOrdering< typename GFS::Ordering, typename find_ordering_treepath_for_sub_gfs< typename GFS::Ordering, GFS, TreePath >::type > Ordering
 The ordering used by this GridFunctionSubSpace. More...
 
std::size_t subSpaceDepth () const
 
const Orderingordering () const
 Returns the ordering associated with this GridFunctionSubSpace. More...
 
const Traits::EntitySet & entitySet () const
 Returns the underlying EntitySet. More...
 
const Traits::GridViewType & gridView () const
 Returns the underlying GridView. More...
 
Traits::SizeType globalSize () const
 Returns the global size of the root space. More...
 
Traits::SizeType size () const
 Returns the global size of the root space. More...
 
Traits::SizeType maxLocalSize () const
 Returns the maximum number of DOFs per cells in this subspace. More...
 

Additional Functionality for Leaf Spaces

const Traits::FiniteElementMap & finiteElementMap () const
 Returns the finite element map of this space. More...
 
std::shared_ptr< const typename Traits::FiniteElementMap > finiteElementMapStorage () const
 Returns the storage object for the finite element map of this space. More...
 
const Traits::ConstraintsType & constraints () const
 Returns the constraints engine of this space. More...
 

Detailed Description

template<typename GFS, typename TreePath>
class Dune::PDELab::gfs::GridFunctionSubSpace< GFS, TreePath >

Non-nesting implementation of GridFunctionSubSpace.

This is the actual implementation of GridFunctionSubSpace. It is based around the idea of performing the mapping from the subspace to the rootspace in a single step using a SubOrdering. As SubOrderings cannot be nested, this class needs some helper functionality that constructs a new GridFunctionSubSpace directly on top of the underlying root GridFunctionSpace if the user attempts to nest GridFunctionSubSpaces. On the other hand, this implementation should render such usage mostly unnecessary, as it is now possible to directly construct a subspace for a given leaf space. If the compiler has support for template aliases, the de-nesting infrastructure will be able to completely remove all traces of nesting, letting the type obtained by nesting two GridFunctionSubSpaces look exactly like the type obtained by constructing a single GridFunctionSubSpace. Alternatively, without template aliases, it is only possible to have the actual implementation be non-nested. In this case, the Dune::PDELab::GridFunctionSubSpace classes will still nest.

Note
This class should always be used as Dune::PDELab::GridFunctionSubSpace. Never attempt to directly use the class Dune::PDELab::gfs::GridFunctionSubSpace!
Template Parameters
GFSThe root GridFunctionSpace.
TreePathPath from the root GridFunctionSpace to the represented subspace.
Examples
recipe-operator-splitting.cc.

Member Typedef Documentation

◆ BaseGridFunctionSpace

template<typename GFS , typename TreePath >
typedef GFS Dune::PDELab::gfs::GridFunctionSubSpace< GFS, TreePath >::BaseGridFunctionSpace

The base GridFunctionSpace that this GridFunctionSubSpace is based on.

◆ ChildGridFunctionSpace

template<typename GFS , typename TreePath >
using Dune::PDELab::gfs::GridFunctionSubSpace< GFS, TreePath >::ChildGridFunctionSpace = TypeTree::ChildForTreePath<GFS,TreePath>

The type of the original GridFunctionSpace that is the root of this GridFunctionSpace.

◆ Constraintscontainer

template<typename GFS , typename TreePath , typename Tag >
template<typename E >
using Dune::PDELab::gfs::DefaultSubSpaceFeatures< GFS, TreePath, Tag >::Constraintscontainer = typename GFS::template ConstraintsContainer<E>
inherited

Re-exported constraints container from the original GridFunctionSpace.

◆ ImplementationTag

template<typename GFS , typename TreePath >
typedef GridFunctionSubSpaceTag< TypeTree::ImplementationTag<ChildGridFunctionSpace> > Dune::PDELab::gfs::GridFunctionSubSpace< GFS, TreePath >::ImplementationTag

Our ImplementationTag is derived from the tag of the original GridFunctionSpace.

◆ Ordering

template<typename GFS , typename TreePath , typename Tag >
typedef SubOrdering< typename GFS::Ordering, typename find_ordering_treepath_for_sub_gfs< typename GFS::Ordering, GFS, TreePath >::type > Dune::PDELab::gfs::DefaultSubSpaceFeatures< GFS, TreePath, Tag >::Ordering
inherited

The ordering used by this GridFunctionSubSpace.

◆ OrderingTag

template<typename GFS , typename TreePath , typename Tag >
typedef ChildGridFunctionSpace::OrderingTag Dune::PDELab::gfs::DefaultSubSpaceFeatures< GFS, TreePath, Tag >::OrderingTag
inherited

Re-exported OrderingTag from the original GridFunctionSpace.

◆ SubSpacePath

template<typename GFS , typename TreePath , typename Tag >
typedef TreePath Dune::PDELab::gfs::DefaultSubSpaceFeatures< GFS, TreePath, Tag >::SubSpacePath
inherited

The TreePath from the root of the space hierarchy to this subspace.

◆ Traits

template<typename GFS , typename TreePath >
typedef ChildGridFunctionSpace::Traits Dune::PDELab::gfs::GridFunctionSubSpace< GFS, TreePath >::Traits

Re-exported Traits from the original GridFunctionSpace.

Constructor & Destructor Documentation

◆ GridFunctionSubSpace() [1/4]

template<typename GFS , typename TreePath >
Dune::PDELab::gfs::GridFunctionSubSpace< GFS, TreePath >::GridFunctionSubSpace ( std::shared_ptr< const GFS >  gfs_storage)
inlineexplicit

Construct a GridFunctionSubSpace from the storage object of a root space.

◆ GridFunctionSubSpace() [2/4]

template<typename GFS , typename TreePath >
Dune::PDELab::gfs::GridFunctionSubSpace< GFS, TreePath >::GridFunctionSubSpace ( const GFS &  gfs)
inlineexplicit

Construct a GridFunctionSubSpace from a root space.

◆ GridFunctionSubSpace() [3/4]

template<typename GFS , typename TreePath >
template<typename TP >
Dune::PDELab::gfs::GridFunctionSubSpace< GFS, TreePath >::GridFunctionSubSpace ( std::shared_ptr< const GridFunctionSubSpace< GFS, TP > >  gfs_storage,
typename std::enable_if<!std::is_same< TP, TreePath >::value, void * >::type  = nullptr 
)
inlineexplicit

Construct a GridFunctionSubSpace from the storage of another GridFunctionSubSpace.

This constructor is used to implement the non-nesting behavior by extracting the original root space from the GridFunctionSubSpace and using that space for initialization. In order to work correctly, this relies on a support wrapper that correctly sets up the TreePath for the new space.

Note
The second parameter is a little SFINAE helper that removes the constructor from the overload set if the two spaces are identical to avoid masking the standard copy constructor.

◆ GridFunctionSubSpace() [4/4]

template<typename GFS , typename TreePath >
template<typename TP >
Dune::PDELab::gfs::GridFunctionSubSpace< GFS, TreePath >::GridFunctionSubSpace ( const GridFunctionSubSpace< GFS, TP > &  gfs,
typename std::enable_if<!std::is_same< TP, TreePath >::value, void * >::type  = nullptr 
)
inlineexplicit

Construct a GridFunctionSubSpace from another GridFunctionSubSpace.

This constructor is used to implement the non-nesting behavior by extracting the original root space from the GridFunctionSubSpace and using that space for initialization. In order to work correctly, this relies on a support wrapper that correctly sets up the TreePath for the new space.

Note
The second parameter is a little SFINAE helper that removes the constructor from the overload set if the two spaces are identical to avoid masking the standard copy constructor.

Member Function Documentation

◆ baseGridFunctionSpace()

template<typename GFS , typename TreePath >
const BaseGridFunctionSpace & Dune::PDELab::gfs::GridFunctionSubSpace< GFS, TreePath >::baseGridFunctionSpace ( ) const
inline

Returns the root GridFunctionSpace that this subspace view is based on.

◆ baseGridFunctionSpaceStorage()

template<typename GFS , typename TreePath >
std::shared_ptr< const BaseGridFunctionSpace > Dune::PDELab::gfs::GridFunctionSubSpace< GFS, TreePath >::baseGridFunctionSpaceStorage ( ) const
inline

Returns the storage object of the root GridFunctionSpace that this subspace view is based on.

◆ childGridFunctionSpace()

template<typename GFS , typename TreePath >
const ChildGridFunctionSpace & Dune::PDELab::gfs::GridFunctionSubSpace< GFS, TreePath >::childGridFunctionSpace ( ) const
inline

Returns the original GridFunctionSpace that we provide a view for.

Warning
Users should think at least twice before using this object in their code, as it will usually not do what they want! Due to the way GridFunctionSpaces are constructed, it is not aware of the overall structure of the space!

◆ childGridFunctionSpaceStorage()

template<typename GFS , typename TreePath >
std::shared_ptr< const ChildGridFunctionSpace > Dune::PDELab::gfs::GridFunctionSubSpace< GFS, TreePath >::childGridFunctionSpaceStorage ( ) const
inline

Returns the storage object of the original GridFunctionSpace that we provide a view for.

Warning
Users should think at least twice before using this object in their code, as it will usually not do what they want! Due to the way GridFunctionSpaces are constructed, it is not aware of the overall structure of the space!

◆ constraints()

template<typename GFS , typename TreePath , typename Tag >
const Traits::ConstraintsType & Dune::PDELab::gfs::LeafSubSpaceFeatures< GFS, TreePath, Tag >::constraints ( ) const
inlineinherited

Returns the constraints engine of this space.

◆ entitySet()

template<typename GFS , typename TreePath , typename Tag >
const Traits::EntitySet & Dune::PDELab::gfs::DefaultSubSpaceFeatures< GFS, TreePath, Tag >::entitySet ( ) const
inlineinherited

Returns the underlying EntitySet.

◆ finiteElementMap()

template<typename GFS , typename TreePath , typename Tag >
const Traits::FiniteElementMap & Dune::PDELab::gfs::LeafSubSpaceFeatures< GFS, TreePath, Tag >::finiteElementMap ( ) const
inlineinherited

Returns the finite element map of this space.

◆ finiteElementMapStorage()

template<typename GFS , typename TreePath , typename Tag >
std::shared_ptr< const typename Traits::FiniteElementMap > Dune::PDELab::gfs::LeafSubSpaceFeatures< GFS, TreePath, Tag >::finiteElementMapStorage ( ) const
inlineinherited

Returns the storage object for the finite element map of this space.

◆ globalSize()

template<typename GFS , typename TreePath , typename Tag >
Traits::SizeType Dune::PDELab::gfs::DefaultSubSpaceFeatures< GFS, TreePath, Tag >::globalSize ( ) const
inlineinherited

Returns the global size of the root space.

◆ gridView()

template<typename GFS , typename TreePath , typename Tag >
const Traits::GridViewType & Dune::PDELab::gfs::DefaultSubSpaceFeatures< GFS, TreePath, Tag >::gridView ( ) const
inlineinherited

Returns the underlying GridView.

◆ inheritDataSetType()

void Dune::PDELab::gfs::GridFunctionSubSpaceOutputParameters< TypeTree::ChildForTreePath< GFS, TreePath > , std::is_base_of<GridFunctionOutputParameters, TypeTree::ChildForTreePath< GFS, TreePath > >::value >::inheritDataSetType ( const TypeTree::ChildForTreePath< GFS, TreePath > &  t)
inlineinherited

◆ maxLocalSize()

template<typename GFS , typename TreePath , typename Tag >
Traits::SizeType Dune::PDELab::gfs::DefaultSubSpaceFeatures< GFS, TreePath, Tag >::maxLocalSize ( ) const
inlineinherited

Returns the maximum number of DOFs per cells in this subspace.

◆ name() [1/2]

template<typename GFS , typename TreePath >
std::string Dune::PDELab::gfs::GridFunctionSubSpace< GFS, TreePath >::name ( ) const
inline

◆ name() [2/2]

template<typename GFS , typename TreePath >
void Dune::PDELab::gfs::GridFunctionSubSpace< GFS, TreePath >::name ( const std::string &  name)
inline

◆ ordering()

template<typename GFS , typename TreePath , typename Tag >
const Ordering & Dune::PDELab::gfs::DefaultSubSpaceFeatures< GFS, TreePath, Tag >::ordering ( ) const
inlineinherited

Returns the ordering associated with this GridFunctionSubSpace.

◆ size()

template<typename GFS , typename TreePath , typename Tag >
Traits::SizeType Dune::PDELab::gfs::DefaultSubSpaceFeatures< GFS, TreePath, Tag >::size ( ) const
inlineinherited

Returns the global size of the root space.

Warning
The semantics of this methods have changed with the introduction of Orderings: While this method used to return the size of the subspace only, it now behaves like globalSize() and returns the overall size of the root space! Calculating the size of the subspace might be a very expensive operation depending on the underlying orderings.

◆ subSpaceDepth()

template<typename GFS , typename TreePath , typename Tag >
std::size_t Dune::PDELab::gfs::DefaultSubSpaceFeatures< GFS, TreePath, Tag >::subSpaceDepth ( ) const
inlineinherited

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