3#ifndef DUNE_FUNCTIONS_FUNCTIONSPACEBASES_SUBSPACEBASIS_HH
4#define DUNE_FUNCTIONS_FUNCTIONSPACEBASES_SUBSPACEBASIS_HH
6#include <dune/common/reservedvector.hh>
7#include <dune/common/typeutilities.hh>
8#include <dune/common/concept.hh>
23 template<
class... Inner,
class... Outer>
24 auto joinTreePaths(
const TypeTree::HybridTreePath<Inner...>& inner,
const TypeTree::HybridTreePath<Outer...> outer)
26 return TypeTree::HybridTreePath<Inner..., Outer...>(std::tuple_cat(inner._data, outer._data));
29 template<
class InnerTP,
class OuterTP>
30 using JoinTreePath_t = std::decay_t<decltype(joinTreePaths(std::declval<InnerTP>(), std::declval<OuterTP>()))>;
36template<
class RB,
class TP>
72 template<
class RootRootBasis,
class InnerTP,
class OuterTP>
130template<
class RB,
class TP>
134template<
class RootRootBasis,
class InnerTP,
class OuterTP>
136 ->
SubspaceBasis<std::decay_t<
decltype(rootBasis.rootBasis())>, Impl::JoinTreePath_t<InnerTP, OuterTP>>;
150template<
class RootBasis,
class... PrefixTreeIndices>
151auto subspaceBasis(
const RootBasis& rootBasis,
const TypeTree::HybridTreePath<PrefixTreeIndices...>& prefixPath)
156template<
class RootBasis,
class... PrefixTreeIndices>
157auto subspaceBasis(
const RootBasis& rootBasis,
const PrefixTreeIndices&... prefixTreeIndices)
159 return subspaceBasis(rootBasis, TypeTree::hybridTreePath(prefixTreeIndices...));
Definition: polynomial.hh:10
SubspaceBasis(const RB &, const TP) -> SubspaceBasis< RB, TP >
auto subspaceBasis(const RootBasis &rootBasis, const TypeTree::HybridTreePath< PrefixTreeIndices... > &prefixPath)
Create SubspaceBasis from a root basis and a prefixPath.
Definition: subspacebasis.hh:151
Definition: subspacebasis.hh:38
typename RootBasis::LocalView RootLocalView
Definition: subspacebasis.hh:43
LocalView localView() const
Return local view for basis.
Definition: subspacebasis.hh:108
const RootBasis * rootBasis_
Definition: subspacebasis.hh:124
typename RootBasis::SizePrefix SizePrefix
Definition: subspacebasis.hh:58
TP PrefixPath
Definition: subspacebasis.hh:45
SubspaceLocalView< RootLocalView, PrefixPath > LocalView
Type of the local view on the restriction of the basis to a single element.
Definition: subspacebasis.hh:56
size_type size(const SizePrefix &prefix) const
Return number possible values for next position in multi index.
Definition: subspacebasis.hh:100
typename RootBasis::GridView GridView
The grid view that the FE space is defined on.
Definition: subspacebasis.hh:48
const PrefixPath & prefixPath() const
Definition: subspacebasis.hh:118
SubspaceBasis(const SubspaceBasis< RootRootBasis, InnerTP > &rootBasis, const OuterTP &prefixPath)
Constructor from another SubspaceBasis.
Definition: subspacebasis.hh:73
const GridView & gridView() const
Obtain the grid view that the basis is defined on.
Definition: subspacebasis.hh:80
RB RootBasis
Definition: subspacebasis.hh:41
PrefixPath prefixPath_
Definition: subspacebasis.hh:125
size_type size() const
Return number of possible values for next position in empty multi index.
Definition: subspacebasis.hh:94
const RootBasis & rootBasis() const
Definition: subspacebasis.hh:113
typename RootBasis::MultiIndex MultiIndex
Type used for global numbering of the basis vectors.
Definition: subspacebasis.hh:51
size_type dimension() const
Definition: subspacebasis.hh:88
std::size_t size_type
Definition: subspacebasis.hh:53
SubspaceBasis(const RootBasis &rootBasis, const PrefixPath &prefixPath)
Constructor for a given grid view object.
Definition: subspacebasis.hh:62
The restriction of a finite element basis to a single element.
Definition: subspacelocalview.hh:30