DUNE PDELab (git)

leafprebasismixin.hh
1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2// vi: set et ts=4 sw=2 sts=2:
3#ifndef DUNE_FUNCTIONS_FUNCTIONSPACEBASES_LEAFPREBASISMIXIN_HH
4#define DUNE_FUNCTIONS_FUNCTIONSPACEBASES_LEAFPREBASISMIXIN_HH
5
6#include <cassert>
7#include <cstddef>
8#include <type_traits>
9
10#include <dune/functions/functionspacebases/containerdescriptors.hh>
11
12namespace Dune::Functions {
13
30template<class Derived>
32{
33public:
35 using size_type = std::size_t;
36
38 static constexpr size_type maxMultiIndexSize = 1;
39
41 static constexpr size_type minMultiIndexSize = 1;
42
44 static constexpr size_type multiIndexBufferSize = 1;
45
47 template<class SizePrefix,
48 decltype(std::declval<SizePrefix>().size(), bool{}) = true>
49 size_type size(const SizePrefix& prefix) const
50 {
51 assert(prefix.size() == 0 || prefix.size() == 1);
52 return (prefix.size() == 0) ? derived().dimension() : 0;
53 }
54
57 {
58 return derived().dimension();
59 }
60
63 {
65 }
66
67private:
68 const Derived& derived() const
69 {
70 return static_cast<const Derived&>(*this);
71 }
72};
73
74
75} // end namespace Dune::Functions
76
77
78#endif // DUNE_FUNCTIONS_FUNCTIONSPACEBASES_LEAFPREBASISMIXIN_HH
A generic MixIn class for PreBasis.
Definition: leafprebasismixin.hh:32
size_type size(const SizePrefix &prefix) const
Return number of possible values for next position in multi index.
Definition: leafprebasismixin.hh:49
static constexpr size_type minMultiIndexSize
Minimal length of global multi-indices.
Definition: leafprebasismixin.hh:41
auto containerDescriptor() const
Return a flat container-descriptor.
Definition: leafprebasismixin.hh:62
static constexpr size_type maxMultiIndexSize
Maximal length of global multi-indices.
Definition: leafprebasismixin.hh:38
size_type size() const
Get the total dimension of the space spanned by this basis.
Definition: leafprebasismixin.hh:56
std::size_t size_type
Type used for indices and size information.
Definition: leafprebasismixin.hh:35
static constexpr size_type multiIndexBufferSize
Size required temporarily when constructing global multi-indices.
Definition: leafprebasismixin.hh:44
Uniform descriptor with dynamic size.
Definition: containerdescriptors.hh:164
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.111.3 (Jul 15, 22:36, 2024)