9#include <kernel/cubature/symmetric_simplex_driver.hpp>
10#include <kernel/util/meta_math.hpp>
30 template<
typename Shape_>
40 static constexpr bool variadic =
true;
41 static constexpr int min_points = 2;
42 static constexpr int max_points = 8;
47 return "silvester-open";
50 static int count(
int points)
52 return ((points+1)*(points+2)) / 2;
72 off += fill_sym2(rule, off, Weight_( 7) / Weight_(24), Coord_(3) / Coord_(5), Coord_(1) / Coord_(5));
74 off += fill_sym2(rule, off, Weight_(-3) / Weight_(24), Coord_(1) / Coord_(5), Coord_(2) / Coord_(5));
79 off += fill_sym1(rule, off, Weight_(-12) / Weight_(60), Coord_(2) / Coord_(6));
81 off += fill_sym2(rule, off, Weight_( 8) / Weight_(60), Coord_(4) / Coord_(6), Coord_(1) / Coord_(6));
83 off += fill_sym3(rule, off, Weight_( 3) / Weight_(60), Coord_(3) / Coord_(6), Coord_(2) / Coord_(6), Coord_(1) / Coord_(6));
88 off += fill_sym2(rule, off, Weight_( 307) / Weight_(1440), Coord_(5) / Coord_(7), Coord_(1) / Coord_(7));
90 off += fill_sym2(rule, off, Weight_( -64) / Weight_(1440), Coord_(3) / Coord_(7), Coord_(2) / Coord_(7));
92 off += fill_sym2(rule, off, Weight_( 629) / Weight_(1440), Coord_(1) / Coord_(7), Coord_(3) / Coord_(7));
94 off += fill_sym3(rule, off, Weight_(-316) / Weight_(1440), Coord_(1) / Coord_(7), Coord_(2) / Coord_(7), Coord_(4) / Coord_(7));
99 off += fill_sym2(rule, off, Weight_( 71) / Weight_(730), Coord_(6) / Coord_(8), Coord_(1) / Coord_(8));
101 off += fill_sym2(rule, off, Weight_(-167) / Weight_(730), Coord_(4) / Coord_(8), Coord_(2) / Coord_(8));
103 off += fill_sym2(rule, off, Weight_( 113) / Weight_(730), Coord_(2) / Coord_(8), Coord_(3) / Coord_(8));
105 off += fill_sym3(rule, off, Weight_( -13) / Weight_(730), Coord_(5) / Coord_(8), Coord_(2) / Coord_(8), Coord_(1) / Coord_(8));
107 off += fill_sym3(rule, off, Weight_( 57) / Weight_(730), Coord_(4) / Coord_(8), Coord_(3) / Coord_(8), Coord_(1) / Coord_(8));
112 off += fill_sym1(rule, off, Weight_( 3509) / Weight_(4480), Coord_(3) / Coord_(9));
114 off += fill_sym2(rule, off, Weight_( 767) / Weight_(4480), Coord_(7) / Coord_(9), Coord_(1) / Coord_(9));
116 off += fill_sym2(rule, off, Weight_( 387) / Weight_(4480), Coord_(4) / Coord_(9), Coord_(2) / Coord_(9));
118 off += fill_sym2(rule, off, Weight_(-3035) / Weight_(4480), Coord_(1) / Coord_(9), Coord_(4) / Coord_(9));
120 off += fill_sym3(rule, off, Weight_(-1257) / Weight_(4480), Coord_(6) / Coord_(9), Coord_(2) / Coord_(9), Coord_(1) / Coord_(9));
122 off += fill_sym3(rule, off, Weight_( 2901) / Weight_(4480), Coord_(5) / Coord_(9), Coord_(3) / Coord_(9), Coord_(1) / Coord_(9));
124 off += fill_sym3(rule, off, Weight_( -915) / Weight_(4480), Coord_(4) / Coord_(9), Coord_(3) / Coord_(9), Coord_(2) / Coord_(9));
129 off += fill_sym2(rule, off, Weight_( 898) / Weight_(9072), Coord_(8) / Coord_(10), Coord_(1) / Coord_(10));
131 off += fill_sym2(rule, off, Weight_(-2522) / Weight_(9072), Coord_(6) / Coord_(10), Coord_(2) / Coord_(10));
133 off += fill_sym2(rule, off, Weight_(-5726) / Weight_(9072), Coord_(2) / Coord_(10), Coord_(4) / Coord_(10));
135 off += fill_sym2(rule, off, Weight_( 1444) / Weight_(9072), Coord_(4) / Coord_(10), Coord_(3) / Coord_(10));
137 off += fill_sym3(rule, off, Weight_( -662) / Weight_(9072), Coord_(7) / Coord_(10), Coord_(2) / Coord_(10), Coord_(1) / Coord_(10));
139 off += fill_sym3(rule, off, Weight_( 1573) / Weight_(9072), Coord_(6) / Coord_(10), Coord_(3) / Coord_(10), Coord_(1) / Coord_(10));
141 off += fill_sym3(rule, off, Weight_( -191) / Weight_(9072), Coord_(5) / Coord_(10), Coord_(4) / Coord_(10), Coord_(1) / Coord_(10));
143 off += fill_sym3(rule, off, Weight_( 2989) / Weight_(9072), Coord_(5) / Coord_(10), Coord_(3) / Coord_(10), Coord_(2) / Coord_(10));
148 off += fill_sym2(rule, off, Weight_( 1051445) / Weight_(7257600), Coord_(9) / Coord_(11), Coord_(1) / Coord_(11));
150 off += fill_sym2(rule, off, Weight_( 1818134) / Weight_(7257600), Coord_(7) / Coord_(11), Coord_(2) / Coord_(11));
152 off += fill_sym2(rule, off, Weight_(10685542) / Weight_(7257600), Coord_(5) / Coord_(11), Coord_(3) / Coord_(11));
154 off += fill_sym2(rule, off, Weight_(-6437608) / Weight_(7257600), Coord_(3) / Coord_(11), Coord_(4) / Coord_(11));
156 off += fill_sym2(rule, off, Weight_(12368047) / Weight_(7257600), Coord_(1) / Coord_(11), Coord_(5) / Coord_(11));
158 off += fill_sym3(rule, off, Weight_(-2366706) / Weight_(7257600), Coord_(8) / Coord_(11), Coord_(2) / Coord_(11), Coord_(1) / Coord_(11));
160 off += fill_sym3(rule, off, Weight_( 6493915) / Weight_(7257600), Coord_(7) / Coord_(11), Coord_(3) / Coord_(11), Coord_(1) / Coord_(11));
162 off += fill_sym3(rule, off, Weight_(-9986439) / Weight_(7257600), Coord_(6) / Coord_(11), Coord_(4) / Coord_(11), Coord_(1) / Coord_(11));
168 off += fill_sym3(rule, off, Weight_(-3757007) / Weight_(7257600), Coord_(6) / Coord_(11), Coord_(3) / Coord_(11), Coord_(2) / Coord_(11));
170 off += fill_sym3(rule, off, Weight_( 478257) / Weight_(7257600), Coord_(5) / Coord_(11), Coord_(4) / Coord_(11), Coord_(2) / Coord_(11));
Cubature Rule class template.
static void fill(Rule< Shape::Simplex< 2 >, Weight_, Coord_, Point_ > &rule, int num_points)
Fills the cubature rule structure.
static String name()
Returns the name of the cubature rule.
Silvester "open" driver class template.
Symmetric Simplex Driver helper class.
String class implementation.
Simplex shape tag struct template.