80 const unsigned int n_sub = polynomial_space.n();
85 std::lock_guard<std::mutex> lock(mutex);
93 polynomial_space.evaluate(unit_point,
98 p_fourth_derivatives);
101 for (
unsigned int i = 0; i < p_values.size(); ++i)
102 for (
unsigned int j = 0;
j < dim; ++
j)
106 for (
unsigned int i = 0; i < p_grads.size(); ++i)
107 for (
unsigned int j = 0;
j < dim; ++
j)
111 for (
unsigned int i = 0; i < p_grad_grads.size(); ++i)
112 for (
unsigned int j = 0;
j < dim; ++
j)
117 unsigned int start = dim *
n_sub;
120 std::vector<std::vector<double>>
monovali(dim, std::vector<double>(4));
121 std::vector<std::vector<double>>
monovalk(dim, std::vector<double>(4));
129 "available for dim == 2, or dim == 3"));
133 for (
unsigned int d = 0; d < dim; ++d)
134 monomials[0].value(unit_point[d],
monovali[d]);
142 if (
grads.size() != 0)
145 grads[start][0][1] = 0.;
150 grads[start + 1][1][0] = 0.;
180 const unsigned int n_curls = monomials.size() - 1;
181 for (
unsigned int i = 0; i <
n_curls; ++i, start += dim)
183 for (
unsigned int d = 0; d < dim; ++d)
186 monomials[i + 1].value(unit_point[d],
monovali[d]);
188 monomials[this->degree() - 1 - i].value(unit_point[d],
206 values[start + 1][0] = 0.;
213 values[start + 2][1] = 0.;
216 if (
grads.size() != 0)
223 grads[start][1][0] = 0.;
226 grads[start][2][0] = 0.;
227 grads[start][2][1] = 0.;
228 grads[start][2][2] = 0.;
231 grads[start + 1][1][2] =
233 grads[start + 1][1][0] =
235 grads[start + 1][2][1] = 0.;
238 grads[start + 1][0][1] = 0.;
239 grads[start + 1][0][2] = 0.;
240 grads[start + 1][0][0] = 0.;
243 grads[start + 2][2][0] =
245 grads[start + 2][2][1] =
247 grads[start + 2][0][2] = 0.;
250 grads[start + 2][1][2] = 0.;
251 grads[start + 2][1][0] = 0.;
252 grads[start + 2][1][1] = 0.;
void evaluate(const Point< dim > &unit_point, std::vector< Tensor< 1, dim > > &values, std::vector< Tensor< 2, dim > > &grads, std::vector< Tensor< 3, dim > > &grad_grads, std::vector< Tensor< 4, dim > > &third_derivatives, std::vector< Tensor< 5, dim > > &fourth_derivatives) const override
std::conditional_t< rank_==1, std::array< Number, dim >, std::array< Tensor< rank_ - 1, dim, Number >, dim > > values