2 #ifndef DUNE_PDELAB_FUNCTION_OLDINTERFACEADAPTER_HH
3 #define DUNE_PDELAB_FUNCTION_OLDINTERFACEADAPTER_HH
7 #include <dune/functions/common/signature.hh>
8 #include <dune/functions/common/defaultderivativetraits.hh>
9 #include <dune/functions/gridfunctions/gridviewfunction.hh>
15 template<
class F,
template<
class>
class DerivativeTraits = Functions::DefaultDerivativeTraits>
16 class LocalGridViewFunctionAdapter
17 :
public TypeTree::LeafNode
20 using Range =
typename F::Traits::RangeType;
21 using LocalDomain =
typename F::Traits::DomainType;
22 using GridView =
typename F::Traits::GridViewType;
24 using Signature = Range(LocalDomain);
26 typename Functions::SignatureTraits<Signature>::RawSignature;
27 using DerivativeSignature =
28 typename DerivativeTraits<RawSignature>::Range(LocalDomain);
30 using EntitySet = Functions::GridViewEntitySet<GridView, 0>;
31 using Element =
typename EntitySet::Element;
32 using Geometry =
typename std::decay<typename Element::Geometry>::type;
34 typedef DifferentiableFunctionLocalViewTag ImplementationTag;
44 void bind(
const Element& element)
52 Range operator()(
const LocalDomain& x)
const
55 f_->evaluate(element_, x, v);
59 const Element& localContext()
const
69 LocalGridViewFunctionAdapter(
const F & f) : f_(stackobject_to_shared_ptr(f)) {};
72 template<
typename Transformation>
73 LocalGridViewFunctionAdapter(shared_ptr<const F> f,
const Transformation & t) : f_(f) {};
76 template<
typename Transformation>
77 LocalGridViewFunctionAdapter(
const F & f,
const Transformation & t) : f_(stackobject_to_shared_ptr(f)) {};
81 shared_ptr<const F> f_;
84 template<
class F,
template<
class>
class DerivativeTraits = Functions::DefaultDerivativeTraits>
85 class GridViewFunctionAdapter
88 using Range =
typename F::Traits::RangeFieldType;
89 using Domain =
typename F::Traits::DomainFieldType;
90 using GridView =
typename F::Traits::GridViewType;
92 using Signature = Range(Domain);
94 typename Functions::SignatureTraits<Signature>::RawSignature;
95 using DerivativeSignature =
96 typename DerivativeTraits<RawSignature>::Range(Domain);
98 using EntitySet = Functions::GridViewEntitySet<GridView, 0>;
99 using Element =
typename EntitySet::Element;
100 using Geometry =
typename Element::Geometry;
110 using LocalDomain =
typename EntitySet::LocalCoordinate;
111 using LocalFunction = LocalGridViewFunctionAdapter<F>;
114 GridViewFunctionAdapter(FT&& f) :
115 f_(std::forward<FT>(f))
118 Range operator()(
const Domain& x)
const
129 friend LocalFunction localFunction(
const F& f)
131 return LocalFunction(f.f_);
134 const EntitySet& entitySet()
const
136 return EntitySet(f_.getGridView());
147 #endif // DUNE_PDELAB_FUNCTION_OLDINTERFACEADAPTER_HH