4 #ifndef DUNE_PDELAB_FUNCTION_CALLABLEADAPTER_HH 5 #define DUNE_PDELAB_FUNCTION_CALLABLEADAPTER_HH 9 #include <dune/common/fvector.hh> 10 #include <dune/common/typetraits.hh> 23 template<
typename GV,
typename RF,
int n,
typename F>
26 GridFunctionTraits<GV,RF,n,Dune::FieldVector<RF,n> >,
27 GlobalCallableToGridFunctionAdapter<GV,RF,n,F> >
32 typedef Dune::PDELab::
33 GridFunctionTraits<GV,RF,n,Dune::FieldVector<RF,n> >
Traits;
56 template<
typename T,
int n>
66 template<
typename T,
int n>
73 template<
typename GV,
typename RF,
int n,
typename F>
76 GridFunctionTraits<GV,RF,n,Dune::FieldVector<RF,n> >,
77 LocalCallableToGridFunctionAdapter<GV,RF,n,F> >
82 typedef Dune::PDELab::
83 GridFunctionTraits<GV,RF,n,Dune::FieldVector<RF,n> >
Traits;
112 template <
typename GV,
typename F>
119 template <
typename GV,
typename F>
121 ->
typename std::enable_if<
123 decltype(f(std::declval<
typename GV::template Codim<0>::Entity::Geometry::GlobalCoordinate>()))
128 decltype(f(std::declval<
typename GV::template Codim<0>::Entity::Geometry::GlobalCoordinate>()))
131 decltype(f(std::declval<
typename GV::template Codim<0>::Entity::Geometry::GlobalCoordinate>()))
136 typedef typename GV::template Codim<0>::Entity::Geometry::GlobalCoordinate X;
138 typedef decltype(f(x)) ReturnType;
142 return TheType(gv,f);
147 template <
typename GV,
typename F>
149 ->
typename std::enable_if<
152 std::declval<
typename GV::template Codim<0>::Entity>(),
153 std::declval<
typename GV::template Codim<0>::Entity::Geometry::LocalCoordinate>()
160 std::declval<
typename GV::template Codim<0>::Entity>(),
161 std::declval<
typename GV::template Codim<0>::Entity::Geometry::LocalCoordinate>()
166 std::declval<
typename GV::template Codim<0>::Entity>(),
167 std::declval<
typename GV::template Codim<0>::Entity::Geometry::LocalCoordinate>()
173 typedef typename GV::template Codim<0>::Entity E;
175 typedef typename E::Geometry::LocalCoordinate X;
177 typedef decltype(f(e,x)) ReturnType;
181 return TheType(gv,f);
193 template<
typename GV,
typename RF,
int n,
typename F,
typename P>
196 GridFunctionTraits<GV,RF,n,Dune::FieldVector<RF,n> >,
197 GlobalCallableToInstationaryGridFunctionAdapter<GV,RF,n,F,P> >
203 typedef Dune::PDELab::
204 GridFunctionTraits<GV,RF,n,Dune::FieldVector<RF,n> >
Traits;
208 : gv(gv_), f(f_), p(p_)
231 template<
typename GV,
typename RF,
int n,
typename F,
typename P>
234 GridFunctionTraits<GV,RF,n,Dune::FieldVector<RF,n> >,
235 LocalCallableToInstationaryGridFunctionAdapter<GV,RF,n,F,P> >
241 typedef Dune::PDELab::
242 GridFunctionTraits<GV,RF,n,Dune::FieldVector<RF,n> >
Traits;
278 template <
typename GV,
typename F>
286 template <
typename GV,
typename F,
typename PARAM>
288 ->
typename std::enable_if<
290 decltype(f(std::declval<
typename GV::template Codim<0>::Entity::Geometry::GlobalCoordinate>()))
295 decltype(f(std::declval<
typename GV::template Codim<0>::Entity::Geometry::GlobalCoordinate>()))
298 decltype(f(std::declval<
typename GV::template Codim<0>::Entity::Geometry::GlobalCoordinate>()))
304 typedef typename GV::template Codim<0>::Entity::Geometry::GlobalCoordinate X;
306 typedef decltype(f(x)) ReturnType;
310 return TheType(gv,f,param);
315 template <
typename GV,
typename F,
typename PARAM>
317 ->
typename std::enable_if<
320 std::declval<
typename GV::template Codim<0>::Entity>(),
321 std::declval<
typename GV::template Codim<0>::Entity::Geometry::LocalCoordinate>()
328 std::declval<
typename GV::template Codim<0>::Entity>(),
329 std::declval<
typename GV::template Codim<0>::Entity::Geometry::LocalCoordinate>()
334 std::declval<
typename GV::template Codim<0>::Entity>(),
335 std::declval<
typename GV::template Codim<0>::Entity::Geometry::LocalCoordinate>()
342 typedef typename GV::template Codim<0>::Entity E;
344 typedef typename E::Geometry::LocalCoordinate X;
346 typedef decltype(f(e,x)) ReturnType;
350 return TheType(gv,f,param);
373 const Dune::FieldVector<typename I::ctype, I::dimension-1> & coord
376 Dune::FieldVector<typename I::ctype, I::dimension>
xg = intersection.geometry().global(coord);
382 const Dune::FieldVector<typename I::ctype, I::dimension-1> & coord
385 return !isDirichlet( ig, coord );
405 bool isDirichlet(
const I &
ig,
const Dune::FieldVector<typename I::ctype, I::dimension-1> & coord
408 return(f(ig.intersection(),coord));
413 const Dune::FieldVector<typename I::ctype, I::dimension-1> & coord
416 return !isDirichlet( ig, coord );
433 template <
typename GV,
typename F>
434 BoundaryConditionAdapter makebBoundaryConditionFromCallable (
const GV& gv,
const F& f)
439 template<
typename GV,
typename F>
440 auto makeBoundaryConditionFromCallable (
const GV& gv,
const F& f)
441 ->
typename std::enable_if<
443 decltype(f(std::declval<
typename GV::template Codim<0>::Entity::Geometry::GlobalCoordinate>()))
453 template<
typename GV,
typename F>
454 auto makeBoundaryConditionFromCallable (
const GV& gv,
const F& f)
455 ->
typename std::enable_if<
458 std::declval<
typename GV::template Codim<0>::Entity>(),
459 std::declval<
typename GV::template Codim<0>::Entity::Geometry::LocalCoordinate>()
472 #endif // DUNE_PDELAB_FUNCTION_CALLABLEADAPTER_HH void evaluate(const typename Traits::ElementType &e, const typename Traits::DomainType &xl, typename Traits::RangeType &y) const
evaluate extended function on element
Definition: callableadapter.hh:251
const GV & getGridView()
get a reference to the grid view
Definition: callableadapter.hh:89
bool isNeumann(const I &ig, const Dune::FieldVector< typename I::ctype, I::dimension-1 > &coord) const
Definition: callableadapter.hh:381
static const int dim
Definition: adaptivity.hh:83
const IG & ig
Definition: constraints.hh:148
WrapperConformingToGridFunctionInterface makeGridFunctionFromCallable(const GV &gv, const F &f)
Create a GridFunction adapter from a callable.
Definition: callableadapter.hh:113
T Type
Definition: callableadapter.hh:68
Dune::FieldVector< GV::Grid::ctype, GV::dimension > DomainType
domain type in dim-size coordinates
Definition: function.hh:48
GlobalCallableToBoundaryConditionAdapter(F f_)
construct from functor
Definition: callableadapter.hh:368
const GV & getGridView() const
get a reference to the grid view
Definition: callableadapter.hh:212
WrapperConformingToGridFunctionInterface makeInstationaryGridFunctionFromCallable(const GV &gv, const F &f)
Create a GridFunction from callable and parameter class with setTime method.
Definition: callableadapter.hh:279
Definition: callableadapter.hh:62
GlobalCallableToGridFunctionAdapter(const GV &gv_, const F &f_)
construct from grid view
Definition: callableadapter.hh:36
Adapter for callables f(x) expecting a global coordinate x.
Definition: callableadapter.hh:24
bool isNeumann(const I &ig, const Dune::FieldVector< typename I::ctype, I::dimension-1 > &coord) const
Definition: callableadapter.hh:412
Adapter for boundary cond from a callable taking global coordinates.
Definition: callableadapter.hh:361
Adapter for callables f(e,x) expecting an entity e and a global coordinate x.
Definition: callableadapter.hh:74
void evaluate(const typename Traits::ElementType &e, const typename Traits::DomainType &xl, typename Traits::RangeType &y) const
evaluate extended function on element
Definition: callableadapter.hh:92
For backward compatibility – Do not use this!
Definition: adaptivity.hh:27
Definition: constraintsparameters.hh:24
const GV & getGridView() const
get a reference to the grid view
Definition: callableadapter.hh:39
void evaluate(const typename Traits::ElementType &e, const typename Traits::DomainType &xl, typename Traits::RangeType &y) const
evaluate extended function on element
Definition: callableadapter.hh:215
Dune::PDELab::GridFunctionTraits< GV, RF, n, Dune::FieldVector< RF, n > > Traits
Definition: callableadapter.hh:204
void setTime(RF t)
Definition: callableadapter.hh:224
LocalCallableToInstationaryGridFunctionAdapter(const GV &gv_, const F &f_, P &p_)
construct from grid view
Definition: callableadapter.hh:245
const Entity & e
Definition: localfunctionspace.hh:111
bool isDirichlet(const I &ig, const Dune::FieldVector< typename I::ctype, I::dimension-1 > &coord) const
Definition: callableadapter.hh:405
void evaluate(const typename Traits::ElementType &e, const typename Traits::DomainType &xl, typename Traits::RangeType &y) const
evaluate extended function on element
Definition: callableadapter.hh:42
static const unsigned int value
Definition: gridfunctionspace/tags.hh:139
bool isDirichlet(const I &intersection, const Dune::FieldVector< typename I::ctype, I::dimension-1 > &coord) const
Test whether boundary is Dirichlet-constrained.
Definition: callableadapter.hh:372
XG & xg
Definition: interpolate.hh:67
return a PDELab GridFunction (with setTime method) defined by a parameter class and a callable f(e...
Definition: callableadapter.hh:232
Definition: callableadapter.hh:52
GlobalCallableToInstationaryGridFunctionAdapter(const GV &gv_, const F &f_, P &p_)
construct from grid view
Definition: callableadapter.hh:207
Definition: constraintsparameters.hh:120
Adapter for boundary cond from a callable taking an entity and local coordinates. ...
Definition: callableadapter.hh:392
return a PDELab GridFunction (with setTime method) defined by a parameter class and a callable f(x) g...
Definition: callableadapter.hh:194
Dune::PDELab::GridFunctionTraits< GV, RF, n, Dune::FieldVector< RF, n > > Traits
Definition: callableadapter.hh:83
const P & p
Definition: constraints.hh:147
void setTime(RF t)
Definition: callableadapter.hh:259
LocalCallableToGridFunctionAdapter(const GV &gv_, const F &f_)
construct from grid view
Definition: callableadapter.hh:86
Dune::PDELab::GridFunctionTraits< GV, RF, n, Dune::FieldVector< RF, n > > Traits
Definition: callableadapter.hh:33
GV::Traits::template Codim< 0 >::Entity ElementType
codim 0 entity
Definition: function.hh:117
const GV & getGridView()
get a reference to the grid view
Definition: callableadapter.hh:248
T Type
Definition: callableadapter.hh:63
leaf of a function tree
Definition: function.hh:575
LocalCallableToBoundaryConditionAdapter(const F &f_)
Definition: callableadapter.hh:400
R RangeType
range type
Definition: function.hh:60
Dune::PDELab::GridFunctionTraits< GV, RF, n, Dune::FieldVector< RF, n > > Traits
Definition: callableadapter.hh:242