2#ifndef DUNE_PDELAB_FUNCTION_OLDINTERFACEADAPTER_HH
3#define DUNE_PDELAB_FUNCTION_OLDINTERFACEADAPTER_HH
6#include <dune/pdelab/common/function.hh>
7#include <dune/pdelab/common/typetraits.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>;
33 using Geometry =
typename std::decay<typename Element::Geometry>::type;
45 void bind(
const Element& element)
53 Range operator()(
const LocalDomain& x)
const
56 f_->evaluate(element_, x, v);
60 const Element& localContext()
const
73 template<
typename Transformation>
74 LocalGridViewFunctionAdapter(std::shared_ptr<const F> f,
const Transformation & t) : f_(f) {};
77 template<
typename Transformation>
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>;
101 using Geometry =
typename Element::Geometry;
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());
GridView::template Codim< codim >::Entity Element
Type of Elements contained in this EntitySet.
Definition: gridviewentityset.hh:32
Element::Geometry::LocalCoordinate LocalCoordinate
Type of local coordinates with respect to the Element.
Definition: gridviewentityset.hh:35
typename std::decay_t< T >::ImplementationTag ImplementationTag
Returns the implementation tag of the given Node.
Definition: nodeinterface.hh:74
Dune namespace.
Definition: alignedallocator.hh:13
std::shared_ptr< T > stackobject_to_shared_ptr(T &t)
Create a shared_ptr for a stack-allocated object.
Definition: shared_ptr.hh:72
This file implements several utilities related to std::shared_ptr.