27#ifdef DEAL_II_WITH_ADOLC
28# include <adolc/adouble.h>
29# include <adolc/adtl.h>
40 template <
int dim,
int spacedim>
41 inline std::vector<unsigned int>
44 std::vector<unsigned int> shape_function_to_row_table(
54 unsigned int nth_nonzero_component = 0;
59 row + nth_nonzero_component;
60 ++nth_nonzero_component;
65 return shape_function_to_row_table;
74 template <
int dim,
int spacedim>
76 const unsigned int component)
77 : fe_values(&fe_values)
78 , component(component)
79 , shape_function_data(this->fe_values->fe->n_dofs_per_cell())
87 const std::vector<unsigned int> shape_function_to_row_table =
94 if (is_primitive ==
true)
111 template <
int dim,
int spacedim>
114 , component(
numbers::invalid_unsigned_int)
119 template <
int dim,
int spacedim>
121 const unsigned int first_vector_component)
122 : fe_values(&fe_values)
123 , first_vector_component(first_vector_component)
124 , shape_function_data(this->fe_values->fe->n_dofs_per_cell())
132 const std::vector<unsigned int> shape_function_to_row_table =
135 for (
unsigned int d = 0; d < spacedim; ++d)
143 if (is_primitive ==
true)
153 shape_function_to_row_table[i * fe.
n_components() + component];
162 unsigned int n_nonzero_components = 0;
163 for (
unsigned int d = 0; d < spacedim; ++d)
166 ++n_nonzero_components;
168 if (n_nonzero_components == 0)
170 else if (n_nonzero_components > 1)
174 for (
unsigned int d = 0; d < spacedim; ++d)
176 .is_nonzero_shape_function_component[d] ==
true)
189 template <
int dim,
int spacedim>
192 , first_vector_component(
numbers::invalid_unsigned_int)
197 template <
int dim,
int spacedim>
200 const unsigned int first_tensor_component)
201 : fe_values(&fe_values)
202 , first_tensor_component(first_tensor_component)
203 , shape_function_data(this->fe_values->fe->n_dofs_per_cell())
206 Assert(first_tensor_component + (dim * dim + dim) / 2 - 1 <
209 first_tensor_component +
216 const std::vector<unsigned int> shape_function_to_row_table =
219 for (
unsigned int d = 0;
220 d < ::SymmetricTensor<2, dim>::n_independent_components;
223 const unsigned int component = first_tensor_component + d;
229 if (is_primitive ==
true)
230 shape_function_data[i].is_nonzero_shape_function_component[d] =
233 shape_function_data[i].is_nonzero_shape_function_component[d] =
236 if (shape_function_data[i].is_nonzero_shape_function_component[d] ==
238 shape_function_data[i].row_index[d] =
239 shape_function_to_row_table[i * fe.
n_components() + component];
241 shape_function_data[i].row_index[d] =
248 unsigned int n_nonzero_components = 0;
249 for (
unsigned int d = 0;
250 d < ::SymmetricTensor<2, dim>::n_independent_components;
252 if (shape_function_data[i].is_nonzero_shape_function_component[d] ==
254 ++n_nonzero_components;
256 if (n_nonzero_components == 0)
257 shape_function_data[i].single_nonzero_component = -2;
258 else if (n_nonzero_components > 1)
259 shape_function_data[i].single_nonzero_component = -1;
262 for (
unsigned int d = 0;
263 d < ::SymmetricTensor<2, dim>::n_independent_components;
265 if (shape_function_data[i]
266 .is_nonzero_shape_function_component[d] ==
true)
268 shape_function_data[i].single_nonzero_component =
269 shape_function_data[i].row_index[d];
270 shape_function_data[i].single_nonzero_component_index = d;
279 template <
int dim,
int spacedim>
282 , first_tensor_component(
numbers::invalid_unsigned_int)
287 template <
int dim,
int spacedim>
289 const unsigned int first_tensor_component)
290 : fe_values(&fe_values)
291 , first_tensor_component(first_tensor_component)
292 , shape_function_data(this->fe_values->fe->n_dofs_per_cell())
299 const std::vector<unsigned int> shape_function_to_row_table =
302 for (
unsigned int d = 0; d < dim * dim; ++d)
304 const unsigned int component = first_tensor_component + d;
310 if (is_primitive ==
true)
311 shape_function_data[i].is_nonzero_shape_function_component[d] =
314 shape_function_data[i].is_nonzero_shape_function_component[d] =
317 if (shape_function_data[i].is_nonzero_shape_function_component[d] ==
319 shape_function_data[i].row_index[d] =
320 shape_function_to_row_table[i * fe.
n_components() + component];
322 shape_function_data[i].row_index[d] =
329 unsigned int n_nonzero_components = 0;
330 for (
unsigned int d = 0; d < dim * dim; ++d)
331 if (shape_function_data[i].is_nonzero_shape_function_component[d] ==
333 ++n_nonzero_components;
335 if (n_nonzero_components == 0)
336 shape_function_data[i].single_nonzero_component = -2;
337 else if (n_nonzero_components > 1)
338 shape_function_data[i].single_nonzero_component = -1;
341 for (
unsigned int d = 0; d < dim * dim; ++d)
342 if (shape_function_data[i]
343 .is_nonzero_shape_function_component[d] ==
true)
345 shape_function_data[i].single_nonzero_component =
346 shape_function_data[i].row_index[d];
347 shape_function_data[i].single_nonzero_component_index = d;
356 template <
int dim,
int spacedim>
359 , first_tensor_component(
numbers::invalid_unsigned_int)
364 template <
int dim,
int spacedim>
365 template <
typename Number>
374 Assert(fe_values->present_cell.is_initialized(),
381 fe_values->present_cell.get_interpolated_dof_values(fe_function,
383 internal::do_function_values<dim, spacedim>(
385 fe_values->finite_element_output.shape_values,
392 template <
int dim,
int spacedim>
393 template <
class InputVector>
396 const InputVector &dof_values,
403 Assert(fe_values->present_cell.is_initialized(),
408 internal::do_function_values<dim, spacedim>(
410 fe_values->finite_element_output.shape_values,
417 template <
int dim,
int spacedim>
418 template <
typename Number>
426 "update_gradients")));
427 Assert(fe_values->present_cell.is_initialized(),
430 fe_values->present_cell.n_dofs_for_dof_handler());
435 fe_values->present_cell.get_interpolated_dof_values(fe_function,
437 internal::do_function_derivatives<1, dim, spacedim>(
439 fe_values->finite_element_output.shape_gradients,
446 template <
int dim,
int spacedim>
447 template <
typename InputVector>
450 const InputVector &dof_values,
456 "update_gradients")));
457 Assert(fe_values->present_cell.is_initialized(),
462 internal::do_function_derivatives<1, dim, spacedim>(
464 fe_values->finite_element_output.shape_gradients,
471 template <
int dim,
int spacedim>
472 template <
typename Number>
480 "update_hessians")));
481 Assert(fe_values->present_cell.is_initialized(),
484 fe_values->present_cell.n_dofs_for_dof_handler());
489 fe_values->present_cell.get_interpolated_dof_values(fe_function,
491 internal::do_function_derivatives<2, dim, spacedim>(
493 fe_values->finite_element_output.shape_hessians,
500 template <
int dim,
int spacedim>
501 template <
class InputVector>
504 const InputVector &dof_values,
510 "update_hessians")));
511 Assert(fe_values->present_cell.is_initialized(),
516 internal::do_function_derivatives<2, dim, spacedim>(
518 fe_values->finite_element_output.shape_hessians,
525 template <
int dim,
int spacedim>
526 template <
typename Number>
534 "update_hessians")));
535 Assert(fe_values->present_cell.is_initialized(),
538 fe_values->present_cell.n_dofs_for_dof_handler());
543 fe_values->present_cell.get_interpolated_dof_values(fe_function,
545 internal::do_function_laplacians<dim, spacedim>(
547 fe_values->finite_element_output.shape_hessians,
554 template <
int dim,
int spacedim>
555 template <
class InputVector>
558 const InputVector &dof_values,
564 "update_hessians")));
565 Assert(fe_values->present_cell.is_initialized(),
570 internal::do_function_laplacians<dim, spacedim>(
572 fe_values->finite_element_output.shape_hessians,
579 template <
int dim,
int spacedim>
580 template <
typename Number>
589 "update_3rd_derivatives")));
590 Assert(fe_values->present_cell.is_initialized(),
593 fe_values->present_cell.n_dofs_for_dof_handler());
594 AssertDimension(third_derivatives.size(), fe_values->n_quadrature_points);
598 fe_values->present_cell.get_interpolated_dof_values(fe_function,
600 internal::do_function_derivatives<3, dim, spacedim>(
602 fe_values->finite_element_output.shape_3rd_derivatives,
609 template <
int dim,
int spacedim>
610 template <
class InputVector>
613 const InputVector &dof_values,
616 &third_derivatives)
const
620 "update_3rd_derivatives")));
621 Assert(fe_values->present_cell.is_initialized(),
624 AssertDimension(third_derivatives.size(), fe_values->n_quadrature_points);
626 internal::do_function_derivatives<3, dim, spacedim>(
628 fe_values->finite_element_output.shape_3rd_derivatives,
635 template <
int dim,
int spacedim>
636 template <
typename Number>
645 Assert(fe_values->present_cell.is_initialized(),
651 fe_values->present_cell.get_interpolated_dof_values(fe_function,
653 internal::do_function_values<dim, spacedim>(
655 fe_values->finite_element_output.shape_values,
662 template <
int dim,
int spacedim>
663 template <
class InputVector>
666 const InputVector &dof_values,
673 Assert(fe_values->present_cell.is_initialized(),
678 internal::do_function_values<dim, spacedim>(
680 fe_values->finite_element_output.shape_values,
687 template <
int dim,
int spacedim>
688 template <
typename Number>
696 "update_gradients")));
697 Assert(fe_values->present_cell.is_initialized(),
700 fe_values->present_cell.n_dofs_for_dof_handler());
705 fe_values->present_cell.get_interpolated_dof_values(fe_function,
707 internal::do_function_derivatives<1, dim, spacedim>(
709 fe_values->finite_element_output.shape_gradients,
716 template <
int dim,
int spacedim>
717 template <
typename InputVector>
720 const InputVector &dof_values,
726 "update_gradients")));
727 Assert(fe_values->present_cell.is_initialized(),
732 internal::do_function_derivatives<1, dim, spacedim>(
734 fe_values->finite_element_output.shape_gradients,
741 template <
int dim,
int spacedim>
742 template <
typename Number>
751 "update_gradients")));
752 Assert(fe_values->present_cell.is_initialized(),
755 fe_values->present_cell.n_dofs_for_dof_handler());
756 AssertDimension(symmetric_gradients.size(), fe_values->n_quadrature_points);
760 fe_values->present_cell.get_interpolated_dof_values(fe_function,
762 internal::do_function_symmetric_gradients<dim, spacedim>(
764 fe_values->finite_element_output.shape_gradients,
766 symmetric_gradients);
771 template <
int dim,
int spacedim>
772 template <
class InputVector>
775 const InputVector &dof_values,
778 &symmetric_gradients)
const
782 "update_gradients")));
783 Assert(fe_values->present_cell.is_initialized(),
786 AssertDimension(symmetric_gradients.size(), fe_values->n_quadrature_points);
788 internal::do_function_symmetric_gradients<dim, spacedim>(
790 fe_values->finite_element_output.shape_gradients,
792 symmetric_gradients);
797 template <
int dim,
int spacedim>
798 template <
typename Number>
806 "update_gradients")));
807 Assert(fe_values->present_cell.is_initialized(),
810 fe_values->present_cell.n_dofs_for_dof_handler());
816 fe_values->present_cell.get_interpolated_dof_values(fe_function,
818 internal::do_function_divergences<dim, spacedim>(
820 fe_values->finite_element_output.shape_gradients,
827 template <
int dim,
int spacedim>
828 template <
class InputVector>
831 const InputVector &dof_values,
837 "update_gradients")));
838 Assert(fe_values->present_cell.is_initialized(),
843 internal::do_function_divergences<dim, spacedim>(
845 fe_values->finite_element_output.shape_gradients,
852 template <
int dim,
int spacedim>
853 template <
typename Number>
861 "update_gradients")));
862 Assert(fe_values->present_cell.is_initialized(),
863 ExcMessage(
"FEValues object is not reinited to any cell"));
865 fe_values->present_cell.n_dofs_for_dof_handler());
870 fe_values->present_cell.get_interpolated_dof_values(fe_function,
872 internal::do_function_curls<dim, spacedim>(
874 fe_values->finite_element_output.shape_gradients,
881 template <
int dim,
int spacedim>
882 template <
class InputVector>
885 const InputVector &dof_values,
891 "update_gradients")));
892 Assert(fe_values->present_cell.is_initialized(),
893 ExcMessage(
"FEValues object is not reinited to any cell"));
897 internal::do_function_curls<dim, spacedim>(
899 fe_values->finite_element_output.shape_gradients,
906 template <
int dim,
int spacedim>
907 template <
typename Number>
915 "update_hessians")));
916 Assert(fe_values->present_cell.is_initialized(),
919 fe_values->present_cell.n_dofs_for_dof_handler());
924 fe_values->present_cell.get_interpolated_dof_values(fe_function,
926 internal::do_function_derivatives<2, dim, spacedim>(
928 fe_values->finite_element_output.shape_hessians,
935 template <
int dim,
int spacedim>
936 template <
class InputVector>
939 const InputVector &dof_values,
945 "update_hessians")));
946 Assert(fe_values->present_cell.is_initialized(),
951 internal::do_function_derivatives<2, dim, spacedim>(
953 fe_values->finite_element_output.shape_hessians,
960 template <
int dim,
int spacedim>
961 template <
typename Number>
969 "update_hessians")));
970 Assert(laplacians.size() == fe_values->n_quadrature_points,
972 fe_values->n_quadrature_points));
973 Assert(fe_values->present_cell.is_initialized(),
976 fe_function.
size() == fe_values->present_cell.n_dofs_for_dof_handler(),
978 fe_values->present_cell.n_dofs_for_dof_handler()));
983 fe_values->present_cell.get_interpolated_dof_values(fe_function,
985 internal::do_function_laplacians<dim, spacedim>(
987 fe_values->finite_element_output.shape_hessians,
994 template <
int dim,
int spacedim>
995 template <
class InputVector>
998 const InputVector &dof_values,
1004 "update_hessians")));
1005 Assert(laplacians.size() == fe_values->n_quadrature_points,
1007 fe_values->n_quadrature_points));
1008 Assert(fe_values->present_cell.is_initialized(),
1013 internal::do_function_laplacians<dim, spacedim>(
1015 fe_values->finite_element_output.shape_hessians,
1016 shape_function_data,
1022 template <
int dim,
int spacedim>
1023 template <
typename Number>
1032 "update_3rd_derivatives")));
1033 Assert(fe_values->present_cell.is_initialized(),
1036 fe_values->present_cell.n_dofs_for_dof_handler());
1037 AssertDimension(third_derivatives.size(), fe_values->n_quadrature_points);
1041 fe_values->present_cell.get_interpolated_dof_values(fe_function,
1043 internal::do_function_derivatives<3, dim, spacedim>(
1045 fe_values->finite_element_output.shape_3rd_derivatives,
1046 shape_function_data,
1052 template <
int dim,
int spacedim>
1053 template <
class InputVector>
1056 const InputVector &dof_values,
1059 &third_derivatives)
const
1063 "update_3rd_derivatives")));
1064 Assert(fe_values->present_cell.is_initialized(),
1067 AssertDimension(third_derivatives.size(), fe_values->n_quadrature_points);
1069 internal::do_function_derivatives<3, dim, spacedim>(
1071 fe_values->finite_element_output.shape_3rd_derivatives,
1072 shape_function_data,
1078 template <
int dim,
int spacedim>
1079 template <
typename Number>
1088 Assert(fe_values->present_cell.is_initialized(),
1094 fe_values->present_cell.get_interpolated_dof_values(fe_function,
1096 internal::do_function_values<dim, spacedim>(
1098 fe_values->finite_element_output.shape_values,
1099 shape_function_data,
1105 template <
int dim,
int spacedim>
1106 template <
class InputVector>
1109 const InputVector &dof_values,
1116 Assert(fe_values->present_cell.is_initialized(),
1121 internal::do_function_values<dim, spacedim>(
1123 fe_values->finite_element_output.shape_values,
1124 shape_function_data,
1130 template <
int dim,
int spacedim>
1131 template <
typename Number>
1139 "update_gradients")));
1140 Assert(fe_values->present_cell.is_initialized(),
1143 fe_values->present_cell.n_dofs_for_dof_handler());
1149 fe_values->present_cell.get_interpolated_dof_values(fe_function,
1151 internal::do_function_divergences<dim, spacedim>(
1153 fe_values->finite_element_output.shape_gradients,
1154 shape_function_data,
1160 template <
int dim,
int spacedim>
1161 template <
class InputVector>
1165 const InputVector &dof_values,
1171 "update_gradients")));
1172 Assert(fe_values->present_cell.is_initialized(),
1177 internal::do_function_divergences<dim, spacedim>(
1179 fe_values->finite_element_output.shape_gradients,
1180 shape_function_data,
1186 template <
int dim,
int spacedim>
1187 template <
typename Number>
1196 Assert(fe_values->present_cell.is_initialized(),
1202 fe_values->present_cell.get_interpolated_dof_values(fe_function,
1204 internal::do_function_values<dim, spacedim>(
1206 fe_values->finite_element_output.shape_values,
1207 shape_function_data,
1213 template <
int dim,
int spacedim>
1214 template <
class InputVector>
1217 const InputVector &dof_values,
1224 Assert(fe_values->present_cell.is_initialized(),
1229 internal::do_function_values<dim, spacedim>(
1231 fe_values->finite_element_output.shape_values,
1232 shape_function_data,
1238 template <
int dim,
int spacedim>
1239 template <
typename Number>
1247 "update_gradients")));
1248 Assert(fe_values->present_cell.is_initialized(),
1251 fe_values->present_cell.n_dofs_for_dof_handler());
1257 fe_values->present_cell.get_interpolated_dof_values(fe_function,
1259 internal::do_function_divergences<dim, spacedim>(
1261 fe_values->finite_element_output.shape_gradients,
1262 shape_function_data,
1268 template <
int dim,
int spacedim>
1269 template <
class InputVector>
1272 const InputVector &dof_values,
1278 "update_gradients")));
1279 Assert(fe_values->present_cell.is_initialized(),
1284 internal::do_function_divergences<dim, spacedim>(
1286 fe_values->finite_element_output.shape_gradients,
1287 shape_function_data,
1293 template <
int dim,
int spacedim>
1294 template <
typename Number>
1302 "update_gradients")));
1303 Assert(fe_values->present_cell.is_initialized(),
1306 fe_values->present_cell.n_dofs_for_dof_handler());
1312 fe_values->present_cell.get_interpolated_dof_values(fe_function,
1314 internal::do_function_gradients<dim, spacedim>(
1316 fe_values->finite_element_output.shape_gradients,
1317 shape_function_data,
1323 template <
int dim,
int spacedim>
1324 template <
class InputVector>
1327 const InputVector &dof_values,
1333 "update_gradients")));
1334 Assert(fe_values->present_cell.is_initialized(),
1339 internal::do_function_gradients<dim, spacedim>(
1341 fe_values->finite_element_output.shape_gradients,
1342 shape_function_data,
1352 template <
int dim,
int spacedim>
1358 scalars.resize(n_scalars);
1363 const unsigned int n_vectors =
1368 vectors.resize(n_vectors);
1371 const unsigned int n_symmetric_second_order_tensors =
1377 symmetric_second_order_tensors.resize(n_symmetric_second_order_tensors);
1380 const unsigned int n_second_order_tensors =
1385 second_order_tensors.resize(n_second_order_tensors);
1392#include "fe/fe_values_views.inst"
auto make_const_array_view(const Container &container) -> decltype(make_array_view(container))
const ObserverPointer< 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, hessian_type >::type solution_hessian_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, value_type >::type solution_laplacian_type
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_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
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
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
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, divergence_type >::type solution_divergence_type
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, hessian_type >::type solution_hessian_type
void get_function_symmetric_gradients(const ReadVector< Number > &fe_function, std::vector< solution_symmetric_gradient_type< Number > > &symmetric_gradients) const
typename ProductType< Number, symmetric_gradient_type >::type solution_symmetric_gradient_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, gradient_type >::type solution_gradient_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, curl_type >::type solution_curl_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
typename ProductType< Number, value_type >::type solution_laplacian_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_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.
std::vector< unsigned int > make_shape_function_to_row_table(const FiniteElement< dim, spacedim > &fe)
constexpr unsigned int invalid_unsigned_int
Cache(const FEValuesBase< dim, spacedim > &fe_values)