6 #include <dune/functions/common/signature.hh> 7 #include <dune/functions/gridfunctions/gridviewentityset.hh> 9 #include <amdis/Operations.hpp> 10 #include <amdis/common/DerivativeTraits.hpp> 11 #include <amdis/common/Order.hpp> 12 #include <amdis/gridfunctions/GridFunction.hpp> 17 template <
class Signature,
class LocalContext,
class Function>
21 template <
class R,
class D,
class LC,
class Function>
32 enum { hasDerivative =
true };
35 using Geometry =
typename LC::Geometry;
44 void bind(LC
const& element)
46 geometry_.emplace(element.geometry());
59 assert(
bool(geometry_) );
60 return fct_(geometry_.value().global(local));
63 Function
const& fct()
const 70 std::optional<Geometry> geometry_;
84 template <
class Sig,
class LC,
class F,
85 REQUIRES(Concepts::HasFunctorOrder<F,1>)>
88 return order(lf.fct(),1);
102 template <
class R,
class D,
class LC,
class F,
class Type>
105 static_assert(Concepts::HasDerivative<F,Type>,
106 "No derivative(F,DerivativeType) defined for Functor F of AnalyticLocalFunction.");
110 using RawSignature =
typename Dune::Functions::SignatureTraits<R(D)>::RawSignature;
127 template <
class Function,
class Gr
idView>
131 using EntitySet = Dune::Functions::GridViewEntitySet<GridView, 0>;
132 using Domain =
typename EntitySet::GlobalCoordinate;
135 enum { hasDerivative =
true };
138 using Element =
typename EntitySet::Element;
139 using LocalDomain =
typename EntitySet::LocalCoordinate;
146 , entitySet_{gridView}
168 Function
const&
fct()
const {
return fct_; }
172 EntitySet entitySet_;
180 template <
class F,
int dow>
181 constexpr
bool CallableDow =
182 Concepts::Callable<F, Dune::FieldVector<double, dow>>;
188 constexpr
bool CallableDomain =
189 Definition::CallableDow<F, 1> || Definition::CallableDow<F, 2> || Definition::CallableDow<F, 3>;
192 constexpr
bool CallableDomain =
193 Definition::CallableDow<F, WORLDDIM>;
203 template <
class Function>
206 template <
class Gr
idView>
207 static auto create(Function
const& fct, GridView
const& gridView)
222 template <
class F,
class GV,
class Type>
225 static_assert(Concepts::HasDerivative<F,Type>,
226 "No derivative(F,DerivativeType) defined for Functor of AnalyticLocalFunction.");
235 template <
class Function>
242 template <
class Gr
idView>
243 static auto create(
Self const&
self, GridView
const& gridView)
254 template <
class Functor>
272 template <
class Function,
273 REQUIRES(Concepts::CallableDomain<Function>)>
274 auto evalAtQP(Function
const& f)
Range operator()(Domain const &local) const
Evaluate the function in global coordinate by a local-to-global mapping of the local coordinates usin...
Definition: AnalyticGridFunction.hpp:57
AnalyticLocalFunction(Function const &fct)
Constructor. stores the function fct.
Definition: AnalyticGridFunction.hpp:39
Definition: GridFunction.hpp:26
D Domain
The LocalDomain this LocalFunction can be evaluated in.
Definition: AnalyticGridFunction.hpp:26
EntitySet const & entitySet() const
Returns entitySet_.
Definition: AnalyticGridFunction.hpp:162
Definition: AnalyticGridFunction.hpp:240
constexpr bool Functor
A Functor is a function F with signature Signature.
Definition: Concepts.hpp:134
Definition: AnalyticGridFunction.hpp:18
typename remove_cvref< T >::type remove_cvref_t
Helper alias template for remove_cvref.
Definition: TypeTraits.hpp:24
Definition: GridFunction.hpp:96
Definition: FieldMatVec.hpp:12
Range operator()(Domain const &x) const
Return the evaluated functor at global coordinates.
Definition: AnalyticGridFunction.hpp:150
Contains all classes needed for solving linear and non linear equation systems.
Definition: AdaptBase.hpp:6
Function const & fct() const
Returns fct_.
Definition: AnalyticGridFunction.hpp:168
void unbind()
Releases the geometry object.
Definition: AnalyticGridFunction.hpp:50
R Range
The range type of the LocalFunction.
Definition: AnalyticGridFunction.hpp:29
void bind(LC const &element)
Create a geometry object from the element.
Definition: AnalyticGridFunction.hpp:44
A Gridfunction that evaluates a function with global coordinates.
Definition: AnalyticGridFunction.hpp:128
LocalFunction makeLocalFunction() const
Return the AnalyticLocalFunction of the AnalyticGridFunction.
Definition: AnalyticGridFunction.hpp:156
auto derivativeOf(AnalyticLocalFunction< R(D), LC, F > const &lf, Type const &type)
Definition: AnalyticGridFunction.hpp:103
Definition: AnalyticGridFunction.hpp:236
Definition: DerivativeTraits.hpp:29
std::integral_constant< bool, B > bool_t
A wrapper for bool types.
Definition: Logical.hpp:12
AnalyticGridFunction(Function const &fct, GridView const &gridView)
Constructor. Stores the function fct and creates an EntitySet.
Definition: AnalyticGridFunction.hpp:144
int order(AnalyticLocalFunction< Sig, LC, F > const &lf)
Definition: AnalyticGridFunction.hpp:86