|
dune-pdelab 2.10-git
|
Non-nesting implementation of GridFunctionSubSpace. More...
#include <dune/pdelab/gridfunctionspace/subspace.hh>

Public Types | |
| typedef GFS | BaseGridFunctionSpace |
| The base GridFunctionSpace that this GridFunctionSubSpace is based on. | |
| using | ChildGridFunctionSpace = TypeTree::ChildForTreePath< GFS, TreePath > |
| The type of the original GridFunctionSpace that is the root of this GridFunctionSpace. | |
| typedef ChildGridFunctionSpace::Traits | Traits |
| Re-exported Traits from the original GridFunctionSpace. | |
| typedef GridFunctionSubSpaceTag< TypeTree::ImplementationTag< ChildGridFunctionSpace > > | ImplementationTag |
| Our ImplementationTag is derived from the tag of the original GridFunctionSpace. | |
| typedef Node | ProxiedNode |
| typedef Dune::TypeTree::NodeTag< Node > | NodeTag |
Public Member Functions | |
| GridFunctionSubSpace (std::shared_ptr< const GFS > gfs_storage, TreePath tree_path) | |
| Construct a GridFunctionSubSpace from the storage object of a root space. | |
| GridFunctionSubSpace (std::shared_ptr< const GFS > gfs_storage) | |
| Construct a GridFunctionSubSpace from the storage object of a root space. | |
| GridFunctionSubSpace (const GFS &gfs, TreePath tree_path) | |
| Construct a GridFunctionSubSpace from a root space. | |
| GridFunctionSubSpace (const GFS &gfs) | |
| template<typename TP > | |
| GridFunctionSubSpace (std::shared_ptr< const GridFunctionSubSpace< GFS, TP > > gfs_storage, TreePath tree_path, typename std::enable_if<!std::is_same< TP, TreePath >::value, void * >::type=nullptr) | |
| Construct a GridFunctionSubSpace from the storage of another GridFunctionSubSpace. | |
| 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) | |
| template<typename TP > | |
| GridFunctionSubSpace (const GridFunctionSubSpace< GFS, TP > &gfs, TreePath tree_path, typename std::enable_if<!std::is_same< TP, TreePath >::value, void * >::type=nullptr) | |
| Construct a GridFunctionSubSpace from another GridFunctionSubSpace. | |
| template<typename TP > | |
| GridFunctionSubSpace (const GridFunctionSubSpace< GFS, TP > &gfs, typename std::enable_if<!std::is_same< TP, TreePath >::value, void * >::type=nullptr) | |
| const BaseGridFunctionSpace & | baseGridFunctionSpace () const |
| Returns the root GridFunctionSpace that this subspace view is based on. | |
| std::shared_ptr< const BaseGridFunctionSpace > | baseGridFunctionSpaceStorage () const |
| Returns the storage object of the root GridFunctionSpace that this subspace view is based on. | |
| const ChildGridFunctionSpace & | childGridFunctionSpace () const |
| Returns the original GridFunctionSpace that we provide a view for. | |
| std::shared_ptr< const ChildGridFunctionSpace > | childGridFunctionSpaceStorage () const |
| Returns the storage object of the original GridFunctionSpace that we provide a view for. | |
| std::string | name () const |
| void | name (const std::string &name) |
| auto | degree () const |
| void | inheritDataSetType (const TypeTree::ChildForTreePath< GFS, TreePath > &t) |
Static Public Member Functions | |
| static constexpr auto | degree () |
Static Public Attributes | |
| static const bool | isLeaf |
| static const bool | isPower |
| static const bool | isComposite |
Protected Member Functions | |
| std::enable_if< enabled, Node & >::type | proxiedNode () |
| const Node & | proxiedNode () const |
| std::enable_if< enabled, Node & >::type | proxiedNode () |
| const Node & | proxiedNode () const |
| std::enable_if< enabled, std::shared_ptr< Node > >::type | proxiedNodeStorage () |
| std::shared_ptr< const Node > | proxiedNodeStorage () const |
| std::enable_if< enabled, std::shared_ptr< Node > >::type | proxiedNodeStorage () |
| std::shared_ptr< const Node > | proxiedNodeStorage () const |
Default Functionality for all GridFunctionSpaces | |
| typedef TreePath | SubSpacePath |
| The TreePath from the root of the space hierarchy to this subspace. | |
| typedef ChildGridFunctionSpace::OrderingTag | OrderingTag |
| Re-exported OrderingTag from the original GridFunctionSpace. | |
| template<typename E > | |
| using | Constraintscontainer = typename GFS::template ConstraintsContainer< E > |
| Re-exported constraints container from the original GridFunctionSpace. | |
| 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. | |
| std::size_t | subSpaceDepth () const |
| const Ordering & | ordering () const |
| Returns the ordering associated with this GridFunctionSubSpace. | |
| const Traits::EntitySet & | entitySet () const |
| Returns the underlying EntitySet. | |
| const Traits::GridViewType & | gridView () const |
| Returns the underlying GridView. | |
| Traits::SizeType | globalSize () const |
| Returns the global size of the root space. | |
| Traits::SizeType | size () const |
| Returns the global size of the root space. | |
| Traits::SizeType | maxLocalSize () const |
| Returns the maximum number of DOFs per cells in this subspace. | |
Additional Functionality for Leaf Spaces | |
| const Traits::FiniteElementMap & | finiteElementMap () const |
| Returns the finite element map of this space. | |
| std::shared_ptr< const typename Traits::FiniteElementMap > | finiteElementMapStorage () const |
| Returns the storage object for the finite element map of this space. | |
| const Traits::ConstraintsType & | constraints () const |
| Returns the constraints engine of this space. | |
Detailed Description
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
-
GFS The root GridFunctionSpace. TreePath Path from the root GridFunctionSpace to the represented subspace.
- Examples
- recipe-operator-splitting.cc.
Member Typedef Documentation
◆ BaseGridFunctionSpace
| typedef GFS Dune::PDELab::gfs::GridFunctionSubSpace< GFS, TreePath >::BaseGridFunctionSpace |
The base GridFunctionSpace that this GridFunctionSubSpace is based on.
◆ ChildGridFunctionSpace
| 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
|
inherited |
Re-exported constraints container from the original GridFunctionSpace.
◆ ImplementationTag
| typedef GridFunctionSubSpaceTag< TypeTree::ImplementationTag<ChildGridFunctionSpace> > Dune::PDELab::gfs::GridFunctionSubSpace< GFS, TreePath >::ImplementationTag |
Our ImplementationTag is derived from the tag of the original GridFunctionSpace.
◆ Ordering
|
inherited |
The ordering used by this GridFunctionSubSpace.
◆ OrderingTag
|
inherited |
Re-exported OrderingTag from the original GridFunctionSpace.
◆ SubSpacePath
|
inherited |
The TreePath from the root of the space hierarchy to this subspace.
◆ Traits
| typedef ChildGridFunctionSpace::Traits Dune::PDELab::gfs::GridFunctionSubSpace< GFS, TreePath >::Traits |
Re-exported Traits from the original GridFunctionSpace.
Constructor & Destructor Documentation
◆ GridFunctionSubSpace() [1/8]
|
inlineexplicit |
Construct a GridFunctionSubSpace from the storage object of a root space.
◆ GridFunctionSubSpace() [2/8]
|
inlineexplicit |
Construct a GridFunctionSubSpace from the storage object of a root space.
◆ GridFunctionSubSpace() [3/8]
|
inlineexplicit |
Construct a GridFunctionSubSpace from a root space.
◆ GridFunctionSubSpace() [4/8]
|
inlineexplicit |
◆ GridFunctionSubSpace() [5/8]
|
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() [6/8]
|
inlineexplicit |
◆ GridFunctionSubSpace() [7/8]
|
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.
◆ GridFunctionSubSpace() [8/8]
|
inlineexplicit |
Member Function Documentation
◆ baseGridFunctionSpace()
|
inline |
Returns the root GridFunctionSpace that this subspace view is based on.
◆ baseGridFunctionSpaceStorage()
|
inline |
Returns the storage object of the root GridFunctionSpace that this subspace view is based on.
◆ childGridFunctionSpace()
|
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()
|
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()
|
inlineinherited |
Returns the constraints engine of this space.
◆ entitySet()
|
inlineinherited |
Returns the underlying EntitySet.
◆ finiteElementMap()
|
inlineinherited |
Returns the finite element map of this space.
◆ finiteElementMapStorage()
|
inlineinherited |
Returns the storage object for the finite element map of this space.
◆ globalSize()
|
inlineinherited |
Returns the global size of the root space.
◆ gridView()
|
inlineinherited |
Returns the underlying GridView.
◆ inheritDataSetType()
|
inlineinherited |
◆ maxLocalSize()
|
inlineinherited |
Returns the maximum number of DOFs per cells in this subspace.
◆ name() [1/2]
|
inline |
◆ name() [2/2]
|
inline |
◆ ordering()
|
inlineinherited |
Returns the ordering associated with this GridFunctionSubSpace.
◆ size()
|
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()
|
inlineinherited |
The documentation for this class was generated from the following file:
Legal Statements / Impressum | Hosted by TU Dresden & Uni Heidelberg | Generated by
1.9.8