3 #ifndef DUNE_FUNCTIONS_GRIDFUNCTIONS_GRID_FUNCTION_HH
4 #define DUNE_FUNCTIONS_GRIDFUNCTIONS_GRID_FUNCTION_HH
8 #include <dune/common/typeutilities.hh>
30 template<
class Signature,
class EntitySet,
template<
class>
class DerivativeTraits=DefaultDerivativeTraits,
size_t bufferSize=56>
40 template<
class S,
class ES,
template<
class>
class DerivativeTraits,
size_t bufferSize>
41 struct GridFunctionTraits :
42 DifferentiableFunctionTraits<S, DerivativeTraits, bufferSize>
45 using Base=DifferentiableFunctionTraits<S, DerivativeTraits, bufferSize>;
52 using Element =
typename EntitySet::Element;
55 using DerivativeSignature =
typename Base::DerivativeSignature;
61 using LocalSignature =
typename Base::Range(
typename EntitySet::LocalCoordinate);
67 using LocalFunctionTraits =
typename Dune::Functions::Imp::LocalFunctionTraits<LocalSignature, Element, LocalDerivativeTraits, bufferSize>;
73 using Concept = GridFunctionWrapperInterface<S, DerivativeInterface, LocalFunctionInterface, ES>;
77 using Model = GridFunctionWrapperImplementation<S, DerivativeInterface, LocalFunctionInterface, ES, B>;
94 template<
class Range,
class Domain,
class ES,
template<
class>
class DerivativeTraits,
size_t bufferSize>
95 class GridFunction<Range(Domain), ES, DerivativeTraits, bufferSize> :
97 typename Imp::GridFunctionTraits<Range(Domain), ES, DerivativeTraits, bufferSize>::Concept,
98 Imp::GridFunctionTraits<Range(Domain), ES, DerivativeTraits, bufferSize>::template Model>
100 using Traits = Imp::GridFunctionTraits<Range(Domain), ES, DerivativeTraits, bufferSize>;
108 using EntitySet =
typename Traits::EntitySet;
123 template<
class F, disableCopyMove<Gr
idFunction, F> = 0 >
125 Base(std::forward<F>(f))
135 Range operator() (
const Domain& x)
const
137 return this->asInterface().operator()(x);
145 return t.asInterface().derivative();
159 return t.asInterface().wrappedLocalFunction();
169 return this->asInterface().wrappedEntitySet();
static constexpr bool isGridFunction()
Check if F models the GridFunction concept with given signature and entity set.
Definition: functionconcepts.hh:268
Definition: polynomial.hh:10
Definition: localfunction.hh:30
Base class for type-erased interface wrapper.
Definition: typeerasure.hh:165
Definition: gridfunction.hh:32
friend DerivativeInterface derivative(const GridFunction &t)
Definition: gridfunction.hh:143
GridFunction(F &&f)
Construct from function.
Definition: gridfunction.hh:124
const EntitySet & entitySet() const
Get associated EntitySet.
Definition: gridfunction.hh:167
friend LocalFunctionInterface localFunction(const GridFunction &t)
Get local function of wrapped function.
Definition: gridfunction.hh:157
Derivative traits for local functions.
Definition: localderivativetraits.hh:28