dune-fem 2.8.0
Loading...
Searching...
No Matches
pardgsimplexquadrature.hh
Go to the documentation of this file.
1#ifndef DUNE_FEM_PARDGSIMPLEXQUADRATURE_HPP
2#define DUNE_FEM_PARDGSIMPLEXQUADRATURE_HPP
3
4#include <cassert>
5#include <vector>
6
7#include <dune/common/fvector.hh>
8
9namespace Dune {
10namespace Fem {
11namespace ParDGSimplexQuadrature
12{
13
14
15template<int dim>
17{
18public:
19 enum { numCorners = dim+1 };
20 typedef Dune::FieldVector< double, dim > CoordinateType;
21 typedef Dune::FieldVector< double, dim+1 > Point;
22
23 Quadrature(int nop, int degree, const double x[][dim+1])
24 : nop(nop), degree(degree), x_w( nop )
25 {
26 for(int i=0; i<nop; i++)
27 {
28 for(int l=0; l<=dim; l++) x_w[i][l] = x[i][l];
29 }
30 }
31
32 explicit Quadrature( const int order )
33 {
34 const Quadrature& quad = quadrature( order );
35 nop = quad.number_of_points();
36 degree = quad.max_order();
37
38 assert( order <= degree );
39
40 x_w.resize( nop );
41 for(int i=0; i<nop; i++)
42 {
43 for(int l=0; l<=dim; l++) x_w[i][l] = quad.x_w[i][l];
44 }
45 }
46
47 CoordinateType point( const int i ) const
48 {
49 assert(i >= 0 && i < numPoints());
50 CoordinateType result;
51 for (size_t j = 0; j < dim; ++j)
52 {
53 result[j] = x(i)[j];
54 }
55 return result;
56 }
57
59 double weight(const int i) const
60 {
61 assert(i >= 0 && i < numPoints());
62 // scale with volume of reference element!
63 return w(i);
64 }
65
66 int order() const { return degree; }
67
68 int numPoints() const { return number_of_points(); }
69 int max_order() const { return degree; }
70
71 int number_of_points() const{ return nop; }
72
73 const Point& x(int i) const {
74 assert(i>=0 && i<nop);
75 return x_w[i];
76 }
77
78 double w(int i) const
79 {
80 assert(i>=0 && i<nop);
81 return x_w[i][dim];
82 }
83
84 void check() const;
85
86 static const Quadrature& quadrature(int minimum_degree);
87
88protected:
89
90 int nop;
91 int degree;
92 std::vector< Point > x_w;
93};
94
95
96// dimensions of interest
101
102
103
104// 0d quadrature rule
105//
106// there is only one with one point and infinite degree
107extern const Quadrature0d quad0d;
108
109
110
111// 1d quadrature rules for the interval (0,1)
112//
113// naming convention of quad1d_x: x denotes the order of the formula
114// i.e. the maximum degree of polynimials
115// that is integrated exact by the formula.
116//
117// exception quad1d_0: this is a dummy that has no points
122
123
124
125// 2d quadrature rules for the reference triangle [(0,0), (1,0), (0,1)]
126//
127// naming convention of quad2d_x: x denotes the order of the formula
128// i.e. the maximum degree of polynimials
129// that is integrated exact by the formula.
130//
131// exception quad2d_0: this is a dummy that has no points
135
136
137
138
139// 3d quadrature rules for the reference
140// tetrahedron [(0,0,0), (1,0,0), (0,1,0), (0,0,1)]
141//
142// naming convention of quad3d_x: x denotes the order of the formula
143// i.e. the maximum degree of polynimials
144// that is integrated exact by the formula.
145//
146// exception quad3d_0: this is a dummy that has no points
150
151
152} // ParDGSimplexQuadrature
153} // Fem
154} // Dune
155
156#endif
Definition: bindguard.hh:11
const Quadrature3d quad3d_6
Definition: pardgsimplexquadrature.hh:148
const Quadrature1d quad1d_39
Definition: pardgsimplexquadrature.hh:121
const Quadrature1d quad1d_27
Definition: pardgsimplexquadrature.hh:120
const Quadrature1d quad1d_19
Definition: pardgsimplexquadrature.hh:119
Quadrature< 1 > Quadrature1d
Definition: pardgsimplexquadrature.hh:98
const Quadrature1d quad1d_25
Definition: pardgsimplexquadrature.hh:120
const Quadrature2d quad2d_9
Definition: pardgsimplexquadrature.hh:133
const Quadrature1d quad1d_3
Definition: pardgsimplexquadrature.hh:118
const Quadrature1d quad1d_35
Definition: pardgsimplexquadrature.hh:120
const Quadrature2d quad2d_2
Definition: pardgsimplexquadrature.hh:132
const Quadrature2d quad2d_10
Definition: pardgsimplexquadrature.hh:133
const Quadrature3d quad3d_7b
Definition: pardgsimplexquadrature.hh:148
const Quadrature2d quad2d_3
Definition: pardgsimplexquadrature.hh:132
const Quadrature3d quad3d_5b
Definition: pardgsimplexquadrature.hh:148
const Quadrature1d quad1d_31
Definition: pardgsimplexquadrature.hh:120
const Quadrature3d quad3d_4
Definition: pardgsimplexquadrature.hh:147
const Quadrature3d quad3d_2
Definition: pardgsimplexquadrature.hh:147
const Quadrature2d quad2d_11
Definition: pardgsimplexquadrature.hh:133
Quadrature< 3 > Quadrature3d
Definition: pardgsimplexquadrature.hh:100
const Quadrature1d quad1d_29
Definition: pardgsimplexquadrature.hh:120
const Quadrature3d quad3d_7
Definition: pardgsimplexquadrature.hh:148
Quadrature< 2 > Quadrature2d
Definition: pardgsimplexquadrature.hh:99
const Quadrature1d quad1d_1
Definition: pardgsimplexquadrature.hh:118
const Quadrature2d quad2d_13
Definition: pardgsimplexquadrature.hh:134
const Quadrature1d quad1d_23
Definition: pardgsimplexquadrature.hh:120
const Quadrature1d quad1d_17
Definition: pardgsimplexquadrature.hh:119
const Quadrature3d quad3d_3
Definition: pardgsimplexquadrature.hh:147
const Quadrature1d quad1d_7
Definition: pardgsimplexquadrature.hh:118
const Quadrature1d quad1d_13
Definition: pardgsimplexquadrature.hh:119
const Quadrature3d quad3d_9
Definition: pardgsimplexquadrature.hh:148
const Quadrature2d quad2d_7
Definition: pardgsimplexquadrature.hh:133
const Quadrature1d quad1d_5
Definition: pardgsimplexquadrature.hh:118
const Quadrature3d quad3d_5
Definition: pardgsimplexquadrature.hh:148
Quadrature< 0 > Quadrature0d
Definition: pardgsimplexquadrature.hh:97
const Quadrature2d quad2d_4
Definition: pardgsimplexquadrature.hh:132
const Quadrature2d quad2d_8
Definition: pardgsimplexquadrature.hh:133
const Quadrature2d quad2d_1
Definition: pardgsimplexquadrature.hh:132
const Quadrature1d quad1d_33
Definition: pardgsimplexquadrature.hh:120
const Quadrature1d quad1d_37
Definition: pardgsimplexquadrature.hh:121
const Quadrature2d quad2d_5
Definition: pardgsimplexquadrature.hh:133
const Quadrature1d quad1d_11
Definition: pardgsimplexquadrature.hh:119
const Quadrature1d quad1d_9
Definition: pardgsimplexquadrature.hh:119
const Quadrature2d quad2d_6
Definition: pardgsimplexquadrature.hh:133
const Quadrature1d quad1d_21
Definition: pardgsimplexquadrature.hh:119
const Quadrature3d quad3d_8
Definition: pardgsimplexquadrature.hh:148
const Quadrature3d quad3d_1
Definition: pardgsimplexquadrature.hh:147
const Quadrature1d quad1d_15
Definition: pardgsimplexquadrature.hh:119
const Quadrature3d quad3d_11
Definition: pardgsimplexquadrature.hh:149
Definition: pardgsimplexquadrature.hh:17
std::vector< Point > x_w
Definition: pardgsimplexquadrature.hh:92
void check() const
Definition: pardgsimplexquadrature1d.cc:63
int order() const
Definition: pardgsimplexquadrature.hh:66
Quadrature(const int order)
Definition: pardgsimplexquadrature.hh:32
CoordinateType point(const int i) const
Definition: pardgsimplexquadrature.hh:47
@ numCorners
Definition: pardgsimplexquadrature.hh:19
int degree
Definition: pardgsimplexquadrature.hh:91
int nop
Definition: pardgsimplexquadrature.hh:90
Dune::FieldVector< double, dim > CoordinateType
Definition: pardgsimplexquadrature.hh:20
Quadrature(int nop, int degree, const double x[][dim+1])
Definition: pardgsimplexquadrature.hh:23
double w(int i) const
Definition: pardgsimplexquadrature.hh:78
const Point & x(int i) const
Definition: pardgsimplexquadrature.hh:73
int number_of_points() const
Definition: pardgsimplexquadrature.hh:71
static const Quadrature & quadrature(int minimum_degree)
Definition: pardgsimplexquadrature0d.cc:13
double weight(const int i) const
Access to the ith quadrature weight.
Definition: pardgsimplexquadrature.hh:59
Dune::FieldVector< double, dim+1 > Point
Definition: pardgsimplexquadrature.hh:21
int max_order() const
Definition: pardgsimplexquadrature.hh:69
int numPoints() const
Definition: pardgsimplexquadrature.hh:68