dune-fem  2.8-git
quadrature/geometric/geometry.hh
Go to the documentation of this file.
1 #ifndef DUNE_FEM_QUADRATURE_GEOMETRIC_GEOMETRY_HH
2 #define DUNE_FEM_QUADRATURE_GEOMETRIC_GEOMETRY_HH
3 
4 #include <cstddef>
5 
6 #include <functional>
7 
8 #include <dune/geometry/type.hh>
9 
10 #include "quadrature.hh"
11 
12 namespace Dune
13 {
14 
15  namespace Fem
16  {
17 
18  // GeometryQuadrature
19  // ------------------
20 
21  template< class QuadratureRule >
23  : public GeometricQuadrature< typename QuadratureRule::CoordType, QuadratureRule::d, QuadratureRule::d, GeometryQuadrature< QuadratureRule > >
24  {
27 
28  public:
30  using QuadratureRuleType = QuadratureRule;
31 
33  using FieldType = typename BaseType::FieldType;
34 
39 
44  explicit GeometryQuadrature ( const QuadratureRuleType &quadratureRule )
45  : quadratureRule_( quadratureRule )
46  {}
47 
55  GeometryQuadrature ( const ThisType & ) = default;
56 
58  GeometryQuadrature ( ThisType && ) = default;
59 
61  GeometryQuadrature &operator= ( const ThisType & ) = default;
62 
65 
73  Dune::GeometryType type () const { return quadratureRule().type(); }
74 
76  int order () const { return quadratureRule().order(); }
77 
79  std::size_t nop () const { return quadratureRule().size(); }
80 
82  const CoordinateType &point ( std::size_t i ) const
83  {
84  return quadratureRule()[ i ].position();
85  }
86 
88  const LocalCoordinateType &localPoint ( std::size_t i ) const
89  {
90  return point( i );
91  }
92 
94  FieldType weight ( std::size_t i ) const
95  {
96  return quadratureRule()[ i ].weight();
97  }
98 
101  private:
102  const QuadratureRuleType &quadratureRule () const { return quadratureRule_.get(); }
103 
104  std::reference_wrapper< const QuadratureRuleType > quadratureRule_;
105  };
106 
107  } // namespace Fem
108 
109 } // namespace Dune
110 
111 #endif // #ifndef DUNE_FEM_QUADRATURE_GEOMETRIC_GEOMETRY_HH
Definition: bindguard.hh:11
Definition: quadrature/geometric/geometry.hh:24
GeometryQuadrature & operator=(const ThisType &)=default
assignment operator
GeometryQuadrature(const QuadratureRuleType &quadratureRule)
Definition: quadrature/geometric/geometry.hh:44
QuadratureRule QuadratureRuleType
type of Dune::Geometry::QuadratureRule
Definition: quadrature/geometric/geometry.hh:30
typename BaseType::FieldType FieldType
field type
Definition: quadrature/geometric/geometry.hh:33
FieldType weight(std::size_t i) const
return quadrature weight
Definition: quadrature/geometric/geometry.hh:94
std::size_t nop() const
return number of quadrature points
Definition: quadrature/geometric/geometry.hh:79
typename BaseType::LocalCoordinateType LocalCoordinateType
local coordinate type
Definition: quadrature/geometric/geometry.hh:38
typename BaseType::CoordinateType CoordinateType
coordinate type
Definition: quadrature/geometric/geometry.hh:36
Dune::GeometryType type() const
return geometry type
Definition: quadrature/geometric/geometry.hh:73
const CoordinateType & point(std::size_t i) const
return coordinates of -th quadrature point
Definition: quadrature/geometric/geometry.hh:82
const LocalCoordinateType & localPoint(std::size_t i) const
return local coordinates of -th quadrature point
Definition: quadrature/geometric/geometry.hh:88
GeometryQuadrature(const ThisType &)=default
copy constructor
GeometryQuadrature(ThisType &&)=default
move constructor
int order() const
return order
Definition: quadrature/geometric/geometry.hh:76
Definition: geometric/quadrature.hh:24
Dune::FieldVector< FieldType, dimension > CoordinateType
coordinate type
Definition: geometric/quadrature.hh:37
Field FieldType
field type
Definition: geometric/quadrature.hh:29
Dune::FieldVector< FieldType, mydimension > LocalCoordinateType
local coordinate type
Definition: geometric/quadrature.hh:39