58 const std::vector<unsigned int> &renumber)
60 Assert(renumber.size() == index_map.size(),
64 for (
unsigned int i = 0; i < index_map.size(); ++i)
65 index_map_inverse[index_map[i]] = i;
67 std::vector<unsigned int> renumber_base;
68 renumber_base.reserve(tensor_polys.n());
69 for (
unsigned int i = 0; i < tensor_polys.n(); ++i)
70 renumber_base.push_back(renumber[i]);
72 tensor_polys.set_numbering(renumber_base);
140 std::vector<double> &values,
146 Assert(values.size() == tensor_polys.n() + 1 || values.empty(),
148 Assert(grads.size() == tensor_polys.n() + 1 || grads.empty(),
150 Assert(grad_grads.size() == tensor_polys.n() + 1 || grad_grads.empty(),
152 Assert(third_derivatives.size() == tensor_polys.n() + 1 ||
153 third_derivatives.empty(),
155 tensor_polys.n() + 1,
157 Assert(fourth_derivatives.size() == tensor_polys.n() + 1 ||
158 fourth_derivatives.empty(),
160 tensor_polys.n() + 1,
165 bool do_values =
false, do_grads =
false, do_grad_grads =
false;
166 bool do_3rd_derivatives =
false, do_4th_derivatives =
false;
167 if (values.empty() ==
false)
172 if (grads.empty() ==
false)
177 if (grad_grads.empty() ==
false)
179 grad_grads.pop_back();
180 do_grad_grads =
true;
182 if (third_derivatives.empty() ==
false)
184 third_derivatives.resize(tensor_polys.n());
185 do_3rd_derivatives =
true;
187 if (fourth_derivatives.empty() ==
false)
189 fourth_derivatives.resize(tensor_polys.n());
190 do_4th_derivatives =
true;
193 tensor_polys.evaluate(
194 p, values, grads, grad_grads, third_derivatives, fourth_derivatives);
199 values.push_back(1.);
201 grads.emplace_back();
203 grad_grads.emplace_back();
204 if (do_3rd_derivatives)
205 third_derivatives.emplace_back();
206 if (do_4th_derivatives)
207 fourth_derivatives.emplace_back();
void evaluate(const Point< dim > &unit_point, std::vector< double > &values, std::vector< Tensor< 1, dim > > &grads, std::vector< Tensor< 2, dim > > &grad_grads, std::vector< Tensor< 3, dim > > &third_derivatives, std::vector< Tensor< 4, dim > > &fourth_derivatives) const override