16 #ifndef dealii_vector_relations_h
17 #define dealii_vector_relations_h
34 namespace VectorRelations
45 template <
int spacedim,
typename Number>
77 template <
int spacedim,
typename Number>
91 template <
int spacedim,
typename Number>
96 const Number a_norm = a.
norm();
97 const Number b_norm =
b.norm();
98 Assert(a_norm > 1.e-12 * b_norm && a_norm > 1.e-12 * b_norm,
99 ExcMessage(
"Both vectors need to be non-zero!"));
101 Number argument = (a *
b) / a_norm / b_norm;
114 template <
int spacedim,
typename Number>
121 ExcMessage(
"This function can only be used with spacedim==3!"));
124 ExcMessage(
"The axial vector is not a unit vector."));
125 Assert(std::abs(axis * a) < 1.e-12 * a.norm() &&
126 std::abs(axis *
b) < 1.e-12 *
b.norm(),
127 ExcMessage(
"The vectors are not perpendicular to the axial vector."));
129 const Number dot = a *
b;
130 const Number det = axis * cross_product_3d(a,
b);
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)
Expression atan2(const Expression &y, const Expression &x)
Expression acos(const Expression &x)
Expression copysign(const Expression &value, const Expression &sign)
SymmetricTensor< 2, dim, Number > epsilon(const Tensor< 2, dim, Number > &Grad_u)
SymmetricTensor< 2, dim, Number > b(const Tensor< 2, dim, Number > &F)
Number signed_angle(const Tensor< 1, spacedim, Number > &a, const Tensor< 1, spacedim, Number > &b, const Tensor< 1, spacedim, Number > &axis)
Number angle(const Tensor< 1, spacedim, Number > &a, const Tensor< 1, spacedim, Number > &b)