Dune-Fufem 2.11-git
Loading...
Searching...
No Matches
refinedquadraturerule.hh
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright © DUNE-FUFEM Project contributors, see file AUTHORS.md
2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception OR LGPL-3.0-or-later
3
4#ifndef REFINED_QUADRATURE_RULE_HH
5#define REFINED_QUADRATURE_RULE_HH
6
16
17
18template <class ct, int dim>
20 public CompositeQuadratureRule<ct,dim>
21{
22 protected:
26 public:
28 : CompositeQuadratureRule<ct,dim>(quad,1)
29 {}
30};
31
41template <class ct>
43 public Dune::QuadratureRule<ct,3>
44{
45 protected:
49
50 public:
51
53 {
54 Point p,pp;
55 for(size_t i=0; i<quad.size(); ++i)
56 {
57 double w = quad[i].weight() / 8.0;
58
59 // die vier abgeschnittenen Ecken
60 p = quad[i].position();
61 p *= 0.5;
62 this->push_back(QuadPoint(p, w));
63
64 p = quad[i].position();
65 p *= 0.5;
66 p[0] += 0.5;
67 this->push_back(QuadPoint(p, w));
68
69 p = quad[i].position();
70 p *= 0.5;
71 p[1] += 0.5;
72 this->push_back(QuadPoint(p, w));
73
74 p = quad[i].position();
75 p *= 0.5;
76 p[2] += 0.5;
77 this->push_back(QuadPoint(p, w));
78
79 // die aus dem übrigen Oktaeder entstehenden 4 Tetraeder
81 A[0][0] = -0.5;
82 A[0][1] = -0.5;
83 A[1][0] = 0.5;
84 A[2][1] = 0.5;
85 A[2][2] = 0.5;
86 pp = quad[i].position();
87 A.mv(pp,p);
88 p[0] += 0.5;
89 this->push_back(QuadPoint(p, w));
90
91 A = 0.0;
92 A[0][0] = -0.5;
93 A[1][1] = -0.5;
94 A[1][2] = -0.5;
95 A[2][2] = 0.5;
96// pp = quad[i].position();
97 A.mv(pp,p);
98 p[0] += 0.5;
99 p[1] += 0.5;
100 this->push_back(QuadPoint(p, w));
101
102 A = 0.0;
103 A[0][1] = 0.5;
104 A[1][0] = -0.5;
105 A[1][1] = -0.5;
106 A[2][0] = 0.5;
107 A[2][1] = 0.5;
108 A[2][2] = 0.5;
109// pp = quad[i].position();
110 A.mv(pp,p);
111 p[1] += 0.5;
112 this->push_back(QuadPoint(p, w));
113
114 A = 0.0;
115 A[0][1] = 0.5;
116 A[0][2] = 0.5;
117 A[1][1] = -0.5;
118 A[2][0] = 0.5;
119 A[2][1] = 0.5;
120// pp = quad[i].position();
121 A.mv(pp,p);
122 p[1] += 0.5;
123 this->push_back(QuadPoint(p, w));
124 }
125 }
126
127};
128
129#endif
Construct composite quadrature rules from other quadrature rules.
void push_back(const MemberType &item)
size_type dim() const
constexpr void mv(const X &x, Y &y) const
Construct composite quadrature rules for simplex elements.
Definition compositequadraturerule.hh:20
Definition refinedquadraturerule.hh:21
Dune::QuadraturePoint< ct, dim > QuadPoint
Definition refinedquadraturerule.hh:24
Dune::FieldVector< ct, dim > Point
Definition refinedquadraturerule.hh:25
Dune::QuadratureRule< ct, dim > Quad
Definition refinedquadraturerule.hh:23
RefinedSimplexQuadratureRule(const Quad &quad)
Definition refinedquadraturerule.hh:27
Dune::QuadraturePoint< ct, 3 > QuadPoint
Definition refinedquadraturerule.hh:47
RefinedSimplexQuadratureRule(const Quad &quad)
Definition refinedquadraturerule.hh:52
Dune::FieldVector< ct, 3 > Point
Definition refinedquadraturerule.hh:48
Dune::QuadratureRule< ct, 3 > Quad
Definition refinedquadraturerule.hh:46