57 template <SizeType TVoigtSize = 6>
68 static constexpr
SizeType Dimension = TVoigtSize == 6 ? 3 : 2;
71 static constexpr
SizeType VoigtSize = TVoigtSize;
95 static constexpr
double tolerance = std::numeric_limits<double>::epsilon();
115 template<
class TVector>
117 const TVector& rStressVector,
121 rI1 = rStressVector[0];
123 rI1 += rStressVector[
i];
132 static void CalculateI2Invariant(
133 const BoundedVectorType& rStressVector,
143 static void CalculateI3Invariant(
144 const BoundedVectorType& rStressVector,
156 template<
class TVector>
158 const TVector& rStressVector,
164 noalias(rDeviator) = rStressVector;
165 const double p_mean =
I1 / 3.0;
166 if constexpr (Dimension == 3) {
168 rDeviator[
i] -= p_mean;
171 rJ2 += 0.5 * std::pow(rDeviator[
i], 2);
173 rJ2 += std::pow(rDeviator[
i], 2);
176 rDeviator[
i] -= p_mean;
177 rJ2 = 0.5 * (std::pow(rDeviator[0], 2.0) + std::pow(rDeviator[1], 2.0) + std::pow(p_mean, 2.0)) + std::pow(rDeviator[2], 2.0);
186 static void CalculateJ3Invariant(
187 const BoundedVectorType& rDeviator,
197 static void CalculateFirstVector(BoundedVectorType& rFirstVector);
207 static void CalculateSecondVector(
208 const BoundedVectorType& rDeviator,
210 BoundedVectorType& rSecondVector
222 static void CalculateThirdVector(
223 const BoundedVectorType& rDeviator,
225 BoundedVectorType& rThirdVector
234 static void CalculateLodeAngle(
245 static double CalculateCharacteristicLength(
const GeometryType& rGeometry);
252 static double CalculateCharacteristicLengthOnReferenceConfiguration(
const GeometryType& rGeometry);
258 static Matrix ComputeEquivalentSmallDeformationDeformationGradient(
const Vector& rStrainVector);
266 static void CalculateAlmansiStrain(
277 static void CalculateHenckyStrain(
288 static void CalculateBiotStrain(
312 static void CalculatePrincipalStressesWithCardano(
328 static void SpectralDecomposition(
340 static Matrix CalculateElasticDeformationGradient(
350 static MatrixType CalculateLinearPlasticDeformationGradientIncrement(
352 const double PlasticConsistencyFactorIncrement
360 static Matrix CalculatePlasticDeformationGradientFromElastic(
373 static MatrixType CalculateExponentialElasticDeformationGradient(
376 const double PlasticConsistencyFactorIncrement,
385 static void CalculatePlasticStrainFromFp(
387 Vector& rPlasticStrainVector
397 static MatrixType CalculateDirectElasticDeformationGradient(
400 const double PlasticConsistencyFactorIncrement,
411 static MatrixType CalculateExponentialPlasticDeformationGradientIncrement(
413 const double PlasticConsistencyFactorIncrement,
424 static MatrixType CalculateDirectPlasticDeformationGradientIncrement(
426 const double PlasticConsistencyFactorIncrement,
434 static void CalculateRotationOperatorEuler1(
435 const double EulerAngle1,
443 static void CalculateRotationOperatorEuler2(
444 const double EulerAngle2,
452 static void CalculateRotationOperatorEuler3(
453 const double EulerAngle3,
467 static void CalculateRotationOperator(
468 const double EulerAngle1,
469 const double EulerAngle2,
470 const double EulerAngle3,
477 static double MacaullyBrackets(
const double Number);
482 static void SubstractThermalStrain(
484 const double ReferenceTemperature,
486 const bool IsPlaneStrain =
false
492 static double CalculateInGaussPoint(
495 unsigned int step = 0
501 static double GetMaterialPropertyThroughAccessor(
509 static double GetPropertyFromTemperatureTable(
512 const double Temperature
This class includes several utilities necessaries for the computation of the constitutive law.
Definition: advanced_constitutive_law_utilities.h:59
static void CalculateJ2Invariant(const TVector &rStressVector, const double I1, BoundedVectorType &rDeviator, double &rJ2)
This method computes the second invariant of J.
Definition: advanced_constitutive_law_utilities.h:157
static void CalculatePrincipalStresses(array_1d< double, Dimension > &rPrincipalStressVector, const BoundedVectorType &rStressVector)
This method computes the principal stresses vector.
static void CalculateI1Invariant(const TVector &rStressVector, double &rI1)
This method computes the first invariant from a given stress vector.
Definition: advanced_constitutive_law_utilities.h:116
std::size_t IndexType
The index type definition.
Definition: advanced_constitutive_law_utilities.h:65
Geometry base class.
Definition: geometry.h:71
This class defines the node.
Definition: node.h:65
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
Internals::Matrix< double, AMatrix::dynamic, 1 > Vector
Definition: amatrix_interface.h:472
Internals::Matrix< double, AMatrix::dynamic, AMatrix::dynamic > Matrix
Definition: amatrix_interface.h:470
std::size_t SizeType
The definition of the size type.
Definition: mortar_classes.h:43
T & noalias(T &TheMatrix)
Definition: amatrix_interface.h:484
int step
Definition: face_heat.py:88
float J2
Definition: isotropic_damage_automatic_differentiation.py:133
I1
Definition: isotropic_damage_automatic_differentiation.py:230
def J3
Definition: isotropic_damage_automatic_differentiation.py:176
integer i
Definition: TensorModule.f:17
Definition: constitutive_law.h:189