16#ifndef dealii_fe_values_h
17#define dealii_fe_values_h
51#ifdef DEAL_II_WITH_PETSC
59template <
int dim,
int spacedim = dim>
69 template <
int dim,
class NumberType =
double>
78 template <
class NumberType>
90 template <
class NumberType>
102 template <
class NumberType>
145 template <
int dim,
int spacedim = dim>
183 template <
typename Number>
192 template <
typename Number>
202 template <
typename Number>
212 template <
typename Number>
222 template <
typename Number>
232 template <
typename Number>
360 value(const
unsigned int shape_function, const
unsigned int q_point) const;
374 const
unsigned int q_point) const;
388 const
unsigned int q_point) const;
402 const
unsigned int q_point) const;
421 template <class InputVector>
424 const InputVector &fe_function,
462 template <class InputVector>
465 const InputVector &dof_values,
486 template <class InputVector>
489 const InputVector &fe_function,
499 template <class InputVector>
502 const InputVector &dof_values,
523 template <class InputVector>
526 const InputVector &fe_function,
536 template <class InputVector>
539 const InputVector &dof_values,
562 template <class InputVector>
565 const InputVector &fe_function,
575 template <class InputVector>
578 const InputVector &dof_values,
601 template <class InputVector>
604 const InputVector &fe_function,
607 &third_derivatives) const;
615 template <class InputVector>
618 const InputVector &dof_values,
621 &third_derivatives) const;
673 template <
int dim,
int spacedim = dim>
719 using curl_type = typename ::internal::CurlType<spacedim>::type;
741 template <
typename Number>
750 template <
typename Number>
760 template <
typename Number>
770 template <
typename Number>
780 template <
typename Number>
790 template <
typename Number>
799 template <
typename Number>
809 template <
typename Number>
819 template <
typename Number>
940 const unsigned int first_vector_component);
990 value(
const unsigned int shape_function,
const unsigned int q_point)
const;
1007 const unsigned int q_point)
const;
1026 const unsigned int q_point)
const;
1040 const unsigned int q_point)
const;
1063 curl(
const unsigned int shape_function,
const unsigned int q_point)
const;
1077 const unsigned int q_point)
const;
1091 const unsigned int q_point)
const;
1110 template <
class InputVector>
1113 const InputVector &fe_function,
1151 template <
class InputVector>
1154 const InputVector &dof_values,
1175 template <
class InputVector>
1178 const InputVector &fe_function,
1188 template <
class InputVector>
1191 const InputVector &dof_values,
1218 template <
class InputVector>
1220 get_function_symmetric_gradients(
1221 const InputVector &fe_function,
1224 &symmetric_gradients)
const;
1232 template <
class InputVector>
1234 get_function_symmetric_gradients_from_local_dof_values(
1235 const InputVector &dof_values,
1238 &symmetric_gradients)
const;
1258 template <
class InputVector>
1260 get_function_divergences(
1261 const InputVector &fe_function,
1263 &divergences)
const;
1271 template <
class InputVector>
1273 get_function_divergences_from_local_dof_values(
1274 const InputVector &dof_values,
1276 &divergences)
const;
1296 template <
class InputVector>
1299 const InputVector &fe_function,
1309 template <
class InputVector>
1311 get_function_curls_from_local_dof_values(
1312 const InputVector &dof_values,
1333 template <
class InputVector>
1336 const InputVector &fe_function,
1346 template <
class InputVector>
1349 const InputVector &dof_values,
1371 template <
class InputVector>
1374 const InputVector &fe_function,
1384 template <
class InputVector>
1387 const InputVector &dof_values,
1409 template <
class InputVector>
1412 const InputVector &fe_function,
1415 &third_derivatives)
const;
1423 template <
class InputVector>
1426 const InputVector &dof_values,
1429 &third_derivatives)
const;
1450 template <
int rank,
int dim,
int spacedim = dim>
1475 template <
int dim,
int spacedim>
1504 template <
typename Number>
1513 template <
typename Number>
1524 template <
typename Number>
1548 struct ShapeFunctionData
1558 bool is_nonzero_shape_function_component
1559 [value_type::n_independent_components];
1570 unsigned int row_index[value_type::n_independent_components];
1603 const unsigned int first_tensor_component);
1648 value(const
unsigned int shape_function, const
unsigned int q_point) const;
1664 divergence(const
unsigned int shape_function,
1665 const
unsigned int q_point) const;
1684 template <class InputVector>
1687 const InputVector &fe_function,
1725 template <class InputVector>
1728 const InputVector &dof_values,
1753 template <class InputVector>
1755 get_function_divergences(
1756 const InputVector &fe_function,
1758 &divergences) const;
1766 template <class InputVector>
1768 get_function_divergences_from_local_dof_values(
1769 const InputVector &dof_values,
1771 &divergences) const;
1783 const
unsigned int first_tensor_component;
1792 template <
int rank,
int dim,
int spacedim = dim>
1813 template <
int dim,
int spacedim>
1840 template <
typename Number>
1849 template <
typename Number>
1859 template <
typename Number>
1870 template <
typename Number>
1902 struct ShapeFunctionData
1912 bool is_nonzero_shape_function_component
1913 [value_type::n_independent_components];
1924 unsigned int row_index[value_type::n_independent_components];
1974 const unsigned int first_tensor_component);
2007 value(
const unsigned int shape_function,
const unsigned int q_point)
const;
2024 const unsigned int q_point)
const;
2041 const unsigned int q_point)
const;
2060 template <
class InputVector>
2063 const InputVector &fe_function,
2101 template <
class InputVector>
2104 const InputVector &dof_values,
2129 template <
class InputVector>
2131 get_function_divergences(
2132 const InputVector &fe_function,
2134 &divergences)
const;
2142 template <
class InputVector>
2144 get_function_divergences_from_local_dof_values(
2145 const InputVector &dof_values,
2147 &divergences)
const;
2165 template <
class InputVector>
2168 const InputVector &fe_function,
2178 template <
class InputVector>
2181 const InputVector &dof_values,
2214 template <
int dim,
int spacedim,
typename Extractor>
2225 template <
int dim,
int spacedim>
2228 using type = typename ::FEValuesViews::Scalar<dim, spacedim>;
2238 template <
int dim,
int spacedim>
2241 using type = typename ::FEValuesViews::Vector<dim, spacedim>;
2251 template <
int dim,
int spacedim,
int rank>
2254 using type = typename ::FEValuesViews::Tensor<rank, dim, spacedim>;
2264 template <
int dim,
int spacedim,
int rank>
2268 typename ::FEValuesViews::SymmetricTensor<rank, dim, spacedim>;
2278 template <
int dim,
int spacedim>
2285 std::vector<::FEValuesViews::Scalar<dim, spacedim>>
scalars;
2286 std::vector<::FEValuesViews::Vector<dim, spacedim>>
vectors;
2287 std::vector<::FEValuesViews::SymmetricTensor<2, dim, spacedim>>
2289 std::vector<::FEValuesViews::Tensor<2, dim, spacedim>>
2306 template <
int dim,
int spacedim,
typename Extractor>
2307 using View = typename ::internal::FEValuesViews::
2308 ViewType<dim, spacedim, Extractor>::type;
2411template <
int dim,
int spacedim>
2418 static const unsigned int dimension = dim;
2423 static const unsigned int space_dimension = spacedim;
2461 const unsigned int dofs_per_cell,
2512 const unsigned int point_no)
const;
2536 const unsigned int point_no,
2566 const unsigned int quadrature_point)
const;
2586 const unsigned int point_no,
2610 const unsigned int point_no)
const;
2630 const unsigned int point_no,
2654 const unsigned int point_no)
const;
2674 const unsigned int point_no,
2717 template <
class InputVector>
2720 const InputVector & fe_function,
2721 std::vector<typename InputVector::value_type> &
values)
const;
2736 template <
class InputVector>
2739 const InputVector & fe_function,
2798 template <
class InputVector>
2801 const InputVector & fe_function,
2803 std::vector<typename InputVector::value_type> &
values)
const;
2813 template <
class InputVector>
2816 const InputVector & fe_function,
2842 template <
class InputVector>
2845 const InputVector & fe_function,
2848 const bool quadrature_points_fastest)
const;
2890 template <
class InputVector>
2893 const InputVector &fe_function,
2913 template <
class InputVector>
2916 const InputVector &fe_function,
2929 template <
class InputVector>
2932 const InputVector & fe_function,
2945 template <
class InputVector>
2948 const InputVector & fe_function,
2953 const bool quadrature_points_fastest =
false)
const;
2998 template <
class InputVector>
3001 const InputVector &fe_function,
3022 template <
class InputVector>
3025 const InputVector &fe_function,
3029 const bool quadrature_points_fastest =
false)
const;
3039 template <
class InputVector>
3042 const InputVector & fe_function,
3055 template <
class InputVector>
3058 const InputVector & fe_function,
3063 const bool quadrature_points_fastest =
false)
const;
3105 template <
class InputVector>
3108 const InputVector & fe_function,
3109 std::vector<typename InputVector::value_type> &laplacians)
const;
3130 template <
class InputVector>
3133 const InputVector & fe_function,
3144 template <
class InputVector>
3147 const InputVector & fe_function,
3149 std::vector<typename InputVector::value_type> & laplacians)
const;
3159 template <
class InputVector>
3162 const InputVector & fe_function,
3174 template <
class InputVector>
3177 const InputVector & fe_function,
3179 std::vector<std::vector<typename InputVector::value_type>> &laplacians,
3180 const bool quadrature_points_fastest =
false)
const;
3224 template <
class InputVector>
3227 const InputVector &fe_function,
3229 &third_derivatives)
const;
3249 template <
class InputVector>
3252 const InputVector &fe_function,
3255 & third_derivatives,
3256 const bool quadrature_points_fastest =
false)
const;
3266 template <
class InputVector>
3269 const InputVector & fe_function,
3272 &third_derivatives)
const;
3282 template <
class InputVector>
3285 const InputVector & fe_function,
3290 const bool quadrature_points_fastest =
false)
const;
3431 const std::vector<Point<spacedim>> &
3450 JxW(
const unsigned int quadrature_point)
const;
3455 const std::vector<double> &
3473 const std::vector<DerivativeForm<1, dim, spacedim>> &
3492 const std::vector<DerivativeForm<2, dim, spacedim>> &
3512 const std::vector<Tensor<3, spacedim>> &
3531 const std::vector<DerivativeForm<3, dim, spacedim>> &
3545 const unsigned int quadrature_point)
const;
3553 const std::vector<Tensor<4, spacedim>> &
3573 const std::vector<DerivativeForm<4, dim, spacedim>> &
3587 const unsigned int quadrature_point)
const;
3595 const std::vector<Tensor<5, spacedim>> &
3613 const std::vector<DerivativeForm<1, spacedim, dim>> &
3645 const std::vector<Tensor<1, spacedim>> &
3646 get_normal_vectors()
const;
3734 get_cell_similarity()
const;
3754 <<
"You are requesting information from an FEValues/FEFaceValues/FESubfaceValues "
3755 <<
"object for which this kind of information has not been computed. What "
3756 <<
"information these objects compute is determined by the update_* flags you "
3757 <<
"pass to the constructor. Here, the operation you are attempting requires "
3759 <<
"> flag to be set, but it was apparently not specified "
3760 <<
"upon construction.");
3770 "The FiniteElement you provided to FEValues and the FiniteElement that belongs "
3771 "to the DoFHandler that provided the cell iterator do not match.");
3779 <<
"The shape function with index " << arg1
3780 <<
" is not primitive, i.e. it is vector-valued and "
3781 <<
"has more than one non-zero vector component. This "
3782 <<
"function cannot be called for these shape functions. "
3783 <<
"Maybe you want to use the same function with the "
3784 <<
"_component suffix?");
3794 "The given FiniteElement is not a primitive element but the requested operation "
3795 "only works for those. See FiniteElement::is_primitive() for more information.");
3834 template <
typename CI>
3869 invalidate_present_cell();
3881 maybe_invalidate_previous_present_cell(
3895 std::unique_ptr<typename Mapping<dim, spacedim>::InternalDataBase>
3919 std::unique_ptr<typename FiniteElement<dim, spacedim>::InternalDataBase>
3945 compute_update_flags(
const UpdateFlags update_flags)
const;
3960 check_cell_similarity(
3975 template <
int,
int,
int>
3977 template <
int,
int,
int>
3992template <
int dim,
int spacedim = dim>
4000 static const unsigned int integral_dimension = dim;
4047 template <
bool level_dof_access>
4131template <
int dim,
int spacedim = dim>
4139 static const unsigned int integral_dimension = dim - 1;
4186 const std::vector<Tensor<1, spacedim>> &
4244template <
int dim,
int spacedim = dim>
4252 static const unsigned int dimension = dim;
4254 static const unsigned int space_dimension = spacedim;
4260 static const unsigned int integral_dimension = dim - 1;
4305 template <
bool level_dof_access>
4309 const unsigned int face_no);
4317 template <
bool level_dof_access>
4338 const unsigned int face_no);
4410template <
int dim,
int spacedim = dim>
4417 static const unsigned int dimension = dim;
4422 static const unsigned int space_dimension = spacedim;
4428 static const unsigned int integral_dimension = dim - 1;
4475 template <
bool level_dof_access>
4479 const unsigned int face_no,
4480 const unsigned int subface_no);
4486 template <
bool level_dof_access>
4508 const unsigned int face_no,
4509 const unsigned int subface_no);
4580 do_reinit(
const unsigned int face_no,
const unsigned int subface_no);
4591 template <
int dim,
int spacedim>
4594 const unsigned int q_point)
const
4600 "update_values"))));
4606 return fe_values->finite_element_output.shape_values(
4614 template <
int dim,
int spacedim>
4617 const unsigned int q_point)
const
4622 "update_gradients")));
4637 template <
int dim,
int spacedim>
4640 const unsigned int q_point)
const
4645 "update_hessians")));
4659 template <
int dim,
int spacedim>
4662 const unsigned int q_point)
const
4667 "update_3rd_derivatives")));
4682 template <
int dim,
int spacedim>
4685 const unsigned int q_point)
const
4701 .single_nonzero_component_index] =
4702 fe_values->finite_element_output.shape_values(snc, q_point);
4703 return return_value;
4708 for (
unsigned int d = 0;
d < dim; ++
d)
4710 .is_nonzero_shape_function_component[
d])
4711 return_value[
d] =
fe_values->finite_element_output.shape_values(
4714 return return_value;
4720 template <
int dim,
int spacedim>
4723 const unsigned int q_point)
const
4728 "update_gradients")));
4739 .single_nonzero_component_index] =
4740 fe_values->finite_element_output.shape_gradients[snc][q_point];
4741 return return_value;
4746 for (
unsigned int d = 0;
d < dim; ++
d)
4748 .is_nonzero_shape_function_component[
d])
4750 fe_values->finite_element_output.shape_gradients
4753 return return_value;
4759 template <
int dim,
int spacedim>
4762 const unsigned int q_point)
const
4768 "update_gradients")));
4774 return divergence_type();
4778 .single_nonzero_component_index];
4781 divergence_type return_value = 0;
4782 for (
unsigned int d = 0;
d < dim; ++
d)
4784 .is_nonzero_shape_function_component[
d])
4786 fe_values->finite_element_output.shape_gradients
4789 return return_value;
4795 template <
int dim,
int spacedim>
4798 const unsigned int q_point)
const
4805 "update_gradients")));
4820 "Computing the curl in 1d is not a useful operation"));
4828 curl_type return_value;
4832 .single_nonzero_component_index == 0)
4835 .shape_gradients[snc][q_point][1];
4837 return_value[0] =
fe_values->finite_element_output
4838 .shape_gradients[snc][q_point][0];
4840 return return_value;
4845 curl_type return_value;
4847 return_value[0] = 0.0;
4850 .is_nonzero_shape_function_component[0])
4854 .row_index[0]][q_point][1];
4857 .is_nonzero_shape_function_component[1])
4861 .row_index[1]][q_point][0];
4863 return return_value;
4871 curl_type return_value;
4874 .single_nonzero_component_index)
4878 return_value[0] = 0;
4879 return_value[1] =
fe_values->finite_element_output
4880 .shape_gradients[snc][q_point][2];
4883 .shape_gradients[snc][q_point][1];
4884 return return_value;
4891 .shape_gradients[snc][q_point][2];
4892 return_value[1] = 0;
4893 return_value[2] =
fe_values->finite_element_output
4894 .shape_gradients[snc][q_point][0];
4895 return return_value;
4900 return_value[0] =
fe_values->finite_element_output
4901 .shape_gradients[snc][q_point][1];
4904 .shape_gradients[snc][q_point][0];
4905 return_value[2] = 0;
4906 return return_value;
4913 curl_type return_value;
4915 for (
unsigned int i = 0; i < dim; ++i)
4916 return_value[i] = 0.0;
4919 .is_nonzero_shape_function_component[0])
4924 .row_index[0]][q_point][2];
4928 .row_index[0]][q_point][1];
4932 .is_nonzero_shape_function_component[1])
4937 .row_index[1]][q_point][2];
4941 .row_index[1]][q_point][0];
4945 .is_nonzero_shape_function_component[2])
4950 .row_index[2]][q_point][1];
4954 .row_index[2]][q_point][0];
4957 return return_value;
4968 template <
int dim,
int spacedim>
4971 const unsigned int q_point)
const
4977 "update_hessians")));
4988 .single_nonzero_component_index] =
4989 fe_values->finite_element_output.shape_hessians[snc][q_point];
4990 return return_value;
4995 for (
unsigned int d = 0;
d < dim; ++
d)
4997 .is_nonzero_shape_function_component[
d])
4999 fe_values->finite_element_output.shape_hessians
5002 return return_value;
5008 template <
int dim,
int spacedim>
5011 const unsigned int q_point)
const
5017 "update_3rd_derivatives")));
5028 .single_nonzero_component_index] =
5029 fe_values->finite_element_output.shape_3rd_derivatives[snc][q_point];
5030 return return_value;
5035 for (
unsigned int d = 0;
d < dim; ++
d)
5037 .is_nonzero_shape_function_component[
d])
5039 fe_values->finite_element_output.shape_3rd_derivatives
5042 return return_value;
5054 inline ::SymmetricTensor<2, 1>
5055 symmetrize_single_row(
const unsigned int n, const ::Tensor<1, 1> &t)
5065 inline ::SymmetricTensor<2, 2>
5066 symmetrize_single_row(
const unsigned int n, const ::Tensor<1, 2> &t)
5072 return {{t[0], 0, t[1] / 2}};
5076 return {{0, t[1], t[0] / 2}};
5088 inline ::SymmetricTensor<2, 3>
5089 symmetrize_single_row(
const unsigned int n, const ::Tensor<1, 3> &t)
5095 return {{t[0], 0, 0, t[1] / 2, t[2] / 2, 0}};
5099 return {{0, t[1], 0, t[0] / 2, 0, t[2] / 2}};
5103 return {{0, 0, t[2], 0, t[0] / 2, t[1] / 2}};
5116 template <
int dim,
int spacedim>
5119 const unsigned int q_point)
const
5124 "update_gradients")));
5130 return symmetric_gradient_type();
5132 return internal::symmetrize_single_row(
5134 fe_values->finite_element_output.shape_gradients[snc][q_point]);
5138 for (
unsigned int d = 0;
d < dim; ++
d)
5140 .is_nonzero_shape_function_component[
d])
5142 fe_values->finite_element_output.shape_gradients
5151 template <
int dim,
int spacedim>
5154 const unsigned int q_point)
const
5174 const unsigned int comp =
5176 return_value[value_type::unrolled_to_component_indices(comp)] =
5177 fe_values->finite_element_output.shape_values(snc, q_point);
5178 return return_value;
5183 for (
unsigned int d = 0;
d < value_type::n_independent_components; ++
d)
5185 .is_nonzero_shape_function_component[
d])
5186 return_value[value_type::unrolled_to_component_indices(
d)] =
5187 fe_values->finite_element_output.shape_values(
5189 return return_value;
5195 template <
int dim,
int spacedim>
5198 const unsigned int shape_function,
5199 const unsigned int q_point)
const
5204 "update_gradients")));
5212 return divergence_type();
5235 const unsigned int comp =
5237 const unsigned int ii =
5238 value_type::unrolled_to_component_indices(comp)[0];
5239 const unsigned int jj =
5240 value_type::unrolled_to_component_indices(comp)[1];
5253 const ::Tensor<1, spacedim> &phi_grad =
5254 fe_values->finite_element_output.shape_gradients[snc][q_point];
5256 divergence_type return_value;
5257 return_value[ii] = phi_grad[jj];
5260 return_value[jj] = phi_grad[ii];
5262 return return_value;
5267 divergence_type return_value;
5268 return return_value;
5274 template <
int dim,
int spacedim>
5277 const unsigned int q_point)
const
5297 const unsigned int comp =
5301 return_value[indices] =
5302 fe_values->finite_element_output.shape_values(snc, q_point);
5303 return return_value;
5308 for (
unsigned int d = 0;
d < dim * dim; ++
d)
5310 .is_nonzero_shape_function_component[
d])
5314 return_value[indices] =
5315 fe_values->finite_element_output.shape_values(
5318 return return_value;
5324 template <
int dim,
int spacedim>
5327 const unsigned int q_point)
const
5332 "update_gradients")));
5340 return divergence_type();
5354 const unsigned int comp =
5358 const unsigned int ii = indices[0];
5359 const unsigned int jj = indices[1];
5361 const ::Tensor<1, spacedim> &phi_grad =
5362 fe_values->finite_element_output.shape_gradients[snc][q_point];
5364 divergence_type return_value;
5366 return_value[ii] = phi_grad[jj];
5368 return return_value;
5373 divergence_type return_value;
5374 return return_value;
5380 template <
int dim,
int spacedim>
5383 const unsigned int q_point)
const
5388 "update_gradients")));
5410 const unsigned int comp =
5414 const unsigned int ii = indices[0];
5415 const unsigned int jj = indices[1];
5417 const ::Tensor<1, spacedim> &phi_grad =
5418 fe_values->finite_element_output.shape_gradients[snc][q_point];
5421 return_value[ii][jj] = phi_grad;
5423 return return_value;
5429 return return_value;
5441template <
int dim,
int spacedim>
5447 return fe_values_views_cache.scalars[scalar.
component];
5452template <
int dim,
int spacedim>
5457 fe_values_views_cache.vectors.size());
5464template <
int dim,
int spacedim>
5471 fe_values_views_cache.symmetric_second_order_tensors.size(),
5474 fe_values_views_cache.symmetric_second_order_tensors.size()));
5476 return fe_values_views_cache
5482template <
int dim,
int spacedim>
5488 fe_values_views_cache.second_order_tensors.size());
5490 return fe_values_views_cache
5496template <
int dim,
int spacedim>
5497inline const double &
5499 const unsigned int j)
const
5504 Assert(fe->is_primitive(i), ExcShapeFunctionNotPrimitive(i));
5505 Assert(present_cell.get() !=
nullptr,
5506 ExcMessage(
"FEValues object is not reinit'ed to any cell"));
5509 if (fe->is_primitive())
5510 return this->finite_element_output.shape_values(i, j);
5521 const unsigned int row =
5522 this->finite_element_output
5523 .shape_function_to_row_table[i * fe->n_components() +
5524 fe->system_to_component_index(i).first];
5525 return this->finite_element_output.shape_values(row, j);
5531template <
int dim,
int spacedim>
5534 const unsigned int i,
5535 const unsigned int j,
5542 Assert(present_cell.get() !=
nullptr,
5543 ExcMessage(
"FEValues object is not reinit'ed to any cell"));
5548 if (fe->get_nonzero_components(i)[
component] ==
false)
5554 const unsigned int row =
5555 this->finite_element_output
5556 .shape_function_to_row_table[i * fe->n_components() +
component];
5557 return this->finite_element_output.shape_values(row, j);
5562template <
int dim,
int spacedim>
5565 const unsigned int j)
const
5570 Assert(fe->is_primitive(i), ExcShapeFunctionNotPrimitive(i));
5571 Assert(present_cell.get() !=
nullptr,
5572 ExcMessage(
"FEValues object is not reinit'ed to any cell"));
5575 if (fe->is_primitive())
5576 return this->finite_element_output.shape_gradients[i][j];
5587 const unsigned int row =
5588 this->finite_element_output
5589 .shape_function_to_row_table[i * fe->n_components() +
5590 fe->system_to_component_index(i).first];
5591 return this->finite_element_output.shape_gradients[row][j];
5597template <
int dim,
int spacedim>
5600 const unsigned int i,
5601 const unsigned int j,
5608 Assert(present_cell.get() !=
nullptr,
5609 ExcMessage(
"FEValues object is not reinit'ed to any cell"));
5613 if (fe->get_nonzero_components(i)[
component] ==
false)
5619 const unsigned int row =
5620 this->finite_element_output
5621 .shape_function_to_row_table[i * fe->n_components() +
component];
5622 return this->finite_element_output.shape_gradients[row][j];
5627template <
int dim,
int spacedim>
5630 const unsigned int j)
const
5635 Assert(fe->is_primitive(i), ExcShapeFunctionNotPrimitive(i));
5636 Assert(present_cell.get() !=
nullptr,
5637 ExcMessage(
"FEValues object is not reinit'ed to any cell"));
5640 if (fe->is_primitive())
5641 return this->finite_element_output.shape_hessians[i][j];
5652 const unsigned int row =
5653 this->finite_element_output
5654 .shape_function_to_row_table[i * fe->n_components() +
5655 fe->system_to_component_index(i).first];
5656 return this->finite_element_output.shape_hessians[row][j];
5662template <
int dim,
int spacedim>
5665 const unsigned int i,
5666 const unsigned int j,
5673 Assert(present_cell.get() !=
nullptr,
5674 ExcMessage(
"FEValues object is not reinit'ed to any cell"));
5678 if (fe->get_nonzero_components(i)[
component] ==
false)
5684 const unsigned int row =
5685 this->finite_element_output
5686 .shape_function_to_row_table[i * fe->n_components() +
component];
5687 return this->finite_element_output.shape_hessians[row][j];
5692template <
int dim,
int spacedim>
5695 const unsigned int j)
const
5700 Assert(fe->is_primitive(i), ExcShapeFunctionNotPrimitive(i));
5701 Assert(present_cell.get() !=
nullptr,
5702 ExcMessage(
"FEValues object is not reinit'ed to any cell"));
5705 if (fe->is_primitive())
5706 return this->finite_element_output.shape_3rd_derivatives[i][j];
5717 const unsigned int row =
5718 this->finite_element_output
5719 .shape_function_to_row_table[i * fe->n_components() +
5720 fe->system_to_component_index(i).first];
5721 return this->finite_element_output.shape_3rd_derivatives[row][j];
5727template <
int dim,
int spacedim>
5730 const unsigned int i,
5731 const unsigned int j,
5738 Assert(present_cell.get() !=
nullptr,
5739 ExcMessage(
"FEValues object is not reinit'ed to any cell"));
5743 if (fe->get_nonzero_components(i)[
component] ==
false)
5749 const unsigned int row =
5750 this->finite_element_output
5751 .shape_function_to_row_table[i * fe->n_components() +
component];
5752 return this->finite_element_output.shape_3rd_derivatives[row][j];
5757template <
int dim,
int spacedim>
5766template <
int dim,
int spacedim>
5775template <
int dim,
int spacedim>
5779 return this->update_flags;
5784template <
int dim,
int spacedim>
5785inline const std::vector<Point<spacedim>> &
5790 Assert(present_cell.get() !=
nullptr,
5791 ExcMessage(
"FEValues object is not reinit'ed to any cell"));
5792 return this->mapping_output.quadrature_points;
5797template <
int dim,
int spacedim>
5798inline const std::vector<double> &
5803 Assert(present_cell.get() !=
nullptr,
5804 ExcMessage(
"FEValues object is not reinit'ed to any cell"));
5805 return this->mapping_output.JxW_values;
5810template <
int dim,
int spacedim>
5811inline const std::vector<DerivativeForm<1, dim, spacedim>> &
5816 Assert(present_cell.get() !=
nullptr,
5817 ExcMessage(
"FEValues object is not reinit'ed to any cell"));
5818 return this->mapping_output.jacobians;
5823template <
int dim,
int spacedim>
5824inline const std::vector<DerivativeForm<2, dim, spacedim>> &
5829 Assert(present_cell.get() !=
nullptr,
5830 ExcMessage(
"FEValues object is not reinit'ed to any cell"));
5831 return this->mapping_output.jacobian_grads;
5836template <
int dim,
int spacedim>
5839 const unsigned int i)
const
5843 Assert(present_cell.get() !=
nullptr,
5844 ExcMessage(
"FEValues object is not reinit'ed to any cell"));
5845 return this->mapping_output.jacobian_pushed_forward_grads[i];
5850template <
int dim,
int spacedim>
5851inline const std::vector<Tensor<3, spacedim>> &
5856 Assert(present_cell.get() !=
nullptr,
5857 ExcMessage(
"FEValues object is not reinit'ed to any cell"));
5858 return this->mapping_output.jacobian_pushed_forward_grads;
5863template <
int dim,
int spacedim>
5869 Assert(present_cell.get() !=
nullptr,
5870 ExcMessage(
"FEValues object is not reinit'ed to any cell"));
5871 return this->mapping_output.jacobian_2nd_derivatives[i];
5876template <
int dim,
int spacedim>
5877inline const std::vector<DerivativeForm<3, dim, spacedim>> &
5882 Assert(present_cell.get() !=
nullptr,
5883 ExcMessage(
"FEValues object is not reinit'ed to any cell"));
5884 return this->mapping_output.jacobian_2nd_derivatives;
5889template <
int dim,
int spacedim>
5892 const unsigned int i)
const
5896 "update_jacobian_pushed_forward_2nd_derivatives"));
5897 Assert(present_cell.get() !=
nullptr,
5898 ExcMessage(
"FEValues object is not reinit'ed to any cell"));
5899 return this->mapping_output.jacobian_pushed_forward_2nd_derivatives[i];
5904template <
int dim,
int spacedim>
5905inline const std::vector<Tensor<4, spacedim>> &
5910 "update_jacobian_pushed_forward_2nd_derivatives"));
5911 Assert(present_cell.get() !=
nullptr,
5912 ExcMessage(
"FEValues object is not reinit'ed to any cell"));
5913 return this->mapping_output.jacobian_pushed_forward_2nd_derivatives;
5918template <
int dim,
int spacedim>
5924 Assert(present_cell.get() !=
nullptr,
5925 ExcMessage(
"FEValues object is not reinit'ed to any cell"));
5926 return this->mapping_output.jacobian_3rd_derivatives[i];
5931template <
int dim,
int spacedim>
5932inline const std::vector<DerivativeForm<4, dim, spacedim>> &
5937 Assert(present_cell.get() !=
nullptr,
5938 ExcMessage(
"FEValues object is not reinit'ed to any cell"));
5939 return this->mapping_output.jacobian_3rd_derivatives;
5944template <
int dim,
int spacedim>
5947 const unsigned int i)
const
5951 "update_jacobian_pushed_forward_3rd_derivatives"));
5952 Assert(present_cell.get() !=
nullptr,
5953 ExcMessage(
"FEValues object is not reinit'ed to any cell"));
5954 return this->mapping_output.jacobian_pushed_forward_3rd_derivatives[i];
5959template <
int dim,
int spacedim>
5960inline const std::vector<Tensor<5, spacedim>> &
5965 "update_jacobian_pushed_forward_3rd_derivatives"));
5966 Assert(present_cell.get() !=
nullptr,
5967 ExcMessage(
"FEValues object is not reinit'ed to any cell"));
5968 return this->mapping_output.jacobian_pushed_forward_3rd_derivatives;
5973template <
int dim,
int spacedim>
5974inline const std::vector<DerivativeForm<1, spacedim, dim>> &
5979 Assert(present_cell.get() !=
nullptr,
5980 ExcMessage(
"FEValues object is not reinit'ed to any cell"));
5981 return this->mapping_output.inverse_jacobians;
5986template <
int dim,
int spacedim>
5990 return {0
U, dofs_per_cell};
5995template <
int dim,
int spacedim>
5998 const unsigned int start_dof_index)
const
6000 Assert(start_dof_index <= dofs_per_cell,
6002 return {start_dof_index, dofs_per_cell};
6007template <
int dim,
int spacedim>
6010 const unsigned int end_dof_index)
const
6012 Assert(end_dof_index < dofs_per_cell,
6014 return {0
U, end_dof_index + 1};
6019template <
int dim,
int spacedim>
6023 return {0
U, n_quadrature_points};
6028template <
int dim,
int spacedim>
6035 Assert(present_cell.get() !=
nullptr,
6036 ExcMessage(
"FEValues object is not reinit'ed to any cell"));
6038 return this->mapping_output.quadrature_points[i];
6043template <
int dim,
int spacedim>
6050 Assert(present_cell.get() !=
nullptr,
6051 ExcMessage(
"FEValues object is not reinit'ed to any cell"));
6053 return this->mapping_output.JxW_values[i];
6058template <
int dim,
int spacedim>
6065 Assert(present_cell.get() !=
nullptr,
6066 ExcMessage(
"FEValues object is not reinit'ed to any cell"));
6068 return this->mapping_output.jacobians[i];
6073template <
int dim,
int spacedim>
6080 Assert(present_cell.get() !=
nullptr,
6081 ExcMessage(
"FEValues object is not reinit'ed to any cell"));
6083 return this->mapping_output.jacobian_grads[i];
6088template <
int dim,
int spacedim>
6095 Assert(present_cell.get() !=
nullptr,
6096 ExcMessage(
"FEValues object is not reinit'ed to any cell"));
6098 return this->mapping_output.inverse_jacobians[i];
6103template <
int dim,
int spacedim>
6109 "update_normal_vectors")));
6111 Assert(present_cell.get() !=
nullptr,
6112 ExcMessage(
"FEValues object is not reinit'ed to any cell"));
6114 return this->mapping_output.normal_vectors[i];
6122template <
int dim,
int spacedim>
6131template <
int dim,
int spacedim>
6142template <
int dim,
int spacedim>
6146 return present_face_index;
6152template <
int dim,
int spacedim>
6156 return quadrature[quadrature.size() == 1 ? 0 : present_face_no];
6161template <
int dim,
int spacedim>
6170template <
int dim,
int spacedim>
6179template <
int dim,
int spacedim>
6186 "update_boundary_forms")));
6188 return this->mapping_output.boundary_forms[i];
const Tensor< 1, spacedim > & boundary_form(const unsigned int i) const
const Quadrature< dim - 1 > & get_quadrature() const
unsigned int get_face_index() const
unsigned int present_face_no
FEFaceValuesBase(const unsigned int dofs_per_cell, const UpdateFlags update_flags, const Mapping< dim, spacedim > &mapping, const FiniteElement< dim, spacedim > &fe, const hp::QCollection< dim - 1 > &quadrature)
unsigned int present_face_index
FEFaceValuesBase(const unsigned int dofs_per_cell, const UpdateFlags update_flags, const Mapping< dim, spacedim > &mapping, const FiniteElement< dim, spacedim > &fe, const Quadrature< dim - 1 > &quadrature)
std::size_t memory_consumption() const
const std::vector< Tensor< 1, spacedim > > & get_boundary_forms() const
const hp::QCollection< dim - 1 > quadrature
void reinit(const TriaIterator< DoFCellAccessor< dim, spacedim, level_dof_access > > &cell, const typename Triangulation< dim, spacedim >::face_iterator &face)
const FEFaceValues< dim, spacedim > & get_present_fe_values() const
FEFaceValues(const FiniteElement< dim, spacedim > &fe, const Quadrature< dim - 1 > &quadrature, const UpdateFlags update_flags)
void initialize(const UpdateFlags update_flags)
void reinit(const typename Triangulation< dim, spacedim >::cell_iterator &cell, const unsigned int face_no)
void reinit(const TriaIterator< DoFCellAccessor< dim, spacedim, level_dof_access > > &cell, const unsigned int face_no)
void do_reinit(const unsigned int face_no)
FEFaceValues(const Mapping< dim, spacedim > &mapping, const FiniteElement< dim, spacedim > &fe, const Quadrature< dim - 1 > &quadrature, const UpdateFlags update_flags)
FEFaceValues(const Mapping< dim, spacedim > &mapping, const FiniteElement< dim, spacedim > &fe, const hp::QCollection< dim - 1 > &quadrature, const UpdateFlags update_flags)
FEFaceValues(const FiniteElement< dim, spacedim > &fe, const hp::QCollection< dim - 1 > &quadrature, const UpdateFlags update_flags)
void reinit(const typename Triangulation< dim, spacedim >::cell_iterator &cell, const typename Triangulation< dim, spacedim >::face_iterator &face)
FESubfaceValues(const Mapping< dim, spacedim > &mapping, const FiniteElement< dim, spacedim > &fe, const Quadrature< dim - 1 > &face_quadrature, const UpdateFlags update_flags)
void reinit(const typename Triangulation< dim, spacedim >::cell_iterator &cell, const unsigned int face_no, const unsigned int subface_no)
void reinit(const TriaIterator< DoFCellAccessor< dim, spacedim, level_dof_access > > &cell, const unsigned int face_no, const unsigned int subface_no)
void initialize(const UpdateFlags update_flags)
const FESubfaceValues< dim, spacedim > & get_present_fe_values() const
FESubfaceValues(const FiniteElement< dim, spacedim > &fe, const Quadrature< dim - 1 > &face_quadrature, const UpdateFlags update_flags)
void reinit(const TriaIterator< DoFCellAccessor< dim, spacedim, level_dof_access > > &cell, const typename Triangulation< dim, spacedim >::face_iterator &face, const typename Triangulation< dim, spacedim >::face_iterator &subface)
void do_reinit(const unsigned int face_no, const unsigned int subface_no)
FESubfaceValues(const FiniteElement< dim, spacedim > &fe, const hp::QCollection< dim - 1 > &face_quadrature, const UpdateFlags update_flags)
FESubfaceValues(const Mapping< dim, spacedim > &mapping, const FiniteElement< dim, spacedim > &fe, const hp::QCollection< dim - 1 > &face_quadrature, const UpdateFlags update_flags)
void reinit(const typename Triangulation< dim, spacedim >::cell_iterator &cell, const typename Triangulation< dim, spacedim >::face_iterator &face, const typename Triangulation< dim, spacedim >::face_iterator &subface)
CellSimilarity::Similarity cell_similarity
std_cxx20::ranges::iota_view< unsigned int, unsigned int > dof_indices_ending_at(const unsigned int end_dof_index) const
const DerivativeForm< 2, dim, spacedim > & jacobian_grad(const unsigned int quadrature_point) const
const FEValuesViews::Vector< dim, spacedim > & operator[](const FEValuesExtractors::Vector &vector) const
const std::vector< double > & get_JxW_values() const
::internal::FEValuesViews::Cache< dim, spacedim > fe_values_views_cache
FEValuesBase(const FEValuesBase &)=delete
const FEValuesViews::Scalar< dim, spacedim > & operator[](const FEValuesExtractors::Scalar &scalar) const
const Tensor< 4, spacedim > & jacobian_pushed_forward_2nd_derivative(const unsigned int quadrature_point) const
boost::signals2::connection tria_listener_mesh_transform
const std::vector< Point< spacedim > > & get_quadrature_points() const
const std::vector< DerivativeForm< 1, dim, spacedim > > & get_jacobians() const
const SmartPointer< const Mapping< dim, spacedim >, FEValuesBase< dim, spacedim > > mapping
const std::vector< DerivativeForm< 3, dim, spacedim > > & get_jacobian_2nd_derivatives() const
UpdateFlags get_update_flags() const
const FEValuesViews::Tensor< 2, dim, spacedim > & operator[](const FEValuesExtractors::Tensor< 2 > &tensor) const
const unsigned int dofs_per_cell
const SmartPointer< const FiniteElement< dim, spacedim >, FEValuesBase< dim, spacedim > > fe
std_cxx20::ranges::iota_view< unsigned int, unsigned int > dof_indices_starting_at(const unsigned int start_dof_index) const
const Mapping< dim, spacedim > & get_mapping() const
const unsigned int n_quadrature_points
std_cxx20::ranges::iota_view< unsigned int, unsigned int > dof_indices() const
std_cxx20::ranges::iota_view< unsigned int, unsigned int > quadrature_point_indices() const
Tensor< 2, spacedim > shape_hessian_component(const unsigned int function_no, const unsigned int point_no, const unsigned int component) const
const std::vector< Tensor< 5, spacedim > > & get_jacobian_pushed_forward_3rd_derivatives() const
const DerivativeForm< 1, dim, spacedim > & jacobian(const unsigned int quadrature_point) const
::internal::FEValuesImplementation::MappingRelatedData< dim, spacedim > mapping_output
std::unique_ptr< typename Mapping< dim, spacedim >::InternalDataBase > mapping_data
const std::vector< DerivativeForm< 2, dim, spacedim > > & get_jacobian_grads() const
Tensor< 1, spacedim > shape_grad_component(const unsigned int function_no, const unsigned int point_no, const unsigned int component) const
double shape_value_component(const unsigned int function_no, const unsigned int point_no, const unsigned int component) const
const Tensor< 2, spacedim > & shape_hessian(const unsigned int function_no, const unsigned int point_no) const
boost::signals2::connection tria_listener_refinement
const std::vector< Tensor< 3, spacedim > > & get_jacobian_pushed_forward_grads() const
const Tensor< 5, spacedim > & jacobian_pushed_forward_3rd_derivative(const unsigned int quadrature_point) const
const Tensor< 1, spacedim > & normal_vector(const unsigned int i) const
const std::vector< Tensor< 4, spacedim > > & get_jacobian_pushed_forward_2nd_derivatives() const
double JxW(const unsigned int quadrature_point) const
const Point< spacedim > & quadrature_point(const unsigned int q) const
std::unique_ptr< const CellIteratorBase > present_cell
::internal::FEValuesImplementation::FiniteElementRelatedData< dim, spacedim > finite_element_output
const Tensor< 3, spacedim > & jacobian_pushed_forward_grad(const unsigned int quadrature_point) const
const FEValuesViews::SymmetricTensor< 2, dim, spacedim > & operator[](const FEValuesExtractors::SymmetricTensor< 2 > &tensor) const
const std::vector< DerivativeForm< 4, dim, spacedim > > & get_jacobian_3rd_derivatives() const
const DerivativeForm< 4, dim, spacedim > & jacobian_3rd_derivative(const unsigned int quadrature_point) const
const Tensor< 3, spacedim > & shape_3rd_derivative(const unsigned int function_no, const unsigned int point_no) const
std::unique_ptr< typename FiniteElement< dim, spacedim >::InternalDataBase > fe_data
const FiniteElement< dim, spacedim > & get_fe() const
const Tensor< 1, spacedim > & shape_grad(const unsigned int function_no, const unsigned int quadrature_point) const
FEValuesBase & operator=(const FEValuesBase &)=delete
const DerivativeForm< 3, dim, spacedim > & jacobian_2nd_derivative(const unsigned int quadrature_point) const
const DerivativeForm< 1, spacedim, dim > & inverse_jacobian(const unsigned int quadrature_point) const
const std::vector< DerivativeForm< 1, spacedim, dim > > & get_inverse_jacobians() const
const unsigned int max_n_quadrature_points
const double & shape_value(const unsigned int function_no, const unsigned int point_no) const
Tensor< 3, spacedim > shape_3rd_derivative_component(const unsigned int function_no, const unsigned int point_no, const unsigned int component) 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
Scalar & operator=(const Scalar< dim, spacedim > &)=delete
typename ProductType< Number, hessian_type >::type solution_hessian_type
value_type value(const unsigned int shape_function, const unsigned int q_point) const
const unsigned int component
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
gradient_type gradient(const unsigned int shape_function, const unsigned int q_point) const
std::vector< ShapeFunctionData > shape_function_data
::Tensor< 1, spacedim > gradient_type
void get_function_laplacians(const InputVector &fe_function, std::vector< solution_laplacian_type< typename InputVector::value_type > > &laplacians) const
typename ProductType< Number, value_type >::type solution_laplacian_type
void get_function_third_derivatives(const InputVector &fe_function, std::vector< solution_third_derivative_type< typename InputVector::value_type > > &third_derivatives) const
Scalar & operator=(Scalar< dim, spacedim > &&) noexcept=default
third_derivative_type third_derivative(const unsigned int shape_function, const unsigned int q_point) const
void get_function_hessians(const InputVector &fe_function, std::vector< solution_hessian_type< typename InputVector::value_type > > &hessians) const
typename ProductType< Number, third_derivative_type >::type solution_third_derivative_type
typename ProductType< Number, value_type >::type solution_value_type
::Tensor< 2, spacedim > hessian_type
typename ProductType< Number, gradient_type >::type solution_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
const SmartPointer< const FEValuesBase< dim, spacedim > > fe_values
void get_function_gradients(const InputVector &fe_function, std::vector< solution_gradient_type< typename InputVector::value_type > > &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
Scalar(Scalar< dim, spacedim > &&)=default
Scalar(const Scalar< dim, spacedim > &)=delete
hessian_type hessian(const unsigned int shape_function, const unsigned int q_point) const
void get_function_values(const InputVector &fe_function, std::vector< solution_value_type< typename InputVector::value_type > > &values) const
::Tensor< 3, spacedim > third_derivative_type
SymmetricTensor(const SymmetricTensor< 2, dim, spacedim > &)=delete
SymmetricTensor(SymmetricTensor< 2, dim, spacedim > &&)=default
SymmetricTensor & operator=(SymmetricTensor< 2, dim, spacedim > &&) noexcept=default
typename ProductType< Number, value_type >::type solution_value_type
SymmetricTensor & operator=(const SymmetricTensor< 2, dim, spacedim > &)=delete
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
const unsigned int first_tensor_component
typename ProductType< Number, gradient_type >::type solution_gradient_type
divergence_type divergence(const unsigned int shape_function, const unsigned int q_point) const
Tensor(const Tensor< 2, dim, spacedim > &)=delete
const SmartPointer< const FEValuesBase< dim, spacedim > > fe_values
Tensor & operator=(const Tensor< 2, dim, spacedim > &)=delete
Tensor & operator=(Tensor< 2, dim, spacedim > &&)=default
value_type value(const unsigned int shape_function, const unsigned int q_point) const
gradient_type gradient(const unsigned int shape_function, const unsigned int q_point) const
Tensor(Tensor< 2, dim, spacedim > &&)=default
std::vector< ShapeFunctionData > shape_function_data
typename ProductType< Number, third_derivative_type >::type solution_third_derivative_type
typename ProductType< Number, divergence_type >::type solution_divergence_type
Vector(const Vector< dim, spacedim > &)=delete
hessian_type hessian(const unsigned int shape_function, const unsigned int q_point) const
typename ProductType< Number, hessian_type >::type solution_hessian_type
const SmartPointer< const FEValuesBase< dim, spacedim > > fe_values
Vector & operator=(Vector< dim, spacedim > &&)=default
typename ProductType< Number, symmetric_gradient_type >::type solution_symmetric_gradient_type
gradient_type gradient(const unsigned int shape_function, const unsigned int q_point) const
divergence_type divergence(const unsigned int shape_function, const unsigned int q_point) const
Vector & operator=(const Vector< dim, spacedim > &)=delete
third_derivative_type third_derivative(const unsigned int shape_function, const unsigned int q_point) const
typename ProductType< Number, gradient_type >::type solution_gradient_type
typename ProductType< Number, value_type >::type solution_value_type
symmetric_gradient_type symmetric_gradient(const unsigned int shape_function, const unsigned int q_point) const
Vector(Vector< dim, spacedim > &&)=default
typename ::internal::CurlType< spacedim >::type curl_type
const unsigned int first_vector_component
typename ProductType< Number, curl_type >::type solution_curl_type
std::vector< ShapeFunctionData > shape_function_data
value_type value(const unsigned int shape_function, const unsigned int q_point) const
curl_type curl(const unsigned int shape_function, const unsigned int q_point) const
typename ProductType< Number, value_type >::type solution_laplacian_type
FEValues(const Mapping< dim, spacedim > &mapping, const FiniteElement< dim, spacedim > &fe, const Quadrature< dim > &quadrature, const UpdateFlags update_flags)
const Quadrature< dim > & get_quadrature() const
const Quadrature< dim > quadrature
FEValues(const FiniteElement< dim, spacedim > &fe, const hp::QCollection< dim > &quadrature, const UpdateFlags update_flags)
const FEValues< dim, spacedim > & get_present_fe_values() const
FEValues(const Mapping< dim, spacedim > &mapping, const FiniteElement< dim, spacedim > &fe, const hp::QCollection< dim > &quadrature, const UpdateFlags update_flags)
FEValues(const FiniteElement< dim, spacedim > &fe, const Quadrature< dim > &quadrature, const UpdateFlags update_flags)
void initialize(const UpdateFlags update_flags)
void reinit(const typename Triangulation< dim, spacedim >::cell_iterator &cell)
void reinit(const TriaIterator< DoFCellAccessor< dim, spacedim, level_dof_access > > &cell)
std::size_t memory_consumption() const
typename Tensor< rank_ - 1, dim, Number >::tensor_type value_type
static constexpr TableIndices< rank_ > unrolled_to_component_indices(const unsigned int i)
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_DEPRECATED_EARLY
#define DEAL_II_NAMESPACE_CLOSE
@ update_jacobian_pushed_forward_2nd_derivatives
@ update_jacobian_pushed_forward_grads
@ update_hessians
Second derivatives of shape functions.
@ update_jacobian_3rd_derivatives
@ update_values
Shape function values.
@ update_jacobian_grads
Gradient of volume element.
@ update_normal_vectors
Normal vectors.
@ update_3rd_derivatives
Third derivatives of shape functions.
@ update_JxW_values
Transformed quadrature weights.
@ update_jacobians
Volume element.
@ update_inverse_jacobians
Volume element.
@ update_gradients
Shape function gradients.
@ update_quadrature_points
Transformed quadrature points.
@ update_jacobian_pushed_forward_3rd_derivatives
@ update_boundary_forms
Outer normal vector, not normalized.
@ update_jacobian_2nd_derivatives
#define DeclException0(Exception0)
static ::ExceptionBase & ExcNotImplemented()
static ::ExceptionBase & ExcIndexRange(int arg1, int arg2, int arg3)
#define Assert(cond, exc)
static ::ExceptionBase & ExcFENotPrimitive()
#define AssertIndexRange(index, range)
#define DeclExceptionMsg(Exception, defaulttext)
static ::ExceptionBase & ExcInternalError()
static ::ExceptionBase & ExcAccessToUninitializedField()
#define DeclException1(Exception1, type1, outsequence)
static ::ExceptionBase & ExcMessage(std::string arg1)
typename ::internal::FEValuesViews::ViewType< dim, spacedim, Extractor >::type View
std::enable_if< std::is_fundamental< T >::value, std::size_t >::type memory_consumption(const T &t)
SymmetricTensor< 2, dim, Number > d(const Tensor< 2, dim, Number > &F, const Tensor< 2, dim, Number > &dF_dt)
boost::integer_range< IncrementableType > iota_view
typename ProductType< Number, typename Scalar< dim, spacedim >::value_type >::type laplacian_type
typename ProductType< Number, typename Scalar< dim, spacedim >::value_type >::type value_type
typename ProductType< Number, typename Scalar< dim, spacedim >::gradient_type >::type gradient_type
typename ProductType< Number, typename Scalar< dim, spacedim >::hessian_type >::type hessian_type
typename ProductType< Number, typename Scalar< dim, spacedim >::third_derivative_type >::type third_derivative_type
bool is_nonzero_shape_function_component
typename ProductType< Number, typename SymmetricTensor< 2, dim, spacedim >::divergence_type >::type divergence_type
typename ProductType< Number, typename SymmetricTensor< 2, dim, spacedim >::value_type >::type value_type
int single_nonzero_component
unsigned int single_nonzero_component_index
typename ProductType< Number, typename Tensor< 2, dim, spacedim >::gradient_type >::type gradient_type
typename ProductType< Number, typename Tensor< 2, dim, spacedim >::value_type >::type value_type
typename ProductType< Number, typename Tensor< 2, dim, spacedim >::divergence_type >::type divergence_type
unsigned int single_nonzero_component_index
int single_nonzero_component
typename ProductType< Number, typename Vector< dim, spacedim >::third_derivative_type >::type third_derivative_type
typename ProductType< Number, typename Vector< dim, spacedim >::value_type >::type laplacian_type
typename ProductType< Number, typename Vector< dim, spacedim >::hessian_type >::type hessian_type
typename ProductType< Number, typename Vector< dim, spacedim >::symmetric_gradient_type >::type symmetric_gradient_type
typename ProductType< Number, typename Vector< dim, spacedim >::gradient_type >::type gradient_type
typename ProductType< Number, typename Vector< dim, spacedim >::curl_type >::type curl_type
typename ProductType< Number, typename Vector< dim, spacedim >::divergence_type >::type divergence_type
typename ProductType< Number, typename Vector< dim, spacedim >::value_type >::type value_type
int single_nonzero_component
unsigned int single_nonzero_component_index
typename internal::ProductTypeImpl< typename std::decay< T >::type, typename std::decay< U >::type >::type type
std::vector<::FEValuesViews::Scalar< dim, spacedim > > scalars
std::vector<::FEValuesViews::Vector< dim, spacedim > > vectors
std::vector<::FEValuesViews::SymmetricTensor< 2, dim, spacedim > > symmetric_second_order_tensors
std::vector<::FEValuesViews::Tensor< 2, dim, spacedim > > second_order_tensors
constexpr SymmetricTensor< 2, dim, Number > symmetrize(const Tensor< 2, dim, Number > &t)