dune-fem 2.8.0
Loading...
Searching...
No Matches
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
13namespace 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
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
Dune::FieldVector< FieldType, dimension > CoordinateType
coordinate type
Definition: geometric/quadrature.hh:37
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
GeometricQuadrature & operator=(const ThisType &)=default
assignment operator
const LocalCoordinateType & localPoint(std::size_t i) const
return local coordinates of -th quadrature point
Definition: geometric/quadrature.hh:107
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
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
const Implementation & impl() const
Definition: geometric/quadrature.hh:135
wrapper for a (Quadrature,int) pair
Definition: quadrature.hh:43