PolyFEM
Loading...
Searching...
No Matches
PrismQuadrature.cpp
Go to the documentation of this file.
1#include "PrismQuadrature.hpp"
2#include "TriQuadrature.hpp"
3#include "LineQuadrature.hpp"
4
5#include <vector>
6#include <cassert>
7#include <cmath>
8#include <iostream>
9
10namespace polyfem
11{
12 namespace quadrature
13 {
17
18 void PrismQuadrature::get_quadrature(const int order, const int order_h, Quadrature &quad)
19 {
20 Quadrature tmpt, tmpl;
21
23 tc.get_quadrature(order, tmpt);
24
26 lc.get_quadrature(order, tmpl);
27
28 quad.points.resize(tmpt.weights.size() * tmpl.weights.size(), 3);
29 quad.weights.resize(tmpt.weights.size() * tmpl.weights.size());
30
31 int index = 0;
32
33 for (int i = 0; i < tmpt.weights.size(); ++i)
34 {
35 for (int j = 0; j < tmpl.weights.size(); ++j)
36 {
37 quad.points.row(index) << tmpt.points(i, 0), tmpt.points(i, 1), tmpl.points(j, 0);
38 quad.weights(index) = tmpt.weights(i) * tmpl.weights(j);
39 ++index;
40 }
41 }
42
43 assert(fabs(quad.weights.sum() - 0.5) < 1e-12);
44 assert(quad.points.minCoeff() >= 0 && quad.points.maxCoeff() <= 1);
45
46 assert(quad.points.rows() == quad.weights.size());
47 assert(index == quad.weights.size());
48 }
49 } // namespace quadrature
50} // namespace polyfem
Quadrature quadrature
void get_quadrature(const int order, Quadrature &quad)
void get_quadrature(const int order, const int order_h, Quadrature &quad)
void get_quadrature(const int order, Quadrature &quad)