39 return (0.75 - 2.5 * p[0] + 1.5 * p[1] +
40 1.5 * (p[0] * p[0] - p[1] * p[1]));
44 return (-0.25 - 0.5 * p[0] + 1.5 * p[1] +
45 1.5 * (p[0] * p[0] - p[1] * p[1]));
49 return (0.75 + 1.5 * p[0] - 2.5 * p[1] -
50 1.5 * (p[0] * p[0] - p[1] * p[1]));
54 return (-0.25 + 1.5 * p[0] - 0.5 * p[1] -
55 1.5 * (p[0] * p[0] - p[1] * p[1]));
69 if constexpr (dim == 2)
74 grad[0] = -2.5 + 3 * p[0];
75 grad[1] = 1.5 - 3 * p[1];
79 grad[0] = -0.5 + 3.0 * p[0];
80 grad[1] = 1.5 - 3.0 * p[1];
84 grad[0] = 1.5 - 3.0 * p[0];
85 grad[1] = -2.5 + 3.0 * p[1];
89 grad[0] = 1.5 - 3.0 * p[0];
90 grad[1] = -0.5 + 3.0 * p[1];
162 std::vector<double> &values,
168 const unsigned int n_pols = this->n();
169 Assert(values.size() == n_pols || values.empty(),
171 Assert(grads.size() == n_pols || grads.empty(),
173 Assert(grad_grads.size() == n_pols || grad_grads.empty(),
175 Assert(third_derivatives.size() == n_pols || third_derivatives.empty(),
177 Assert(fourth_derivatives.size() == n_pols || fourth_derivatives.empty(),
180 for (
unsigned int i = 0; i < n_pols; ++i)
182 if (values.size() != 0)
184 values[i] = compute_value(i, unit_point);
186 if (grads.size() != 0)
188 grads[i] = compute_grad(i, unit_point);
190 if (grad_grads.size() != 0)
192 grad_grads[i] = compute_grad_grad(i, unit_point);
194 if (third_derivatives.size() != 0)
196 third_derivatives[i] = compute_derivative<3>(i, unit_point);
198 if (fourth_derivatives.size() != 0)
200 fourth_derivatives[i] = compute_derivative<4>(i, unit_point);
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