Go to the documentation of this file.
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 >
20 template<
class ct,
unsigned int dimR,
class Impl >
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 >
130 class AnalyticalCoordFunction
131 :
public AnalyticalCoordFunctionInterface< ct, dimD, dimR, Impl >
133 typedef AnalyticalCoordFunction< ct, dimD, dimR, Impl > This;
134 typedef AnalyticalCoordFunctionInterface< ct, dimD, dimR, Impl > Base;
171 template<
class ct,
unsigned int dimR,
class Impl >
196 This &operator= (
const This & ) =
default;
197 This &operator= (
This && ) =
default;
205 template<
class HostEntity >
206 void evaluate (
const HostEntity &hostEntity,
unsigned int corner,
209 asImp().evaluate( hostEntity, corner, y );
240 template<
class ct,
unsigned int dimR,
class Impl >
241 class DiscreteCoordFunction
242 :
public DiscreteCoordFunctionInterface< ct, dimR, Impl >
244 typedef DiscreteCoordFunction< ct, dimR, Impl > This;
245 typedef DiscreteCoordFunctionInterface< ct, dimR, Impl > Base;
262 template<
class HostEntity >
263 void evaluate (
const HostEntity &hostEntity,
unsigned int corner,
275 template<
class CoordFunctionInterface >
281 template<
class ct,
unsigned int dimD,
unsigned int dimR,
class Impl >
285 static const bool value =
true;
288 template<
class ct,
unsigned int dimR,
class Impl >
289 struct isCoordFunctionInterface
292 static const bool value =
true;
300 template<
class CoordFunctionInterface >
306 template<
class ct,
unsigned int dimR,
class Impl >
310 static const bool value =
true;
318 template<
class CoordFunctionInterface >
321 static void adapt ( CoordFunctionInterface &coordFunction )
325 template<
class ct,
unsigned int dimR,
class Impl >
330 static void adapt ( CoordFunctionInterface &coordFunction )
332 coordFunction.adapt();
340 #endif // #ifndef DUNE_GEOGRID_COORDFUNCTION_HH
Derive an implementation of a discrete coordinate function from this class.
Definition: coordfunction.hh:21
Impl Implementation
Definition: coordfunction.hh:180
static const unsigned int dimDomain
dimension of the range vector (dimensionworld of host grid)
Definition: coordfunction.hh:55
~DiscreteCoordFunction()=default
Definition: coordfunction.hh:319
Implementation & asImp()
Definition: coordfunction.hh:116
ct ctype
field type of the coordinate vector
Definition: coordfunction.hh:183
Base ::RangeVector RangeVector
Definition: coordfunction.hh:138
Interface class for using a discrete function to define the geometry of a Dune::GeometryGrid....
Definition: coordfunction.hh:172
Base ::DomainVector DomainVector
Definition: coordfunction.hh:137
AnalyticalCoordFunction()=default
Definition: coordfunction.hh:301
const Implementation & asImp() const
Definition: coordfunction.hh:221
static void adapt(CoordFunctionInterface &coordFunction)
Definition: coordfunction.hh:321
Interface class for using an analytical function to define the geometry of a Dune::GeometryGrid....
Definition: coordfunction.hh:41
void evaluate(const DomainVector &x, RangeVector &y) const
evaluate method for global mapping
FieldVector< ctype, dimRange > RangeVector
range vector for the evaluate method
Definition: coordfunction.hh:189
static const bool value
Definition: coordfunction.hh:303
static const unsigned int dimRange
dimension of the range vector
Definition: coordfunction.hh:186
Derive an implementation of an analytical coordinate function from this class.
Definition: coordfunction.hh:18
This & operator=(const This &)=default
This Interface
Definition: coordfunction.hh:179
Impl Implementation
Definition: coordfunction.hh:49
~AnalyticalCoordFunction()=default
Definition: coordfunction.hh:276
void adapt()
Definition: coordfunction.hh:258
DiscreteCoordFunction()=default
void evaluate(const HostEntity &hostEntity, unsigned int corner, RangeVector &y) const
evaluate method
Definition: coordfunction.hh:206
Implementation & asImp()
Definition: coordfunction.hh:226
FieldVector< ctype, dimRange > RangeVector
range vector for the evaluate method
Definition: coordfunction.hh:62
static const unsigned int dimRange
dimension of the range vector
Definition: coordfunction.hh:57
This & operator=(const This &)=default
const Implementation & asImp() const
Definition: coordfunction.hh:111
ct ctype
field type of the coordinate vector
Definition: coordfunction.hh:52
Base ::RangeVector RangeVector
Definition: coordfunction.hh:248
void adapt()
method called from grid.adapt() method to allow adaptation of the discrete coordinate function
Definition: coordfunction.hh:215
FieldVector< ctype, dimDomain > DomainVector
domain vector for the evaluate method
Definition: coordfunction.hh:60
This Interface
Definition: coordfunction.hh:48
static const bool value
Definition: coordfunction.hh:278
Include standard header files.
Definition: agrid.hh:58