52 template <SizeType TVoigtSize = 6>
69 static constexpr
double tolerance = std::numeric_limits<double>::epsilon();
123 const double dilatancy = r_material_properties[DILATANCY_ANGLE] *
Globals::Pi / 180.0;
129 double J3, lode_angle;
134 double checker = std::abs(lode_angle * 180.0 /
Globals::Pi);
136 if (std::abs(checker) < 29.0) {
137 c1 = std::sin(dilatancy);
138 c3 = (std::sqrt(3.0) * std::sin(lode_angle) + std::sin(dilatancy) * std::cos(lode_angle)) /
139 (2.0 *
J2 * std::cos(3.0 * lode_angle));
140 c2 = 0.5 * std::cos(lode_angle)*(1.0 + std::tan(lode_angle) * std::sin(3.0 * lode_angle) +
141 std::sin(dilatancy) * (std::tan(3.0 * lode_angle) - std::tan(lode_angle)) / std::sqrt(3.0));
143 c1 = 3.0 * (2.0 * std::sin(dilatancy) / (std::sqrt(3.0) * (3.0 - std::sin(dilatancy))));
148 noalias(rGFlux) = c1 * first_vector + c2 * second_vector + c3 * third_vector;
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.
Definition: advanced_constitutive_law_utilities.cpp:100
static void CalculateFirstVector(BoundedVectorType &rFirstVector)
This method computes the first vector to be used in the derivative of the yield surface.
Definition: advanced_constitutive_law_utilities.cpp:80
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.
Definition: advanced_constitutive_law_utilities.cpp:131
static void CalculateLodeAngle(const double J2, const double J3, double &rLodeAngle)
This method computes the lode angle.
Definition: advanced_constitutive_law_utilities.cpp:158
static void CalculateJ3Invariant(const BoundedVectorType &rDeviator, double &rJ3)
This method computes the third invariant of J.
Definition: advanced_constitutive_law_utilities.cpp:62
This class defines a plastic potential following the theory of Mohr-Coulomb.
Definition: mohr_coulomb_plastic_potential.h:54
static constexpr SizeType Dimension
We define the dimension.
Definition: mohr_coulomb_plastic_potential.h:60
static void CalculatePlasticPotentialDerivative(const array_1d< double, VoigtSize > &rPredictiveStressVector, const array_1d< double, VoigtSize > &rDeviator, const double J2, array_1d< double, VoigtSize > &rGFlux, ConstitutiveLaw::Parameters &rValues)
This script calculates the derivatives of the plastic potential according to NAYAK-ZIENKIEWICZ paper ...
Definition: mohr_coulomb_plastic_potential.h:113
MohrCoulombPlasticPotential()
Initialization constructor.
Definition: mohr_coulomb_plastic_potential.h:76
virtual ~MohrCoulombPlasticPotential()
Destructor.
Definition: mohr_coulomb_plastic_potential.h:92
static int Check(const Properties &rMaterialProperties)
This method defines the check to be performed in the plastic potential.
Definition: mohr_coulomb_plastic_potential.h:155
MohrCoulombPlasticPotential(MohrCoulombPlasticPotential const &rOther)
Copy constructor.
Definition: mohr_coulomb_plastic_potential.h:81
static constexpr SizeType VoigtSize
The define the Voigt size.
Definition: mohr_coulomb_plastic_potential.h:63
MohrCoulombPlasticPotential & operator=(MohrCoulombPlasticPotential const &rOther)
Assignment operator.
Definition: mohr_coulomb_plastic_potential.h:86
static constexpr double tolerance
The machine precision zero tolerance.
Definition: mohr_coulomb_plastic_potential.h:69
KRATOS_CLASS_POINTER_DEFINITION(MohrCoulombPlasticPotential)
Counted pointer of MohrCoulombPlasticPotential.
Properties encapsulates data shared by different Elements or Conditions. It can store any type of dat...
Definition: properties.h:69
constexpr double Pi
Definition: global_variables.h:25
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
std::size_t SizeType
The definition of the size type.
Definition: mortar_classes.h:43
T & noalias(T &TheMatrix)
Definition: amatrix_interface.h:484
float J2
Definition: isotropic_damage_automatic_differentiation.py:133
def J3
Definition: isotropic_damage_automatic_differentiation.py:176
Definition: constitutive_law.h:189
const Properties & GetMaterialProperties()
Definition: constitutive_law.h:457