KratosMultiphysics
KRATOS Multiphysics (Kratos) is a framework for building parallel, multi-disciplinary simulation software, aiming at modularity, extensibility, and high performance. Kratos is written in C++, and counts with an extensive Python interface.
Public Member Functions | List of all members
Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize > Class Template Reference

This class includes several utilities necessaries for the computation of the constitutive law. More...

#include <advanced_constitutive_law_utilities.h>

Collaboration diagram for Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >:

Public Member Functions

void CalculatePrincipalStresses (array_1d< double, Dimension > &rPrincipalStressVector, const BoundedVectorType &rStressVector)
 
void CalculatePrincipalStresses (array_1d< double, Dimension > &rPrincipalStressVector, const BoundedVectorType &rStressVector)
 

Static Public Member Functions

Operations
template<class TVector >
static void CalculateI1Invariant (const TVector &rStressVector, double &rI1)
 This method computes the first invariant from a given stress vector. More...
 
static void CalculateI2Invariant (const BoundedVectorType &rStressVector, double &rI2)
 This method computes the second invariant from a given stress vector. More...
 
static void CalculateI3Invariant (const BoundedVectorType &rStressVector, double &rI3)
 This method computes the third invariant from a given stress vector. More...
 
template<class TVector >
static void CalculateJ2Invariant (const TVector &rStressVector, const double I1, BoundedVectorType &rDeviator, double &rJ2)
 This method computes the second invariant of J. More...
 
static void CalculateJ3Invariant (const BoundedVectorType &rDeviator, double &rJ3)
 This method computes the third invariant of J. More...
 
static void CalculateFirstVector (BoundedVectorType &rFirstVector)
 This method computes the first vector to be used in the derivative of the yield surface. More...
 
static void CalculateSecondVector (const BoundedVectorType &rDeviator, const double J2, BoundedVectorType &rSecondVector)
 This method computes the first vector to be used in the derivative of the yield surface. More...
 
static void CalculateThirdVector (const BoundedVectorType &rDeviator, const double J2, BoundedVectorType &rThirdVector)
 This method computes the third vector to be used in the derivative of the yield surface. More...
 
static void CalculateLodeAngle (const double J2, const double J3, double &rLodeAngle)
 This method computes the lode angle. More...
 
static double CalculateCharacteristicLength (const GeometryType &rGeometry)
 Calculates the maximal distance between corner node of a geometry and its center. More...
 
static double CalculateCharacteristicLengthOnReferenceConfiguration (const GeometryType &rGeometry)
 Calculates the maximal distance between corner node of a geometry and its center (on reference configuration) More...
 
static Matrix ComputeEquivalentSmallDeformationDeformationGradient (const Vector &rStrainVector)
 This method computes the equivalent deformation gradient for the elements which provide the deformation gradient as input. More...
 
static void CalculateAlmansiStrain (const MatrixType &rLeftCauchyTensor, VectorType &rStrainVector)
 Calculation of the Almansi strain vector. More...
 
static void CalculateHenckyStrain (const MatrixType &rCauchyTensor, VectorType &rStrainVector)
 Calculation of the Hencky strain vector (true strain, natural strain, logarithmic strain) More...
 
static void CalculateBiotStrain (const MatrixType &rCauchyTensor, VectorType &rStrainVector)
 Calculation of the Biot strain vector. More...
 
static void CalculatePrincipalStresses (array_1d< double, Dimension > &rPrincipalStressVector, const BoundedVectorType &rStressVector)
 This method computes the principal stresses vector. More...
 
static void CalculatePrincipalStressesWithCardano (array_1d< double, Dimension > &rPrincipalStressVector, const BoundedVectorType &rStressVector)
 This method computes the principal stresses vector. More...
 
static void SpectralDecomposition (const BoundedVectorType &rStressVector, BoundedVectorType &rStressVectorTension, BoundedVectorType &rStressVectorCompression)
 This method performs Spectral Decomposition of the Stress Vector/Tensor. More...
 
