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(),
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(),
402 internal::do_function_values<dim, spacedim>(
404 fe_values->finite_element_output.shape_values,
411 template <
int dim,
int spacedim>
412 template <
typename Number>
420 "update_gradients")));
421 Assert(fe_values->present_cell.is_initialized(),
424 fe_values->present_cell.n_dofs_for_dof_handler());
429 fe_values->present_cell.get_interpolated_dof_values(fe_function,
431 internal::do_function_derivatives<1, dim, spacedim>(
433 fe_values->finite_element_output.shape_gradients,
440 template <
int dim,
int spacedim>
441 template <
typename InputVector>
444 const InputVector &dof_values,
450 "update_gradients")));
451 Assert(fe_values->present_cell.is_initialized(),
456 internal::do_function_derivatives<1, dim, spacedim>(
458 fe_values->finite_element_output.shape_gradients,
465 template <
int dim,
int spacedim>
466 template <
typename Number>
474 "update_hessians")));
475 Assert(fe_values->present_cell.is_initialized(),
478 fe_values->present_cell.n_dofs_for_dof_handler());
483 fe_values->present_cell.get_interpolated_dof_values(fe_function,
485 internal::do_function_derivatives<2, dim, spacedim>(
487 fe_values->finite_element_output.shape_hessians,
494 template <
int dim,
int spacedim>
495 template <
class InputVector>
498 const InputVector &dof_values,
504 "update_hessians")));
505 Assert(fe_values->present_cell.is_initialized(),
510 internal::do_function_derivatives<2, dim, spacedim>(
512 fe_values->finite_element_output.shape_hessians,
519 template <
int dim,
int spacedim>
520 template <
typename Number>
528 "update_hessians")));
529 Assert(fe_values->present_cell.is_initialized(),
532 fe_values->present_cell.n_dofs_for_dof_handler());
537 fe_values->present_cell.get_interpolated_dof_values(fe_function,
539 internal::do_function_laplacians<dim, spacedim>(
541 fe_values->finite_element_output.shape_hessians,
548 template <
int dim,
int spacedim>
549 template <
class InputVector>
552 const InputVector &dof_values,
558 "update_hessians")));
559 Assert(fe_values->present_cell.is_initialized(),
564 internal::do_function_laplacians<dim, spacedim>(
566 fe_values->finite_element_output.shape_hessians,
573 template <
int dim,
int spacedim>
574 template <
typename Number>
583 "update_3rd_derivatives")));
584 Assert(fe_values->present_cell.is_initialized(),
587 fe_values->present_cell.n_dofs_for_dof_handler());
588 AssertDimension(third_derivatives.size(), fe_values->n_quadrature_points);
592 fe_values->present_cell.get_interpolated_dof_values(fe_function,
594 internal::do_function_derivatives<3, dim, spacedim>(
596 fe_values->finite_element_output.shape_3rd_derivatives,
603 template <
int dim,
int spacedim>
604 template <
class InputVector>
607 const InputVector &dof_values,
610 &third_derivatives)
const
614 "update_3rd_derivatives")));
615 Assert(fe_values->present_cell.is_initialized(),
618 AssertDimension(third_derivatives.size(), fe_values->n_quadrature_points);
620 internal::do_function_derivatives<3, dim, spacedim>(
622 fe_values->finite_element_output.shape_3rd_derivatives,
629 template <
int dim,
int spacedim>
630 template <
typename Number>
639 Assert(fe_values->present_cell.is_initialized(),
645 fe_values->present_cell.get_interpolated_dof_values(fe_function,
647 internal::do_function_values<dim, spacedim>(
649 fe_values->finite_element_output.shape_values,
656 template <
int dim,
int spacedim>
657 template <
class InputVector>
660 const InputVector &dof_values,
667 Assert(fe_values->present_cell.is_initialized(),
672 internal::do_function_values<dim, spacedim>(
674 fe_values->finite_element_output.shape_values,
681 template <
int dim,
int spacedim>
682 template <
typename Number>
690 "update_gradients")));
691 Assert(fe_values->present_cell.is_initialized(),
694 fe_values->present_cell.n_dofs_for_dof_handler());
699 fe_values->present_cell.get_interpolated_dof_values(fe_function,
701 internal::do_function_derivatives<1, dim, spacedim>(
703 fe_values->finite_element_output.shape_gradients,
710 template <
int dim,
int spacedim>
711 template <
typename InputVector>
714 const InputVector &dof_values,
720 "update_gradients")));
721 Assert(fe_values->present_cell.is_initialized(),
726 internal::do_function_derivatives<1, dim, spacedim>(
728 fe_values->finite_element_output.shape_gradients,
735 template <
int dim,
int spacedim>
736 template <
typename Number>
745 "update_gradients")));
746 Assert(fe_values->present_cell.is_initialized(),
749 fe_values->present_cell.n_dofs_for_dof_handler());
750 AssertDimension(symmetric_gradients.size(), fe_values->n_quadrature_points);
754 fe_values->present_cell.get_interpolated_dof_values(fe_function,
756 internal::do_function_symmetric_gradients<dim, spacedim>(
758 fe_values->finite_element_output.shape_gradients,
760 symmetric_gradients);
765 template <
int dim,
int spacedim>
766 template <
class InputVector>
769 const InputVector &dof_values,
772 &symmetric_gradients)
const
776 "update_gradients")));
777 Assert(fe_values->present_cell.is_initialized(),
780 AssertDimension(symmetric_gradients.size(), fe_values->n_quadrature_points);
782 internal::do_function_symmetric_gradients<dim, spacedim>(
784 fe_values->finite_element_output.shape_gradients,
786 symmetric_gradients);
791 template <
int dim,
int spacedim>
792 template <
typename Number>
800 "update_gradients")));
801 Assert(fe_values->present_cell.is_initialized(),
804 fe_values->present_cell.n_dofs_for_dof_handler());
810 fe_values->present_cell.get_interpolated_dof_values(fe_function,
812 internal::do_function_divergences<dim, spacedim>(
814 fe_values->finite_element_output.shape_gradients,
821 template <
int dim,
int spacedim>
822 template <
class InputVector>
825 const InputVector &dof_values,
831 "update_gradients")));
832 Assert(fe_values->present_cell.is_initialized(),
837 internal::do_function_divergences<dim, spacedim>(
839 fe_values->finite_element_output.shape_gradients,
846 template <
int dim,
int spacedim>
847 template <
typename Number>
855 "update_gradients")));
856 Assert(fe_values->present_cell.is_initialized(),
857 ExcMessage(
"FEValues object is not reinited to any cell"));
859 fe_values->present_cell.n_dofs_for_dof_handler());
864 fe_values->present_cell.get_interpolated_dof_values(fe_function,
866 internal::do_function_curls<dim, spacedim>(
868 fe_values->finite_element_output.shape_gradients,
875 template <
int dim,
int spacedim>
876 template <
class InputVector>
879 const InputVector &dof_values,
885 "update_gradients")));
886 Assert(fe_values->present_cell.is_initialized(),
887 ExcMessage(
"FEValues object is not reinited to any cell"));
891 internal::do_function_curls<dim, spacedim>(
893 fe_values->finite_element_output.shape_gradients,
900 template <
int dim,
int spacedim>
901 template <
typename Number>
909 "update_hessians")));
910 Assert(fe_values->present_cell.is_initialized(),
913 fe_values->present_cell.n_dofs_for_dof_handler());
918 fe_values->present_cell.get_interpolated_dof_values(fe_function,
920 internal::do_function_derivatives<2, dim, spacedim>(
922 fe_values->finite_element_output.shape_hessians,
929 template <
int dim,
int spacedim>
930 template <
class InputVector>
933 const InputVector &dof_values,
939 "update_hessians")));
940 Assert(fe_values->present_cell.is_initialized(),
945 internal::do_function_derivatives<2, dim, spacedim>(
947 fe_values->finite_element_output.shape_hessians,
954 template <
int dim,
int spacedim>
955 template <
typename Number>
963 "update_hessians")));
964 Assert(laplacians.size() == fe_values->n_quadrature_points,
966 fe_values->n_quadrature_points));
967 Assert(fe_values->present_cell.is_initialized(),
970 fe_function.
size() == fe_values->present_cell.n_dofs_for_dof_handler(),
972 fe_values->present_cell.n_dofs_for_dof_handler()));
977 fe_values->present_cell.get_interpolated_dof_values(fe_function,
979 internal::do_function_laplacians<dim, spacedim>(
981 fe_values->finite_element_output.shape_hessians,
988 template <
int dim,
int spacedim>
989 template <
class InputVector>
992 const InputVector &dof_values,
998 "update_hessians")));
999 Assert(laplacians.size() == fe_values->n_quadrature_points,
1001 fe_values->n_quadrature_points));
1002 Assert(fe_values->present_cell.is_initialized(),
1007 internal::do_function_laplacians<dim, spacedim>(
1009 fe_values->finite_element_output.shape_hessians,
1010 shape_function_data,
1016 template <
int dim,
int spacedim>
1017 template <
typename Number>
1026 "update_3rd_derivatives")));
1027 Assert(fe_values->present_cell.is_initialized(),
1030 fe_values->present_cell.n_dofs_for_dof_handler());
1031 AssertDimension(third_derivatives.size(), fe_values->n_quadrature_points);
1035 fe_values->present_cell.get_interpolated_dof_values(fe_function,
1037 internal::do_function_derivatives<3, dim, spacedim>(
1039 fe_values->finite_element_output.shape_3rd_derivatives,
1040 shape_function_data,
1046 template <
int dim,
int spacedim>
1047 template <
class InputVector>
1050 const InputVector &dof_values,
1053 &third_derivatives)
const
1057 "update_3rd_derivatives")));
1058 Assert(fe_values->present_cell.is_initialized(),
1061 AssertDimension(third_derivatives.size(), fe_values->n_quadrature_points);
1063 internal::do_function_derivatives<3, dim, spacedim>(
1065 fe_values->finite_element_output.shape_3rd_derivatives,
1066 shape_function_data,
1072 template <
int dim,
int spacedim>
1073 template <
typename Number>
1082 Assert(fe_values->present_cell.is_initialized(),
1088 fe_values->present_cell.get_interpolated_dof_values(fe_function,
1090 internal::do_function_values<dim, spacedim>(
1092 fe_values->finite_element_output.shape_values,
1093 shape_function_data,
1099 template <
int dim,
int spacedim>
1100 template <
class InputVector>
1103 const InputVector &dof_values,
1110 Assert(fe_values->present_cell.is_initialized(),
1115 internal::do_function_values<dim, spacedim>(
1117 fe_values->finite_element_output.shape_values,
1118 shape_function_data,
1124 template <
int dim,
int spacedim>
1125 template <
typename Number>
1133 "update_gradients")));
1134 Assert(fe_values->present_cell.is_initialized(),
1137 fe_values->present_cell.n_dofs_for_dof_handler());
1143 fe_values->present_cell.get_interpolated_dof_values(fe_function,
1145 internal::do_function_divergences<dim, spacedim>(
1147 fe_values->finite_element_output.shape_gradients,
1148 shape_function_data,
1154 template <
int dim,
int spacedim>
1155 template <
class InputVector>
1159 const InputVector &dof_values,
1165 "update_gradients")));
1166 Assert(fe_values->present_cell.is_initialized(),
1171 internal::do_function_divergences<dim, spacedim>(
1173 fe_values->finite_element_output.shape_gradients,
1174 shape_function_data,
1180 template <
int dim,
int spacedim>
1181 template <
typename Number>
1190 Assert(fe_values->present_cell.is_initialized(),
1196 fe_values->present_cell.get_interpolated_dof_values(fe_function,
1198 internal::do_function_values<dim, spacedim>(
1200 fe_values->finite_element_output.shape_values,
1201 shape_function_data,
1207 template <
int dim,
int spacedim>
1208 template <
class InputVector>
1211 const InputVector &dof_values,
1218 Assert(fe_values->present_cell.is_initialized(),
1223 internal::do_function_values<dim, spacedim>(
1225 fe_values->finite_element_output.shape_values,
1226 shape_function_data,
1232 template <
int dim,
int spacedim>
1233 template <
typename Number>
1241 "update_gradients")));
1242 Assert(fe_values->present_cell.is_initialized(),
1245 fe_values->present_cell.n_dofs_for_dof_handler());
1251 fe_values->present_cell.get_interpolated_dof_values(fe_function,
1253 internal::do_function_divergences<dim, spacedim>(
1255 fe_values->finite_element_output.shape_gradients,
1256 shape_function_data,
1262 template <
int dim,
int spacedim>
1263 template <
class InputVector>
1266 const InputVector &dof_values,
1272 "update_gradients")));
1273 Assert(fe_values->present_cell.is_initialized(),
1278 internal::do_function_divergences<dim, spacedim>(
1280 fe_values->finite_element_output.shape_gradients,
1281 shape_function_data,
1287 template <
int dim,
int spacedim>
1288 template <
typename Number>
1296 "update_gradients")));
1297 Assert(fe_values->present_cell.is_initialized(),
1300 fe_values->present_cell.n_dofs_for_dof_handler());
1306 fe_values->present_cell.get_interpolated_dof_values(fe_function,
1308 internal::do_function_gradients<dim, spacedim>(
1310 fe_values->finite_element_output.shape_gradients,
1311 shape_function_data,
1317 template <
int dim,
int spacedim>
1318 template <
class InputVector>
1321 const InputVector &dof_values,
1327 "update_gradients")));
1328 Assert(fe_values->present_cell.is_initialized(),
1333 internal::do_function_gradients<dim, spacedim>(
1335 fe_values->finite_element_output.shape_gradients,
1336 shape_function_data,
1346 template <
int dim,
int spacedim>
1352 scalars.resize(n_scalars);
1357 const unsigned int n_vectors =
1362 vectors.resize(n_vectors);
1365 const unsigned int n_symmetric_second_order_tensors =
1371 symmetric_second_order_tensors.resize(n_symmetric_second_order_tensors);
1374 const unsigned int n_second_order_tensors =
1379 second_order_tensors.resize(n_second_order_tensors);
1386#include "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)
static const unsigned int invalid_unsigned_int
Cache(const FEValuesBase< dim, spacedim > &fe_values)