32 template <
unsigned int dim>
39 std::shared_ptr<BulkIntegral> bulk_integral = std::make_shared<BulkIntegral>(shared_from_this(), dim, i_subset);
45 std::shared_ptr<BulkIntegral> EvalPoints::add_bulk<0>(
const Quadrature &quad)
49 std::shared_ptr<BulkIntegral> bulk_integral = std::make_shared<BulkIntegral>(shared_from_this(), 0, i_subset);
54 template <
unsigned int dim>
59 for (
unsigned int i=0; i<dim+1; ++i) {
64 std::shared_ptr<EdgeIntegral> edge_integral = std::make_shared<EdgeIntegral>(shared_from_this(), dim, i_subset);
70 template <
unsigned int dim>
74 std::shared_ptr<BulkIntegral> bulk_integral = this->
add_bulk<dim-1>(quad);
75 DebugOut() <<
"coupling bulk subset" << bulk_integral->get_subset_idx();
76 std::shared_ptr<EdgeIntegral> edge_integral = this->add_edge<dim>(quad);
77 DebugOut() <<
"coupling edge subset" << edge_integral->get_subset_idx();
78 return std::make_shared<CouplingIntegral>(edge_integral, bulk_integral);
81 template <
unsigned int dim>
85 std::shared_ptr<BulkIntegral> bulk_integral = this->
add_bulk<dim-1>(quad);
86 DebugOut() <<
"boundary bulk subset: " << bulk_integral->get_subset_idx()
87 <<
"begin: " <<
subset_begin(dim-1, bulk_integral->get_subset_idx());
88 std::shared_ptr<EdgeIntegral> edge_integral = this->add_edge<dim>(quad);
89 DebugOut() <<
"boundary edge subset" << edge_integral->get_subset_idx();
90 return std::make_shared<BoundaryIntegral>(edge_integral, bulk_integral);
94 : local_points_(dim), n_subsets_(0), dim_(dim)
100 template <
unsigned int dim>
102 ASSERT_GT(dim, 0).error(
"Dimension 0 not supported!\n");
103 unsigned int local_points_old_size = local_points_.size();
104 local_points_.resize(quad_points.
size() + local_points_old_size);
105 for (
unsigned int i=0; i<quad_points.
size(); ++i) {
108 local_points_.set(i+local_points_old_size) = quad_points.
vec<dim>(i);
117 subset_starts_[n_subsets_] = this->
size();
118 return n_subsets_ - 1;
122 template std::shared_ptr<BulkIntegral> EvalPoints::add_bulk<0>(
const Quadrature &);
123 template std::shared_ptr<BulkIntegral> EvalPoints::add_bulk<1>(
const Quadrature &);
124 template std::shared_ptr<BulkIntegral> EvalPoints::add_bulk<2>(
const Quadrature &);
125 template std::shared_ptr<BulkIntegral> EvalPoints::add_bulk<3>(
const Quadrature &);
126 template std::shared_ptr<EdgeIntegral> EvalPoints::add_edge<1>(
const Quadrature &);
127 template std::shared_ptr<EdgeIntegral> EvalPoints::add_edge<2>(
const Quadrature &);
128 template std::shared_ptr<EdgeIntegral> EvalPoints::add_edge<3>(
const Quadrature &);
129 template std::shared_ptr<CouplingIntegral> EvalPoints::add_coupling<2>(
const Quadrature &);
130 template std::shared_ptr<CouplingIntegral> EvalPoints::add_coupling<3>(
const Quadrature &);
131 template std::shared_ptr<BoundaryIntegral> EvalPoints::add_boundary<1>(
const Quadrature &);
132 template std::shared_ptr<BoundaryIntegral> EvalPoints::add_boundary<2>(
const Quadrature &);
133 template std::shared_ptr<BoundaryIntegral> EvalPoints::add_boundary<3>(
const Quadrature &);