static Matrix CalculateElasticDeformationGradient (const MatrixType &rF, const MatrixType &rFp)
 This computes the elastic def gradient tensor Fe = F*(Fp)^-1. More...
 
static MatrixType CalculateLinearPlasticDeformationGradientIncrement (const BoundedVectorType &rPlasticPotentialDerivative, const double PlasticConsistencyFactorIncrement)
 This computes the linear plastic deformation gradient increment. More...
 
static Matrix CalculatePlasticDeformationGradientFromElastic (const MatrixType &rF, const MatrixType &rFp)
 This computes the Fp from F and Fe. More...
 
static MatrixType CalculateExponentialElasticDeformationGradient (const MatrixType &rTrialFe, const BoundedVectorType &rPlasticPotentialDerivative, const double PlasticConsistencyFactorIncrement, const MatrixType &rRe)
 This updates the exponential elastic deformation gradient. More...
 
static void CalculatePlasticStrainFromFp (const MatrixType &rFp, Vector &rPlasticStrainVector)
 This computes the plastic strain from Fp. More...
 
static MatrixType CalculateDirectElasticDeformationGradient (const MatrixType &rElasticTrial, const BoundedVectorType &rPlasticPotentialDerivative, const double PlasticConsistencyFactorIncrement, const MatrixType &rRe)
 This computes the elastic deformation gradient. More...
 
static MatrixType CalculateExponentialPlasticDeformationGradientIncrement (const BoundedVectorType &rPlasticPotentialDerivative, const double PlasticConsistencyFactorIncrement, const MatrixType &rRe)
 This computes the exponential plastic deformation gradient increment. More...
 
static MatrixType CalculateDirectPlasticDeformationGradientIncrement (const BoundedVectorType &rPlasticPotentialDerivative, const double PlasticConsistencyFactorIncrement, const MatrixType &rRe)
 This computes the exponential plastic deformation gradient increment. More...
 
static void CalculateRotationOperatorEuler1 (const double EulerAngle1, BoundedMatrix< double, 3, 3 > &rRotationOperator)
 This computes the rotation matrix for the 1st Euler angle http://mathworld.wolfram.com/EulerAngles.html. More...
 
static void CalculateRotationOperatorEuler2 (const double EulerAngle2, BoundedMatrix< double, 3, 3 > &rRotationOperator)
 This computes the rotation matrix for the 2nd Euler angle http://mathworld.wolfram.com/EulerAngles.html. More...
 
static void CalculateRotationOperatorEuler3 (const double EulerAngle3, BoundedMatrix< double, 3, 3 > &rRotationOperator)
 This computes the rotation matrix for the 3rd Euler angle http://mathworld.wolfram.com/EulerAngles.html. More...
 
static void CalculateRotationOperator (const double EulerAngle1, const double EulerAngle2, const double EulerAngle3, BoundedMatrix< double, 3, 3 > &rRotationOperator)
 This computes the total rotation matrix rotates from global to local coordinates. The so-called "x convention" is used. Order of the rotations: More...
 
static double MacaullyBrackets (const double Number)
 This computes the MacaullyBrackets of a double. More...
 
static void SubstractThermalStrain (ConstitutiveLaw::StrainVectorType &rStrainVector, const double ReferenceTemperature, ConstitutiveLaw::Parameters &rParameters, const bool IsPlaneStrain=false)
 This substracts the thermal strain contribution to a vector. More...
 
static double CalculateInGaussPoint (const Variable< double > &rVariableInput, ConstitutiveLaw::Parameters &rParameters, unsigned int step=0)
 This retrieves an interpolated nodal variable to a GP. More...
 
static double GetMaterialPropertyThroughAccessor (const Variable< double > &rVariable, ConstitutiveLaw::Parameters &rValues)
 This retrieves a double type variable checking the accessor. More...
 
