34 template <
int dim,
int spacedim>
35 inline std::vector<unsigned int>
38 std::vector<unsigned int> shape_function_to_row_table(
48 unsigned int nth_nonzero_component = 0;
53 row + nth_nonzero_component;
54 ++nth_nonzero_component;
59 return shape_function_to_row_table;
68 template <
int dim,
int spacedim>
70 const unsigned int component)
71 : fe_values(&fe_values)
72 , component(component)
73 , shape_function_data(this->fe_values->fe->n_dofs_per_cell())
81 const std::vector<unsigned int> shape_function_to_row_table =
88 if (is_primitive ==
true)
105 template <
int dim,
int spacedim>
108 , component(
numbers::invalid_unsigned_int)
113 template <
int dim,
int spacedim>
115 const unsigned int first_vector_component)
116 : fe_values(&fe_values)
117 , first_vector_component(first_vector_component)
118 , shape_function_data(this->fe_values->fe->n_dofs_per_cell())
126 const std::vector<unsigned int> shape_function_to_row_table =
129 for (
unsigned int d = 0; d < spacedim; ++d)
137 if (is_primitive ==
true)
147 shape_function_to_row_table[i * fe.
n_components() + component];
156 unsigned int n_nonzero_components = 0;
157 for (
unsigned int d = 0; d < spacedim; ++d)
160 ++n_nonzero_components;
162 if (n_nonzero_components == 0)
164 else if (n_nonzero_components > 1)
168 for (
unsigned int d = 0; d < spacedim; ++d)
170 .is_nonzero_shape_function_component[d] ==
true)
183 template <
int dim,
int spacedim>
186 , first_vector_component(
numbers::invalid_unsigned_int)
191 template <
int dim,
int spacedim>
194 const unsigned int first_tensor_component)
195 : fe_values(&fe_values)
196 , first_tensor_component(first_tensor_component)
197 , shape_function_data(this->fe_values->fe->n_dofs_per_cell())
200 Assert(first_tensor_component + (dim * dim + dim) / 2 - 1 <
203 first_tensor_component +
210 const std::vector<unsigned int> shape_function_to_row_table =
213 for (
unsigned int d = 0;
214 d < ::SymmetricTensor<2, dim>::n_independent_components;
217 const unsigned int component = first_tensor_component + d;
223 if (is_primitive ==
true)
224 shape_function_data[i].is_nonzero_shape_function_component[d] =
227 shape_function_data[i].is_nonzero_shape_function_component[d] =
230 if (shape_function_data[i].is_nonzero_shape_function_component[d] ==
232 shape_function_data[i].row_index[d] =
233 shape_function_to_row_table[i * fe.
n_components() + component];
235 shape_function_data[i].row_index[d] =
242 unsigned int n_nonzero_components = 0;
243 for (
unsigned int d = 0;
244 d < ::SymmetricTensor<2, dim>::n_independent_components;
246 if (shape_function_data[i].is_nonzero_shape_function_component[d] ==
248 ++n_nonzero_components;
250 if (n_nonzero_components == 0)
251 shape_function_data[i].single_nonzero_component = -2;
252 else if (n_nonzero_components > 1)
253 shape_function_data[i].single_nonzero_component = -1;
256 for (
unsigned int d = 0;
257 d < ::SymmetricTensor<2, dim>::n_independent_components;
259 if (shape_function_data[i]
260 .is_nonzero_shape_function_component[d] ==
true)
262 shape_function_data[i].single_nonzero_component =
263 shape_function_data[i].row_index[d];
264 shape_function_data[i].single_nonzero_component_index = d;
273 template <
int dim,
int spacedim>
276 , first_tensor_component(
numbers::invalid_unsigned_int)
281 template <
int dim,
int spacedim>
283 const unsigned int first_tensor_component)
284 : fe_values(&fe_values)
285 , first_tensor_component(first_tensor_component)
286 , shape_function_data(this->fe_values->fe->n_dofs_per_cell())
293 const std::vector<unsigned int> shape_function_to_row_table =
296 for (
unsigned int d = 0; d < dim * dim; ++d)
298 const unsigned int component = first_tensor_component + d;
304 if (is_primitive ==
true)
305 shape_function_data[i].is_nonzero_shape_function_component[d] =
308 shape_function_data[i].is_nonzero_shape_function_component[d] =
311 if (shape_function_data[i].is_nonzero_shape_function_component[d] ==
313 shape_function_data[i].row_index[d] =
314 shape_function_to_row_table[i * fe.
n_components() + component];
316 shape_function_data[i].row_index[d] =
323 unsigned int n_nonzero_components = 0;
324 for (
unsigned int d = 0; d < dim * dim; ++d)
325 if (shape_function_data[i].is_nonzero_shape_function_component[d] ==
327 ++n_nonzero_components;
329 if (n_nonzero_components == 0)
330 shape_function_data[i].single_nonzero_component = -2;
331 else if (n_nonzero_components > 1)
332 shape_function_data[i].single_nonzero_component = -1;
335 for (
unsigned int d = 0; d < dim * dim; ++d)
336 if (shape_function_data[i]
337 .is_nonzero_shape_function_component[d] ==
true)
339 shape_function_data[i].single_nonzero_component =
340 shape_function_data[i].row_index[d];
341 shape_function_data[i].single_nonzero_component_index = d;
350 template <
int dim,
int spacedim>
353 , first_tensor_component(
numbers::invalid_unsigned_int)
358 template <
int dim,
int spacedim>
359 template <
typename Number>
368 Assert(fe_values->present_cell.is_initialized(),
374 fe_values->present_cell.get_interpolated_dof_values(fe_function,
378 fe_values->finite_element_output.shape_values,
385 template <
int dim,
int spacedim>
386 template <
class InputVector>
389 const InputVector &dof_values,
396 Assert(fe_values->present_cell.is_initialized(),
402 fe_values->finite_element_output.shape_values,
409 template <
int dim,
int spacedim>
410 template <
typename Number>
418 "update_gradients")));
419 Assert(fe_values->present_cell.is_initialized(),
422 fe_values->present_cell.n_dofs_for_dof_handler());
426 fe_values->present_cell.get_interpolated_dof_values(fe_function,
430 fe_values->finite_element_output.shape_gradients,
437 template <
int dim,
int spacedim>
438 template <
typename InputVector>
441 const InputVector &dof_values,
447 "update_gradients")));
448 Assert(fe_values->present_cell.is_initialized(),
454 fe_values->finite_element_output.shape_gradients,
461 template <
int dim,
int spacedim>
462 template <
typename Number>
470 "update_hessians")));
471 Assert(fe_values->present_cell.is_initialized(),
474 fe_values->present_cell.n_dofs_for_dof_handler());
478 fe_values->present_cell.get_interpolated_dof_values(fe_function,
482 fe_values->finite_element_output.shape_hessians,
489 template <
int dim,
int spacedim>
490 template <
class InputVector>
493 const InputVector &dof_values,
499 "update_hessians")));
500 Assert(fe_values->present_cell.is_initialized(),
506 fe_values->finite_element_output.shape_hessians,
513 template <
int dim,
int spacedim>
514 template <
typename Number>
522 "update_hessians")));
523 Assert(fe_values->present_cell.is_initialized(),
526 fe_values->present_cell.n_dofs_for_dof_handler());
530 fe_values->present_cell.get_interpolated_dof_values(fe_function,
534 fe_values->finite_element_output.shape_hessians,
541 template <
int dim,
int spacedim>
542 template <
class InputVector>
545 const InputVector &dof_values,
551 "update_hessians")));
552 Assert(fe_values->present_cell.is_initialized(),
558 fe_values->finite_element_output.shape_hessians,
565 template <
int dim,
int spacedim>
566 template <
typename Number>
575 "update_3rd_derivatives")));
576 Assert(fe_values->present_cell.is_initialized(),
579 fe_values->present_cell.n_dofs_for_dof_handler());
583 fe_values->present_cell.get_interpolated_dof_values(fe_function,
587 fe_values->finite_element_output.shape_3rd_derivatives,
594 template <
int dim,
int spacedim>
595 template <
class InputVector>
598 const InputVector &dof_values,
601 &third_derivatives)
const
605 "update_3rd_derivatives")));
606 Assert(fe_values->present_cell.is_initialized(),
612 fe_values->finite_element_output.shape_3rd_derivatives,
619 template <
int dim,
int spacedim>
620 template <
typename Number>
629 Assert(fe_values->present_cell.is_initialized(),
634 fe_values->present_cell.get_interpolated_dof_values(fe_function,
638 fe_values->finite_element_output.shape_values,
645 template <
int dim,
int spacedim>
646 template <
class InputVector>
649 const InputVector &dof_values,
656 Assert(fe_values->present_cell.is_initialized(),
662 fe_values->finite_element_output.shape_values,
669 template <
int dim,
int spacedim>
670 template <
typename Number>
678 "update_gradients")));
679 Assert(fe_values->present_cell.is_initialized(),
682 fe_values->present_cell.n_dofs_for_dof_handler());
686 fe_values->present_cell.get_interpolated_dof_values(fe_function,
690 fe_values->finite_element_output.shape_gradients,
697 template <
int dim,
int spacedim>
698 template <
typename InputVector>
701 const InputVector &dof_values,
707 "update_gradients")));
708 Assert(fe_values->present_cell.is_initialized(),
714 fe_values->finite_element_output.shape_gradients,
721 template <
int dim,
int spacedim>
722 template <
typename Number>
731 "update_gradients")));
732 Assert(fe_values->present_cell.is_initialized(),
735 fe_values->present_cell.n_dofs_for_dof_handler());
739 fe_values->present_cell.get_interpolated_dof_values(fe_function,
743 fe_values->finite_element_output.shape_gradients,
745 symmetric_gradients);
750 template <
int dim,
int spacedim>
751 template <
class InputVector>
754 const InputVector &dof_values,
757 &symmetric_gradients)
const
761 "update_gradients")));
762 Assert(fe_values->present_cell.is_initialized(),
768 fe_values->finite_element_output.shape_gradients,
770 symmetric_gradients);
775 template <
int dim,
int spacedim>
776 template <
typename Number>
784 "update_gradients")));
785 Assert(fe_values->present_cell.is_initialized(),
788 fe_values->present_cell.n_dofs_for_dof_handler());
793 fe_values->present_cell.get_interpolated_dof_values(fe_function,
797 fe_values->finite_element_output.shape_gradients,
804 template <
int dim,
int spacedim>
805 template <
class InputVector>
808 const InputVector &dof_values,
814 "update_gradients")));
815 Assert(fe_values->present_cell.is_initialized(),
821 fe_values->finite_element_output.shape_gradients,
828 template <
int dim,
int spacedim>
829 template <
typename Number>
837 "update_gradients")));
838 Assert(fe_values->present_cell.is_initialized(),
839 ExcMessage(
"FEValues object is not reinited to any cell"));
841 fe_values->present_cell.n_dofs_for_dof_handler());
845 fe_values->present_cell.get_interpolated_dof_values(fe_function,
849 fe_values->finite_element_output.shape_gradients,
856 template <
int dim,
int spacedim>
857 template <
class InputVector>
860 const InputVector &dof_values,
866 "update_gradients")));
867 Assert(fe_values->present_cell.is_initialized(),
868 ExcMessage(
"FEValues object is not reinited to any cell"));
873 fe_values->finite_element_output.shape_gradients,
880 template <
int dim,
int spacedim>
881 template <
typename Number>
889 "update_hessians")));
890 Assert(fe_values->present_cell.is_initialized(),
893 fe_values->present_cell.n_dofs_for_dof_handler());
897 fe_values->present_cell.get_interpolated_dof_values(fe_function,
901 fe_values->finite_element_output.shape_hessians,
908 template <
int dim,
int spacedim>
909 template <
class InputVector>
912 const InputVector &dof_values,
918 "update_hessians")));
919 Assert(fe_values->present_cell.is_initialized(),
925 fe_values->finite_element_output.shape_hessians,
932 template <
int dim,
int spacedim>
933 template <
typename Number>
941 "update_hessians")));
942 Assert(laplacians.size() == fe_values->n_quadrature_points,
944 fe_values->n_quadrature_points));
945 Assert(fe_values->present_cell.is_initialized(),
948 fe_function.
size() == fe_values->present_cell.n_dofs_for_dof_handler(),
950 fe_values->present_cell.n_dofs_for_dof_handler()));
954 fe_values->present_cell.get_interpolated_dof_values(fe_function,
958 fe_values->finite_element_output.shape_hessians,
965 template <
int dim,
int spacedim>
966 template <
class InputVector>
969 const InputVector &dof_values,
975 "update_hessians")));
976 Assert(laplacians.size() == fe_values->n_quadrature_points,
978 fe_values->n_quadrature_points));
979 Assert(fe_values->present_cell.is_initialized(),
985 fe_values->finite_element_output.shape_hessians,
992 template <
int dim,
int spacedim>
993 template <
typename Number>
1002 "update_3rd_derivatives")));
1003 Assert(fe_values->present_cell.is_initialized(),
1006 fe_values->present_cell.n_dofs_for_dof_handler());
1010 fe_values->present_cell.get_interpolated_dof_values(fe_function,
1014 fe_values->finite_element_output.shape_3rd_derivatives,
1015 shape_function_data,
1021 template <
int dim,
int spacedim>
1022 template <
class InputVector>
1025 const InputVector &dof_values,
1028 &third_derivatives)
const
1032 "update_3rd_derivatives")));
1033 Assert(fe_values->present_cell.is_initialized(),
1039 fe_values->finite_element_output.shape_3rd_derivatives,
1040 shape_function_data,
1046 template <
int dim,
int spacedim>
1047 template <
typename Number>
1056 Assert(fe_values->present_cell.is_initialized(),
1061 fe_values->present_cell.get_interpolated_dof_values(fe_function,
1065 fe_values->finite_element_output.shape_values,
1066 shape_function_data,
1072 template <
int dim,
int spacedim>
1073 template <
class InputVector>
1076 const InputVector &dof_values,
1083 Assert(fe_values->present_cell.is_initialized(),
1089 fe_values->finite_element_output.shape_values,
1090 shape_function_data,
1096 template <
int dim,
int spacedim>
1097 template <
typename Number>
1105 "update_gradients")));
1106 Assert(fe_values->present_cell.is_initialized(),
1109 fe_values->present_cell.n_dofs_for_dof_handler());
1114 fe_values->present_cell.get_interpolated_dof_values(fe_function,
1118 fe_values->finite_element_output.shape_gradients,
1119 shape_function_data,
1125 template <
int dim,
int spacedim>
1126 template <
class InputVector>
1130 const InputVector &dof_values,
1136 "update_gradients")));
1137 Assert(fe_values->present_cell.is_initialized(),
1143 fe_values->finite_element_output.shape_gradients,
1144 shape_function_data,
1150 template <
int dim,
int spacedim>
1151 template <
typename Number>
1160 Assert(fe_values->present_cell.is_initialized(),
1165 fe_values->present_cell.get_interpolated_dof_values(fe_function,
1169 fe_values->finite_element_output.shape_values,
1170 shape_function_data,
1176 template <
int dim,
int spacedim>
1177 template <
class InputVector>
1180 const InputVector &dof_values,
1187 Assert(fe_values->present_cell.is_initialized(),
1193 fe_values->finite_element_output.shape_values,
1194 shape_function_data,
1200 template <
int dim,
int spacedim>
1201 template <
typename Number>
1209 "update_gradients")));
1210 Assert(fe_values->present_cell.is_initialized(),
1213 fe_values->present_cell.n_dofs_for_dof_handler());
1218 fe_values->present_cell.get_interpolated_dof_values(fe_function,
1222 fe_values->finite_element_output.shape_gradients,
1223 shape_function_data,
1229 template <
int dim,
int spacedim>
1230 template <
class InputVector>
1233 const InputVector &dof_values,
1239 "update_gradients")));
1240 Assert(fe_values->present_cell.is_initialized(),
1246 fe_values->finite_element_output.shape_gradients,
1247 shape_function_data,
1253 template <
int dim,
int spacedim>
1254 template <
typename Number>
1262 "update_gradients")));
1263 Assert(fe_values->present_cell.is_initialized(),
1266 fe_values->present_cell.n_dofs_for_dof_handler());
1271 fe_values->present_cell.get_interpolated_dof_values(fe_function,
1275 fe_values->finite_element_output.shape_gradients,
1276 shape_function_data,
1282 template <
int dim,
int spacedim>
1283 template <
class InputVector>
1286 const InputVector &dof_values,
1292 "update_gradients")));
1293 Assert(fe_values->present_cell.is_initialized(),
1299 fe_values->finite_element_output.shape_gradients,
1300 shape_function_data,
1310 template <
int dim,
int spacedim>
1316 scalars.resize(n_scalars);
1321 const unsigned int n_vectors =
1326 vectors.resize(n_vectors);
1329 const unsigned int n_symmetric_second_order_tensors =
1335 symmetric_second_order_tensors.resize(n_symmetric_second_order_tensors);
1338 const unsigned int n_second_order_tensors =
1343 second_order_tensors.resize(n_second_order_tensors);
1350#include "fe_values_views.inst"
auto make_const_array_view(const Container &container) -> decltype(make_array_view(container))
const SmartPointer< const FiniteElement< dim, spacedim >, FEValuesBase< dim, spacedim > > fe
const FiniteElement< dim, spacedim > & get_fe() const
void get_function_third_derivatives_from_local_dof_values(const InputVector &dof_values, std::vector< solution_third_derivative_type< typename InputVector::value_type > > &third_derivatives) const
void get_function_laplacians(const ReadVector< Number > &fe_function, std::vector< solution_laplacian_type< Number > > &laplacians) const
typename ProductType< Number, value_type >::type solution_laplacian_type
void get_function_hessians_from_local_dof_values(const InputVector &dof_values, std::vector< solution_hessian_type< typename InputVector::value_type > > &hessians) const
void get_function_values_from_local_dof_values(const InputVector &dof_values, std::vector< solution_value_type< typename InputVector::value_type > > &values) const
std::vector< ShapeFunctionData > shape_function_data
void get_function_gradients(const ReadVector< Number > &fe_function, std::vector< solution_gradient_type< Number > > &gradients) const
typename ProductType< Number, gradient_type >::type solution_gradient_type
typename ProductType< Number, value_type >::type solution_value_type
void get_function_values(const ReadVector< Number > &fe_function, std::vector< solution_value_type< Number > > &values) const
void get_function_laplacians_from_local_dof_values(const InputVector &dof_values, std::vector< solution_laplacian_type< typename InputVector::value_type > > &laplacians) const
void get_function_gradients_from_local_dof_values(const InputVector &dof_values, std::vector< solution_gradient_type< typename InputVector::value_type > > &gradients) const
typename ProductType< Number, hessian_type >::type solution_hessian_type
void get_function_third_derivatives(const ReadVector< Number > &fe_function, std::vector< solution_third_derivative_type< Number > > &third_derivatives) const
typename ProductType< Number, third_derivative_type >::type solution_third_derivative_type
void get_function_hessians(const ReadVector< Number > &fe_function, std::vector< solution_hessian_type< Number > > &hessians) const
typename ProductType< Number, value_type >::type solution_value_type
typename ProductType< Number, divergence_type >::type solution_divergence_type
typename ProductType< Number, value_type >::type solution_value_type
typename ProductType< Number, divergence_type >::type solution_divergence_type
typename ProductType< Number, gradient_type >::type solution_gradient_type
void get_function_symmetric_gradients_from_local_dof_values(const InputVector &dof_values, std::vector< solution_symmetric_gradient_type< typename InputVector::value_type > > &symmetric_gradients) const
void get_function_gradients_from_local_dof_values(const InputVector &dof_values, std::vector< solution_gradient_type< typename InputVector::value_type > > &gradients) const
void get_function_laplacians(const ReadVector< Number > &fe_function, std::vector< solution_laplacian_type< Number > > &laplacians) const
unsigned int first_vector_component
void get_function_gradients(const ReadVector< Number > &fe_function, std::vector< solution_gradient_type< Number > > &gradients) const
typename ProductType< Number, value_type >::type solution_laplacian_type
void get_function_symmetric_gradients(const ReadVector< Number > &fe_function, std::vector< solution_symmetric_gradient_type< Number > > &symmetric_gradients) const
typename ProductType< Number, third_derivative_type >::type solution_third_derivative_type
typename ProductType< Number, hessian_type >::type solution_hessian_type
void get_function_laplacians_from_local_dof_values(const InputVector &dof_values, std::vector< solution_laplacian_type< typename InputVector::value_type > > &laplacians) const
void get_function_hessians(const ReadVector< Number > &fe_function, std::vector< solution_hessian_type< Number > > &hessians) const
typename ProductType< Number, divergence_type >::type solution_divergence_type
typename ProductType< Number, value_type >::type solution_value_type
void get_function_third_derivatives(const ReadVector< Number > &fe_function, std::vector< solution_third_derivative_type< Number > > &third_derivatives) const
void get_function_values(const ReadVector< Number > &fe_function, std::vector< solution_value_type< Number > > &values) const
void get_function_curls_from_local_dof_values(const InputVector &dof_values, std::vector< solution_curl_type< typename InputVector::value_type > > &curls) const
typename ProductType< Number, gradient_type >::type solution_gradient_type
typename ProductType< Number, curl_type >::type solution_curl_type
typename ProductType< Number, symmetric_gradient_type >::type solution_symmetric_gradient_type
std::vector< ShapeFunctionData > shape_function_data
void get_function_curls(const ReadVector< Number > &fe_function, std::vector< solution_curl_type< Number > > &curls) const
void get_function_hessians_from_local_dof_values(const InputVector &dof_values, std::vector< solution_hessian_type< typename InputVector::value_type > > &hessians) const
void get_function_values_from_local_dof_values(const InputVector &dof_values, std::vector< solution_value_type< typename InputVector::value_type > > &values) const
void get_function_divergences_from_local_dof_values(const InputVector &dof_values, std::vector< solution_divergence_type< typename InputVector::value_type > > &divergences) const
void get_function_third_derivatives_from_local_dof_values(const InputVector &dof_values, std::vector< solution_third_derivative_type< typename InputVector::value_type > > &third_derivatives) const
void get_function_divergences(const ReadVector< Number > &fe_function, std::vector< solution_divergence_type< Number > > &divergences) const
unsigned int n_dofs_per_cell() const
unsigned int n_components() const
const ComponentMask & get_nonzero_components(const unsigned int i) const
bool is_primitive() const
std::pair< unsigned int, unsigned int > system_to_component_index(const unsigned int index) const
unsigned int n_nonzero_components(const unsigned int i) const
virtual size_type size() const =0
DEAL_II_HOST constexpr SymmetricTensor()=default
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
#define Assert(cond, exc)
#define AssertDimension(dim1, dim2)
#define AssertIndexRange(index, range)
static ::ExceptionBase & ExcIndexRange(std::size_t arg1, std::size_t arg2, std::size_t arg3)
static ::ExceptionBase & ExcDimensionMismatch(std::size_t arg1, std::size_t arg2)
static ::ExceptionBase & ExcMessage(std::string arg1)
@ update_hessians
Second derivatives of shape functions.
@ update_values
Shape function values.
@ update_3rd_derivatives
Third derivatives of shape functions.
@ update_gradients
Shape function gradients.
void do_function_divergences(const ArrayView< const Number > &dof_values, const Table< 2, ::Tensor< 1, spacedim > > &shape_gradients, const std::vector< typename Vector< dim, spacedim >::ShapeFunctionData > &shape_function_data, std::vector< typename Vector< dim, spacedim >::template solution_divergence_type< Number > > &divergences)
void do_function_symmetric_gradients(const ArrayView< const Number > &dof_values, const Table< 2, ::Tensor< 1, spacedim > > &shape_gradients, const std::vector< typename Vector< dim, spacedim >::ShapeFunctionData > &shape_function_data, std::vector< typename ProductType< Number, ::SymmetricTensor< 2, spacedim > >::type > &symmetric_gradients)
void do_function_derivatives(const ArrayView< const Number > &dof_values, const Table< 2, ::Tensor< order, spacedim > > &shape_derivatives, const std::vector< typename Scalar< dim, spacedim >::ShapeFunctionData > &shape_function_data, std::vector< typename ProductType< Number, ::Tensor< order, spacedim > >::type > &derivatives)
void do_function_curls(const ArrayView< const Number > &dof_values, const Table< 2, ::Tensor< 1, spacedim > > &shape_gradients, const std::vector< typename Vector< dim, spacedim >::ShapeFunctionData > &shape_function_data, std::vector< typename ProductType< Number, typename ::internal::CurlType< spacedim >::type >::type > &curls)
void do_function_gradients(const ArrayView< const Number > &dof_values, const Table< 2, ::Tensor< 1, spacedim > > &shape_gradients, const std::vector< typename Tensor< 2, dim, spacedim >::ShapeFunctionData > &shape_function_data, std::vector< typename Tensor< 2, dim, spacedim >::template solution_gradient_type< Number > > &gradients)
void do_function_values(const ArrayView< const Number > &dof_values, const Table< 2, double > &shape_values, const std::vector< typename Scalar< dim, spacedim >::ShapeFunctionData > &shape_function_data, std::vector< typename ProductType< Number, double >::type > &values)
void do_function_laplacians(const ArrayView< const Number > &dof_values, const Table< 2, ::Tensor< 2, spacedim > > &shape_hessians, const std::vector< typename Scalar< dim, spacedim >::ShapeFunctionData > &shape_function_data, std::vector< typename Scalar< dim, spacedim >::template solution_laplacian_type< Number > > &laplacians)
std::vector< unsigned int > make_shape_function_to_row_table(const FiniteElement< dim, spacedim > &fe)
static const unsigned int invalid_unsigned_int
Cache(const FEValuesBase< dim, spacedim > &fe_values)