9#include <kernel/cubature/driver_base.hpp>
10#include <kernel/util/meta_math.hpp>
19 template<
typename Shape_>
20 class TrapezoidalDriverBase :
21 public DriverBase<Shape_>
25 static constexpr bool variadic =
false;
47 template<
typename Shape_>
53 public Intern::TrapezoidalDriverBase<Shape::Simplex<dim_> >
56 static constexpr int num_points = dim_ + 1;
70 for(
int i(0); i <= (dim_); ++i)
76 for(
int j(0); j < (dim_); ++j)
78 rule.get_coord(i,j) = (j+1) == i ? Coord_(1) : Coord_(0);
87 public Intern::TrapezoidalDriverBase<Shape::Hypercube<dim_> >
90 static constexpr int num_points = (1 << dim_);
104 for(
int i(0); i < (1 << dim_); ++i)
107 rule.get_weight(i) = Weight_(1);
110 for(
int j(0); j < (dim_); ++j)
112 rule.get_coord(i,j) = Coord_(((i >> j) & 1) << 1) - Coord_(1);
Cubature Rule class template.
static void fill(Rule< Shape::Hypercube< dim_ >, Weight_, Coord_, Point_ > &rule)
Fills the cubature rule structure.
static void fill(Rule< Shape::Simplex< dim_ >, Weight_, Coord_, Point_ > &rule)
Fills the cubature rule structure.
Trapezoidal driver class template.
Hypercube shape tag struct template.
Simplex shape tag struct template.