35 template <
int dim,
int spacedim>
36 inline std::vector<unsigned int>
39 std::vector<unsigned int> shape_function_to_row_table(
49 unsigned int nth_nonzero_component = 0;
54 row + nth_nonzero_component;
55 ++nth_nonzero_component;
60 return shape_function_to_row_table;
69 template <
int dim,
int spacedim>
71 const unsigned int component)
72 : fe_values(&fe_values)
73 , component(component)
74 , shape_function_data(this->fe_values->fe->n_dofs_per_cell())
82 const std::vector<unsigned int> shape_function_to_row_table =
89 if (is_primitive ==
true)
106 template <
int dim,
int spacedim>
114 template <
int dim,
int spacedim>
116 const unsigned int first_vector_component)
117 : fe_values(&fe_values)
118 , first_vector_component(first_vector_component)
119 , shape_function_data(this->fe_values->fe->n_dofs_per_cell())
127 const std::vector<unsigned int> shape_function_to_row_table =
130 for (
unsigned int d = 0;
d < spacedim; ++
d)
138 if (is_primitive ==
true)
148 shape_function_to_row_table[i * fe.
n_components() + component];
157 unsigned int n_nonzero_components = 0;
158 for (
unsigned int d = 0;
d < spacedim; ++
d)
161 ++n_nonzero_components;
163 if (n_nonzero_components == 0)
165 else if (n_nonzero_components > 1)
169 for (
unsigned int d = 0;
d < spacedim; ++
d)
171 .is_nonzero_shape_function_component[
d] ==
true)
184 template <
int dim,
int spacedim>
192 template <
int dim,
int spacedim>
195 const unsigned int first_tensor_component)
196 : fe_values(&fe_values)
197 , first_tensor_component(first_tensor_component)
198 , shape_function_data(this->fe_values->fe->n_dofs_per_cell())
201 Assert(first_tensor_component + (dim * dim + dim) / 2 - 1 <
204 first_tensor_component +
211 const std::vector<unsigned int> shape_function_to_row_table =
214 for (
unsigned int d = 0;
215 d < ::SymmetricTensor<2, dim>::n_independent_components;
218 const unsigned int component = first_tensor_component +
d;
224 if (is_primitive ==
true)
225 shape_function_data[i].is_nonzero_shape_function_component[
d] =
228 shape_function_data[i].is_nonzero_shape_function_component[
d] =
231 if (shape_function_data[i].is_nonzero_shape_function_component[
d] ==
233 shape_function_data[i].row_index[
d] =
234 shape_function_to_row_table[i * fe.
n_components() + component];
236 shape_function_data[i].row_index[
d] =
243 unsigned int n_nonzero_components = 0;
244 for (
unsigned int d = 0;
245 d < ::SymmetricTensor<2, dim>::n_independent_components;
247 if (shape_function_data[i].is_nonzero_shape_function_component[
d] ==
249 ++n_nonzero_components;
251 if (n_nonzero_components == 0)
252 shape_function_data[i].single_nonzero_component = -2;
253 else if (n_nonzero_components > 1)
254 shape_function_data[i].single_nonzero_component = -1;
257 for (
unsigned int d = 0;
258 d < ::SymmetricTensor<2, dim>::n_independent_components;
260 if (shape_function_data[i]
261 .is_nonzero_shape_function_component[
d] ==
true)
263 shape_function_data[i].single_nonzero_component =
264 shape_function_data[i].row_index[
d];
265 shape_function_data[i].single_nonzero_component_index =
d;
274 template <
int dim,
int spacedim>
282 template <
int dim,
int spacedim>
284 const unsigned int first_tensor_component)
285 : fe_values(&fe_values)
286 , first_tensor_component(first_tensor_component)
287 , shape_function_data(this->fe_values->fe->n_dofs_per_cell())
294 const std::vector<unsigned int> shape_function_to_row_table =
297 for (
unsigned int d = 0;
d < dim * dim; ++
d)
299 const unsigned int component = first_tensor_component +
d;
305 if (is_primitive ==
true)
306 shape_function_data[i].is_nonzero_shape_function_component[
d] =
309 shape_function_data[i].is_nonzero_shape_function_component[
d] =
312 if (shape_function_data[i].is_nonzero_shape_function_component[
d] ==
314 shape_function_data[i].row_index[
d] =
315 shape_function_to_row_table[i * fe.
n_components() + component];
317 shape_function_data[i].row_index[
d] =
324 unsigned int n_nonzero_components = 0;
325 for (
unsigned int d = 0;
d < dim * dim; ++
d)
326 if (shape_function_data[i].is_nonzero_shape_function_component[
d] ==
328 ++n_nonzero_components;
330 if (n_nonzero_components == 0)
331 shape_function_data[i].single_nonzero_component = -2;
332 else if (n_nonzero_components > 1)
333 shape_function_data[i].single_nonzero_component = -1;
336 for (
unsigned int d = 0;
d < dim * dim; ++
d)
337 if (shape_function_data[i]
338 .is_nonzero_shape_function_component[
d] ==
true)
340 shape_function_data[i].single_nonzero_component =
341 shape_function_data[i].row_index[
d];
342 shape_function_data[i].single_nonzero_component_index =
d;
351 template <
int dim,
int spacedim>
359 template <
int dim,
int spacedim>
360 template <
typename Number>
369 Assert(fe_values->present_cell.is_initialized(),
375 fe_values->present_cell.get_interpolated_dof_values(fe_function,
377 internal::do_function_values<dim, spacedim>(
379 fe_values->finite_element_output.shape_values,
386 template <
int dim,
int spacedim>
387 template <
class InputVector>
390 const InputVector &dof_values,
397 Assert(fe_values->present_cell.is_initialized(),
401 internal::do_function_values<dim, spacedim>(
403 fe_values->finite_element_output.shape_values,
410 template <
int dim,
int spacedim>
411 template <
typename Number>
419 "update_gradients")));
420 Assert(fe_values->present_cell.is_initialized(),
423 fe_values->present_cell.n_dofs_for_dof_handler());
427 fe_values->present_cell.get_interpolated_dof_values(fe_function,
429 internal::do_function_derivatives<1, dim, spacedim>(
431 fe_values->finite_element_output.shape_gradients,
438 template <
int dim,
int spacedim>
439 template <
typename InputVector>
442 const InputVector &dof_values,
448 "update_gradients")));
449 Assert(fe_values->present_cell.is_initialized(),
453 internal::do_function_derivatives<1, dim, spacedim>(
455 fe_values->finite_element_output.shape_gradients,
462 template <
int dim,
int spacedim>
463 template <
typename Number>
471 "update_hessians")));
472 Assert(fe_values->present_cell.is_initialized(),
475 fe_values->present_cell.n_dofs_for_dof_handler());
479 fe_values->present_cell.get_interpolated_dof_values(fe_function,
481 internal::do_function_derivatives<2, dim, spacedim>(
483 fe_values->finite_element_output.shape_hessians,
490 template <
int dim,
int spacedim>
491 template <
class InputVector>
494 const InputVector &dof_values,
500 "update_hessians")));
501 Assert(fe_values->present_cell.is_initialized(),
505 internal::do_function_derivatives<2, dim, spacedim>(
507 fe_values->finite_element_output.shape_hessians,
514 template <
int dim,
int spacedim>
515 template <
typename Number>
523 "update_hessians")));
524 Assert(fe_values->present_cell.is_initialized(),
527 fe_values->present_cell.n_dofs_for_dof_handler());
531 fe_values->present_cell.get_interpolated_dof_values(fe_function,
533 internal::do_function_laplacians<dim, spacedim>(
535 fe_values->finite_element_output.shape_hessians,
542 template <
int dim,
int spacedim>
543 template <
class InputVector>
546 const InputVector &dof_values,
552 "update_hessians")));
553 Assert(fe_values->present_cell.is_initialized(),
557 internal::do_function_laplacians<dim, spacedim>(
559 fe_values->finite_element_output.shape_hessians,
566 template <
int dim,
int spacedim>
567 template <
typename Number>
576 "update_3rd_derivatives")));
577 Assert(fe_values->present_cell.is_initialized(),
580 fe_values->present_cell.n_dofs_for_dof_handler());
584 fe_values->present_cell.get_interpolated_dof_values(fe_function,
586 internal::do_function_derivatives<3, dim, spacedim>(
588 fe_values->finite_element_output.shape_3rd_derivatives,
595 template <
int dim,
int spacedim>
596 template <
class InputVector>
599 const InputVector &dof_values,
602 &third_derivatives)
const
606 "update_3rd_derivatives")));
607 Assert(fe_values->present_cell.is_initialized(),
611 internal::do_function_derivatives<3, dim, spacedim>(
613 fe_values->finite_element_output.shape_3rd_derivatives,
620 template <
int dim,
int spacedim>
621 template <
typename Number>
630 Assert(fe_values->present_cell.is_initialized(),
635 fe_values->present_cell.get_interpolated_dof_values(fe_function,
637 internal::do_function_values<dim, spacedim>(
639 fe_values->finite_element_output.shape_values,
646 template <
int dim,
int spacedim>
647 template <
class InputVector>
650 const InputVector &dof_values,
657 Assert(fe_values->present_cell.is_initialized(),
661 internal::do_function_values<dim, spacedim>(
663 fe_values->finite_element_output.shape_values,
670 template <
int dim,
int spacedim>
671 template <
typename Number>
679 "update_gradients")));
680 Assert(fe_values->present_cell.is_initialized(),
683 fe_values->present_cell.n_dofs_for_dof_handler());
687 fe_values->present_cell.get_interpolated_dof_values(fe_function,
689 internal::do_function_derivatives<1, dim, spacedim>(
691 fe_values->finite_element_output.shape_gradients,
698 template <
int dim,
int spacedim>
699 template <
typename InputVector>
702 const InputVector &dof_values,
708 "update_gradients")));
709 Assert(fe_values->present_cell.is_initialized(),
713 internal::do_function_derivatives<1, dim, spacedim>(
715 fe_values->finite_element_output.shape_gradients,
722 template <
int dim,
int spacedim>
723 template <
typename Number>
732 "update_gradients")));
733 Assert(fe_values->present_cell.is_initialized(),
736 fe_values->present_cell.n_dofs_for_dof_handler());
740 fe_values->present_cell.get_interpolated_dof_values(fe_function,
742 internal::do_function_symmetric_gradients<dim, spacedim>(
744 fe_values->finite_element_output.shape_gradients,
746 symmetric_gradients);
751 template <
int dim,
int spacedim>
752 template <
class InputVector>
755 const InputVector &dof_values,
758 &symmetric_gradients)
const
762 "update_gradients")));
763 Assert(fe_values->present_cell.is_initialized(),
767 internal::do_function_symmetric_gradients<dim, spacedim>(
769 fe_values->finite_element_output.shape_gradients,
771 symmetric_gradients);
776 template <
int dim,
int spacedim>
777 template <
typename Number>
785 "update_gradients")));
786 Assert(fe_values->present_cell.is_initialized(),
789 fe_values->present_cell.n_dofs_for_dof_handler());
794 fe_values->present_cell.get_interpolated_dof_values(fe_function,
796 internal::do_function_divergences<dim, spacedim>(
798 fe_values->finite_element_output.shape_gradients,
805 template <
int dim,
int spacedim>
806 template <
class InputVector>
809 const InputVector &dof_values,
815 "update_gradients")));
816 Assert(fe_values->present_cell.is_initialized(),
820 internal::do_function_divergences<dim, spacedim>(
822 fe_values->finite_element_output.shape_gradients,
829 template <
int dim,
int spacedim>
830 template <
typename Number>
838 "update_gradients")));
839 Assert(fe_values->present_cell.is_initialized(),
840 ExcMessage(
"FEValues object is not reinited to any cell"));
842 fe_values->present_cell.n_dofs_for_dof_handler());
846 fe_values->present_cell.get_interpolated_dof_values(fe_function,
848 internal::do_function_curls<dim, spacedim>(
850 fe_values->finite_element_output.shape_gradients,
857 template <
int dim,
int spacedim>
858 template <
class InputVector>
861 const InputVector &dof_values,
867 "update_gradients")));
868 Assert(fe_values->present_cell.is_initialized(),
869 ExcMessage(
"FEValues object is not reinited to any cell"));
872 internal::do_function_curls<dim, spacedim>(
874 fe_values->finite_element_output.shape_gradients,
881 template <
int dim,
int spacedim>
882 template <
typename Number>
890 "update_hessians")));
891 Assert(fe_values->present_cell.is_initialized(),
894 fe_values->present_cell.n_dofs_for_dof_handler());
898 fe_values->present_cell.get_interpolated_dof_values(fe_function,
900 internal::do_function_derivatives<2, dim, spacedim>(
902 fe_values->finite_element_output.shape_hessians,
909 template <
int dim,
int spacedim>
910 template <
class InputVector>
913 const InputVector &dof_values,
919 "update_hessians")));
920 Assert(fe_values->present_cell.is_initialized(),
924 internal::do_function_derivatives<2, dim, spacedim>(
926 fe_values->finite_element_output.shape_hessians,
933 template <
int dim,
int spacedim>
934 template <
typename Number>
942 "update_hessians")));
943 Assert(laplacians.size() == fe_values->n_quadrature_points,
945 fe_values->n_quadrature_points));
946 Assert(fe_values->present_cell.is_initialized(),
949 fe_function.
size() == fe_values->present_cell.n_dofs_for_dof_handler(),
951 fe_values->present_cell.n_dofs_for_dof_handler()));
955 fe_values->present_cell.get_interpolated_dof_values(fe_function,
957 internal::do_function_laplacians<dim, spacedim>(
959 fe_values->finite_element_output.shape_hessians,
966 template <
int dim,
int spacedim>
967 template <
class InputVector>
970 const InputVector &dof_values,
976 "update_hessians")));
977 Assert(laplacians.size() == fe_values->n_quadrature_points,
979 fe_values->n_quadrature_points));
980 Assert(fe_values->present_cell.is_initialized(),
984 internal::do_function_laplacians<dim, spacedim>(
986 fe_values->finite_element_output.shape_hessians,
993 template <
int dim,
int spacedim>
994 template <
typename Number>
1003 "update_3rd_derivatives")));
1004 Assert(fe_values->present_cell.is_initialized(),
1007 fe_values->present_cell.n_dofs_for_dof_handler());
1011 fe_values->present_cell.get_interpolated_dof_values(fe_function,
1013 internal::do_function_derivatives<3, dim, spacedim>(
1015 fe_values->finite_element_output.shape_3rd_derivatives,
1016 shape_function_data,
1022 template <
int dim,
int spacedim>
1023 template <
class InputVector>
1026 const InputVector &dof_values,
1029 &third_derivatives)
const
1033 "update_3rd_derivatives")));
1034 Assert(fe_values->present_cell.is_initialized(),
1038 internal::do_function_derivatives<3, dim, spacedim>(
1040 fe_values->finite_element_output.shape_3rd_derivatives,
1041 shape_function_data,
1047 template <
int dim,
int spacedim>
1048 template <
typename Number>
1057 Assert(fe_values->present_cell.is_initialized(),
1062 fe_values->present_cell.get_interpolated_dof_values(fe_function,
1064 internal::do_function_values<dim, spacedim>(
1066 fe_values->finite_element_output.shape_values,
1067 shape_function_data,
1073 template <
int dim,
int spacedim>
1074 template <
class InputVector>
1077 const InputVector &dof_values,
1084 Assert(fe_values->present_cell.is_initialized(),
1088 internal::do_function_values<dim, spacedim>(
1090 fe_values->finite_element_output.shape_values,
1091 shape_function_data,
1097 template <
int dim,
int spacedim>
1098 template <
typename Number>
1106 "update_gradients")));
1107 Assert(fe_values->present_cell.is_initialized(),
1110 fe_values->present_cell.n_dofs_for_dof_handler());
1115 fe_values->present_cell.get_interpolated_dof_values(fe_function,
1117 internal::do_function_divergences<dim, spacedim>(
1119 fe_values->finite_element_output.shape_gradients,
1120 shape_function_data,
1126 template <
int dim,
int spacedim>
1127 template <
class InputVector>
1131 const InputVector &dof_values,
1137 "update_gradients")));
1138 Assert(fe_values->present_cell.is_initialized(),
1142 internal::do_function_divergences<dim, spacedim>(
1144 fe_values->finite_element_output.shape_gradients,
1145 shape_function_data,
1151 template <
int dim,
int spacedim>
1152 template <
typename Number>
1161 Assert(fe_values->present_cell.is_initialized(),
1166 fe_values->present_cell.get_interpolated_dof_values(fe_function,
1168 internal::do_function_values<dim, spacedim>(
1170 fe_values->finite_element_output.shape_values,
1171 shape_function_data,
1177 template <
int dim,
int spacedim>
1178 template <
class InputVector>
1181 const InputVector &dof_values,
1188 Assert(fe_values->present_cell.is_initialized(),
1192 internal::do_function_values<dim, spacedim>(
1194 fe_values->finite_element_output.shape_values,
1195 shape_function_data,
1201 template <
int dim,
int spacedim>
1202 template <
typename Number>
1210 "update_gradients")));
1211 Assert(fe_values->present_cell.is_initialized(),
1214 fe_values->present_cell.n_dofs_for_dof_handler());
1219 fe_values->present_cell.get_interpolated_dof_values(fe_function,
1221 internal::do_function_divergences<dim, spacedim>(
1223 fe_values->finite_element_output.shape_gradients,
1224 shape_function_data,
1230 template <
int dim,
int spacedim>
1231 template <
class InputVector>
1234 const InputVector &dof_values,
1240 "update_gradients")));
1241 Assert(fe_values->present_cell.is_initialized(),
1245 internal::do_function_divergences<dim, spacedim>(
1247 fe_values->finite_element_output.shape_gradients,
1248 shape_function_data,
1254 template <
int dim,
int spacedim>
1255 template <
typename Number>
1263 "update_gradients")));
1264 Assert(fe_values->present_cell.is_initialized(),
1267 fe_values->present_cell.n_dofs_for_dof_handler());
1272 fe_values->present_cell.get_interpolated_dof_values(fe_function,
1274 internal::do_function_gradients<dim, spacedim>(
1276 fe_values->finite_element_output.shape_gradients,
1277 shape_function_data,
1283 template <
int dim,
int spacedim>
1284 template <
class InputVector>
1287 const InputVector &dof_values,
1293 "update_gradients")));
1294 Assert(fe_values->present_cell.is_initialized(),
1298 internal::do_function_gradients<dim, spacedim>(
1300 fe_values->finite_element_output.shape_gradients,
1301 shape_function_data,
1311 template <
int dim,
int spacedim>
1317 scalars.resize(n_scalars);
1322 const unsigned int n_vectors =
1327 vectors.resize(n_vectors);
1330 const unsigned int n_symmetric_second_order_tensors =
1336 symmetric_second_order_tensors.resize(n_symmetric_second_order_tensors);
1339 const unsigned int n_second_order_tensors =
1344 second_order_tensors.resize(n_second_order_tensors);
1351 #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
typename ProductType< Number, hessian_type >::type solution_hessian_type
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_gradients_from_local_dof_values(const InputVector &dof_values, std::vector< solution_gradient_type< typename InputVector::value_type >> &gradients) const
std::vector< ShapeFunctionData > shape_function_data
typename ProductType< Number, value_type >::type solution_laplacian_type
void get_function_third_derivatives(const ReadVector< Number > &fe_function, std::vector< solution_third_derivative_type< Number >> &third_derivatives) const
void get_function_gradients(const ReadVector< Number > &fe_function, std::vector< solution_gradient_type< Number >> &gradients) const
typename ProductType< Number, third_derivative_type >::type solution_third_derivative_type
typename ProductType< Number, value_type >::type solution_value_type
typename ProductType< Number, gradient_type >::type solution_gradient_type
void get_function_laplacians(const ReadVector< Number > &fe_function, std::vector< solution_laplacian_type< Number >> &laplacians) 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(const ReadVector< Number > &fe_function, std::vector< solution_value_type< Number >> &values) const
void get_function_hessians(const ReadVector< Number > &fe_function, std::vector< solution_hessian_type< Number >> &hessians) 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_third_derivatives_from_local_dof_values(const InputVector &dof_values, std::vector< solution_third_derivative_type< typename InputVector::value_type >> &third_derivatives) 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
typename ProductType< Number, third_derivative_type >::type solution_third_derivative_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
typename ProductType< Number, divergence_type >::type solution_divergence_type
unsigned int first_vector_component
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_laplacians(const ReadVector< Number > &fe_function, std::vector< solution_laplacian_type< Number >> &laplacians) const
void get_function_third_derivatives(const ReadVector< Number > &fe_function, std::vector< solution_third_derivative_type< Number >> &third_derivatives) const
void get_function_hessians(const ReadVector< Number > &fe_function, std::vector< solution_hessian_type< Number >> &hessians) const
void get_function_curls(const ReadVector< Number > &fe_function, std::vector< solution_curl_type< Number >> &curls) const
typename ProductType< Number, symmetric_gradient_type >::type solution_symmetric_gradient_type
void get_function_divergences(const ReadVector< Number > &fe_function, std::vector< solution_divergence_type< Number >> &divergences) const
typename ProductType< Number, gradient_type >::type solution_gradient_type
typename ProductType< Number, value_type >::type solution_value_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_gradients_from_local_dof_values(const InputVector &dof_values, std::vector< solution_gradient_type< typename InputVector::value_type >> &gradients) 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_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_values(const ReadVector< Number > &fe_function, std::vector< solution_value_type< Number >> &values) const
typename ProductType< Number, curl_type >::type solution_curl_type
std::vector< ShapeFunctionData > shape_function_data
typename ProductType< Number, value_type >::type solution_laplacian_type
void get_function_curls_from_local_dof_values(const InputVector &dof_values, std::vector< solution_curl_type< typename InputVector::value_type >> &curls) const
void get_function_gradients(const ReadVector< Number > &fe_function, std::vector< solution_gradient_type< Number >> &gradients) 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_symmetric_gradients(const ReadVector< Number > &fe_function, std::vector< solution_symmetric_gradient_type< Number >> &symmetric_gradients) const
unsigned int n_dofs_per_cell() const
unsigned int n_components() const
std::pair< unsigned int, unsigned int > system_to_component_index(const unsigned int index) const
const ComponentMask & get_nonzero_components(const unsigned int i) const
bool is_primitive() const
unsigned int n_nonzero_components(const unsigned int i) const
virtual size_type size() const =0
constexpr DEAL_II_HOST SymmetricTensor()=default
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
static ::ExceptionBase & ExcDimensionMismatch(std::size_t arg1, std::size_t arg2)
#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 & 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.
SymmetricTensor< 2, dim, Number > d(const Tensor< 2, dim, Number > &F, const Tensor< 2, dim, Number > &dF_dt)
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)