7#ifndef DUNE_FUNCTIONS_GRIDFUNCTIONS_GRID_FUNCTION_HH
8#define DUNE_FUNCTIONS_GRIDFUNCTIONS_GRID_FUNCTION_HH
12#include <dune/common/typeutilities.hh>
34template<
class Signature,
class EntitySet,
template<
class>
class DerivativeTraits=
DefaultDerivativeTraits,
size_t bufferSize=56>
44 template<
class S,
class ES,
template<
class>
class DerivativeTraits,
size_t bufferSize>
45 struct GridFunctionTraits :
46 DifferentiableFunctionTraits<S, DerivativeTraits, bufferSize>
49 using Base=DifferentiableFunctionTraits<S, DerivativeTraits, bufferSize>;
56 using Element =
typename EntitySet::Element;
59 using DerivativeSignature =
typename Base::DerivativeSignature;
65 using LocalSignature =
typename Base::Range(
typename EntitySet::LocalCoordinate);
72 using LocalFunctionTraits =
typename Dune::Functions::Imp::LocalFunctionTraits<LocalSignature, Element, LocalDerivativeTraits, bufferSize>;
78 using Concept = GridFunctionWrapperInterface<S, DerivativeInterface, LocalFunctionInterface, ES>;
82 using Model = GridFunctionWrapperImplementation<S, DerivativeInterface, LocalFunctionInterface, ES, B>;
99template<
class Range,
class Domain,
class ES,
template<
class>
class DerivativeTraits,
size_t bufferSize>
102 typename Imp::GridFunctionTraits<Range(Domain), ES, DerivativeTraits, bufferSize>::Concept,
103 Imp::GridFunctionTraits<Range(Domain), ES, DerivativeTraits, bufferSize>::template Model>
105 using Traits = Imp::GridFunctionTraits<Range(Domain), ES, DerivativeTraits, bufferSize>;
109 using DerivativeInterface =
typename Traits::DerivativeInterface;
111 using LocalFunctionInterface =
typename Traits::LocalFunctionInterface;
113 using EntitySet =
typename Traits::EntitySet;
128 template<
class F, disableCopyMove<Gr
idFunction, F> = 0 >
130 Base(std::forward<F>(f))
142 Range operator() (
const Domain& x)
const
157 return t.asInterface().derivative();
171 return t.asInterface().wrappedLocalFunction();
static constexpr bool isGridFunction()
Check if F models the GridFunction concept with given signature and entity set.
Definition functionconcepts.hh:273
Definition monomialset.hh:19
Definition monomialset.hh:19
Definition backends/concepts.hh:17
Default implementation for derivative traits.
Definition defaultderivativetraits.hh:41
Definition localfunction.hh:34
TypeErasureBase(T &&t)
Definition typeerasure.hh:174
Imp::GridFunctionTraits< Range(Domain), ES, DerivativeTraits, bufferSize >::Concept & asInterface()
Definition typeerasure.hh:182
Definition gridfunction.hh:36
friend DerivativeInterface derivative(const GridFunction &t)
Get derivative of wrapped function.
Definition gridfunction.hh:155
const EntitySet & entitySet() const
Get associated EntitySet.
Definition gridfunction.hh:180
GridFunction(F &&f)
Construct from function.
Definition gridfunction.hh:129
friend LocalFunctionInterface localFunction(const GridFunction &t)
Get local function of wrapped function.
Definition gridfunction.hh:169
Derivative traits for local functions.
Definition localderivativetraits.hh:32