10template <
int KelvinVectorSize>
12 Eigen::Matrix<double, KelvinVectorSize, 1>
const& deviatoric_v)
14 assert(std::abs(
trace(deviatoric_v)) <=
15 4e-12 *
diagonal(deviatoric_v).norm());
16 return std::sqrt(3 *
J2(deviatoric_v));
19template <
int KelvinVectorSize>
21 Eigen::Matrix<double, KelvinVectorSize, 1>
const& deviatoric_v)
23 return std::sqrt(deviatoric_v.transpose() * deviatoric_v);
26template <
int KelvinVectorSize>
28 Eigen::Matrix<double, KelvinVectorSize, 1>
const& deviatoric_v)
30 assert(std::abs(
trace(deviatoric_v)) <=
31 4e-12 *
diagonal(deviatoric_v).norm());
32 return 0.5 * deviatoric_v.transpose() * deviatoric_v;
37template <
int KelvinVectorSize>
39 Eigen::Matrix<double, KelvinVectorSize, 1>
const& deviatoric_v)
41 assert(std::abs(
trace(deviatoric_v)) <=
42 4e-12 *
diagonal(deviatoric_v).norm());
46template <
int KelvinVectorSize>
48 Eigen::Matrix<double, KelvinVectorSize, 1>
const&
v)
50 return v.template topLeftCorner<3, 1>();
54template <
int KelvinVectorSize>
56 Eigen::Matrix<double, KelvinVectorSize, 1>
const&
v)
67template <
int KelvinVectorSize>
68Eigen::Matrix<double, KelvinVectorSize, KelvinVectorSize>
71 Eigen::Matrix<double, KelvinVectorSize, KelvinVectorSize> P_dev =
72 Eigen::Matrix<double, KelvinVectorSize, KelvinVectorSize>::Identity();
74 P_dev.template topLeftCorner<3, 3>() -=
75 1. / 3. * Eigen::Matrix<double, 3, 3>::Ones();
79template <
int KelvinVectorSize>
80Eigen::Matrix<double, KelvinVectorSize, KelvinVectorSize>
83 Eigen::Matrix<double, KelvinVectorSize, KelvinVectorSize> P_sph =
84 Eigen::Matrix<double, KelvinVectorSize, KelvinVectorSize>::Zero();
86 P_sph.template topLeftCorner<3, 3>().setConstant(1. / 3.);
90template <
int KelvinVectorSize>
93 Eigen::Matrix<double, KelvinVectorSize, 1> ivec =
94 Eigen::Matrix<double, KelvinVectorSize, 1>::Zero();
96 ivec.template topLeftCorner<3, 1>().setConstant(1.);
100template <
int KelvinVectorSize>
103 Eigen::Matrix<double, KelvinVectorSize, 1> ivec =
104 Eigen::Matrix<double, KelvinVectorSize, 1>::Ones();
106 ivec.template bottomLeftCorner<KelvinVectorSize - 3, 1>().setConstant(
113template <
int KelvinVectorSize>
114const Eigen::Matrix<double, KelvinVectorSize, KelvinVectorSize>
118template <
int KelvinVectorSize>
119Eigen::Matrix<double, KelvinVectorSize, KelvinVectorSize>
const
123template <
int KelvinVectorSize>
124const Eigen::Matrix<double, KelvinVectorSize, 1>
128template <
int KelvinVectorSize>
129const Eigen::Matrix<double, KelvinVectorSize, 1>
Eigen::Matrix< double, KelvinVectorSize, KelvinVectorSize > initSphericalProjection()
Eigen::Matrix< double, KelvinVectorSize, KelvinVectorSize > initDeviatoricProjection()
Eigen::Matrix< double, KelvinVectorSize, 1 > initOnes2()
Eigen::Matrix< double, KelvinVectorSize, 1 > initIdentity2()
static Eigen::Matrix< double, KelvinVectorSize, KelvinVectorSize > const spherical_projection
static double FrobeniusNorm(Eigen::Matrix< double, KelvinVectorSize, 1 > const &deviatoric_v)
Get the norm of the deviatoric stress.
static Eigen::Matrix< double, KelvinVectorSize, 1 > const identity2
Kelvin mapping of 2nd order identity tensor.
static Eigen::Vector3d diagonal(Eigen::Matrix< double, KelvinVectorSize, 1 > const &v)
static Eigen::Matrix< double, KelvinVectorSize, KelvinVectorSize > const deviatoric_projection
static Eigen::Matrix< double, KelvinVectorSize, 1 > const ones2
static double trace(Eigen::Matrix< double, KelvinVectorSize, 1 > const &v)
Trace of the corresponding tensor.
static double J2(Eigen::Matrix< double, KelvinVectorSize, 1 > const &deviatoric_v)
static double determinant(Eigen::Matrix< double, KelvinVectorSize, 1 > const &v)
Determinant of a matrix in Kelvin vector representation.
static double equivalentStress(Eigen::Matrix< double, KelvinVectorSize, 1 > const &deviatoric_v)
static double J3(Eigen::Matrix< double, KelvinVectorSize, 1 > const &deviatoric_v)