3#ifndef DUNE_FUNCTIONS_FUNCTIONSPACEBASES_DEFAULTGLOBALBASIS_HH
4#define DUNE_FUNCTIONS_FUNCTIONSPACEBASES_DEFAULTGLOBALBASIS_HH
10#include <dune/common/reservedvector.hh>
11#include <dune/common/typeutilities.hh>
12#include <dune/common/concept.hh>
49 [[deprecated(
"Warning: Using a PreBasis that does not provide an indices(node, iterator) method but only a NodeIndexSet is deprecated!")]]
50 static auto indicesInterfaceDeprecationWarning() {}
90 if constexpr (not Impl::preBasisHasIndices<PreBasis>{})
91 indicesInterfaceDeprecationWarning();
92 static_assert(models<Concept::PreBasis<GridView>,
PreBasis>(),
"Type passed to DefaultGlobalBasis does not model the PreBasis concept.");
169namespace BasisFactory {
171template<
class Gr
idView,
class PreBasisFactory>
172auto makeBasis(
const GridView& gridView, PreBasisFactory&& preBasisFactory)
174 using RawPreBasisFactory = std::decay_t<PreBasisFactory>;
175 using MultiIndex = std::conditional_t<
176 (RawPreBasisFactory::requiredMultiIndexSize == 1),
178 Dune::ReservedVector<std::size_t, RawPreBasisFactory::requiredMultiIndexSize>>;
179 auto preBasis = preBasisFactory.template makePreBasis<MultiIndex>(gridView);
180 using PreBasis = std::decay_t<
decltype(preBasis)>;
185template<
class MultiIndex,
class Gr
idView,
class PreBasisFactory>
186auto makeBasis(
const GridView& gridView, PreBasisFactory&& preBasisFactory)
188 auto preBasis = preBasisFactory.template makePreBasis<MultiIndex>(gridView);
189 using PreBasis = std::decay_t<
decltype(preBasis)>;
197namespace BasisBuilder {
199 using namespace BasisFactory;
typename std::enable_if< std::is_constructible< T, Args... >::value, int >::type enableIfConstructible
Helper to constrain forwarding constructors.
Definition: type_traits.hh:26
Definition: polynomial.hh:10
auto makeBasis(const GridView &gridView, PreBasisFactory &&preBasisFactory)
Definition: defaultglobalbasis.hh:172
Global basis for given pre-basis.
Definition: defaultglobalbasis.hh:47
std::size_t size_type
Type used for indices and size information.
Definition: defaultglobalbasis.hh:67
typename PreBasis::GridView GridView
The grid view that the FE space is defined on.
Definition: defaultglobalbasis.hh:61
const GridView & gridView() const
Obtain the grid view that the basis is defined on.
Definition: defaultglobalbasis.hh:97
typename PreBasis::SizePrefix SizePrefix
Type used for prefixes handed to the size() method.
Definition: defaultglobalbasis.hh:73
PB PreBasis
Pre-basis providing the implementation details.
Definition: defaultglobalbasis.hh:55
PreBasis & preBasis()
Obtain the pre-basis providing the implementation details.
Definition: defaultglobalbasis.hh:109
void update(const GridView &gv)
Update the stored grid view.
Definition: defaultglobalbasis.hh:120
DefaultLocalView< DefaultGlobalBasis< PreBasis > > LocalView
Type of the local view on the restriction of the basis to a single element.
Definition: defaultglobalbasis.hh:70
size_type size(const SizePrefix &prefix) const
Return number of possible values for next position in multi index.
Definition: defaultglobalbasis.hh:139
size_type dimension() const
Get the total dimension of the space spanned by this basis.
Definition: defaultglobalbasis.hh:127
PreBasis preBasis_
Definition: defaultglobalbasis.hh:163
LocalView localView() const
Return local view for basis.
Definition: defaultglobalbasis.hh:145
TypeTree::HybridTreePath<> PrefixPath
The empty prefix path that identifies the root in the local ansatz tree.
Definition: defaultglobalbasis.hh:58
typename PreBasis::MultiIndex MultiIndex
Type used for global numbering of the basis vectors.
Definition: defaultglobalbasis.hh:64
DefaultGlobalBasis(T &&... t)
Constructor.
Definition: defaultglobalbasis.hh:86
size_type size() const
Return number of possible values for next position in empty multi index.
Definition: defaultglobalbasis.hh:133
const PreBasis & preBasis() const
Obtain the pre-basis providing the implementation details.
Definition: defaultglobalbasis.hh:103
PrefixPath prefixPath_
Definition: defaultglobalbasis.hh:164
const DefaultGlobalBasis & rootBasis() const
Return *this because we are not embedded in a larger basis.
Definition: defaultglobalbasis.hh:151
const PrefixPath & prefixPath() const
Return empty path, because this is the root in the local ansatz tree.
Definition: defaultglobalbasis.hh:157
The restriction of a finite element basis to a single element.
Definition: defaultlocalview.hh:109
A multi-index class with only one level.
Definition: flatmultiindex.hh:33