39 const unsigned int n_pts)
50 unsigned int offset=0;
53 for (
unsigned int p=0; p<n_pts; ++p)
57 libmesh_assert_not_equal_to (rule_data[p][0], static_cast<Real>(0.0));
60 libmesh_assert_not_equal_to (rule_data[p][3], static_cast<Real>(0.0));
66 unsigned int pointtype=1;
68 if (rule_data[p][1] != static_cast<Real>(0.0))
70 if (rule_data[p][2] != static_cast<Real>(0.0))
78 if (rule_data[p][2] != static_cast<Real>(0.0))
88 libmesh_assert_less (offset + 0,
_points.size());
90 const Real a = rule_data[p][0];
96 _weights[offset + 0] = rule_data[p][3];
105 libmesh_assert_less (offset + 3,
_points.size());
107 const Real a = rule_data[p][0];
108 const Real b = rule_data[p][1];
109 const Real wt = rule_data[p][3];
118 for (
unsigned int j=0; j<pointtype; ++j)
128 libmesh_assert_less (offset + 5,
_points.size());
130 const Real a = rule_data[p][0];
131 const Real b = rule_data[p][2];
132 const Real wt = rule_data[p][3];
142 for (
unsigned int j=0; j<pointtype; ++j)
153 libmesh_assert_less (offset + 11,
_points.size());
155 const Real a = rule_data[p][0];
156 const Real b = rule_data[p][1];
157 const Real c = rule_data[p][2];
158 const Real wt = rule_data[p][3];
168 for (
unsigned int j=0; j<pointtype; ++j)
176 libmesh_error_msg(
"Don't know what to do with this many permutation points!");
193 const unsigned int * permutation_ids,
199 unsigned int total_pts = 0;
200 for (
unsigned int p=0; p<n_wts; ++p)
201 total_pts += permutation_ids[p];
208 unsigned int offset=0;
210 for (
unsigned int p=0; p<n_wts; ++p)
212 switch (permutation_ids[p])
233 for (
unsigned int j=0; j<3; ++j)
250 for (
unsigned int j=0; j<6; ++j)
258 libmesh_error_msg(
"Unknown permutation id: " << permutation_ids[p] <<
"!");
266 const unsigned int n_pts)
275 unsigned int offset=0;
278 for (
unsigned int p=0; p<n_pts; ++p)
282 libmesh_assert_not_equal_to ( rule_data[p][0], static_cast<Real>(0.0) );
285 libmesh_assert_not_equal_to ( rule_data[p][3], static_cast<Real>(0.0) );
291 unsigned int pointtype=1;
293 if (rule_data[p][1] != static_cast<Real>(0.0))
295 if (rule_data[p][2] != static_cast<Real>(0.0))
306 libmesh_assert_less (offset + 0,
_points.size());
309 _points[offset + 0] =
Point(rule_data[p][0], rule_data[p][0]);
312 _weights[offset + 0] = rule_data[p][3];
321 libmesh_assert_less (offset + 2,
_points.size());
325 _points[offset + 0] =
Point(rule_data[p][0], rule_data[p][1]);
326 _points[offset + 1] =
Point(rule_data[p][1], rule_data[p][0]);
327 _points[offset + 2] =
Point(rule_data[p][1], rule_data[p][1]);
329 for (
unsigned int j=0; j<3; ++j)
330 _weights[offset + j] = rule_data[p][3];
339 libmesh_assert_less (offset + 5,
_points.size());
342 _points[offset + 0] =
Point(rule_data[p][0], rule_data[p][1]);
343 _points[offset + 1] =
Point(rule_data[p][0], rule_data[p][2]);
344 _points[offset + 2] =
Point(rule_data[p][1], rule_data[p][0]);
345 _points[offset + 3] =
Point(rule_data[p][1], rule_data[p][2]);
346 _points[offset + 4] =
Point(rule_data[p][2], rule_data[p][0]);
347 _points[offset + 5] =
Point(rule_data[p][2], rule_data[p][1]);
349 for (
unsigned int j=0; j<6; ++j)
350 _weights[offset + j] = rule_data[p][3];
357 libmesh_error_msg(
"Don't know what to do with this many permutation points!");
virtual QuadratureType type() const override
std::vector< Point > _points
std::vector< Real > _weights
void dunavant_rule2(const Real *wts, const Real *a, const Real *b, const unsigned int *permutation_ids, const unsigned int n_wts)
void dunavant_rule(const Real rule_data[][4], const unsigned int n_pts)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void keast_rule(const Real rule_data[][4], const unsigned int n_pts)
A geometric point in (x,y,z) space.