dune-grid  2.4
coordfunctioncaller.hh
Go to the documentation of this file.
1 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2 // vi: set et ts=4 sw=2 sts=2:
3 #ifndef DUNE_GEOGRID_COORDFUNCTIONCALLER_HH
4 #define DUNE_GEOGRID_COORDFUNCTIONCALLER_HH
5 
8 
9 namespace Dune
10 {
11 
12  namespace GeoGrid
13  {
14 
15  // CoordFunctionCaller
16  // -------------------
17 
18  template< class HostEntity, class CoordFunctionInterface >
20 
21  template< class HostEntity, class ct, unsigned int dimD, unsigned int dimR, class Impl >
22  class CoordFunctionCaller< HostEntity, AnalyticalCoordFunctionInterface< ct, dimD, dimR, Impl > >
23  {
26 
27  static const int codimension = HostEntity::codimension;
28 
29  public:
31 
32  CoordFunctionCaller ( const HostEntity &hostEntity,
33  const CoordFunctionInterface &coordFunction )
34  : hostCorners_( hostEntity ),
35  coordFunction_( coordFunction )
36  {}
37 
38  void evaluate ( unsigned int i, RangeVector &y ) const
39  {
40  coordFunction_.evaluate( hostCorners_[ i ], y );
41  }
42 
43  GeometryType type () const
44  {
45  return hostCorners_.type();
46  }
47 
48  std::size_t size () const
49  {
50  return hostCorners_.size();
51  }
52 
53  private:
54  const HostCorners< HostEntity > hostCorners_;
55  const CoordFunctionInterface &coordFunction_;
56  };
57 
58  template< class HostEntity, class ct, unsigned int dimR, class Impl >
59  class CoordFunctionCaller< HostEntity, DiscreteCoordFunctionInterface< ct, dimR, Impl > >
60  {
63 
64  typedef typename CoordFunctionInterface::RangeVector RangeVector;
65 
66  public:
67  CoordFunctionCaller ( const HostEntity &hostEntity,
68  const CoordFunctionInterface &coordFunction )
69  : hostEntity_( hostEntity ),
70  coordFunction_( coordFunction )
71  {}
72 
73  void evaluate ( unsigned int i, RangeVector &y ) const
74  {
75  coordFunction_.evaluate( hostEntity_, i, y );
76  }
77 
78  GeometryType type () const
79  {
80  return hostEntity_.type();
81  }
82 
83  std::size_t size () const
84  {
85  const Dune::ReferenceElement< ct, HostEntity::mydimension > &refElement
86  = Dune::ReferenceElements< ct, HostEntity::mydimension >::general( type() );
87  return refElement.size( HostEntity::mydimension );
88  }
89 
90  private:
91  const HostEntity &hostEntity_;
92  const CoordFunctionInterface &coordFunction_;
93  };
94 
95  } // namespace GeoGrid
96 
97 } // namespace Dune
98 
99 #endif // #ifndef DUNE_GEOGRID_COORDFUNCTIONCALLER_HH
Definition: coordfunctioncaller.hh:19
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
GeometryType
Type representing VTK's entity geometry types.
Definition: common.hh:178
Include standard header files.
Definition: agrid.hh:59
FieldVector< ctype, dimRange > RangeVector
range vector for the evaluate method
Definition: coordfunction.hh:59
FieldVector< ctype, dimRange > RangeVector
range vector for the evaluate method
Definition: coordfunction.hh:153
void evaluate(unsigned int i, RangeVector &y) const
Definition: coordfunctioncaller.hh:38
CoordFunctionInterface::RangeVector RangeVector
Definition: coordfunctioncaller.hh:30
CoordFunctionCaller(const HostEntity &hostEntity, const CoordFunctionInterface &coordFunction)
Definition: coordfunctioncaller.hh:32
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
void evaluate(unsigned int i, RangeVector &y) const
Definition: coordfunctioncaller.hh:73
Definition: hostcorners.hh:34
CoordFunctionCaller(const HostEntity &hostEntity, const CoordFunctionInterface &coordFunction)
Definition: coordfunctioncaller.hh:67