32 using VectorType = dealii::LinearAlgebra::distributed::Vector<number>;
33 using value_type = number;
34 using size_type = dealii::VectorizedArray<number>;
40 const std::map<unsigned int, variableAttributes> &_subset_attributes,
41 const std::unordered_map<std::pair<unsigned int, dependencyType>,
43 pairHash> &_global_to_local_solution,
44 const solveType &_solve_type);
51 dependencyType dependency_type = dependencyType::NORMAL)
const;
56 dealii::Tensor<1, dim, size_type>
58 dependencyType dependency_type = dependencyType::NORMAL)
const;
63 dealii::Tensor<2, dim, size_type>
65 dependencyType dependency_type = dependencyType::NORMAL)
const;
70 dealii::Tensor<1, dim, size_type>
72 unsigned int global_variable_index,
73 dependencyType dependency_type = dependencyType::NORMAL)
const;
80 dependencyType dependency_type = dependencyType::NORMAL)
const;
85 dealii::Tensor<1, dim, size_type>
87 dependencyType dependency_type = dependencyType::NORMAL)
const;
92 dealii::Tensor<2, dim, size_type>
94 dependencyType dependency_type = dependencyType::NORMAL)
const;
99 dealii::Tensor<3, dim, size_type>
101 dependencyType dependency_type = dependencyType::NORMAL)
const;
106 dealii::Tensor<2, dim, size_type>
108 unsigned int global_variable_index,
109 dependencyType dependency_type = dependencyType::NORMAL)
const;
114 dealii::Tensor<1, dim, size_type>
116 dependencyType dependency_type = dependencyType::NORMAL)
const;
123 dependencyType dependency_type = dependencyType::NORMAL)
const;
128 dealii::Tensor<2, dim, size_type>
130 unsigned int global_variable_index,
131 dependencyType dependency_type = dependencyType::NORMAL)
const;
138 dealii::Tensor<1, (dim == 2 ? 1 : dim), size_type>
140 dependencyType dependency_type = dependencyType::NORMAL)
const;
147 const size_type &val,
148 const dependencyType &dependency_type = dependencyType::NORMAL);
155 const unsigned int &global_variable_index,
156 const dealii::Tensor<1, dim, size_type> &grad,
157 const dependencyType &dependency_type = dependencyType::NORMAL);
164 const dealii::Tensor<1, dim, size_type> &val,
165 const dependencyType &dependency_type = dependencyType::NORMAL);
172 const unsigned int &global_variable_index,
173 const dealii::Tensor<2, dim, size_type> &grad,
174 const dependencyType &dependency_type = dependencyType::NORMAL);
182 const std::function<
void(
variableContainer &,
const dealii::Point<dim, size_type> &)>
184 std::vector<VectorType *> &dst,
185 const std::vector<VectorType *> &src,
186 const std::pair<unsigned int, unsigned int> &cell_range);
194 const std::function<
void(
variableContainer &,
const dealii::Point<dim, size_type> &)>
197 const std::vector<VectorType *> &src,
198 const std::pair<unsigned int, unsigned int> &cell_range);
206 const std::function<
void(
variableContainer &,
const dealii::Point<dim, size_type> &)>
209 const VectorType &src,
210 const std::vector<VectorType *> &src_subset,
211 const std::pair<unsigned int, unsigned int> &cell_range);
218 const std::function<
void(
variableContainer &,
const dealii::Point<dim, size_type> &)>
221 const std::vector<VectorType *> &src_subset,
222 const std::pair<unsigned int, unsigned int> &cell_range);
225 using scalar_FEEval = dealii::FEEvaluation<dim, degree, degree + 1, 1, number>;
226 using vector_FEEval = dealii::FEEvaluation<dim, degree, degree + 1, dim, number>;
232 scalar_FEEval_exists(
const unsigned int &dependency_index,
233 const dependencyType &dependency_type)
const;
239 vector_FEEval_exists(
const unsigned int &dependency_index,
240 const dependencyType &dependency_type)
const;
247 access_valid(
const unsigned int &dependency_index,
248 const dependencyType &dependency_type,
249 const dealii::EvaluationFlags::EvaluationFlags &flag)
const;
255 submission_valid(
const dependencyType &dependency_type)
const;
260 [[nodiscard]]
unsigned int
261 get_n_q_points()
const;
266 [[nodiscard]] dealii::Point<dim, size_type>
267 get_q_point_location()
const;
273 reinit_and_eval(
const std::vector<VectorType *> &src,
unsigned int cell);
279 reinit_and_eval(
const VectorType &src,
unsigned int cell);
285 reinit(
unsigned int cell,
const unsigned int &global_variable_index);
291 read_dof_values(
const std::vector<VectorType *> &src,
unsigned int cell);
298 eval(
const unsigned int &global_variable_index);
304 integrate_and_distribute(std::vector<VectorType *> &dst);
310 integrate_and_distribute(VectorType &dst);
316 integrate(
const unsigned int &global_variable_index);
322 std::map<unsigned int, std::map<dependencyType, std::unique_ptr<scalar_FEEval>>>
329 std::map<unsigned int, std::map<dependencyType, std::unique_ptr<vector_FEEval>>>
335 const std::map<unsigned int, variableAttributes> &subset_attributes;
340 const std::unordered_map<std::pair<unsigned int, dependencyType>,
342 pairHash> &global_to_local_solution;
349 std::unordered_map<std::pair<unsigned int, dependencyType>,
350 dealii::EvaluationFlags::EvaluationFlags,
359 dealii::EvaluationFlags::EvaluationFlags dst_eval_flags =
360 dealii::EvaluationFlags::EvaluationFlags::nothing;
365 const solveType solve_type;
370 unsigned int q_point = 0;
375 unsigned int n_dofs_per_cell;
380 std::unique_ptr<dealii::AlignedVector<size_type>> scalar_diagonal;
385 std::unique_ptr<dealii::AlignedVector<dealii::Tensor<1, dim, size_type>>>