OGS
MathLib::KelvinVector::Invariants< KelvinVectorSize > Struct Template Referencefinal

Detailed Description

template<int KelvinVectorSize>
struct MathLib::KelvinVector::Invariants< KelvinVectorSize >

Invariants used in mechanics, based on Kelvin representation of the vectors and matrices. The invariants are computed at process creation time.

Definition at line 62 of file KelvinVector.h.

#include <KelvinVector.h>

Public Member Functions

double determinant (Eigen::Matrix< double, 6, 1 > const &v)
 
double determinant (Eigen::Matrix< double, 4, 1 > const &v)
 

Static Public Member Functions

static double determinant (Eigen::Matrix< double, KelvinVectorSize, 1 > const &v)
 Determinant of a matrix in Kelvin vector representation. More...
 
static double equivalentStress (Eigen::Matrix< double, KelvinVectorSize, 1 > const &deviatoric_v)
 
static double FrobeniusNorm (Eigen::Matrix< double, KelvinVectorSize, 1 > const &deviatoric_v)
 Get the norm of the deviatoric stress. More...
 
static double J2 (Eigen::Matrix< double, KelvinVectorSize, 1 > const &deviatoric_v)
 
static double J3 (Eigen::Matrix< double, KelvinVectorSize, 1 > const &deviatoric_v)
 
static double trace (Eigen::Matrix< double, KelvinVectorSize, 1 > const &v)
 Trace of the corresponding tensor. More...
 
static Eigen::Vector3d diagonal (Eigen::Matrix< double, KelvinVectorSize, 1 > const &v)
 

Static Public Attributes

static Eigen::Matrix< double, KelvinVectorSize, KelvinVectorSize > const deviatoric_projection
 
static Eigen::Matrix< double, KelvinVectorSize, KelvinVectorSize > const spherical_projection
 
static Eigen::Matrix< double, KelvinVectorSize, 1 > const identity2
 Kelvin mapping of 2nd order identity tensor. More...
 

Member Function Documentation

◆ determinant() [1/3]

double MathLib::KelvinVector::Invariants< 4 >::determinant ( Eigen::Matrix< double, 4, 1 > const &  v)

Definition at line 28 of file KelvinVector.cpp.

29 {
30  return v(2) * (v(0) * v(1) - v(3) * v(3) / 2.);
31 }

◆ determinant() [2/3]

double MathLib::KelvinVector::Invariants< 6 >::determinant ( Eigen::Matrix< double, 6, 1 > const &  v)

Definition at line 20 of file KelvinVector.cpp.

21 {
22  return v(0) * v(1) * v(2) + v(3) * v(4) * v(5) / std::sqrt(2.) -
23  v(3) * v(3) * v(2) / 2. - v(4) * v(4) * v(0) / 2. -
24  v(5) * v(5) * v(1) / 2.;
25 }

◆ determinant() [3/3]

template<int KelvinVectorSize>
static double MathLib::KelvinVector::Invariants< KelvinVectorSize >::determinant ( Eigen::Matrix< double, KelvinVectorSize, 1 > const &  v)
static

Determinant of a matrix in Kelvin vector representation.

Referenced by MathLib::KelvinVector::inverse().

◆ diagonal()

template<int KelvinVectorSize>
Eigen::Vector3d MathLib::KelvinVector::Invariants< KelvinVectorSize >::diagonal ( Eigen::Matrix< double, KelvinVectorSize, 1 > const &  v)
static

Diagonal of the corresponding tensor which is always of length 3 in 2D and 3D cases.

Definition at line 54 of file KelvinVector-impl.h.

56 {
57  return v.template topLeftCorner<3, 1>();
58 }

◆ equivalentStress()

template<int KelvinVectorSize>
double MathLib::KelvinVector::Invariants< KelvinVectorSize >::equivalentStress ( Eigen::Matrix< double, KelvinVectorSize, 1 > const &  deviatoric_v)
static

The von Mises equivalent stress.

Note
The input vector must have trace equal zero.

Definition at line 18 of file KelvinVector-impl.h.

