3#ifndef DUNE_GEOGRID_COORDFUNCTION_HH
4#define DUNE_GEOGRID_COORDFUNCTION_HH
8#include <dune/common/fvector.hh>
9#include <dune/common/std/type_traits.hh>
17 template<
class ct,
unsigned int dimD,
unsigned int dimR,
class Impl >
18 class AnalyticalCoordFunction;
20 template<
class ct,
unsigned int dimR,
class Impl >
21 class DiscreteCoordFunction;
40 template<
class ct,
unsigned int dimD,
unsigned int dimR,
class Impl >
69 This &operator= (
const This & ) =
default;
70 This &operator= (
This && ) =
default;
73 template<
typename F,
typename DV>
74 using has_operator_parentheses =
decltype(std::declval<F>()(std::declval<DV>()));
87 Std::is_detected<has_operator_parentheses,Impl,DV>::value
96 not Std::is_detected<has_operator_parentheses,Impl,DV>::value
103 "You need to implement either operator() or evaluate() in your coordinate function!");
104 asImp().evaluate( x, y );
129 template<
class ct,
unsigned int dimD,
unsigned int dimR,
class Impl >
171 template<
class ct,
unsigned int dimR,
class Impl >
196 This &operator= (
const This & ) =
default;
197 This &operator= (
This && ) =
default;
208 template<
class HostEntity >
209 void evaluate (
const HostEntity &hostEntity,
unsigned int corner,
212 asImp().evaluate( hostEntity, corner, y );
243 template<
class ct,
unsigned int dimR,
class Impl >
265 template<
class HostEntity >
266 void evaluate (
const HostEntity &hostEntity,
unsigned int corner,
278 template<
class CoordFunctionInterface >
284 template<
class ct,
unsigned int dimD,
unsigned int dimR,
class Impl >
288 static const bool value =
true;
291 template<
class ct,
unsigned int dimR,
class Impl >
292 struct isCoordFunctionInterface
295 static const bool value =
true;
303 template<
class CoordFunctionInterface >
309 template<
class ct,
unsigned int dimR,
class Impl >
313 static const bool value =
true;
321 template<
class CoordFunctionInterface >
324 static void adapt ( CoordFunctionInterface & )
328 template<
class ct,
unsigned int dimR,
class Impl >
333 static void adapt ( CoordFunctionInterface &coordFunction )
335 coordFunction.adapt();
Include standard header files.
Definition: agrid.hh:58
Derive an implementation of an analytical coordinate function from this class.
Definition: coordfunction.hh:132
Base::DomainVector DomainVector
Definition: coordfunction.hh:137
AnalyticalCoordFunction()=default
~AnalyticalCoordFunction()=default
AnalyticalCoordFunction(This &&)=default
Base::RangeVector RangeVector
Definition: coordfunction.hh:138
This & operator=(const This &)=default
AnalyticalCoordFunction(const This &)=default
Derive an implementation of a discrete coordinate function from this class.
Definition: coordfunction.hh:246
This & operator=(const This &)=default
void adapt()
Definition: coordfunction.hh:261
DiscreteCoordFunction()=default
DiscreteCoordFunction(This &&)=default
~DiscreteCoordFunction()=default
DiscreteCoordFunction(const This &)=default
Base::RangeVector RangeVector
Definition: coordfunction.hh:251
Interface class for using an analytical function to define the geometry of a Dune::GeometryGrid....
Definition: coordfunction.hh:42
Impl Implementation
Definition: coordfunction.hh:49
FieldVector< ctype, dimRange > RangeVector
range vector for the evaluate method
Definition: coordfunction.hh:62
void evaluate(const DomainVector &x, RangeVector &y) const
evaluate method for global mapping
static const unsigned int dimRange
dimension of the range vector
Definition: coordfunction.hh:57
ct ctype
field type of the coordinate vector
Definition: coordfunction.hh:52
static const unsigned int dimDomain
dimension of the range vector (dimensionworld of host grid)
Definition: coordfunction.hh:55
const Implementation & asImp() const
Definition: coordfunction.hh:111
This Interface
Definition: coordfunction.hh:48
Implementation & asImp()
Definition: coordfunction.hh:116
FieldVector< ctype, dimDomain > DomainVector
domain vector for the evaluate method
Definition: coordfunction.hh:60
Interface class for using a discrete function to define the geometry of a Dune::GeometryGrid....
Definition: coordfunction.hh:173
static const unsigned int dimRange
dimension of the range vector
Definition: coordfunction.hh:186
void evaluate(const HostEntity &hostEntity, unsigned int corner, RangeVector &y) const
evaluate method
Definition: coordfunction.hh:209
Implementation & asImp()
Definition: coordfunction.hh:229
ct ctype
field type of the coordinate vector
Definition: coordfunction.hh:183
void adapt()
method called from grid.adapt() method to allow adaptation of the discrete coordinate function
Definition: coordfunction.hh:218
FieldVector< ctype, dimRange > RangeVector
range vector for the evaluate method
Definition: coordfunction.hh:189
const Implementation & asImp() const
Definition: coordfunction.hh:224
Impl Implementation
Definition: coordfunction.hh:180
This Interface
Definition: coordfunction.hh:179
Definition: coordfunction.hh:280
static const bool value
Definition: coordfunction.hh:281
Definition: coordfunction.hh:305
static const bool value
Definition: coordfunction.hh:306
Definition: coordfunction.hh:323
static void adapt(CoordFunctionInterface &)
Definition: coordfunction.hh:324