2 #ifndef DUNE_PDELAB_FUNCTION_OLDINTERFACEADAPTER_HH
3 #define DUNE_PDELAB_FUNCTION_OLDINTERFACEADAPTER_HH
5 #include <dune/common/shared_ptr.hh>
8 #include <dune/functions/common/signature.hh>
9 #include <dune/functions/common/defaultderivativetraits.hh>
10 #include <dune/functions/gridfunctions/gridviewfunction.hh>
16 template<
class F,
template<
class>
class DerivativeTraits = Functions::DefaultDerivativeTraits>
17 class LocalGridViewFunctionAdapter
18 :
public TypeTree::LeafNode
21 using Range =
typename F::Traits::RangeType;
22 using LocalDomain =
typename F::Traits::DomainType;
23 using GridView =
typename F::Traits::GridViewType;
25 using Signature = Range(LocalDomain);
27 typename Functions::SignatureTraits<Signature>::RawSignature;
28 using DerivativeSignature =
29 typename DerivativeTraits<RawSignature>::Range(LocalDomain);
31 using EntitySet = Functions::GridViewEntitySet<GridView, 0>;
32 using Element =
typename EntitySet::Element;
33 using Geometry =
typename std::decay<typename Element::Geometry>::type;
35 typedef DifferentiableFunctionLocalViewTag ImplementationTag;
45 void bind(
const Element& element)
53 Range operator()(
const LocalDomain& x)
const
56 f_->evaluate(element_, x, v);
60 const Element& localContext()
const
70 LocalGridViewFunctionAdapter(
const F & f) : f_(stackobject_to_shared_ptr(f)) {};
73 template<
typename Transformation>
74 LocalGridViewFunctionAdapter(std::shared_ptr<const F> f,
const Transformation & t) : f_(f) {};
77 template<
typename Transformation>
78 LocalGridViewFunctionAdapter(
const F & f,
const Transformation & t) : f_(stackobject_to_shared_ptr(f)) {};
82 std::shared_ptr<const F> f_;
85 template<
class F,
template<
class>
class DerivativeTraits = Functions::DefaultDerivativeTraits>
86 class GridViewFunctionAdapter
89 using Range =
typename F::Traits::RangeFieldType;
90 using Domain =
typename F::Traits::DomainFieldType;
91 using GridView =
typename F::Traits::GridViewType;
93 using Signature = Range(Domain);
95 typename Functions::SignatureTraits<Signature>::RawSignature;
96 using DerivativeSignature =
97 typename DerivativeTraits<RawSignature>::Range(Domain);
99 using EntitySet = Functions::GridViewEntitySet<GridView, 0>;
100 using Element =
typename EntitySet::Element;
101 using Geometry =
typename Element::Geometry;
111 using LocalDomain =
typename EntitySet::LocalCoordinate;
112 using LocalFunction = LocalGridViewFunctionAdapter<F>;
115 GridViewFunctionAdapter(FT&& f) :
116 f_(std::forward<FT>(f))
119 Range operator()(
const Domain& x)
const
130 friend LocalFunction localFunction(
const F& f)
132 return LocalFunction(f.f_);
135 const EntitySet& entitySet()
const
137 return EntitySet(f_.getGridView());
For backward compatibility – Do not use this!
Definition: adaptivity.hh:28