static double GetPropertyFromTemperatureTable (const Variable< double > &rVariable, ConstitutiveLaw::Parameters &rValues, const double Temperature)
 This retrieves a double type variable from a table if exists, assumes TEMPERATURE to be the independent variable. More...
 

Type definitions

using IndexType = std::size_t
 The index type definition. More...
 
using MatrixType = Matrix
 The matrix type definition. More...
 
using VectorType = Vector
 the vector type definition More...
 
using BoundedVectorType = array_1d< double, VoigtSize >
 The definition of the bounded vector type. More...
 
using BoundedMatrixType = BoundedMatrix< double, Dimension, Dimension >
 The definition of the bounded matrix type. More...
 
using BoundedMatrixVoigtType = BoundedMatrix< double, VoigtSize, VoigtSize >
 The definition of the bounded matrix type. More...
 
using NodeType = Node
 Node type definition. More...
 
using GeometryType = Geometry< NodeType >
 Geometry definitions. More...
 
static constexpr SizeType Dimension = TVoigtSize == 6 ? 3 : 2
 We define the dimension. More...
 
static constexpr SizeType VoigtSize = TVoigtSize
 We define the Voigt size. More...
 
static constexpr double tolerance = std::numeric_limits<double>::epsilon()
 The zero tolerance. More...
 

Detailed Description

template<SizeType TVoigtSize = 6>
class Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >

This class includes several utilities necessaries for the computation of the constitutive law.

This class includes several utilities necessaries for the computation of the tangent tensor of the constitutive law.

The methods are static, so it can be called without constructing the class

Template Parameters
TVoigtSizeThe number of components on the Voigt notation
Author
Alejandro Cornejo

The methods are static, so it can be called without constructing the class

The python sympy files that generate the c++ code can be found in applications/ConstitutiveLawsApplication/python_scripts/symbolic_generation/iso_damage_tangent_tensor

Template Parameters
TVoigtSizeThe number of components on the Voigt notation
TSofteningTypeexponential or linear softening type of damage
Author
Alejandro Cornejo

Member Typedef Documentation

◆ BoundedMatrixType

template<SizeType TVoigtSize = 6>
using Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::BoundedMatrixType = BoundedMatrix<double, Dimension, Dimension>

The definition of the bounded matrix type.

◆ BoundedMatrixVoigtType

template<SizeType TVoigtSize = 6>
using Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::BoundedMatrixVoigtType = BoundedMatrix<double, VoigtSize, VoigtSize>

The definition of the bounded matrix type.

◆ BoundedVectorType

template<SizeType TVoigtSize = 6>
using Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::BoundedVectorType = array_1d<double, VoigtSize>

The definition of the bounded vector type.

◆ GeometryType

template<SizeType TVoigtSize = 6>
using Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::GeometryType = Geometry<NodeType>

Geometry definitions.

◆ IndexType

template<SizeType TVoigtSize = 6>
using Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::IndexType = std::size_t

The index type definition.

◆ MatrixType

template<SizeType TVoigtSize = 6>
using Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::MatrixType = Matrix

The matrix type definition.

◆ NodeType

template<SizeType TVoigtSize = 6>
using Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::NodeType = Node

Node type definition.

◆ VectorType

template<SizeType TVoigtSize = 6>
using Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::VectorType = Vector

the vector type definition

Member Function Documentation

◆ CalculateAlmansiStrain()

template<SizeType TVoigtSize>
void Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::CalculateAlmansiStrain ( const MatrixType rLeftCauchyTensor,
VectorType rStrainVector 
)
static

Calculation of the Almansi strain vector.

See https://en.wikipedia.org/wiki/Finite_strain_theory#Seth%E2%80%93Hill_family_of_generalized_strain_tensors

Parameters
rLeftCauchyTensorThe left Cauchy tensor
rStrainVectorThe Almansi strain vector

◆ CalculateBiotStrain()

template<SizeType TVoigtSize>
void Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::CalculateBiotStrain ( const MatrixType rCauchyTensor,
VectorType rStrainVector 
)
static

