16#ifndef dealii_polynomials_rannacher_turek_h
17#define dealii_polynomials_rannacher_turek_h
118 std::vector<double> &values,
128 name()
const override;
133 virtual std::unique_ptr<ScalarPolynomialsBase<dim>>
134 clone()
const override;
140 namespace PolynomialsRannacherTurekImplementation
142 template <
int order,
int dim>
155 const unsigned int dim = 2;
157 if constexpr (order == 1)
162 derivative[0] = -2.5 + 3 * p[0];
163 derivative[1] = 1.5 - 3 * p[1];
167 derivative[0] = -0.5 + 3.0 * p[0];
168 derivative[1] = 1.5 - 3.0 * p[1];
172 derivative[0] = 1.5 - 3.0 * p[0];
173 derivative[1] = -2.5 + 3.0 * p[1];
177 derivative[0] = 1.5 - 3.0 * p[0];
178 derivative[1] = -0.5 + 3.0 * p[1];
186 else if constexpr (order == 2)
191 derivative[0][0] = 3;
192 derivative[0][1] = 0;
193 derivative[1][0] = 0;
194 derivative[1][1] = -3;
198 derivative[0][0] = 3;
199 derivative[0][1] = 0;
200 derivative[1][0] = 0;
201 derivative[1][1] = -3;
205 derivative[0][0] = -3;
206 derivative[0][1] = 0;
207 derivative[1][0] = 0;
208 derivative[1][1] = 3;
212 derivative[0][0] = -3;
213 derivative[0][1] = 0;
214 derivative[1][0] = 0;
215 derivative[1][1] = 3;
140 namespace PolynomialsRannacherTurekImplementation {
…}
250 const unsigned int i,
253 return compute_derivative<1>(i, p);
261 const unsigned int i,
264 return compute_derivative<2>(i, p);
272 const unsigned int i,
275 return compute_derivative<3>(i, p);
283 const unsigned int i,
286 return compute_derivative<4>(i, p);
295 return "RannacherTurek";
virtual Tensor< 3, dim > compute_3rd_derivative(const unsigned int i, const Point< dim > &p) const override
virtual Tensor< 1, dim > compute_1st_derivative(const unsigned int i, const Point< dim > &p) const override
virtual std::unique_ptr< ScalarPolynomialsBase< dim > > clone() const override
Tensor< order, dim > compute_derivative(const unsigned int i, const Point< dim > &p) const
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
std::string name() const override
Tensor< 2, dim > compute_grad_grad(const unsigned int i, const Point< dim > &p) const override
virtual Tensor< 4, dim > compute_4th_derivative(const unsigned int i, const Point< dim > &p) const override
Tensor< 1, dim > compute_grad(const unsigned int i, const Point< dim > &p) const override
virtual Tensor< 2, dim > compute_2nd_derivative(const unsigned int i, const Point< dim > &p) const override
static constexpr unsigned int dimension
PolynomialsRannacherTurek()
double compute_value(const unsigned int i, const Point< dim > &p) const override
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
#define DEAL_II_NOT_IMPLEMENTED()
static ::ExceptionBase & ExcNotImplemented()
#define Assert(cond, exc)
Tensor< order, dim > compute_derivative(const unsigned int, const Point< dim > &)