3 #ifndef DUNE_FUNCTIONS_GRIDFUNCTIONS_ANALYTICGRIDVIEWFUNCTION_HH 4 #define DUNE_FUNCTIONS_GRIDFUNCTIONS_ANALYTICGRIDVIEWFUNCTION_HH 8 #include <dune/common/typeutilities.hh> 24 template<
class Signature,
class GV,
class FLocal,
template<
class>
class DerivativeTraits=DefaultDerivativeTraits>
27 template<
class Range,
class LocalDomain,
class GV,
class F,
template<
class>
class DerivativeTraits>
39 using Geometry =
typename std::decay<typename Element::Geometry>::type;
46 using GlobalRawDerivative = decltype(Imp::derivativeIfImplemented<DerivativeDummy, F>(std::declval<F>()));
49 template<
class FT, disableCopyMove<LocalAnalyticGr
idViewFunction, FT> = 0>
51 f_(
std::forward<FT>(f))
66 geometry_.emplace(element_.geometry());
74 return f_(geometry_.value().global(x));
84 return LocalDerivative(Imp::derivativeIfImplemented<DerivativeDummy, F>(t.f_));
110 template<
class Range,
class Domain,
class GV,
class F,
template<
class>
class DerivativeTraits>
128 using GlobalRawDerivative = decltype(Imp::derivativeIfImplemented<DerivativeDummy, F>(std::declval<F>()));
136 f_(
std::forward<FT>(f)),
147 return Derivative(Imp::derivativeIfImplemented<DerivativeDummy, F>(t.f_), t.entitySet_.gridView());
178 template<
class F,
class Gr
idView>
180 typename std::result_of<F(typename GridView::template Codim<0>::Geometry::GlobalCoordinate)>::type
181 (
typename GridView::template Codim<0>::Geometry::GlobalCoordinate),
183 typename std::decay<F>::type >
186 using Domain =
typename GridView::template Codim<0>::Geometry::GlobalCoordinate;
187 using Range =
typename std::result_of<F(Domain)>::type;
188 using FRaw =
typename std::decay<F>::type;
199 #endif // DUNE_FUNCTIONS_GRIDFUNCTIONS_ANALYTICGRIDVIEWFUNCTION_HH friend LocalDerivative derivative(const LocalAnalyticGridViewFunction &t)
Definition: analyticgridviewfunction.hh:82
AnalyticGridViewFunction(FT &&f, const GridView &gridView)
Definition: analyticgridviewfunction.hh:135
typename SignatureTraits< Signature >::RawSignature RawSignature
Definition: analyticgridviewfunction.hh:115
Range operator()(const LocalDomain &x) const
Definition: analyticgridviewfunction.hh:72
Default implementation for derivative traits.
Definition: defaultderivativetraits.hh:36
typename Element::Geometry Geometry
Definition: analyticgridviewfunction.hh:121
friend Derivative derivative(const AnalyticGridViewFunction &t)
Definition: analyticgridviewfunction.hh:145
LocalAnalyticGridViewFunction(FT &&f)
Definition: analyticgridviewfunction.hh:50
Definition: differentiablefunction.hh:28
typename EntitySet::Element Element
Definition: analyticgridviewfunction.hh:37
Definition: analyticgridviewfunction.hh:25
GridView::template Codim< codim >::Entity Element
Type of Elements contained in this EntitySet.
Definition: gridviewentityset.hh:32
Definition: polynomial.hh:7
Definition: analyticgridviewfunction.hh:102
friend LocalFunction localFunction(const AnalyticGridViewFunction &t)
Definition: analyticgridviewfunction.hh:150
decltype(Imp::derivativeIfImplemented< DerivativeDummy, F >(std::declval< F >())) GlobalRawDerivative
Definition: analyticgridviewfunction.hh:46
Range(Domain) Signature
Definition: analyticgridviewfunction.hh:114
Element::Geometry::LocalCoordinate LocalCoordinate
Type of local coordinates with respect to the Element.
Definition: gridviewentityset.hh:35
Range operator()(const Domain &x) const
Definition: analyticgridviewfunction.hh:140
typename SignatureTraits< Signature >::RawSignature RawSignature
Definition: analyticgridviewfunction.hh:32
typename Imp::LocalAnalyticGridViewFunction< Range(LocalDomain), GridView, F, LocalDerivativeTraits< EntitySet, DerivativeTraits >::template Traits > LocalFunction
Definition: analyticgridviewfunction.hh:132
void bind(const Element &element)
Definition: analyticgridviewfunction.hh:55
Range(LocalDomain) Signature
Definition: analyticgridviewfunction.hh:31
decltype(Imp::derivativeIfImplemented< DerivativeDummy, F >(std::declval< F >())) GlobalRawDerivative
Definition: analyticgridviewfunction.hh:128
typename DerivativeTraits< RawSignature >::Range(Domain) DerivativeSignature
Definition: analyticgridviewfunction.hh:116
const Element & localContext() const
Definition: analyticgridviewfunction.hh:77
typename EntitySet::LocalCoordinate LocalDomain
Definition: analyticgridviewfunction.hh:131
typename std::decay< typename Element::Geometry >::type Geometry
Definition: analyticgridviewfunction.hh:39
GV GridView
Definition: analyticgridviewfunction.hh:118
AnalyticGridViewFunction< typename std::result_of< F(typename GridView::template Codim< 0 >::Geometry::GlobalCoordinate)>::type(typename GridView::template Codim< 0 >::Geometry::GlobalCoordinate), GridView, typename std::decay< F >::type > makeAnalyticGridViewFunction(F &&f, const GridView &gridView)
Construct AnalyticGridViewFunction from function and grid view.
Definition: analyticgridviewfunction.hh:184
const EntitySet & entitySet() const
Definition: analyticgridviewfunction.hh:155
Helper class to deduce the signature of a callable.
Definition: signature.hh:60
typename DerivativeTraits< RawSignature >::Range(LocalDomain) DerivativeSignature
Definition: analyticgridviewfunction.hh:33
typename EntitySet::Element Element
Definition: analyticgridviewfunction.hh:120
GV GridView
Definition: analyticgridviewfunction.hh:35
void unbind()
Definition: analyticgridviewfunction.hh:69