Calculation of the Biot strain vector.

See https://en.wikipedia.org/wiki/Finite_strain_theory#Seth%E2%80%93Hill_family_of_generalized_strain_tensors

Parameters
rCauchyTensorThe right Cauchy tensor
rStrainVectorThe Biot strain vector

◆ CalculateCharacteristicLength()

template<SizeType TVoigtSize>
double Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::CalculateCharacteristicLength ( const GeometryType rGeometry)
static

Calculates the maximal distance between corner node of a geometry and its center.

Parameters
rGeometryThe geometry to compute
Returns
The characteristic length

◆ CalculateCharacteristicLengthOnReferenceConfiguration()

template<SizeType TVoigtSize>
double Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::CalculateCharacteristicLengthOnReferenceConfiguration ( const GeometryType rGeometry)
static

Calculates the maximal distance between corner node of a geometry and its center (on reference configuration)

Parameters
rGeometryThe geometry to compute
Returns
The characteristic length

◆ CalculateDirectElasticDeformationGradient()

template<SizeType TVoigtSize>
Matrix Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::CalculateDirectElasticDeformationGradient ( const MatrixType rElasticTrial,
const BoundedVectorType rPlasticPotentialDerivative,
const double  PlasticConsistencyFactorIncrement,
const MatrixType rRe 
)
static

This computes the elastic deformation gradient.

Parameters
rElasticTrialThe elastic trial deformation gradient
rPlasticPotentialDerivativeThe derivative of the plastic potential
PlasticConsistencyFactorIncrementThe incremenetal of plastic flow
rReThe rotation decomposition of the elastic eformation

◆ CalculateDirectPlasticDeformationGradientIncrement()

template<SizeType TVoigtSize>
Matrix Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::CalculateDirectPlasticDeformationGradientIncrement ( const BoundedVectorType rPlasticPotentialDerivative,
const double  PlasticConsistencyFactorIncrement,
const MatrixType rRe 
)
static

This computes the exponential plastic deformation gradient increment.

Parameters
rPlasticPotentialDerivativeThe derivative of the plastic potential
PlasticConsistencyFactorIncrementThe incremenetal of plastic flow
rReThe rotation decomposition of the elastic eformation
Note
Formula 14.74 in Souza book

◆ CalculateElasticDeformationGradient()

template<SizeType TVoigtSize>
Matrix Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::CalculateElasticDeformationGradient ( const MatrixType rF,
const MatrixType rFp 
)
static

This computes the elastic def gradient tensor Fe = F*(Fp)^-1.

Parameters
rFThe total def gradient tensor
rFpThe plastic def gradient tensor

◆ CalculateExponentialElasticDeformationGradient()

template<SizeType TVoigtSize>
Matrix Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::CalculateExponentialElasticDeformationGradient ( const MatrixType rTrialFe,
const BoundedVectorType rPlasticPotentialDerivative,
const double  PlasticConsistencyFactorIncrement,
const MatrixType rRe 
)
static

This updates the exponential elastic deformation gradient.

Parameters
rElasticTrialThe elastic trial deformation gradient
rPlasticPotentialDerivativeThe derivative of the plastic potential
PlasticConsistencyFactorIncrementThe incremenetal of plastic flow
rReThe rotation decomposition of the elastic eformation
Note
Formula 14.75 in Souza book

◆ CalculateExponentialPlasticDeformationGradientIncrement()

template<SizeType TVoigtSize>
Matrix Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::CalculateExponentialPlasticDeformationGradientIncrement ( const BoundedVectorType rPlasticPotentialDerivative,
const double  PlasticConsistencyFactorIncrement,
const MatrixType rRe 
)
static

This computes the exponential plastic deformation gradient increment.

Parameters
rPlasticPotentialDerivativeThe derivative of the plastic potential
PlasticConsistencyFactorIncrementThe incremenetal of plastic flow
rReThe rotation decomposition of the elastic eformation
Note
Formula 14.73 in Souza book

