17#ifndef dealii_matrix_free_evaluation_template_factory_h
18#define dealii_matrix_free_evaluation_template_factory_h
31template <
int,
typename,
bool,
typename>
44 const unsigned int n_components,
47 VectorizedArrayType *values_dofs_actual,
48 VectorizedArrayType *values_quad,
49 VectorizedArrayType *gradients_quad,
50 VectorizedArrayType *hessians_quad,
51 VectorizedArrayType *scratch_data);
55 const unsigned int n_components,
58 VectorizedArrayType *values_dofs_actual,
59 VectorizedArrayType *values_quad,
60 VectorizedArrayType *gradients_quad,
61 VectorizedArrayType *scratch_data,
62 const bool sum_into_values_array);
66 const unsigned int n_q_points_1d);
79 const VectorizedArrayType * values_array,
80 VectorizedArrayType * values_quad,
81 VectorizedArrayType * gradients_quad,
82 VectorizedArrayType * scratch_data,
83 const bool evaluate_values,
84 const bool evaluate_gradients,
85 const unsigned int face_no,
86 const unsigned int subface_index,
87 const unsigned int face_orientation,
93 VectorizedArrayType * values_array,
94 VectorizedArrayType * values_quad,
95 VectorizedArrayType * gradients_quad,
96 VectorizedArrayType * scratch_data,
97 const bool integrate_values,
98 const bool integrate_gradients,
99 const unsigned int face_no,
100 const unsigned int subface_index,
101 const unsigned int face_orientation,
106 const unsigned int n_components,
107 const std::size_t n_face_orientations,
108 const Number * src_ptr,
112 VectorizedArrayType * values_quad,
113 VectorizedArrayType * gradients_quad,
114 VectorizedArrayType * scratch_data,
115 const bool evaluate_values,
116 const bool evaluate_gradients,
117 const unsigned int active_fe_index,
118 const unsigned int first_selected_component,
119 const std::array<
unsigned int, VectorizedArrayType::size()> cells,
120 const std::array<
unsigned int, VectorizedArrayType::size()> face_nos,
121 const unsigned int subface_index,
123 const std::array<
unsigned int, VectorizedArrayType::size()>
129 const unsigned int n_components,
130 const std::size_t n_face_orientations,
135 VectorizedArrayType * values_array,
136 VectorizedArrayType * values_quad,
137 VectorizedArrayType * gradients_quad,
138 VectorizedArrayType * scratch_data,
139 const bool integrate_values,
140 const bool integrate_gradients,
141 const unsigned int active_fe_index,
142 const unsigned int first_selected_component,
143 const std::array<
unsigned int, VectorizedArrayType::size()> cells,
144 const std::array<
unsigned int, VectorizedArrayType::size()> face_nos,
145 const unsigned int subface_index,
147 const std::array<
unsigned int, VectorizedArrayType::size()>
153 const unsigned int n_q_points_1d);
164 apply(
const unsigned int n_components,
165 const unsigned int fe_degree,
168 const VectorizedArrayType *in_array,
169 VectorizedArrayType * out_array);
172 apply(
const unsigned int n_components,
173 const unsigned int fe_degree,
176 const VectorizedArrayType * in_array,
177 VectorizedArrayType * out_array);
181 const unsigned int n_components,
182 const unsigned int fe_degree,
184 const VectorizedArrayType * in_array,
185 VectorizedArrayType * out_array);
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
EvaluationFlags
The EvaluationFlags enum.
static void transform_from_q_points_to_basis(const unsigned int n_components, const unsigned int fe_degree, const AlignedVector< VectorizedArrayType > &inverse_shape, const VectorizedArrayType *in_array, VectorizedArrayType *out_array)
static void apply(const unsigned int n_components, const unsigned int fe_degree, const FEEvaluationBaseData< dim, Number, false, VectorizedArrayType > &fe_eval, const VectorizedArrayType *in_array, VectorizedArrayType *out_array)
static void apply(const unsigned int n_components, const unsigned int fe_degree, const AlignedVector< VectorizedArrayType > &inverse_shape, const AlignedVector< VectorizedArrayType > &inverse_coefficients, const VectorizedArrayType *in_array, VectorizedArrayType *out_array)
static bool fast_evaluation_supported(const unsigned int given_degree, const unsigned int n_q_points_1d)
static void evaluate(const unsigned int n_components, const EvaluationFlags::EvaluationFlags evaluation_flag, const MatrixFreeFunctions::ShapeInfo< VectorizedArrayType > &shape_info, VectorizedArrayType *values_dofs_actual, VectorizedArrayType *values_quad, VectorizedArrayType *gradients_quad, VectorizedArrayType *hessians_quad, VectorizedArrayType *scratch_data)
static void integrate(const unsigned int n_components, const EvaluationFlags::EvaluationFlags integration_flag, const MatrixFreeFunctions::ShapeInfo< VectorizedArrayType > &shape_info, VectorizedArrayType *values_dofs_actual, VectorizedArrayType *values_quad, VectorizedArrayType *gradients_quad, VectorizedArrayType *scratch_data, const bool sum_into_values_array)
static bool gather_evaluate(const unsigned int n_components, const std::size_t n_face_orientations, const Number *src_ptr, const std::vector< ArrayView< const Number > > *sm_ptr, const MatrixFreeFunctions::ShapeInfo< VectorizedArrayType > &data, const MatrixFreeFunctions::DoFInfo &dof_info, VectorizedArrayType *values_quad, VectorizedArrayType *gradients_quad, VectorizedArrayType *scratch_data, const bool evaluate_values, const bool evaluate_gradients, const unsigned int active_fe_index, const unsigned int first_selected_component, const std::array< unsigned int, VectorizedArrayType::size()> cells, const std::array< unsigned int, VectorizedArrayType::size()> face_nos, const unsigned int subface_index, const MatrixFreeFunctions::DoFInfo::DoFAccessIndex dof_access_index, const std::array< unsigned int, VectorizedArrayType::size()> face_orientations, const Table< 2, unsigned int > &orientation_map)
static bool fast_evaluation_supported(const unsigned int given_degree, const unsigned int n_q_points_1d)
static void evaluate(const unsigned int n_components, const MatrixFreeFunctions::ShapeInfo< VectorizedArrayType > &data, const VectorizedArrayType *values_array, VectorizedArrayType *values_quad, VectorizedArrayType *gradients_quad, VectorizedArrayType *scratch_data, const bool evaluate_values, const bool evaluate_gradients, const unsigned int face_no, const unsigned int subface_index, const unsigned int face_orientation, const Table< 2, unsigned int > &orientation_map)
static bool integrate_scatter(const unsigned int n_components, const std::size_t n_face_orientations, Number *dst_ptr, const std::vector< ArrayView< const Number > > *sm_ptr, const MatrixFreeFunctions::ShapeInfo< VectorizedArrayType > &data, const MatrixFreeFunctions::DoFInfo &dof_info, VectorizedArrayType *values_array, VectorizedArrayType *values_quad, VectorizedArrayType *gradients_quad, VectorizedArrayType *scratch_data, const bool integrate_values, const bool integrate_gradients, const unsigned int active_fe_index, const unsigned int first_selected_component, const std::array< unsigned int, VectorizedArrayType::size()> cells, const std::array< unsigned int, VectorizedArrayType::size()> face_nos, const unsigned int subface_index, const MatrixFreeFunctions::DoFInfo::DoFAccessIndex dof_access_index, const std::array< unsigned int, VectorizedArrayType::size()> face_orientations, const Table< 2, unsigned int > &orientation_map)
static void integrate(const unsigned int n_components, const MatrixFreeFunctions::ShapeInfo< VectorizedArrayType > &data, VectorizedArrayType *values_array, VectorizedArrayType *values_quad, VectorizedArrayType *gradients_quad, VectorizedArrayType *scratch_data, const bool integrate_values, const bool integrate_gradients, const unsigned int face_no, const unsigned int subface_index, const unsigned int face_orientation, const Table< 2, unsigned int > &orientation_map)