13#ifndef dealii_transformations_h
14#define dealii_transformations_h
54 template <
typename Number>
87 template <
typename Number>
131 template <
int dim,
typename Number>
150 template <
int dim,
typename Number>
170 template <
int dim,
typename Number>
189 template <
int dim,
typename Number>
209 template <
int dim,
typename Number>
234 template <
int dim,
typename Number>
253 template <
int dim,
typename Number>
272 template <
int dim,
typename Number>
291 template <
int dim,
typename Number>
310 template <
int dim,
typename Number>
356 template <
int dim,
typename Number>
375 template <
int dim,
typename Number>
395 template <
int dim,
typename Number>
414 template <
int dim,
typename Number>
434 template <
int dim,
typename Number>
459 template <
int dim,
typename Number>
478 template <
int dim,
typename Number>
497 template <
int dim,
typename Number>
516 template <
int dim,
typename Number>
535 template <
int dim,
typename Number>
570 template <
int dim,
typename Number>
590 template <
int dim,
typename Number>
611 template <
int dim,
typename Number>
632 template <
int dim,
typename Number>
654 template <
int dim,
typename Number>
681 template <
int dim,
typename Number>
701 template <
int dim,
typename Number>
721 template <
int dim,
typename Number>
742 template <
int dim,
typename Number>
763 template <
int dim,
typename Number>
798 template <
int dim,
typename Number>
820 template <
int dim,
typename Number>
836 template <
int dim,
typename Number>
852 template <
int dim,
typename Number>
867 template <
int dim,
typename Number>
883 template <
int dim,
typename Number>
899template <
typename Number>
907 const Number rotation[2][2] = {{cos(angle), -sin(angle)},
908 {
sin(angle),
cos(angle)}};
914template <
typename Number>
926 ExcMessage(
"The supplied axial vector is not a unit vector."));
927 const Number c =
cos(angle);
928 const Number s =
sin(angle);
929 const Number t = 1. - c;
930 const Number rotation[3][3] = {{t * axis[0] * axis[0] + c,
931 t * axis[0] * axis[1] - s * axis[2],
932 t * axis[0] * axis[2] + s * axis[1]},
933 {t * axis[0] * axis[1] + s * axis[2],
934 t * axis[1] * axis[1] + c,
935 t * axis[1] * axis[2] - s * axis[0]},
936 {t * axis[0] * axis[2] - s * axis[1],
937 t * axis[1] * axis[2] + s * axis[0],
938 t * axis[2] * axis[2] + c}};
944template <
int dim,
typename Number>
955template <
int dim,
typename Number>
966template <
int dim,
typename Number>
977template <
int dim,
typename Number>
988template <
int dim,
typename Number>
999template <
int dim,
typename Number>
1010template <
int dim,
typename Number>
1021template <
int dim,
typename Number>
1032template <
int dim,
typename Number>
1043template <
int dim,
typename Number>
1054template <
int dim,
typename Number>
1066template <
int dim,
typename Number>
1078template <
int dim,
typename Number>
1090template <
int dim,
typename Number>
1102template <
int dim,
typename Number>
1114template <
int dim,
typename Number>
1124template <
int dim,
typename Number>
1134template <
int dim,
typename Number>
1145template <
int dim,
typename Number>
1155template <
int dim,
typename Number>
1166template <
int dim,
typename Number>
1171 return Number(1.0 /
determinant(F)) * Contravariant::push_forward(V, F);
1176template <
int dim,
typename Number>
1181 return Number(1.0 /
determinant(F)) * Contravariant::push_forward(T, F);
1186template <
int dim,
typename Number>
1192 return Number(1.0 /
determinant(F)) * Contravariant::push_forward(T, F);
1197template <
int dim,
typename Number>
1202 return Number(1.0 /
determinant(F)) * Contravariant::push_forward(H, F);
1207template <
int dim,
typename Number>
1213 return Number(1.0 /
determinant(F)) * Contravariant::push_forward(H, F);
1218template <
int dim,
typename Number>
1223 return Number(
determinant(F)) * Contravariant::pull_back(v, F);
1228template <
int dim,
typename Number>
1233 return Number(
determinant(F)) * Contravariant::pull_back(t, F);
1238template <
int dim,
typename Number>
1244 return Number(
determinant(F)) * Contravariant::pull_back(t, F);
1249template <
int dim,
typename Number>
1254 return Number(
determinant(F)) * Contravariant::pull_back(h, F);
1259template <
int dim,
typename Number>
1265 return Number(
determinant(F)) * Contravariant::pull_back(h, F);
1270template <
int dim,
typename Number>
1279template <
int dim,
typename Number>
1289template <
int dim,
typename Number>
1299template <
int dim,
typename Number>
1306 for (
unsigned int i = 0; i < dim; ++i)
1307 for (
unsigned int J = 0;
J < dim; ++
J)
1309 for (
unsigned int I_ = 0; I_ < dim; ++I_)
1310 tmp_1[i][J] += B[i][I_] * T[I_][J];
1313 for (
unsigned int i = 0; i < dim; ++i)
1314 for (
unsigned int j = i; j < dim; ++j)
1315 for (
unsigned int J = 0;
J < dim; ++
J)
1316 out[i][j] += B[j][J] * tmp_1[i][J];
1323template <
int dim,
typename Number>
1353template <
int dim,
typename Number>
1377 for (
unsigned int I_ = 0; I_ < dim; ++I_)
1378 for (
unsigned int j = 0; j < dim; ++j)
1379 for (
unsigned int K = 0;
K < dim; ++
K)
1380 for (
unsigned int L = 0;
L < dim; ++
L)
1381 for (
unsigned int J = 0;
J < dim; ++
J)
1382 tmp[I_][j][K][L] += B[j][J] * H[I_][J][K][L];
1389 for (
unsigned int i = 0; i < dim; ++i)
1390 for (
unsigned int j = i; j < dim; ++j)
1391 for (
unsigned int k = 0; k < dim; ++k)
1392 for (
unsigned int l = k;
l < dim; ++
l)
1393 for (
unsigned int K = 0;
K < dim; ++
K)
1394 out[i][j][k][l] += B[k][K] * tmp[i][j][K][l];
numbers::NumberTraits< Number >::real_type norm() const
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
#define Assert(cond, exc)
static ::ExceptionBase & ExcMessage(std::string arg1)
CGAL::Exact_predicates_exact_constructions_kernel_with_sqrt K
Tensor< 2, dim, Number > l(const Tensor< 2, dim, Number > &F, const Tensor< 2, dim, Number > &dF_dt)
::VectorizedArray< Number, width > cos(const ::VectorizedArray< Number, width > &)
::VectorizedArray< Number, width > sin(const ::VectorizedArray< Number, width > &)
::VectorizedArray< Number, width > abs(const ::VectorizedArray< Number, width > &)
constexpr Number determinant(const SymmetricTensor< 2, dim, Number > &)
constexpr SymmetricTensor< 2, dim, Number > invert(const SymmetricTensor< 2, dim, Number > &)
constexpr Tensor< 2, dim, Number > cofactor(const Tensor< 2, dim, Number > &t)
constexpr Tensor< rank_1+rank_2-2, dim, typenameProductType< Number, OtherNumber >::type >::tensor_type contract(const Tensor< rank_1, dim, Number > &src1, const Tensor< rank_2, dim, OtherNumber > &src2)