◆ CalculateFirstVector()

template<SizeType TVoigtSize>
void Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::CalculateFirstVector ( BoundedVectorType rFirstVector)
static

This method computes the first vector to be used in the derivative of the yield surface.

Parameters
rFirstVectorThe first vector is the d(I1)/d(Stress)

◆ CalculateHenckyStrain()

template<SizeType TVoigtSize>
void Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::CalculateHenckyStrain ( const MatrixType rCauchyTensor,
VectorType rStrainVector 
)
static

Calculation of the Hencky strain vector (true strain, natural strain, logarithmic strain)

See https://en.wikipedia.org/wiki/Finite_strain_theory#Seth%E2%80%93Hill_family_of_generalized_strain_tensors

Parameters
rCauchyTensorThe right Cauchy tensor
rStrainVectorThe Hencky strain vector

◆ CalculateI1Invariant()

template<SizeType TVoigtSize = 6>
template<class TVector >
static void Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::CalculateI1Invariant ( const TVector &  rStressVector,
double rI1 
)
inlinestatic

This method computes the first invariant from a given stress vector.

Parameters
rStressVectorThe stress vector on Voigt notation
rI1The first invariant
Template Parameters
TVectorThe themplate for the vector class

◆ CalculateI2Invariant()

template<SizeType TVoigtSize>
void Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::CalculateI2Invariant ( const BoundedVectorType rStressVector,
double rI2 
)
static

This method computes the second invariant from a given stress vector.

Parameters
rStressVectorThe stress vector on Voigt notation
rI2The second invariant
Todo:
Adapt for 2D dimension

◆ CalculateI3Invariant()

template<SizeType TVoigtSize>
void Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::CalculateI3Invariant ( const BoundedVectorType rStressVector,
double rI3 
)
static

This method computes the third invariant from a given stress vector.

Parameters
rStressVectorThe stress vector on Voigt notation
rI3The third invariant
Todo:
Adapt for 2D dimension

◆ CalculateInGaussPoint()

template<SizeType TVoigtSize>
double Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::CalculateInGaussPoint ( const Variable< double > &  rVariableInput,
ConstitutiveLaw::Parameters rParameters,
unsigned int  step = 0 
)
static

This retrieves an interpolated nodal variable to a GP.

◆ CalculateJ2Invariant()

template<SizeType TVoigtSize = 6>
template<class TVector >
static void Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::CalculateJ2Invariant ( const TVector &  rStressVector,
const double  I1,
BoundedVectorType rDeviator,
double rJ2 
)
inlinestatic

This method computes the second invariant of J.

Parameters
rStressVectorThe stress vector on Voigt notation
I1The first invariant
rDeviatorThe deviator of the stress
rJ2The second invariant of J
Template Parameters
TVectorThe themplate for the vector class

◆ CalculateJ3Invariant()

template<SizeType TVoigtSize>
void Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::CalculateJ3Invariant ( const BoundedVectorType rDeviator,
double rJ3 
)
static

This method computes the third invariant of J.

Parameters
rDeviatorThe deviator of the stress
rJ3The third invariant of J

◆ CalculateLinearPlasticDeformationGradientIncrement()

template<SizeType TVoigtSize>
Matrix Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::CalculateLinearPlasticDeformationGradientIncrement ( const BoundedVectorType rPlasticPotentialDerivative,
const double  PlasticConsistencyFactorIncrement 
)
static

This computes the linear plastic deformation gradient increment.

Parameters
rPlasticPotentialDerivativeThe derivative of the plastic potential
PlasticConsistencyFactorIncrementThe incremenetal of plastic flow

◆ CalculateLodeAngle()

template<SizeType TVoigtSize>
void Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::CalculateLodeAngle ( const double  J2,
const double  J3,
double rLodeAngle 
)
static

This method computes the lode angle.

Parameters
J2The resultant J2 stress
J3The resultant J3 stress
rLodeAngleThe lode angle

