19#include <core/typeDefs.h>
24 const std::vector<variable_info> &_varInfoList,
25 const std::vector<variable_info> &_varChangeInfoList);
28 const std::vector<variable_info> &_varInfoList);
32 const std::vector<variable_info> &_varInfoList,
33 const unsigned int &fixed_index);
38 get_scalar_value(
unsigned int global_variable_index)
const;
39 dealii::Tensor<1, dim, T>
40 get_scalar_gradient(
unsigned int global_variable_index)
const;
41 dealii::Tensor<2, dim, T>
42 get_scalar_hessian(
unsigned int global_variable_index)
const;
43 dealii::Tensor<1, dim, T>
44 get_vector_value(
unsigned int global_variable_index)
const;
45 dealii::Tensor<2, dim, T>
46 get_vector_gradient(
unsigned int global_variable_index)
const;
47 dealii::Tensor<3, dim, T>
48 get_vector_hessian(
unsigned int global_variable_index)
const;
51 get_change_in_scalar_value(
unsigned int global_variable_index)
const;
52 dealii::Tensor<1, dim, T>
53 get_change_in_scalar_gradient(
unsigned int global_variable_index)
const;
54 dealii::Tensor<2, dim, T>
55 get_change_in_scalar_hessian(
unsigned int global_variable_index)
const;
56 dealii::Tensor<1, dim, T>
57 get_change_in_vector_value(
unsigned int global_variable_index)
const;
58 dealii::Tensor<2, dim, T>
59 get_change_in_vector_gradient(
unsigned int global_variable_index)
const;
60 dealii::Tensor<3, dim, T>
61 get_change_in_vector_hessian(
unsigned int global_variable_index)
const;
66 set_scalar_value_term_RHS(
unsigned int global_variable_index, T val);
68 set_scalar_gradient_term_RHS(
unsigned int global_variable_index,
69 dealii::Tensor<1, dim, T> grad);
71 set_vector_value_term_RHS(
unsigned int global_variable_index,
72 dealii::Tensor<1, dim, T> val);
74 set_vector_gradient_term_RHS(
unsigned int global_variable_index,
75 dealii::Tensor<2, dim, T> grad);
78 set_scalar_value_term_LHS(
unsigned int global_variable_index, T val);
80 set_scalar_gradient_term_LHS(
unsigned int global_variable_index,
81 dealii::Tensor<1, dim, T> grad);
83 set_vector_value_term_LHS(
unsigned int global_variable_index,
84 dealii::Tensor<1, dim, T> val);
86 set_vector_gradient_term_LHS(
unsigned int global_variable_index,
87 dealii::Tensor<2, dim, T> grad);
92 const std::vector<dealii::LinearAlgebra::distributed::Vector<double> *> &src,
96 const dealii::LinearAlgebra::distributed::Vector<double> &src,
98 unsigned int var_being_solved);
103 reinit(
unsigned int cell);
107 integrate_and_distribute(
108 std::vector<dealii::LinearAlgebra::distributed::Vector<double> *> &dst);
110 integrate_and_distribute_change_in_solution_LHS(
111 dealii::LinearAlgebra::distributed::Vector<double> &dst,
112 const unsigned int var_being_solved);
116 unsigned int q_point;
119 get_num_q_points()
const;
121 dealii::Point<dim, T>
122 get_q_point_location()
const;
127 using scalar_FEEval = dealii::FEEvaluation<dim, degree, degree + 1, 1, double>;
128 using vector_FEEval = dealii::FEEvaluation<dim, degree, degree + 1, dim, double>;
130 boost::unordered_map<unsigned int, std::unique_ptr<scalar_FEEval>> scalar_vars_map;
131 boost::unordered_map<unsigned int, std::unique_ptr<vector_FEEval>> vector_vars_map;
133 boost::unordered_map<unsigned int, std::unique_ptr<scalar_FEEval>>
134 scalar_change_in_vars_map;
135 boost::unordered_map<unsigned int, std::unique_ptr<vector_FEEval>>
136 vector_change_in_vars_map;
140 std::vector<variable_info> varInfoList;
141 std::vector<variable_info> varChangeInfoList;
144 unsigned int num_var;