17 #include <deal.II/base/exceptions.h> 18 #include <deal.II/base/table.h> 19 #include <deal.II/base/tensor_product_polynomials_const.h> 21 DEAL_II_NAMESPACE_OPEN
33 const unsigned int max_indices = this->n_tensor_pols;
61 const unsigned int max_indices = this->n_tensor_pols;
77 const unsigned int max_indices = this->n_tensor_pols;
92 std::vector<double> & values,
98 Assert(values.size() == this->n_tensor_pols + 1 || values.size() == 0,
100 Assert(grads.size() == this->n_tensor_pols + 1 || grads.size() == 0,
102 Assert(grad_grads.size() == this->n_tensor_pols + 1 || grad_grads.size() == 0,
104 Assert(third_derivatives.size() == this->n_tensor_pols + 1 ||
105 third_derivatives.size() == 0,
107 this->n_tensor_pols + 1,
109 Assert(fourth_derivatives.size() == this->n_tensor_pols + 1 ||
110 fourth_derivatives.size() == 0,
112 this->n_tensor_pols + 1,
117 bool do_values =
false, do_grads =
false, do_grad_grads =
false;
118 bool do_3rd_derivatives =
false, do_4th_derivatives =
false;
119 if (values.empty() ==
false)
124 if (grads.empty() ==
false)
129 if (grad_grads.empty() ==
false)
131 grad_grads.pop_back();
132 do_grad_grads =
true;
134 if (third_derivatives.empty() ==
false)
136 third_derivatives.resize(this->n_tensor_pols);
137 do_3rd_derivatives =
true;
139 if (fourth_derivatives.empty() ==
false)
141 fourth_derivatives.resize(this->n_tensor_pols);
142 do_4th_derivatives =
true;
146 p, values, grads, grad_grads, third_derivatives, fourth_derivatives);
151 values.push_back(1.);
153 grads.emplace_back();
155 grad_grads.emplace_back();
156 if (do_3rd_derivatives)
157 third_derivatives.emplace_back();
158 if (do_4th_derivatives)
159 fourth_derivatives.emplace_back();
168 DEAL_II_NAMESPACE_CLOSE
Tensor< 1, dim > compute_grad(const unsigned int i, const Point< dim > &p) const
double compute_value(const unsigned int i, const Point< dim > &p) const
static::ExceptionBase & ExcDimensionMismatch2(int arg1, int arg2, int arg3)
Tensor< 1, dim > compute_grad(const unsigned int i, const Point< dim > &p) const
double compute_value(const unsigned int i, const Point< dim > &p) const
void compute(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
void compute(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
#define Assert(cond, exc)
static::ExceptionBase & ExcNotImplemented()
Tensor< 2, dim > compute_grad_grad(const unsigned int i, const Point< dim > &p) const
Tensor< 2, dim > compute_grad_grad(const unsigned int i, const Point< dim > &p) const
static::ExceptionBase & ExcInternalError()