◆ CalculatePlasticDeformationGradientFromElastic()

template<SizeType TVoigtSize>
Matrix Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::CalculatePlasticDeformationGradientFromElastic ( const MatrixType rF,
const MatrixType rFp 
)
static

This computes the Fp from F and Fe.

Parameters
rFThe total def gradient tensor
rFpThe plastic def gradient tensor

◆ CalculatePlasticStrainFromFp()

template<SizeType TVoigtSize>
void Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::CalculatePlasticStrainFromFp ( const MatrixType rFp,
Vector rPlasticStrainVector 
)
static

This computes the plastic strain from Fp.

Parameters
rFpThe plastic deformation gradient
rPlasticStrainVectorThe plastic strain vector

◆ CalculatePrincipalStresses() [1/3]

void Kratos::AdvancedConstitutiveLawUtilities< 6 >::CalculatePrincipalStresses ( array_1d< double, Dimension > &  rPrincipalStressVector,
const BoundedVectorType rStressVector 
)

◆ CalculatePrincipalStresses() [2/3]

void Kratos::AdvancedConstitutiveLawUtilities< 3 >::CalculatePrincipalStresses ( array_1d< double, Dimension > &  rPrincipalStressVector,
const BoundedVectorType rStressVector 
)

◆ CalculatePrincipalStresses() [3/3]

template<SizeType TVoigtSize = 6>
static void Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::CalculatePrincipalStresses ( array_1d< double, Dimension > &  rPrincipalStressVector,
const BoundedVectorType rStressVector 
)
static

This method computes the principal stresses vector.

http://www.continuummechanics.org/principalstress.html

Parameters
rPrincipalStressVectorThe vector of principal stresses
rStressVectorThe vector of stresses
Todo:
Adapt for 2D dimension

◆ CalculatePrincipalStressesWithCardano()

template<SizeType TVoigtSize>
void Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::CalculatePrincipalStressesWithCardano ( array_1d< double, Dimension > &  rPrincipalStressVector,
const BoundedVectorType rStressVector 
)
static

This method computes the principal stresses vector.

Using Cardano formula and renormalizing (TODO)

Parameters
rPrincipalStressVectorThe vector of principal stresses
rStressVectorThe vector of stresses
Todo:
Adapt for 2D dimension

◆ CalculateRotationOperator()

template<SizeType TVoigtSize>
void Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::CalculateRotationOperator ( const double  EulerAngle1,
const double  EulerAngle2,
const double  EulerAngle3,
BoundedMatrix< double, 3, 3 > &  rRotationOperator 
)
static

This computes the total rotation matrix rotates from global to local coordinates. The so-called "x convention" is used. Order of the rotations:

  1. The first rotation PHI around the Z-axis
  2. The second rotation THETA around the X'-axis
  3. The third rotation HI around the former Z'-axis more info: http://mathworld.wolfram.com/EulerAngles.html

◆ CalculateRotationOperatorEuler1()

template<SizeType TVoigtSize>
void Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::CalculateRotationOperatorEuler1 ( const double  EulerAngle1,
BoundedMatrix< double, 3, 3 > &  rRotationOperator 
)
static

This computes the rotation matrix for the 1st Euler angle http://mathworld.wolfram.com/EulerAngles.html.

◆ CalculateRotationOperatorEuler2()

template<SizeType TVoigtSize>
void Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::CalculateRotationOperatorEuler2 ( const double  EulerAngle2,
BoundedMatrix< double, 3, 3 > &  rRotationOperator 
)
static

This computes the rotation matrix for the 2nd Euler angle http://mathworld.wolfram.com/EulerAngles.html.

◆ CalculateRotationOperatorEuler3()

template<SizeType TVoigtSize>
void Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::CalculateRotationOperatorEuler3 ( const double  EulerAngle3,
BoundedMatrix< double, 3, 3 > &  rRotationOperator 
)
static

