32 std::vector<std::vector<Polynomials::Polynomial<double>>>
35 std::vector<std::vector<Polynomials::Polynomial<double>>>
pols(dim);
39 for (
unsigned int d = 1;
d < dim; ++
d)
42 for (
unsigned int d = 1;
d < dim; ++
d)
72 Assert(values.size() ==
this->n() || values.size() == 0,
84 const unsigned int n_sub = polynomial_space.n();
90 std::lock_guard<std::mutex> lock(mutex);
92 p_values.resize((values.size() == 0) ? 0 :
n_sub);
98 for (
unsigned int d = 0; d < dim; ++d)
112 for (
unsigned int c = 0; c < dim; ++c)
113 p(c) = unit_point((c + d) % dim);
115 polynomial_space.evaluate(p,
120 p_fourth_derivatives);
122 for (
unsigned int i = 0; i < p_values.size(); ++i)
123 values[i + d *
n_sub][d] = p_values[i];
125 for (
unsigned int i = 0; i < p_grads.size(); ++i)
126 for (
unsigned int d1 = 0;
d1 < dim; ++
d1)
129 for (
unsigned int i = 0; i < p_grad_grads.size(); ++i)
130 for (
unsigned int d1 = 0;
d1 < dim; ++
d1)
131 for (
unsigned int d2 = 0;
d2 < dim; ++
d2)
133 p_grad_grads[i][
d1][
d2];
135 for (
unsigned int i = 0; i < p_third_derivatives.size(); ++i)
136 for (
unsigned int d1 = 0;
d1 < dim; ++
d1)
137 for (
unsigned int d2 = 0;
d2 < dim; ++
d2)
138 for (
unsigned int d3 = 0;
d3 < dim; ++
d3)
140 [(
d2 + d) % dim][(
d3 + d) % dim] =
141 p_third_derivatives[i][
d1][
d2][
d3];
143 for (
unsigned int i = 0; i < p_fourth_derivatives.size(); ++i)
144 for (
unsigned int d1 = 0;
d1 < dim; ++
d1)
145 for (
unsigned int d2 = 0;
d2 < dim; ++
d2)
146 for (
unsigned int d3 = 0;
d3 < dim; ++
d3)
147 for (
unsigned int d4 = 0;
d4 < dim; ++
d4)
149 [(
d2 + d) % dim][(
d3 + d) % dim]
151 p_fourth_derivatives[i][
d1][
d2][
d3][
d4];
169 return 2 * (
k + 3) * (
k + 1);
174 return 3 * (
k + 3) * (
k + 1) * (
k + 1);
185std::unique_ptr<TensorPolynomialsBase<dim>>
188 return std::make_unique<PolynomialsABF<dim>>(*this);
const AnisotropicPolynomials< dim > polynomial_space
PolynomialsABF(const unsigned int k)
static unsigned int n_polynomials(const unsigned int degree)
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
virtual std::unique_ptr< TensorPolynomialsBase< dim > > clone() const override
static std::vector< Polynomial< double > > generate_complete_basis(const unsigned int degree)
static std::vector< Polynomial< double > > generate_complete_basis(const unsigned int degree)
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
static ::ExceptionBase & ExcNotImplemented()
#define Assert(cond, exc)
static ::ExceptionBase & ExcInternalError()
static ::ExceptionBase & ExcDimensionMismatch(std::size_t arg1, std::size_t arg2)
SymmetricTensor< 2, dim, Number > d(const Tensor< 2, dim, Number > &F, const Tensor< 2, dim, Number > &dF_dt)