26 compute_n_polynomials_wedge(
const unsigned int dim,
const unsigned int degree)
46 const unsigned int degree)
61 {{{0, 0}}, {{1, 0}}, {{2, 0}}, {{0, 1}}, {{1, 1}}, {{2, 1}}}};
95 const auto pair = this->degree() == 1 ? wedge_table_1[i] : wedge_table_2[i];
98 const auto v_tri = poly_tri.compute_value(pair[0], p_tri);
101 const auto v_line = poly_line.compute_value(pair[1], p_line);
103 return v_tri * v_line;
113 const auto pair = this->degree() == 1 ? wedge_table_1[i] : wedge_table_2[i];
116 const auto v_tri = poly_tri.compute_value(pair[0], p_tri);
117 const auto g_tri = poly_tri.compute_grad(pair[0], p_tri);
120 const auto v_line = poly_line.compute_value(pair[1], p_line);
121 const auto g_line = poly_line.compute_grad(pair[1], p_line);
124 grad[0] = g_tri[0] * v_line;
125 grad[1] = g_tri[1] * v_line;
126 grad[2] = v_tri * g_line[0];
151 std::vector<double> &
values,
159 (void)third_derivatives;
160 (void)fourth_derivatives;
162 if (
values.size() == this->n())
163 for (
unsigned int i = 0; i < this->n(); i++)
164 values[i] = compute_value(i, unit_point);
166 if (grads.size() == this->n())
167 for (
unsigned int i = 0; i < this->n(); i++)
168 grads[i] = compute_grad(i, unit_point);
176 const unsigned int i,
179 return compute_grad(i, p);
187 const unsigned int i,
203 const unsigned int i,
219 const unsigned int i,
236 return "ScalarLagrangePolynomialWedge";
242std::unique_ptr<ScalarPolynomialsBase<dim>>
245 return std::make_unique<ScalarLagrangePolynomialWedge<dim>>(*this);
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
Tensor< 1, dim > compute_grad(const unsigned int i, const Point< dim > &p) const override
Tensor< 1, dim > compute_1st_derivative(const unsigned int i, const Point< dim > &p) const override
Tensor< 4, dim > compute_4th_derivative(const unsigned int i, const Point< dim > &p) const override
std::string name() const override
Tensor< 3, dim > compute_3rd_derivative(const unsigned int i, const Point< dim > &p) const override
Tensor< 2, dim > compute_2nd_derivative(const unsigned int i, const Point< dim > &p) const override
ScalarLagrangePolynomialWedge(const unsigned int degree)
virtual std::unique_ptr< ScalarPolynomialsBase< dim > > clone() const override
double compute_value(const unsigned int i, const Point< dim > &p) const override
Tensor< 2, dim > compute_grad_grad(const unsigned int i, const Point< dim > &p) const override
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
static ::ExceptionBase & ExcNotImplemented()
#define Assert(cond, exc)
typename internal::ndarray::HelperArray< T, Ns... >::type ndarray