dune-fem  2.8-git
geometric/quadrature.hh
Go to the documentation of this file.
1 #ifndef DUNE_FEM_QUADRATURE_GEOMETRIC_QUADRATURE_HH
2 #define DUNE_FEM_QUADRATURE_GEOMETRIC_QUADRATURE_HH
3 
4 #include <cstddef>
5 
6 #include <dune/common/bartonnackmanifcheck.hh>
7 #include <dune/common/fvector.hh>
8 
9 #include <dune/geometry/type.hh>
10 
12 
13 namespace Dune
14 {
15 
16  namespace Fem
17  {
18 
19  // GeometricQuadrature
20  // -------------------
21 
22  template< class Field, int mydim, int dim, class Implementation >
24  {
26 
27  public:
29  using FieldType = Field;
30 
32  static const int mydimension = mydim;
34  static const int dimension = dim;
35 
37  using CoordinateType = Dune::FieldVector< FieldType, dimension >;
39  using LocalCoordinateType = Dune::FieldVector< FieldType, mydimension >;
40 
43 
44  protected:
45 #ifndef DOXYGEN
46  GeometricQuadrature () = default;
47 #endif // #ifndef DOXYGEN
48 
49  public:
55  GeometricQuadrature ( const ThisType & ) = default;
56 
58  GeometricQuadrature ( ThisType && ) = default;
59 
61  GeometricQuadrature &operator= ( const ThisType & ) = default;
62 
65 
73  Dune::GeometryType type () const
74  {
75  CHECK_INTERFACE_IMPLEMENTATION( impl().type() );
76  return impl().type();
77  }
78 
80  int order () const
81  {
82  CHECK_INTERFACE_IMPLEMENTATION( impl().order() );
83  return impl().order();
84  }
85 
93  std::size_t nop () const
94  {
95  CHECK_INTERFACE_IMPLEMENTATION( impl().nop() );
96  return impl().nop();
97  }
98 
100  const CoordinateType &point ( std::size_t i ) const
101  {
102  CHECK_INTERFACE_IMPLEMENTATION( impl().point( i ) );
103  return impl().point( i );
104  }
105 
107  const LocalCoordinateType &localPoint ( std::size_t i ) const
108  {
109  CHECK_INTERFACE_IMPLEMENTATION( impl().localPoint( i ) );
110  return impl().localPoint( i );
111  }
112 
114  FieldType weight ( std::size_t i ) const
115  {
116  CHECK_INTERFACE_IMPLEMENTATION( impl().weight( i ) );
117  return impl().weight( i );
118  }
119 
127  const QuadraturePointWrapperType operator[] ( std::size_t i ) const
128  {
129  return QuadraturePointWrapperType( impl(), i );
130  }
131 
134  protected:
135  const Implementation &impl () const
136  {
137  return static_cast< const Implementation & >( *this );
138  }
139  };
140 
141  } // namespace Fem
142 
143 } // namespace Dune
144 
145 #endif // #ifndef DUNE_FEM_QUADRATURE_GEOMETRIC_QUADRATURE_HH
Definition: bindguard.hh:11
Definition: geometric/quadrature.hh:24
Dune::GeometryType type() const
return geometry type
Definition: geometric/quadrature.hh:73
GeometricQuadrature(ThisType &&)=default
move constructor
static const int mydimension
mydimension
Definition: geometric/quadrature.hh:32
const Implementation & impl() const
Definition: geometric/quadrature.hh:135
Dune::FieldVector< FieldType, dimension > CoordinateType
coordinate type
Definition: geometric/quadrature.hh:37
const LocalCoordinateType & localPoint(std::size_t i) const
return local coordinates of -th quadrature point
Definition: geometric/quadrature.hh:107
Field FieldType
field type
Definition: geometric/quadrature.hh:29
std::size_t nop() const
return number of quadrature points
Definition: geometric/quadrature.hh:93
const QuadraturePointWrapperType operator[](std::size_t i) const
return quadrature point wrapper
Definition: geometric/quadrature.hh:127
FieldType weight(std::size_t i) const
return quadrature weight
Definition: geometric/quadrature.hh:114
const CoordinateType & point(std::size_t i) const
return coordinates of -th quadrature point
Definition: geometric/quadrature.hh:100
static const int dimension
dimension
Definition: geometric/quadrature.hh:34
int order() const
return order
Definition: geometric/quadrature.hh:80
GeometricQuadrature & operator=(const ThisType &)=default
assignment operator
Dune::Fem::QuadraturePointWrapper< Implementation > QuadraturePointWrapperType
quadrature point wrapper type
Definition: geometric/quadrature.hh:42
Dune::FieldVector< FieldType, mydimension > LocalCoordinateType
local coordinate type
Definition: geometric/quadrature.hh:39
GeometricQuadrature(const ThisType &)=default
copy constructor
wrapper for a (Quadrature,int) pair
Definition: quadrature.hh:43