3 #ifndef DUNE_GEOGRID_COORDFUNCTION_HH
4 #define DUNE_GEOGRID_COORDFUNCTION_HH
6 #include <dune/common/fvector.hh>
14 template<
class ct,
unsigned int dimD,
unsigned int dimR,
class Impl >
17 template<
class ct,
unsigned int dimR,
class Impl >
37 template<
class ct,
unsigned int dimD,
unsigned int dimR,
class Impl >
66 This &operator= (
const This & );
70 void evaluate (
const DomainVector &x, RangeVector &y )
const
72 return asImp().evaluate( x, y );
76 const Implementation &
asImp ()
const
78 return static_cast< const Implementation &
>( *this );
83 return static_cast< Implementation &
>( *this );
94 template<
class ct,
unsigned int dimD,
unsigned int dimR,
class Impl >
95 class AnalyticalCoordFunction
96 :
public AnalyticalCoordFunctionInterface< ct, dimD, dimR, Impl >
99 typedef AnalyticalCoordFunctionInterface< ct, dimD, dimR, Impl > Base;
111 This &operator= (
const This & );
113 void evaluate (
const DomainVector &x, RangeVector &y )
const;
135 template<
class ct,
unsigned int dimR,
class Impl >
161 This &operator= (
const This & );
169 template<
class HostEntity >
170 void evaluate (
const HostEntity &hostEntity,
unsigned int corner,
171 RangeVector &y )
const
173 asImp().evaluate( hostEntity, corner, y );
185 const Implementation &
asImp ()
const
187 return static_cast< const Implementation &
>( *this );
192 return static_cast< Implementation &
>( *this );
204 template<
class ct,
unsigned int dimR,
class Impl >
205 class DiscreteCoordFunction
206 :
public DiscreteCoordFunctionInterface< ct, dimR, Impl >
209 typedef DiscreteCoordFunctionInterface< ct, dimR, Impl > Base;
223 This &operator= (
const This & );
225 template<
class HostEntity >
226 void evaluate (
const HostEntity &hostEntity,
unsigned int corner,
227 RangeVector &y )
const;
238 template<
class CoordFunctionInterface >
244 template<
class ct,
unsigned int dimD,
unsigned int dimR,
class Impl >
251 template<
class ct,
unsigned int dimR,
class Impl >
263 template<
class CoordFunctionInterface >
269 template<
class ct,
unsigned int dimR,
class Impl >
281 template<
class CoordFunctionInterface >
284 static void adapt ( CoordFunctionInterface &coordFunction )
288 template<
class ct,
unsigned int dimR,
class Impl >
293 static void adapt ( CoordFunctionInterface &coordFunction )
295 coordFunction.
adapt();
303 #endif // #ifndef DUNE_GEOGRID_COORDFUNCTION_HH
Implementation & asImp()
Definition: coordfunction.hh:81
Interface class for using a discrete function to define the geometry of a Dune::GeometryGrid. An implementation should be derived from Dune::DiscreteCoordinateFunction and the evaluate method taking an entity of the host grid together with the number of a vertex returns the coordinate in of that corner. The user must ensure continuity of this mapping. In addition an adapt method is provided which is called whenever adapt() is called on the Dune::GeometryGrid.
Definition: coordfunction.hh:136
void adapt()
method called from grid.adapt() method to allow adaptation of the discrete coordinate function ...
Definition: coordfunction.hh:179
Definition: coordfunction.hh:282
friend class AnalyticalCoordFunction< ct, dimD, dimR, Impl >
Definition: coordfunction.hh:42
static const bool value
Definition: coordfunction.hh:241
Impl Implementation
Definition: coordfunction.hh:46
Derive an implementation of an analytical coordinate function from this class.
Definition: coordfunction.hh:15
void evaluate(const HostEntity &hostEntity, unsigned int corner, RangeVector &y) const
evaluate method
Definition: coordfunction.hh:170
Include standard header files.
Definition: agrid.hh:59
DiscreteCoordFunctionInterface< ct, dimR, Impl > CoordFunctionInterface
Definition: coordfunction.hh:291
static void adapt(CoordFunctionInterface &coordFunction)
Definition: coordfunction.hh:293
FieldVector< ctype, dimRange > RangeVector
range vector for the evaluate method
Definition: coordfunction.hh:59
static void adapt(CoordFunctionInterface &coordFunction)
Definition: coordfunction.hh:284
ct ctype
field type of the coordinate vector
Definition: coordfunction.hh:147
friend class DiscreteCoordFunction< ct, dimR, Impl >
Definition: coordfunction.hh:140
Impl Implementation
Definition: coordfunction.hh:144
void evaluate(const DomainVector &x, RangeVector &y) const
evaluate method for global mapping
Definition: coordfunction.hh:70
AnalyticalCoordFunction()
Definition: coordfunction.hh:106
const Implementation & asImp() const
Definition: coordfunction.hh:185
Derive an implementation of a discrete coordinate function from this class.
Definition: coordfunction.hh:18
This Interface
Definition: coordfunction.hh:45
FieldVector< ctype, dimRange > RangeVector
range vector for the evaluate method
Definition: coordfunction.hh:153
ct ctype
field type of the coordinate vector
Definition: coordfunction.hh:49
static const unsigned int dimDomain
dimension of the range vector (dimensionworld of host grid)
Definition: coordfunction.hh:52
DiscreteCoordFunction()
Definition: coordfunction.hh:215
Base::RangeVector RangeVector
Definition: coordfunction.hh:212
This Interface
Definition: coordfunction.hh:143
static const unsigned int dimRange
dimension of the range vector
Definition: coordfunction.hh:54
static const unsigned int dimRange
dimension of the range vector
Definition: coordfunction.hh:150
Implementation & asImp()
Definition: coordfunction.hh:190
Definition: coordfunction.hh:264
static const bool value
Definition: coordfunction.hh:266
void adapt()
Definition: coordfunction.hh:218
Base::RangeVector RangeVector
Definition: coordfunction.hh:103
Base::DomainVector DomainVector
Definition: coordfunction.hh:102
const Implementation & asImp() const
Definition: coordfunction.hh:76
Interface class for using an analytical function to define the geometry of a Dune::GeometryGrid. An implementation should be derived from Dune::AnalyticalCoordFunction and the evaluate method mapping has to be supplied.
Definition: coordfunction.hh:38
Definition: coordfunction.hh:239
FieldVector< ctype, dimDomain > DomainVector
domain vector for the evaluate method
Definition: coordfunction.hh:57