This computes the rotation matrix for the 3rd Euler angle http://mathworld.wolfram.com/EulerAngles.html.

◆ CalculateSecondVector()

template<SizeType TVoigtSize>
void Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::CalculateSecondVector ( const BoundedVectorType rDeviator,
const double  J2,
BoundedVectorType rSecondVector 
)
static

This method computes the first vector to be used in the derivative of the yield surface.

Parameters
rDeviatorThe deviator of the stress
J2The resultant J2 stress
rSecondVectorThe second vector is 1/(2*sqrt(J2))*d(J2)/d(Stress)

◆ CalculateThirdVector()

template<SizeType TVoigtSize>
void Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::CalculateThirdVector ( const BoundedVectorType rDeviator,
const double  J2,
BoundedVectorType rThirdVector 
)
static

This method computes the third vector to be used in the derivative of the yield surface.

Parameters
rDeviatorThe deviator of the stress
J2The resultant J2 stress
rThirdVectorThe third vector is d(J3)/d(Stress)
Todo:
Adapt for 2D dimension

◆ ComputeEquivalentSmallDeformationDeformationGradient()

template<SizeType TVoigtSize>
Matrix Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::ComputeEquivalentSmallDeformationDeformationGradient ( const Vector rStrainVector)
static

This method computes the equivalent deformation gradient for the elements which provide the deformation gradient as input.

Parameters
rStrainVectorThe strain vector

NOTE: Could be bounded matrix

◆ GetMaterialPropertyThroughAccessor()

template<SizeType TVoigtSize>
double Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::GetMaterialPropertyThroughAccessor ( const Variable< double > &  rVariable,
ConstitutiveLaw::Parameters rValues 
)
static

This retrieves a double type variable checking the accessor.

◆ GetPropertyFromTemperatureTable()

template<SizeType TVoigtSize>
double Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::GetPropertyFromTemperatureTable ( const Variable< double > &  rVariable,
ConstitutiveLaw::Parameters rValues,
const double  Temperature 
)
static

This retrieves a double type variable from a table if exists, assumes TEMPERATURE to be the independent variable.

◆ MacaullyBrackets()

template<SizeType TVoigtSize>
double Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::MacaullyBrackets ( const double  Number)
static

This computes the MacaullyBrackets of a double.

◆ SpectralDecomposition()

template<SizeType TVoigtSize>
void Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::SpectralDecomposition ( const BoundedVectorType rStressVector,
BoundedVectorType rStressVectorTension,
BoundedVectorType rStressVectorCompression 
)
static

This method performs Spectral Decomposition of the Stress Vector/Tensor.

see "An energy-Equivalent" d+/d- Damage model with Enhanced Microcrack Closure/Reopening Capabilities for Cohesive-Frictional Materials" - M. Cervera and C. Tesei.

Parameters
rStressVectorThe Stress Vector
rStressVectorTensionThe Stress Vector
rStressVectorCompressionThe Stress Vector
rMatrixTensionThe Stress Vector
rMatrixCompressionThe Stress Vector

◆ SubstractThermalStrain()

template<SizeType TVoigtSize>
void Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::SubstractThermalStrain ( ConstitutiveLaw::StrainVectorType rStrainVector,
const double  ReferenceTemperature,
ConstitutiveLaw::Parameters rParameters,
const bool  IsPlaneStrain = false 
)
static

This substracts the thermal strain contribution to a vector.

Member Data Documentation

◆ Dimension

template<SizeType TVoigtSize = 6>
constexpr SizeType Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::Dimension = TVoigtSize == 6 ? 3 : 2
staticconstexpr

We define the dimension.

◆ tolerance

template<SizeType TVoigtSize = 6>
constexpr double Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::tolerance = std::numeric_limits<double>::epsilon()
staticconstexpr

The zero tolerance.

◆ VoigtSize

template<SizeType TVoigtSize = 6>
constexpr SizeType Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::VoigtSize = TVoigtSize
staticconstexpr

We define the Voigt size.


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