20 {
21  assert(std::abs(trace(deviatoric_v)) <=
22  2e-12 * diagonal(deviatoric_v).norm());
23  return std::sqrt(3 * J2(deviatoric_v));
24 }
double norm(MatrixOrVector const &x, MathLib::VecNormType type)
Definition: LinAlg.h:88
static Eigen::Vector3d diagonal(Eigen::Matrix< double, KelvinVectorSize, 1 > const &v)
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)

References MathLib::LinAlg::norm().

◆ FrobeniusNorm()

template<int KelvinVectorSize>
double MathLib::KelvinVector::Invariants< KelvinVectorSize >::FrobeniusNorm ( Eigen::Matrix< double, KelvinVectorSize, 1 > const &  deviatoric_v)
static

Get the norm of the deviatoric stress.

Definition at line 27 of file KelvinVector-impl.h.

29 {
30  return std::sqrt(deviatoric_v.transpose() * deviatoric_v);
31 }

◆ J2()

template<int KelvinVectorSize>
double MathLib::KelvinVector::Invariants< KelvinVectorSize >::J2 ( Eigen::Matrix< double, KelvinVectorSize, 1 > const &  deviatoric_v)
static

Second invariant of deviatoric tensor.

Note
The input vector must have trace equal zero.

Definition at line 34 of file KelvinVector-impl.h.

36 {
37  assert(std::abs(trace(deviatoric_v)) <=
38  2e-12 * diagonal(deviatoric_v).norm());
39  return 0.5 * deviatoric_v.transpose() * deviatoric_v;
40 }

References MathLib::LinAlg::norm().

◆ J3()

template<int KelvinVectorSize>
double MathLib::KelvinVector::Invariants< KelvinVectorSize >::J3 ( Eigen::Matrix< double, KelvinVectorSize, 1 > const &  deviatoric_v)
static

Third invariant, equal to determinant of a deviatoric tensor.

Note
The input vector must have trace equal zero.

Definition at line 45 of file KelvinVector-impl.h.

47 {
48  assert(std::abs(trace(deviatoric_v)) <=
49  2e-12 * diagonal(deviatoric_v).norm());
50  return determinant(deviatoric_v);
51 }
static double determinant(Eigen::Matrix< double, KelvinVectorSize, 1 > const &v)
Determinant of a matrix in Kelvin vector representation.

References MathLib::LinAlg::norm().

◆ trace()

template<int KelvinVectorSize>
double MathLib::KelvinVector::Invariants< KelvinVectorSize >::trace ( Eigen::Matrix< double, KelvinVectorSize, 1 > const &  v)
static

Trace of the corresponding tensor.

Definition at line 62 of file KelvinVector-impl.h.

64 {
65  return diagonal(v).sum();
66 }

Member Data Documentation

◆ deviatoric_projection

template<int KelvinVectorSize>
const Eigen::Matrix< double, KelvinVectorSize, KelvinVectorSize > MathLib::KelvinVector::Invariants< KelvinVectorSize >::deviatoric_projection
static
Initial value:
=
KelvinVector_detail::initDeviatoricProjection<KelvinVectorSize>()

Kelvin mapping of deviatoric projection tensor. \(A_{\rm dev} = P_{\rm dev}:A\) for \(A\) being a second order tensor.

Definition at line 70 of file KelvinVector.h.

◆ identity2

template<int KelvinVectorSize>
const Eigen::Matrix< double, KelvinVectorSize, 1 > MathLib::KelvinVector::Invariants< KelvinVectorSize >::identity2
static
Initial value:
=
KelvinVector_detail::initIdentity2<KelvinVectorSize>()

Kelvin mapping of 2nd order identity tensor.

Definition at line 76 of file KelvinVector.h.

Referenced by ProcessLib::ThermoMechanicalPhaseField::IntegrationPointData< BMatricesType, ShapeMatrixType, DisplacementDim >::updateConstitutiveRelation().

◆ spherical_projection

template<int KelvinVectorSize>
Eigen::Matrix< double, KelvinVectorSize, KelvinVectorSize > const MathLib::KelvinVector::Invariants< KelvinVectorSize >::spherical_projection
static
Initial value:
=
KelvinVector_detail::initSphericalProjection<KelvinVectorSize>()

Kelvin mapping of spherical projection tensor. \(A_{\rm sph} = P_{\rm sph}:A\) for \(A\) being a second order tensor.

Definition at line 74 of file KelvinVector.h.


The documentation for this struct was generated from the following files: