55 quadrature_option::family_type
f = opt.get_family();
56 if (
f == quadrature_option::superconvergent) {
57 switch (opt.get_order()) {
60 f = quadrature_option::gauss;
63 f = quadrature_option::middle_edge;
66 error_macro (
"unsupported superconvergent("<<opt.get_order()<<
")");
73 if (
f == quadrature_option::middle_edge) {
74 switch (opt.get_order()) {
79 wx(
x(
T(0.5),
T(0.0)),
T(1)/6);
80 wx(
x(
T(0.0),
T(0.5)),
T(1)/6);
81 wx(
x(
T(0.5),
T(0.5)),
T(1)/6);
84 error_macro (
"unsupported Middle-Edge("<<opt.get_order()<<
")");
92 if (
f == quadrature_option::gauss_lobatto) {
93 switch (opt.get_order()) {
97 wx(
x(
T(0),
T(0)),
T(1)/6);
98 wx(
x(
T(1),
T(0)),
T(1)/6);
99 wx(
x(
T(0),
T(1)),
T(1)/6);
103 wx(
x(
T(0),
T(0)), 3/
T(120));
104 wx(
x(
T(1),
T(0)), 3/
T(120));
105 wx(
x(
T(0),
T(1)), 3/
T(120));
106 wx(
x(
T(0.5),
T(0.0)), 8/
T(120));
107 wx(
x(
T(0.0),
T(0.5)), 8/
T(120));
108 wx(
x(
T(0.5),
T(0.5)), 8/
T(120));
109 wx(
x(1/
T(3), 1/
T(3)), 27/
T(120));
112 error_macro (
"unsupported Gauss-Lobatto("<<opt.get_order()<<
")");
119 if (
f == quadrature_option::equispaced) {
122 wx (
x(1/
T(3),1/
T(3)), 0.5);
128 wx (
x(
T(
int(i))/r,
T(
int(j))/r), w);
138 "unsupported quadrature family \"" << opt.get_family_name() <<
"\"");
140 switch (opt.get_order()) {
147 wx(
x(1/
T(3), 1/
T(3)), 0.5);
153 wx(
x(1/
T(6), 1/
T(6)), 1/
T(6));
154 wx(
x(4/
T(6), 1/
T(6)), 1/
T(6));
155 wx(
x(1/
T(6), 4/
T(6)), 1/
T(6));
157#if !(defined(_RHEOLEF_HAVE_CLN) || defined(_RHEOLEF_HAVE_LONG_DOUBLE) || defined(_RHEOLEF_HAVE_FLOAT128))
165 T a = 0.445948490915965;
166 T b = 0.091576213509771;
167 T wa = 0.111690794839005;
168 T wb = 0.054975871827661;
183 T a = 0.063089014491502;
184 T b = 0.249286745170910;
185 T c = 0.310352451033785;
186 T d = 0.053145049844816;
187 T wa = 0.025422453185103;
188 T wb = 0.058393137863189;
189 T wc = 0.041425537809187;
198 wx(
x(1-(c+
d), c), wc);
199 wx(
x(1-(c+
d),
d), wc);
200 wx(
x(c, 1-(c+
d)), wc);
201 wx(
x(
d, 1-(c+
d)), wc);
211 vector<T> zeta0(n0), omega0(n0);
212 vector<T> zeta1(n1), omega1(n1);
219 T eta_0 = (1+zeta0[i])*(1-zeta1[j])/4;
220 T eta_1 = (1+zeta1[j])/2;
221 T J = (1-zeta1[j])/8;
222 wx (
x(eta_0,eta_1), J*omega0[i]*omega1[j]);
check_macro(expr1.have_homogeneous_space(Xh1), "dual(expr1,expr2); expr1 should have homogeneous space. HINT: use dual(interpolate(Xh, expr1),expr2)")
void gauss_jacobi(Size R, typename std::iterator_traits< OutputIterator1 >::value_type alpha, typename std::iterator_traits< OutputIterator1 >::value_type beta, OutputIterator1 zeta, OutputIterator2 omega)