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.
|
Short class definition. More...
#include <constitutive_model_utilities.hpp>
Public Types | |
Type Definitions | |
typedef BoundedMatrix< double, 3, 3 > | MatrixType |
typedef array_1d< double, 6 > | VectorType |
Public Member Functions | |
Life Cycle | |
ConstitutiveModelUtilities () | |
Default constructor. More... | |
~ConstitutiveModelUtilities () | |
Destructor. More... | |
Static Public Member Functions | |
Operators | |
static MatrixType & | DeformationGradientTo3D (const MatrixType &rF, MatrixType &rF3D) |
static MatrixType & | VelocityGradientTo3D (const MatrixType &rL, MatrixType &rL3D) |
static void | CalculateRightCauchyGreen (const MatrixType &rDeformationGradientF, MatrixType &rRightCauchyGreen) |
static void | CalculateLeftCauchyGreen (const Matrix &rDeformationGradientF, Matrix &rLeftCauchyGreen) |
static void | CalculateInverseLeftCauchyGreen (const Matrix &rDeformationGradientF, Matrix &rInverseLeftCauchyGreen) |
static void | RightCauchyToGreenLagrangeStrain (const MatrixType &rRightCauchyGreen, MatrixType &rStrainMatrix) |
static void | LeftCauchyToAlmansiStrain (const MatrixType &rLeftCauchyGreen, MatrixType &rStrainMatrix) |
static void | RightCauchyToGreenLagrangeStrain (const Matrix &rRightCauchyGreen, Vector &rStrainVector) |
static void | CalculateGreenLagrangeStrain (const Matrix &rDeformationGradientF, Vector &rStrainVector) |
static void | CalculateGreenLagrangeStrain (const MatrixType &rDeformationGradientF, MatrixType &rStrainMatrix) |
static void | LeftCauchyToAlmansiStrain (const Matrix &rLeftCauchyGreen, Vector &rStrainVector) |
static void | InverseLeftCauchyToAlmansiStrain (const Matrix &rInverseLeftCauchyGreen, Vector &rStrainVector) |
static void | CalculateAlmansiStrain (const Matrix &rDeformationGradientF, Vector &rStrainVector) |
static void | CalculateAlmansiStrain (const Matrix &rDeformationGradientF, Matrix &rStrainMatrix) |
static Matrix & | ConstitutiveTensorToMatrix (const BoundedMatrix< double, 6, 6 > &rTensor, Matrix &rMatrix) |
static MatrixType & | VectorToTensor (const Vector &rVector, MatrixType &rTensor) |
static Vector & | TensorToVector (const MatrixType &rTensor, Vector &rVector) |
static MatrixType & | VectorToSymmetricTensor (const array_1d< double, 6 > &rVector, MatrixType &rMatrix) |
static void | SymmetricTensorToVector (const MatrixType &rMatrix, array_1d< double, 6 > &rVector) |
static MatrixType & | StrainVectorToTensor (const array_1d< double, 6 > &rVector, MatrixType &rMatrix) |
static void | StrainTensorToVector (const MatrixType &rMatrix, array_1d< double, 6 > &rVector) |
static MatrixType & | StrainVectorToTensor (const Vector &rStrainVector, MatrixType &rStrainTensor) |
static Vector & | StrainTensorToVector (const MatrixType &rStrainTensor, Vector &rStrainVector) |
static MatrixType & | StressVectorToTensor (const Vector &rStressVector, MatrixType &rStressTensor) |
static Vector & | StressTensorToVector (const MatrixType &rStressTensor, Vector &rStressVector) |
static double & | CalculateStressNorm (const MatrixType &rStressMatrix, double &rStressNorm) |
static double & | CalculateCharacteristicSize (const Geometry< Node > &rDomainGeometry, double &rCharacteristicSize) |
Operations | |
static void | ComputePerturbationVector (Vector &rPerturbationVector, const Vector &InputVector) |
static Vector | EigenValuesDirectMethod (const Matrix &A) |
static void | InvertMatrix3 (const MatrixType &InputMatrix, MatrixType &InvertedMatrix, double &InputMatrixDet) |
static void | ComputePerturbationVector (VectorType &rPerturbationVector, const VectorType &InputVector) |
static double & | CalculateFourthOrderUnitTensor (double &rValue, const unsigned int &a, const unsigned int &b, const unsigned int &c, const unsigned int &d) |
static double & | CalculateFourthOrderUnitTensor (const MatrixType &rIdentityMatrix, double &rValue, const unsigned int &a, const unsigned int &b, const unsigned int &c, const unsigned int &d) |
static double & | CalculateFourthOrderTensor (const MatrixType &rMatrix, double &rValue, const double &a, const double &b, const double &c, const double &d) |
static double & | CalculateSquareTensorDerivative (const MatrixType &rMatrix, double &rValue, const unsigned int &a, const unsigned int &b, const unsigned int &c, const unsigned int &d) |
static double & | CalculateSquareTensorDerivative (const MatrixType &rMatrix, const MatrixType &rIdentityMatrix, double &rValue, const unsigned int &a, const unsigned int &b, const unsigned int &c, const unsigned int &d) |
static double & | CalculateFourthOrderTensorProduct (const MatrixType &rMatrixA, const MatrixType &rMatrixB, double &rValue, const unsigned int &a, const unsigned int &b, const unsigned int &c, const unsigned int &d) |
static double & | CalculateFourthOrderTensorProduct (const array_1d< double, 3 > &rVectorA, const array_1d< double, 3 > &rVectorB, double &rValue, const unsigned int &a, const unsigned int &b, const unsigned int &c, const unsigned int &d) |
static double & | CalculateFourthOrderTensorProduct (const MatrixType &rMatrixA, const array_1d< double, 3 > &rVectorB, double &rValue, const unsigned int &a, const unsigned int &b, const unsigned int &c, const unsigned int &d) |
static double & | CalculateFourthOrderTensorProduct (const array_1d< double, 3 > &rVectorA, const MatrixType &rMatrixB, double &rValue, const unsigned int &a, const unsigned int &b, const unsigned int &c, const unsigned int &d) |
static bool | AreEqual (const double &rA, const double &rB) |
static void | PullBackConstitutiveMatrix (Matrix &rConstitutiveMatrix, const Matrix &rF) |
static void | PushForwardConstitutiveMatrix (Matrix &rConstitutiveMatrix, const Matrix &rF) |
static void | ConstitutiveMatrixTransformation (Matrix &rConstitutiveMatrix, const Matrix &rOriginalConstitutiveMatrix, const Matrix &rF) |
static double & | TransformConstitutiveComponent (double &rCabcd, const Matrix &rConstitutiveMatrix, const Matrix &rF, const unsigned int &a, const unsigned int &b, const unsigned int &c, const unsigned int &d) |
static double & | GetConstitutiveComponent (double &rCabcd, const Matrix &rConstitutiveMatrix, const unsigned int &a, const unsigned int &b, const unsigned int &c, const unsigned int &d) |
Short class definition.
Detail class definition.
|
inline |
Default constructor.
|
inline |
Destructor.
|
inlinestatic |
Checks if two doubles are equal
rA | input double |
rB | input double |
|
inlinestatic |
Computes the AlmansiStrain e = 0.5*(1-invFT*invF) given the DeformationGradientF
rDeformationGradientF | input matrix 3x3 |
rStrainMatrix | output matrix |
|
inlinestatic |
Computes the AlmansiStrain e = 0.5*(1-invFT*invF) given the DeformationGradientF
rDeformationGradientF | input matrix 3x3 |
rStrainVector | output vector correct dimensions for the input/output is needed |
|
inlinestatic |
Computes fourth order unit tensor
rMatrix | input tensor identity matrix 3x3 |
rValue | output double |
a | index for the fourth order tensor |
b | index for the fourth order tensor |
c | index for the fourth order tensor |
d | index for the fourth order tensor |
|
inlinestatic |
Computes the FourthOrder Tensor Product
rVectorA | input vector 3 |
rVectorB | input vector 3 |
rValue | output double |
a | index for the fourth order tensor |
b | index for the fourth order tensor |
c | index for the fourth order tensor |
d | index for the fourth order tensor |
|
inlinestatic |
Computes the FourthOrder Tensor Product
rVectorA | input vector 3 |
rMatrixB | input tensor matrix 3x3 |
rValue | output double |
a | index for the fourth order tensor |
b | index for the fourth order tensor |
c | index for the fourth order tensor |
d | index for the fourth order tensor |
|
inlinestatic |
Computes the FourthOrder Tensor Product
rMatrixA | input tensor matrix 3x3 |
rVectorB | input vector 3 |
rValue | output double |
a | index for the fourth order tensor |
b | index for the fourth order tensor |
c | index for the fourth order tensor |
d | index for the fourth order tensor |
|
inlinestatic |
Computes the FourthOrder Tensor Product
rMatrixA | input tensor matrix 3x3 |
rMatrixB | input tensor matrix 3x3 |
rValue | output double |
a | index for the fourth order tensor |
b | index for the fourth order tensor |
c | index for the fourth order tensor |
d | index for the fourth order tensor |
|
inlinestatic |
Computes fourth order unit tensor
rIdentityMatrix | input tensor identity matrix 3x3 |
rValue | output double |
a | index for the fourth order tensor |
b | index for the fourth order tensor |
c | index for the fourth order tensor |
d | index for the fourth order tensor |
|
inlinestatic |
Computes fourth order unit tensor
rValue | output double |
a | index for the fourth order tensor |
b | index for the fourth order tensor |
c | index for the fourth order tensor |
d | index for the fourth order tensor |
|
inlinestatic |
Computes the GreenLagrangeStrain E= 0.5*(FT*F-1) given the DeformationGradientF
rDeformationGradientF | input matrix 3x3 |
rStrainVector | output vector correct dimensions for the input/output is needed |
|
inlinestatic |
Computes the GreenLagrangeStrain E= 0.5*(FT*F-1) given the DeformationGradientF
rDeformationGradientF | input matrix 3x3 |
rStrainMatrix | output matrix |
|
inlinestatic |
Computes the InverseLeftCauchyGreen (invb=invFT*invF) given the DeformationGradientF
rDeformationGradientF | input matrix |
rRightCauchyGreen | output matrix correct dimensions for the input/output is needed |
|
inlinestatic |
Computes the LeftCauchyGreen (b=F*FT) given the DeformationGradientF
rDeformationGradientF | input matrix |
rRightCauchyGreen | output matrix correct dimensions for the input/output is needed |
|
inlinestatic |
Computes the RightCauchyGreen (C=FT*F) given the DeformationGradientF
rDeformationGradientF | input matrix |
rRightCauchyGreen | output matrix correct dimensions for the input/output is needed |
|
inlinestatic |
Computes the Square Tensor Derivative
rMatrix | input tensor matrix 3x3 |
rIdentityMatrix | input tensor identity matrix 3x3 |
rValue | output double |
a | index for the fourth order tensor |
b | index for the fourth order tensor |
c | index for the fourth order tensor |
d | index for the fourth order tensor |
|
inlinestatic |
Computes the Square Tensor Derivative
rMatrix | input tensor matrix 3x3 |
rValue | output double |
a | index for the fourth order tensor |
b | index for the fourth order tensor |
c | index for the fourth order tensor |
d | index for the fourth order tensor |
|
inlinestatic |
Computes the Stress Norm
rStressMatrix | input matrix 3x3 |
rStressNorm | output double |
|
inlinestatic |
Calculates perturbations in each direction of a given vector.
InputVector | the given vector used to obtain the perturbations. |
|
inlinestatic |
Calculates perturbations in each direction of a given vector.
InputVector | the given vector used to obtain the perturbations. |
|
inlinestatic |
This method performs a pull-back or a push-forward between two constitutive matrices
|
inlinestatic |
Transforms a given 3D Constitutive Tensor to VoigtSize Constitutive Matrix: in the 3D case: from a second order tensor (3*3) Matrix to a corresponing (VoigtSize*VoightSize) Vector
rTensor | the given second order tensor in matrix form |
rMatrix | the corresponding second order tensor in voigt size matrix form |
|
inlinestatic |
Takes a matrix 2x2 and transforms it to a 3x3 adding a 3rd row and a 3rd column with a 1 in the diagonal if the matrix passed is 3D is does nothing if the matrix passed is bigger or smaller throws an error
rF | : the DeformationGradientF in 2D / 3D |
rF3D | : the DeformationGradientF in 3D |
|
inlinestatic |
calculates the eigenvectiors using a direct method.
A | the given square matrix the eigenvalues are to be calculated. WARNING only valid symmetric 3*3 Matrices |
|
inlinestatic |
This method gets the constitutive tensor components from a consitutive matrix supplied in voigt notation
|
inlinestatic |
Computes the AlmansiStrain e = 0.5*(1-inv(b)) given the InverseCauchyGreenTensor
rInverseLeftCauchyGreen | input matrix 3x3 |
rStrainVector | output vector correct dimensions for the input/output is needed |
|
inlinestatic |
It inverts matrices of order 3 //VERIFIED!!!
InputMatrix | Is the input matrix (unchanged at output) |
|
inlinestatic |
Computes the AlmansiStrain e = 0.5*(1-inv(b)) given the InverseCauchyGreenTensor
rInverseLeftCauchyGreen | input matrix 3x3 |
rStrainVector | output vector correct dimensions for the input/output is needed |
|
inlinestatic |
Computes the AlmansiStrain e = 0.5*(1-inv(b)) given the InverseCauchyGreenTensor
rInverseLeftCauchyGreen | input matrix 3x3 |
rStrainVector | output vector correct dimensions for the input/output is needed |
|
inlinestatic |
Methods to transform Constitutive Matrices:
rConstitutiveMatrix | the constitutive matrix |
rF | the DeformationGradientF matrix between the configurations This method performs a pull-back of the constitutive matrix |
|
inlinestatic |
This method performs a push-forward of the constitutive matrix
|
inlinestatic |
Computes the GreenLagrangeStrain E= 0.5*(C-1) given the RightCauchyGreenTensor
rRightCauchyGreen | input matrix 3x3 |
rStrainVector | output vector correct dimensions for the input/output is needed |
|
inlinestatic |
Computes the GreenLagrangeStrain E= 0.5*(C-1) given the RightCauchyGreenTensor
rRightCauchyGreen | input matrix 3x3 |
rStrainVector | output vector correct dimensions for the input/output is needed |
|
inlinestatic |
Transforms a given 3D symmetric Tensor to Voigt Notation: in the 3D case: from a second order tensor (3*3) Matrix to a corresponing (6*1) Vector
rMatrix | the given symmetric second order tensor in matrix form |
rVector | the corresponding second order tensor in vector form |
|
inlinestatic |
Transforms a given symmetric Strain Tensor to Voigt Notation: in the 3D case: from a second order tensor (3*3) Matrix to a corresponing (6*1) Vector in the 2Da case: from a second order tensor (3*3) Matrix to a corresponing (4*1) Vector in the 2D case: from a second order tensor (3*3) Matrix to a corresponing (3*1) Vector
rStrainTensor | the given symmetric second order stress tensor |
|
inlinestatic |
Transforms a given 3D symmetric Tensor from Voigt notation to Matrix notation in the 3D case: from a second order tensor (6*1) Vector to a corresponing (3*3) Matrix
rVector | the given symmetric second order tensor in vector form |
rMatrix | the corresponding second order tensor in matrix form |
|
inlinestatic |
Transforms a given symmetric Strain Tensor to Voigt Notation: in the 3D case: from a second order tensor (3*3) Matrix to a corresponing (6*1) Vector in the 2Da case: from a second order tensor (3*3) Matrix to a corresponing (4*1) Vector in the 2D case: from a second order tensor (3*3) Matrix to a corresponing (3*1) Vector
rStrainTensor | the given symmetric second order stress tensor |
|
inlinestatic |
Transforms a given symmetric Stress Tensor to Voigt Notation: in the 3D case: from a second order tensor (3*3) Matrix to a corresponing (6*1) Vector in the 2Da case: from a second order tensor (3*3) Matrix to a corresponing (4*1) Vector in the 2D case: from a second order tensor (3*3) Matrix to a corresponing (3*1) Vector
rStressTensor | the given symmetric second order stress tensor |
|
inlinestatic |
Transforms a given symmetric Stress Tensor to Voigt Notation: in the 3D case: from a second order tensor (3*3) Matrix to a corresponing (6*1) Vector in the 2Da case: from a second order tensor (3*3) Matrix to a corresponing (4*1) Vector in the 2D case: from a second order tensor (3*3) Matrix to a corresponing (3*1) Vector
rStressTensor | the given symmetric second order stress tensor |
|
inlinestatic |
Transforms a given 3D symmetric Tensor to Voigt Notation: in the 3D case: from a second order tensor (3*3) Matrix to a corresponing (6*1) Vector
rMatrix | the given symmetric second order tensor in matrix form |
rVector | the corresponding second order tensor in vector form |
|
inlinestatic |
Transforms a given non symmetric Tensor to a Vector: in the 3D case: from a second order tensor (3*3) Matrix to a corresponing (9*1) Vector in the 2D case: from a second order tensor (2*2) Matrix to a corresponing (4*1) Vector
rTensor | the given symmetric second order stress tensor |
|
inlinestatic |
This method performs a pull-back or a push-forward between two constitutive tensor components
|
inlinestatic |
Transforms a given 3D symmetric Tensor from Voigt notation to Matrix notation in the 3D case: from a second order tensor (6*1) Vector to a corresponing (3*3) Matrix
rVector | the given symmetric second order tensor in vector form |
rMatrix | the corresponding second order tensor in matrix form |
|
inlinestatic |
Transforms a given Vector to a non symmetric 3D Tensor: in the 3D case: from a second order tensor (3*3) Matrix to a corresponing (9*1) Vector in the 2D case: from a second order tensor (3*3) Matrix to a corresponing (4*1) Vector
rTensor | the given symmetric second order stress tensor |
|
inlinestatic |
Takes a matrix 2x2 and transforms it to a 3x3 adding a 3rd row and a 3rd column with a 0 in the diagonal if the matrix passed is 3D is does nothing if the matrix passed is bigger or smaller throws an error
rL | : the VelocityGradient in 2D / 3D |
rL3D | : the VelocityGradient in 3D |