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.
|
This class includes several utilities necessaries for the computation of the constitutive law. More...
#include <advanced_constitutive_law_utilities.h>
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... | |
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
TVoigtSize | The number of components on the Voigt notation |
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
TVoigtSize | The number of components on the Voigt notation |
TSofteningType | exponential or linear softening type of damage |
using Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::BoundedMatrixType = BoundedMatrix<double, Dimension, Dimension> |
The definition of the bounded matrix type.
using Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::BoundedMatrixVoigtType = BoundedMatrix<double, VoigtSize, VoigtSize> |
The definition of the bounded matrix type.
using Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::BoundedVectorType = array_1d<double, VoigtSize> |
The definition of the bounded vector type.
using Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::GeometryType = Geometry<NodeType> |
Geometry definitions.
using Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::IndexType = std::size_t |
The index type definition.
using Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::MatrixType = Matrix |
The matrix type definition.
using Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::NodeType = Node |
Node type definition.
using Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::VectorType = Vector |
the vector type definition
|
static |
Calculation of the Almansi strain vector.
rLeftCauchyTensor | The left Cauchy tensor |
rStrainVector | The Almansi strain vector |
|
static |
Calculation of the Biot strain vector.
rCauchyTensor | The right Cauchy tensor |
rStrainVector | The Biot strain vector |
|
static |
Calculates the maximal distance between corner node of a geometry and its center.
rGeometry | The geometry to compute |
|
static |
Calculates the maximal distance between corner node of a geometry and its center (on reference configuration)
rGeometry | The geometry to compute |
|
static |
This computes the elastic deformation gradient.
rElasticTrial | The elastic trial deformation gradient |
rPlasticPotentialDerivative | The derivative of the plastic potential |
PlasticConsistencyFactorIncrement | The incremenetal of plastic flow |
rRe | The rotation decomposition of the elastic eformation |
|
static |
This computes the exponential plastic deformation gradient increment.
rPlasticPotentialDerivative | The derivative of the plastic potential |
PlasticConsistencyFactorIncrement | The incremenetal of plastic flow |
rRe | The rotation decomposition of the elastic eformation |
|
static |
This computes the elastic def gradient tensor Fe = F*(Fp)^-1.
rF | The total def gradient tensor |
rFp | The plastic def gradient tensor |
|
static |
This updates the exponential elastic deformation gradient.
rElasticTrial | The elastic trial deformation gradient |
rPlasticPotentialDerivative | The derivative of the plastic potential |
PlasticConsistencyFactorIncrement | The incremenetal of plastic flow |
rRe | The rotation decomposition of the elastic eformation |
|
static |
This computes the exponential plastic deformation gradient increment.
rPlasticPotentialDerivative | The derivative of the plastic potential |
PlasticConsistencyFactorIncrement | The incremenetal of plastic flow |
rRe | The rotation decomposition of the elastic eformation |
|
static |
This method computes the first vector to be used in the derivative of the yield surface.
rFirstVector | The first vector is the d(I1)/d(Stress) |
|
static |
Calculation of the Hencky strain vector (true strain, natural strain, logarithmic strain)
rCauchyTensor | The right Cauchy tensor |
rStrainVector | The Hencky strain vector |
|
inlinestatic |
This method computes the first invariant from a given stress vector.
rStressVector | The stress vector on Voigt notation |
rI1 | The first invariant |
TVector | The themplate for the vector class |
|
static |
This method computes the second invariant from a given stress vector.
rStressVector | The stress vector on Voigt notation |
rI2 | The second invariant |
|
static |
This method computes the third invariant from a given stress vector.
rStressVector | The stress vector on Voigt notation |
rI3 | The third invariant |
|
static |
This retrieves an interpolated nodal variable to a GP.
|
inlinestatic |
This method computes the second invariant of J.
rStressVector | The stress vector on Voigt notation |
I1 | The first invariant |
rDeviator | The deviator of the stress |
rJ2 | The second invariant of J |
TVector | The themplate for the vector class |
|
static |
This method computes the third invariant of J.
rDeviator | The deviator of the stress |
rJ3 | The third invariant of J |
|
static |
This computes the linear plastic deformation gradient increment.
rPlasticPotentialDerivative | The derivative of the plastic potential |
PlasticConsistencyFactorIncrement | The incremenetal of plastic flow |
|
static |
This method computes the lode angle.
J2 | The resultant J2 stress |
J3 | The resultant J3 stress |
rLodeAngle | The lode angle |
|
static |
This computes the Fp from F and Fe.
rF | The total def gradient tensor |
rFp | The plastic def gradient tensor |
|
static |
This computes the plastic strain from Fp.
rFp | The plastic deformation gradient |
rPlasticStrainVector | The plastic strain vector |
void Kratos::AdvancedConstitutiveLawUtilities< 6 >::CalculatePrincipalStresses | ( | array_1d< double, Dimension > & | rPrincipalStressVector, |
const BoundedVectorType & | rStressVector | ||
) |
void Kratos::AdvancedConstitutiveLawUtilities< 3 >::CalculatePrincipalStresses | ( | array_1d< double, Dimension > & | rPrincipalStressVector, |
const BoundedVectorType & | rStressVector | ||
) |
|
static |
This method computes the principal stresses vector.
http://www.continuummechanics.org/principalstress.html
rPrincipalStressVector | The vector of principal stresses |
rStressVector | The vector of stresses |
|
static |
This method computes the principal stresses vector.
Using Cardano formula and renormalizing (TODO)
rPrincipalStressVector | The vector of principal stresses |
rStressVector | The vector of stresses |
|
static |
This computes the total rotation matrix rotates from global to local coordinates. The so-called "x convention" is used. Order of the rotations:
|
static |
This computes the rotation matrix for the 1st Euler angle http://mathworld.wolfram.com/EulerAngles.html.
|
static |
This computes the rotation matrix for the 2nd Euler angle http://mathworld.wolfram.com/EulerAngles.html.
|
static |
This computes the rotation matrix for the 3rd Euler angle http://mathworld.wolfram.com/EulerAngles.html.
|
static |
This method computes the first vector to be used in the derivative of the yield surface.
rDeviator | The deviator of the stress |
J2 | The resultant J2 stress |
rSecondVector | The second vector is 1/(2*sqrt(J2))*d(J2)/d(Stress) |
|
static |
This method computes the third vector to be used in the derivative of the yield surface.
rDeviator | The deviator of the stress |
J2 | The resultant J2 stress |
rThirdVector | The third vector is d(J3)/d(Stress) |
|
static |
This method computes the equivalent deformation gradient for the elements which provide the deformation gradient as input.
rStrainVector | The strain vector |
NOTE: Could be bounded matrix
|
static |
This retrieves a double type variable checking the accessor.
|
static |
This retrieves a double type variable from a table if exists, assumes TEMPERATURE to be the independent variable.
|
static |
This computes the MacaullyBrackets of a double.
|
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.
rStressVector | The Stress Vector |
rStressVectorTension | The Stress Vector |
rStressVectorCompression | The Stress Vector |
rMatrixTension | The Stress Vector |
rMatrixCompression | The Stress Vector |
|
static |
This substracts the thermal strain contribution to a vector.
|
staticconstexpr |
We define the dimension.
|
staticconstexpr |
The zero tolerance.
|
staticconstexpr |
We define the Voigt size.