40 template <
int spacedim>
42 get_dof_sign_change_h_div(
43 const typename ::Triangulation<1, spacedim>::cell_iterator &,
45 const std::vector<MappingKind> &,
46 std::vector<double> &)
59 template <
int spacedim>
61 get_dof_sign_change_h_div(
62 const typename ::Triangulation<2, spacedim>::cell_iterator &cell,
64 const std::vector<MappingKind> &mapping_kind,
65 std::vector<double> &face_sign)
67 const unsigned int dim = 2;
70 const CellId this_cell_id = cell->id();
72 for (
unsigned int f = 0; f < GeometryInfo<dim>::faces_per_cell; ++f)
74 typename ::Triangulation<dim, spacedim>::face_iterator face =
76 if (!face->at_boundary())
78 const unsigned int nn = cell->neighbor_face_no(f);
79 const typename ::Triangulation<dim,
80 spacedim>::cell_iterator
81 neighbor_cell_at_face = cell->neighbor(f);
82 const CellId neighbor_cell_id = neighbor_cell_at_face->id();
86 if (((nn + f) % 2 == 0) && this_cell_id < neighbor_cell_id)
93 Assert(mapping_kind.size() == 1 ||
94 cell_j < mapping_kind.size(),
99 if ((mapping_kind.size() > 1 ?
100 mapping_kind[cell_j] :
110 template <
int spacedim>
112 get_dof_sign_change_h_div(
113 const typename ::Triangulation<3, spacedim>::cell_iterator
116 const std::vector<MappingKind> & ,
117 std::vector<double> & )
123 template <
int spacedim>
125 get_dof_sign_change_nedelec(
126 const typename ::Triangulation<1, spacedim>::cell_iterator
129 const std::vector<MappingKind> & ,
130 std::vector<double> & )
135 template <
int spacedim>
137 get_dof_sign_change_nedelec(
138 const typename ::Triangulation<2, spacedim>::cell_iterator &cell,
140 const std::vector<MappingKind> &mapping_kind,
141 std::vector<double> &line_dof_sign)
166 for (
unsigned int l = 0; l < GeometryInfo<2>::lines_per_cell; ++l)
167 if (cell->line_orientation(l) !=
175 line_dof_sign[l] = -1.0;
194 for (
unsigned int local_line_dof = 0;
195 local_line_dof < (k + 1);
197 if (local_line_dof % 2 == 0)
198 line_dof_sign[local_line_dof + l * (k + 1)] = -1.0;
203 template <
int spacedim>
205 get_dof_sign_change_nedelec(
206 const typename ::Triangulation<3, spacedim>::cell_iterator &cell,
208 const std::vector<MappingKind> &mapping_kind,
209 std::vector<double> &line_dof_sign)
237 for (
unsigned int l = 0; l < GeometryInfo<3>::lines_per_cell; ++l)
238 if (cell->line_orientation(l) !=
246 line_dof_sign[l] = -1.0;
265 for (
unsigned int local_line_dof = 0;
266 local_line_dof < (k + 1);
268 if (local_line_dof % 2 == 0)
269 line_dof_sign[local_line_dof + l * (k + 1)] = -1.0;
279template <
int dim,
int spacedim>
283 const std::vector<bool> &restriction_is_additive_flags,
284 const std::vector<ComponentMask> &nonzero_components)
286 restriction_is_additive_flags,
289 , poly_space(polynomials.clone())
291 cached_point[0] = -1;
299 for (
unsigned int comp = 0; comp < this->n_components(); ++comp)
300 this->component_to_base_table[comp].
first.second = comp;
304 adjust_quad_dof_sign_for_face_orientation_table.resize(
305 this->n_unique_2d_subobjects());
307 for (
unsigned int f = 0; f < this->n_unique_2d_subobjects(); ++f)
309 adjust_quad_dof_sign_for_face_orientation_table[f] =
312 adjust_quad_dof_sign_for_face_orientation_table[f].fill(
false);
319template <
int dim,
int spacedim>
322 , mapping_kind(fe.mapping_kind)
323 , adjust_quad_dof_sign_for_face_orientation_table(
324 fe.adjust_quad_dof_sign_for_face_orientation_table)
325 , poly_space(fe.poly_space->clone())
326 , inverse_node_matrix(fe.inverse_node_matrix)
331template <
int dim,
int spacedim>
335 return mapping_kind.size() == 1;
339template <
int dim,
int spacedim>
342 const unsigned int index,
343 const unsigned int face,
357 Assert(adjust_quad_dof_sign_for_face_orientation_table
358 [this->n_unique_2d_subobjects() == 1 ? 0 : face]
361 this->n_dofs_per_quad(face),
364 return adjust_quad_dof_sign_for_face_orientation_table
365 [this->n_unique_2d_subobjects() == 1 ? 0 : face](
index,
366 combined_orientation);
370template <
int dim,
int spacedim>
374 if (single_mapping_kind())
375 return mapping_kind[0];
378 return mapping_kind[i];
383template <
int dim,
int spacedim>
395template <
int dim,
int spacedim>
398 const unsigned int i,
400 const unsigned int component)
const
405 std::scoped_lock lock(cache_mutex);
407 if (cached_point != p || cached_values.empty())
410 cached_values.resize(poly_space->n());
412 std::vector<Tensor<4, dim>> dummy1;
413 std::vector<Tensor<5, dim>> dummy2;
414 poly_space->evaluate(
415 p, cached_values, cached_grads, cached_grad_grads, dummy1, dummy2);
419 if (inverse_node_matrix.n_cols() == 0)
422 for (
unsigned int j = 0; j < inverse_node_matrix.n_cols(); ++j)
423 s += inverse_node_matrix(j, i) * cached_values[j][
component];
429template <
int dim,
int spacedim>
440template <
int dim,
int spacedim>
443 const unsigned int i,
445 const unsigned int component)
const
450 std::scoped_lock lock(cache_mutex);
452 if (cached_point != p || cached_grads.empty())
455 cached_grads.resize(poly_space->n());
457 std::vector<Tensor<4, dim>> dummy1;
458 std::vector<Tensor<5, dim>> dummy2;
459 poly_space->evaluate(
460 p, cached_values, cached_grads, cached_grad_grads, dummy1, dummy2);
464 if (inverse_node_matrix.n_cols() == 0)
467 for (
unsigned int j = 0; j < inverse_node_matrix.n_cols(); ++j)
468 s += inverse_node_matrix(j, i) * cached_grads[j][
component];
475template <
int dim,
int spacedim>
486template <
int dim,
int spacedim>
489 const unsigned int i,
491 const unsigned int component)
const
496 std::scoped_lock lock(cache_mutex);
498 if (cached_point != p || cached_grad_grads.empty())
501 cached_grad_grads.resize(poly_space->n());
503 std::vector<Tensor<4, dim>> dummy1;
504 std::vector<Tensor<5, dim>> dummy2;
505 poly_space->evaluate(
506 p, cached_values, cached_grads, cached_grad_grads, dummy1, dummy2);
510 if (inverse_node_matrix.n_cols() == 0)
513 for (
unsigned int j = 0; j < inverse_node_matrix.n_cols(); ++j)
514 s += inverse_node_matrix(i, j) * cached_grad_grads[j][
component];
524template <
int dim,
int spacedim>
539 Assert(
dynamic_cast<const InternalData *
>(&fe_internal) !=
nullptr,
548 static_cast<const InternalData &
>(fe_internal),
554template <
int dim,
int spacedim>
558 const unsigned int face_no,
570 Assert(
dynamic_cast<const InternalData *
>(&fe_internal) !=
nullptr,
580 quadrature[0].
size()),
581 quadrature[0].
size(),
585 static_cast<
const InternalData &>(fe_internal),
591template <
int dim,
int spacedim>
595 const unsigned int face_no,
596 const unsigned int sub_no,
607 Assert(
dynamic_cast<const InternalData *
>(&fe_internal) !=
nullptr,
619 cell->subface_case(face_no)),
624 static_cast<
const InternalData &>(fe_internal),
630template <
int dim,
int spacedim>
635 const unsigned int n_q_points,
645 fe_data.
shape_values.size()[0] == this->n_dofs_per_cell(),
647 this->n_dofs_per_cell()));
658 internal::FE_PolyTensor::get_dof_sign_change_nedelec(
666 internal::FE_PolyTensor::get_dof_sign_change_h_div(cell,
672 const unsigned int first_quad_index = this->get_first_quad_index();
674 const unsigned int n_dofs_per_quad = this->n_dofs_per_quad();
675 const unsigned int n_quad_dofs =
678 for (
unsigned int dof_index = 0; dof_index < this->n_dofs_per_cell();
685 const bool is_quad_dof =
687 (first_quad_index <= dof_index) &&
688 (dof_index < first_quad_index + n_quad_dofs));
698 double dof_sign = 1.0;
709 unsigned int face_index_from_dof_index =
710 (dof_index - first_quad_index) / (n_dofs_per_quad);
712 unsigned int local_quad_dof_index = dof_index % n_dofs_per_quad;
715 if (adjust_quad_dof_sign_for_face_orientation(
716 local_quad_dof_index,
717 face_index_from_dof_index,
718 cell->combined_face_orientation(face_index_from_dof_index)))
722 const MappingKind mapping_kind = get_mapping_kind(dof_index);
724 const unsigned int first =
726 [dof_index * this->n_components() +
727 this->get_nonzero_components(dof_index).first_selected_component()];
731 switch (mapping_kind)
735 for (
unsigned int k = 0; k < n_q_points; ++k)
736 for (
unsigned int d = 0;
d < dim; ++
d)
746 transformed_shape_values =
756 transformed_shape_values);
758 for (
unsigned int k = 0; k < n_q_points; ++k)
759 for (
unsigned int d = 0;
d < spacedim; ++
d)
761 transformed_shape_values[k][
d];
769 transformed_shape_values =
779 transformed_shape_values);
780 for (
unsigned int k = 0; k < n_q_points; ++k)
781 for (
unsigned int d = 0;
d < spacedim; ++
d)
783 dof_sign * transformed_shape_values[k][
d];
790 transformed_shape_values =
800 transformed_shape_values);
802 for (
unsigned int k = 0; k < n_q_points; ++k)
803 for (
unsigned int d = 0;
d < spacedim; ++
d)
805 dof_sign * transformed_shape_values[k][
d];
821 switch (mapping_kind)
831 transformed_shape_grads);
832 for (
unsigned int k = 0; k < n_q_points; ++k)
833 for (
unsigned int d = 0;
d < spacedim; ++
d)
835 transformed_shape_grads[k][d];
847 transformed_shape_grads);
849 for (
unsigned int k = 0; k < n_q_points; ++k)
850 for (
unsigned int d = 0;
d < spacedim; ++
d)
851 for (
unsigned int n = 0; n < spacedim; ++n)
852 transformed_shape_grads[k][d] -=
856 for (
unsigned int k = 0; k < n_q_points; ++k)
857 for (
unsigned int d = 0;
d < spacedim; ++
d)
859 transformed_shape_grads[k][d];
865 for (
unsigned int k = 0; k < n_q_points; ++k)
866 if constexpr (dim == spacedim)
870 for (
unsigned int d = 0;
d < dim; ++
d)
879 transformed_shape_grads);
881 for (
unsigned int k = 0; k < n_q_points; ++k)
882 for (
unsigned int d = 0;
d < spacedim; ++
d)
883 for (
unsigned int n = 0; n < spacedim; ++n)
884 transformed_shape_grads[k][d] +=
888 for (
unsigned int k = 0; k < n_q_points; ++k)
889 for (
unsigned int d = 0;
d < spacedim; ++
d)
891 transformed_shape_grads[k][d];
899 for (
unsigned int k = 0; k < n_q_points; ++k)
900 if constexpr (dim == spacedim)
904 for (
unsigned int d = 0;
d < dim; ++
d)
913 transformed_shape_grads);
915 for (
unsigned int k = 0; k < n_q_points; ++k)
916 for (
unsigned int d = 0;
d < spacedim; ++
d)
917 for (
unsigned int n = 0; n < spacedim; ++n)
918 transformed_shape_grads[k][d] +=
925 for (
unsigned int k = 0; k < n_q_points; ++k)
926 for (
unsigned int d = 0;
d < spacedim; ++
d)
928 dof_sign * transformed_shape_grads[k][d];
945 for (
unsigned int k = 0; k < n_q_points; ++k)
946 if constexpr (dim == spacedim)
950 for (
unsigned int d = 0;
d < dim; ++
d)
960 transformed_shape_grads);
962 for (
unsigned int k = 0; k < n_q_points; ++k)
963 for (
unsigned int d = 0;
d < spacedim; ++
d)
964 for (
unsigned int n = 0; n < spacedim; ++n)
965 transformed_shape_grads[k][d] -=
969 for (
unsigned int k = 0; k < n_q_points; ++k)
970 for (
unsigned int d = 0;
d < spacedim; ++
d)
972 dof_sign * transformed_shape_grads[k][d];
984 switch (mapping_kind)
989 transformed_shape_hessians =
999 transformed_shape_hessians);
1001 for (
unsigned int k = 0; k < n_q_points; ++k)
1002 for (
unsigned int d = 0;
d < spacedim; ++
d)
1003 for (
unsigned int n = 0; n < spacedim; ++n)
1004 transformed_shape_hessians[k][d] -=
1008 for (
unsigned int k = 0; k < n_q_points; ++k)
1009 for (
unsigned int d = 0;
d < spacedim; ++
d)
1011 transformed_shape_hessians[k][d];
1017 for (
unsigned int k = 0; k < n_q_points; ++k)
1018 if constexpr (dim == spacedim)
1022 for (
unsigned int d = 0;
d < dim; ++
d)
1023 for (
unsigned int e = 0;
e < dim; ++
e)
1025 .untransformed_shape_hessian_tensors[k + offset][d]
1028 .shape_grad_grads[dof_index][k + offset][d][e];
1031 transformed_shape_hessians =
1041 transformed_shape_hessians);
1043 for (
unsigned int k = 0; k < n_q_points; ++k)
1044 for (
unsigned int d = 0;
d < spacedim; ++
d)
1045 for (
unsigned int n = 0; n < spacedim; ++n)
1046 for (
unsigned int i = 0; i < spacedim; ++i)
1047 for (
unsigned int j = 0; j < spacedim; ++j)
1049 transformed_shape_hessians[k][
d][i][j] -=
1065 for (
unsigned int k = 0; k < n_q_points; ++k)
1066 for (
unsigned int d = 0;
d < spacedim; ++
d)
1068 transformed_shape_hessians[k][d];
1075 for (
unsigned int k = 0; k < n_q_points; ++k)
1076 if constexpr (dim == spacedim)
1080 for (
unsigned int d = 0;
d < dim; ++
d)
1081 for (
unsigned int e = 0;
e < dim; ++
e)
1083 .untransformed_shape_hessian_tensors[k + offset][d]
1086 .shape_grad_grads[dof_index][k + offset][d][e];
1089 transformed_shape_hessians =
1099 transformed_shape_hessians);
1101 for (
unsigned int k = 0; k < n_q_points; ++k)
1102 for (
unsigned int d = 0;
d < spacedim; ++
d)
1103 for (
unsigned int n = 0; n < spacedim; ++n)
1104 for (
unsigned int i = 0; i < spacedim; ++i)
1105 for (
unsigned int j = 0; j < spacedim; ++j)
1107 transformed_shape_hessians[k][
d][i][j] +=
1121 for (
unsigned int m = 0; m < spacedim; ++m)
1122 transformed_shape_hessians[k][d][i][j] -=
1124 .jacobian_pushed_forward_grads[k][d][i]
1127 .jacobian_pushed_forward_grads[k][m][n]
1131 .jacobian_pushed_forward_grads[k][d][m]
1134 .jacobian_pushed_forward_grads[k][m][i]
1139 for (
unsigned int k = 0; k < n_q_points; ++k)
1140 for (
unsigned int d = 0;
d < spacedim; ++
d)
1142 transformed_shape_hessians[k][d];
1150 for (
unsigned int k = 0; k < n_q_points; ++k)
1151 if constexpr (dim == spacedim)
1155 for (
unsigned int d = 0;
d < dim; ++
d)
1156 for (
unsigned int e = 0;
e < dim; ++
e)
1158 .untransformed_shape_hessian_tensors[k + offset][d]
1161 .shape_grad_grads[dof_index][k + offset][d][e];
1164 transformed_shape_hessians =
1174 transformed_shape_hessians);
1176 for (
unsigned int k = 0; k < n_q_points; ++k)
1177 for (
unsigned int d = 0;
d < spacedim; ++
d)
1178 for (
unsigned int n = 0; n < spacedim; ++n)
1179 for (
unsigned int i = 0; i < spacedim; ++i)
1180 for (
unsigned int j = 0; j < spacedim; ++j)
1182 transformed_shape_hessians[k][
d][i][j] +=
1197 transformed_shape_hessians[k][
d][i][j] -=
1209 for (
unsigned int m = 0; m < spacedim; ++m)
1211 transformed_shape_hessians[k][
d][i][j] -=
1220 .jacobian_pushed_forward_grads[k][d][m]
1223 .jacobian_pushed_forward_grads[k][m][i]
1227 transformed_shape_hessians[k][
d][i][j] +=
1236 .jacobian_pushed_forward_grads[k][n][m]
1239 .jacobian_pushed_forward_grads[k][m][i]
1245 for (
unsigned int k = 0; k < n_q_points; ++k)
1246 for (
unsigned int d = 0;
d < spacedim; ++
d)
1248 dof_sign * transformed_shape_hessians[k][d];
1255 for (
unsigned int k = 0; k < n_q_points; ++k)
1256 if constexpr (dim == spacedim)
1260 for (
unsigned int d = 0;
d < dim; ++
d)
1261 for (
unsigned int e = 0;
e < dim; ++
e)
1263 .untransformed_shape_hessian_tensors[k + offset][d]
1266 .shape_grad_grads[dof_index][k + offset][d][e];
1269 transformed_shape_hessians =
1279 transformed_shape_hessians);
1281 for (
unsigned int k = 0; k < n_q_points; ++k)
1282 for (
unsigned int d = 0;
d < spacedim; ++
d)
1283 for (
unsigned int n = 0; n < spacedim; ++n)
1284 for (
unsigned int i = 0; i < spacedim; ++i)
1285 for (
unsigned int j = 0; j < spacedim; ++j)
1287 transformed_shape_hessians[k][
d][i][j] -=
1303 for (
unsigned int k = 0; k < n_q_points; ++k)
1304 for (
unsigned int d = 0;
d < spacedim; ++
d)
1306 dof_sign * transformed_shape_hessians[k][d];
1326template <
int dim,
int spacedim>
1333 for (
unsigned int i = 0; i < this->n_dofs_per_cell(); ++i)
1335 const MappingKind mapping_kind = get_mapping_kind(i);
1337 switch (mapping_kind)
1428#include "fe/fe_poly_tensor.inst"
ArrayView< std::remove_reference_t< typename std::iterator_traits< Iterator >::reference >, MemorySpaceType > make_array_view(const Iterator begin, const Iterator end)
std::vector< Tensor< 3, spacedim > > transformed_shape_hessians
Table< 2, DerivativeForm< 2, dim, spacedim > > shape_grad_grads
Table< 2, DerivativeForm< 1, dim, spacedim > > shape_grads
std::vector< Tensor< 2, spacedim > > transformed_shape_grads
std::vector< Tensor< 3, dim > > untransformed_shape_hessian_tensors
std::vector< Tensor< 2, dim > > untransformed_shape_grads
Table< 2, Tensor< 1, dim > > shape_values
std::vector< Tensor< 1, spacedim > > transformed_shape_values
std::vector< double > dof_sign_change
virtual UpdateFlags requires_update_flags(const UpdateFlags update_flags) const override
bool adjust_quad_dof_sign_for_face_orientation(const unsigned int index, const unsigned int face_no, const types::geometric_orientation combined_orientation) const
virtual Tensor< 1, dim > shape_grad(const unsigned int i, const Point< dim > &p) const override
virtual Tensor< 2, dim > shape_grad_grad_component(const unsigned int i, const Point< dim > &p, const unsigned int component) const override
virtual double shape_value_component(const unsigned int i, const Point< dim > &p, const unsigned int component) const override
virtual Tensor< 2, dim > shape_grad_grad(const unsigned int i, const Point< dim > &p) const override
void compute_fill(const typename Triangulation< dim, spacedim >::cell_iterator &cell, const typename QProjector< dim >::DataSetDescriptor &offset, const unsigned int n_q_points, const Mapping< dim, spacedim > &mapping, const typename Mapping< dim, spacedim >::InternalDataBase &mapping_internal, const internal::FEValuesImplementation::MappingRelatedData< dim, spacedim > &mapping_data, const typename FE_PolyTensor< dim, spacedim >::InternalData &fe_internal, internal::FEValuesImplementation::FiniteElementRelatedData< dim, spacedim > &output_data) const
virtual void fill_fe_face_values(const typename Triangulation< dim, spacedim >::cell_iterator &cell, const unsigned int face_no, const hp::QCollection< dim - 1 > &quadrature, const Mapping< dim, spacedim > &mapping, const typename Mapping< dim, spacedim >::InternalDataBase &mapping_internal, const internal::FEValuesImplementation::MappingRelatedData< dim, spacedim > &mapping_data, const typename FiniteElement< dim, spacedim >::InternalDataBase &fe_internal, ::internal::FEValuesImplementation::FiniteElementRelatedData< dim, spacedim > &output_data) const override
virtual double shape_value(const unsigned int i, const Point< dim > &p) const override
virtual void fill_fe_values(const typename Triangulation< dim, spacedim >::cell_iterator &cell, const CellSimilarity::Similarity cell_similarity, const Quadrature< dim > &quadrature, const Mapping< dim, spacedim > &mapping, const typename Mapping< dim, spacedim >::InternalDataBase &mapping_internal, const internal::FEValuesImplementation::MappingRelatedData< dim, spacedim > &mapping_data, const typename FiniteElement< dim, spacedim >::InternalDataBase &fe_internal, ::internal::FEValuesImplementation::FiniteElementRelatedData< dim, spacedim > &output_data) const override
virtual void fill_fe_subface_values(const typename Triangulation< dim, spacedim >::cell_iterator &cell, const unsigned int face_no, const unsigned int sub_no, const Quadrature< dim - 1 > &quadrature, const Mapping< dim, spacedim > &mapping, const typename Mapping< dim, spacedim >::InternalDataBase &mapping_internal, const internal::FEValuesImplementation::MappingRelatedData< dim, spacedim > &mapping_data, const typename FiniteElement< dim, spacedim >::InternalDataBase &fe_internal, ::internal::FEValuesImplementation::FiniteElementRelatedData< dim, spacedim > &output_data) const override
MappingKind get_mapping_kind(const unsigned int i) const
FE_PolyTensor(const TensorPolynomialsBase< dim > &polynomials, const FiniteElementData< dim > &fe_data, const std::vector< bool > &restriction_is_additive_flags, const std::vector< ComponentMask > &nonzero_components)
bool single_mapping_kind() const
virtual Tensor< 1, dim > shape_grad_component(const unsigned int i, const Point< dim > &p, const unsigned int component) const override
unsigned int n_dofs_per_face(unsigned int face_no=0, unsigned int child=0) const
unsigned int tensor_degree() const
virtual unsigned int face_to_cell_index(const unsigned int face_dof_index, const unsigned int face, const types::geometric_orientation combined_orientation=numbers::default_geometric_orientation) const
Abstract base class for mapping classes.
virtual void transform(const ArrayView< const Tensor< 1, dim > > &input, const MappingKind kind, const typename Mapping< dim, spacedim >::InternalDataBase &internal, const ArrayView< Tensor< 1, spacedim > > &output) const =0
Class storing the offset index into a Quadrature rule created by project_to_all_faces() or project_to...
Class which transforms dim - 1-dimensional quadrature rules to dim-dimensional face quadratures.
unsigned int size() const
unsigned int size() const
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
#define DEAL_II_NOT_IMPLEMENTED()
#define Assert(cond, exc)
#define AssertDimension(dim1, dim2)
#define AssertIndexRange(index, range)
static ::ExceptionBase & ExcInternalError()
static ::ExceptionBase & ExcDimensionMismatch(std::size_t arg1, std::size_t arg2)
@ update_jacobian_pushed_forward_2nd_derivatives
@ update_contravariant_transformation
Contravariant transformation.
@ update_jacobian_pushed_forward_grads
@ update_hessians
Second derivatives of shape functions.
@ update_values
Shape function values.
@ update_3rd_derivatives
Third derivatives of shape functions.
@ update_covariant_transformation
Covariant transformation.
@ update_gradients
Shape function gradients.
@ update_default
No update.
@ update_piola
Values needed for Piola transform.
@ mapping_covariant_gradient
@ mapping_contravariant_hessian
@ mapping_covariant_hessian
@ mapping_contravariant_gradient
void reference_cell(Triangulation< dim, spacedim > &tria, const ReferenceCell< dim > &reference_cell)
SymmetricTensor< 2, dim, Number > e(const Tensor< 2, dim, Number > &F)
SymmetricTensor< 2, dim, Number > d(const Tensor< 2, dim, Number > &F, const Tensor< 2, dim, Number > &dF_dt)
* * * ScaleZFunction< dim, Number, components >::ScaleZFunction * component(component)
* * * * std::vector< Number > ThermoPlasticMaterial< dim, ViscoplasticYieldLaw, Number >::get_state_parameters const
types::geometric_orientation combined_face_orientation(const bool face_orientation, const bool face_rotation, const bool face_flip)
constexpr types::geometric_orientation default_geometric_orientation
std::uint8_t geometric_orientation