67 template<
class TYieldSurfaceType>
75 static constexpr
double tolerance = std::numeric_limits<double>::epsilon();
175 double& rUniaxialStress,
177 double& rPlasticDenominator,
180 double& rPlasticDissipation,
182 Matrix& rConstitutiveMatrix,
185 const double CharacteristicLength,
186 Vector& rBackStressVector,
187 const Vector& rPreviousStressVector
194 bool is_converged =
false;
197 double plastic_consistency_factor_increment, threshold_indicator;
199 const bool analytic_tangent = (r_material_properties.
Has(TANGENT_OPERATOR_ESTIMATION) && r_material_properties[TANGENT_OPERATOR_ESTIMATION] == 0) ?
true :
false;
203 threshold_indicator = rUniaxialStress - rThreshold;
204 plastic_consistency_factor_increment = threshold_indicator * rPlasticDenominator;
205 plastic_consistency_factor_increment = (plastic_consistency_factor_increment < 0.0) ? 0.0 : plastic_consistency_factor_increment;
206 noalias(rPlasticStrainIncrement) = plastic_consistency_factor_increment * rDerivativePlasticPotential;
207 noalias(rPlasticStrain) += rPlasticStrainIncrement;
208 noalias(delta_sigma) =
prod(rConstitutiveMatrix, rPlasticStrainIncrement);
209 noalias(rPredictiveStressVector) -= delta_sigma;
210 CalculateBackStress(rPredictiveStressVector, rValues, rPreviousStressVector, rPlasticStrainIncrement, rBackStressVector);
211 noalias(kin_hard_stress_vector) = rPredictiveStressVector - rBackStressVector;
212 threshold_indicator =
CalculatePlasticParameters(kin_hard_stress_vector, rStrainVector, rUniaxialStress, rThreshold, rPlasticDenominator, rYieldSurfaceDerivative, rDerivativePlasticPotential, rPlasticDissipation, rPlasticStrainIncrement,rConstitutiveMatrix, rValues, CharacteristicLength, rPlasticStrain, rBackStressVector);
215 if (std::abs(threshold_indicator) <= std::abs(1.0e-4 * rThreshold)) {
221 if (analytic_tangent) {
224 CalculateTangentMatrix(tangent_tensor, rConstitutiveMatrix, rYieldSurfaceDerivative, rDerivativePlasticPotential, rPlasticDenominator);
225 noalias(rConstitutiveMatrix) = tangent_tensor;
227 KRATOS_WARNING_IF(
"GenericConstitutiveLawIntegratorKinematicPlasticity",
iteration >
max_iter) <<
"Maximum number of iterations in plasticity loop reached..." << std::endl;
240 const Matrix& rElasticMatrix,
243 const double Denominator
268 double& rUniaxialStress,
270 double& rPlasticDenominator,
273 double& rPlasticDissipation,
275 const Matrix& rConstitutiveMatrix,
277 const double CharacteristicLength,
278 const Vector& rPlasticStrain,
279 const Vector& rBackStressVector
284 double J2, tensile_indicator_factor, compression_indicator_factor, slope, hardening_parameter, equivalent_plastic_strain;
286 YieldSurfaceType::CalculateEquivalentStress( rPredictiveStressVector, rStrainVector, rUniaxialStress, rValues);
287 const double I1 = rPredictiveStressVector[0] + rPredictiveStressVector[1] + rPredictiveStressVector[2];
292 CalculatePlasticDissipation(rPredictiveStressVector, tensile_indicator_factor,compression_indicator_factor, rPlasticStrainIncrement,rPlasticDissipation, h_capa, rValues, CharacteristicLength);
294 CalculateEquivalentStressThreshold(rPlasticDissipation, tensile_indicator_factor,compression_indicator_factor, rThreshold, slope, rValues, equivalent_plastic_strain, CharacteristicLength);
296 CalculatePlasticDenominator(rYieldSurfaceDerivative, rDerivativePlasticPotential, rConstitutiveMatrix, hardening_parameter, rPlasticDenominator, rBackStressVector, rValues);
298 return rUniaxialStress - rThreshold;
317 YieldSurfaceType::CalculateYieldSurfaceDerivative(rPredictiveStressVector, rDeviator,
J2, rDerivativeYieldSurface, rValues);
333 const Vector& rPreviousStressVector,
334 const Vector& rPlasticStrainIncrement,
339 const unsigned int kinematic_hardening_type = rValues.
GetMaterialProperties()[KINEMATIC_HARDENING_TYPE];
343 double pDot, denominator, dot_product_dp;
345 KRATOS_ERROR_IF(r_kinematic_parameters.size() == 0) <<
"Kinematic Parameters not defined..." << std::endl;
346 rBackStressVector += 2.0 / 3.0 * r_kinematic_parameters[0] * rPlasticStrainIncrement;
350 KRATOS_ERROR_IF(r_kinematic_parameters.size() < 2) <<
"Kinematic Parameters not defined..." << std::endl;
351 dot_product_dp = 0.0;
352 for (
IndexType i = 0;
i < rPlasticStrainIncrement.size(); ++
i) {
353 dot_product_dp += rPlasticStrainIncrement[
i] * rPlasticStrainIncrement[
i];
355 pDot = std::sqrt(2.0 / 3.0 * dot_product_dp);
356 denominator = 1.0 + (r_kinematic_parameters[1] * pDot);
357 rBackStressVector = (rBackStressVector + ((2.0 / 3.0 * r_kinematic_parameters[0]) * rPlasticStrainIncrement)) / denominator;
361 KRATOS_ERROR_IF(r_kinematic_parameters.size() != 3) <<
"Kinematic Parameters not defined..." << std::endl;
362 dot_product_dp = 0.0;
363 for (
IndexType i = 0;
i < rPlasticStrainIncrement.size(); ++
i) {
364 dot_product_dp += rPlasticStrainIncrement[
i] * rPlasticStrainIncrement[
i];
366 pDot = std::sqrt(2.0 / 3.0 * dot_product_dp);
367 denominator = 1.0 + (r_kinematic_parameters[1] * pDot);
369 rBackStressVector = (rBackStressVector + ((2.0 / 3.0 * r_kinematic_parameters[0]) * rPlasticStrainIncrement)) / denominator;
371 const Vector& r_delta_stress = rPredictiveStressVector - rPreviousStressVector;
372 rBackStressVector = (rBackStressVector + ((2.0 / 3.0 * r_kinematic_parameters[0]) * rPlasticStrainIncrement) +
373 r_kinematic_parameters[2] * r_delta_stress) / denominator;
377 KRATOS_ERROR <<
" The Kinematic hardening type of plasticity is not set or wrong..." << kinematic_hardening_type << std::endl;
398 YieldSurfaceType::CalculatePlasticPotentialDerivative(rPredictiveStressVector, rDeviator,
J2, rDerivativePlasticPotential, rValues);
409 double& rTensileIndicatorFactor,
410 double& rCompressionIndicatorFactor
414 rPredictiveStressVector,rTensileIndicatorFactor,rCompressionIndicatorFactor);
430 const double TensileIndicatorFactor,
431 const double CompressionIndicatorFactor,
432 const Vector& PlasticStrainInc,
433 double& rPlasticDissipation,
436 const double CharacteristicLength
440 rPredictiveStressVector,TensileIndicatorFactor,CompressionIndicatorFactor,
441 PlasticStrainInc,rPlasticDissipation,rHCapa,rValues,CharacteristicLength);
456 const double PlasticDissipation,
457 const double TensileIndicatorFactor,
458 const double CompressionIndicatorFactor,
459 double& rEquivalentStressThreshold,
462 const double EquivalentPlasticStrain,
463 const double CharacteristicLength
467 PlasticDissipation,TensileIndicatorFactor,CompressionIndicatorFactor,rEquivalentStressThreshold,
468 rSlope,rValues,EquivalentPlasticStrain,CharacteristicLength);
481 const double PlasticDissipation,
482 const double TensileIndicatorFactor,
483 const double CompressionIndicatorFactor,
484 double& rEquivalentStressThreshold,
490 PlasticDissipation,TensileIndicatorFactor,CompressionIndicatorFactor,rEquivalentStressThreshold,rSlope,rValues);
503 const double PlasticDissipation,
504 const double TensileIndicatorFactor,
505 const double CompressionIndicatorFactor,
506 double& rEquivalentStressThreshold,
509 const double CharacteristicLength
513 PlasticDissipation,TensileIndicatorFactor,CompressionIndicatorFactor,rEquivalentStressThreshold,rSlope,rValues,CharacteristicLength);
526 const double PlasticDissipation,
527 const double TensileIndicatorFactor,
528 const double CompressionIndicatorFactor,
529 double& rEquivalentStressThreshold,
535 PlasticDissipation,TensileIndicatorFactor,CompressionIndicatorFactor,rEquivalentStressThreshold,rSlope,rValues);
548 const double PlasticDissipation,
549 const double TensileIndicatorFactor,
550 const double CompressionIndicatorFactor,
551 double& rEquivalentStressThreshold,
557 PlasticDissipation,TensileIndicatorFactor,CompressionIndicatorFactor,rEquivalentStressThreshold,rSlope,rValues);
572 const double PlasticDissipation,
573 const double TensileIndicatorFactor,
574 const double CompressionIndicatorFactor,
575 double& rEquivalentStressThreshold,
578 const double EquivalentPlasticStrain,
579 const double CharacteristicLength
583 PlasticDissipation,TensileIndicatorFactor,CompressionIndicatorFactor,rEquivalentStressThreshold,rSlope,rValues,
584 EquivalentPlasticStrain,CharacteristicLength);
597 const Vector& rStressVector,
598 const double UniaxialStress,
599 const Vector& rPlasticStrain,
602 double& rEquivalentPlasticStrain
606 rStressVector,UniaxialStress,rPlasticStrain,r0,rValues,rEquivalentPlasticStrain);
616 TYieldSurfaceType::GetInitialUniaxialThreshold(rValues, rThreshold);
628 const double SlopeThreshold,
630 double& rHardeningParameter
634 rGFlux,SlopeThreshold,rHCapa,rHardeningParameter);
649 const Matrix& rConstitutiveMatrix,
650 double& rHardeningParameter,
651 double& rPlasticDenominator,
652 const Vector& rBackStressVector,
662 A1 += rFFlux[
i] * delta_vector[
i];
664 if (r_kinematic_parameters.size() == 3) {
665 A1 *= (1.0 - r_kinematic_parameters[2]);
668 double dot_fflux_gflux = 0.0, A2;
670 dot_fflux_gflux += rFFlux[
i] * rGFlux[
i];
672 const double two_thirds = 2.0 / 3.0;
673 double dot_fflux_backstress = 0.0, dot_gflux_gflux = 0.0;
677 A2 = two_thirds * r_kinematic_parameters[0] * dot_fflux_gflux;
681 A2 = two_thirds * r_kinematic_parameters[0] * dot_fflux_gflux;
683 dot_fflux_backstress += rFFlux[
i] * rBackStressVector[
i];
686 dot_gflux_gflux += rGFlux[
i] * rGFlux[
i];
688 A2 -= r_kinematic_parameters[1] * dot_fflux_backstress * std::sqrt(two_thirds * dot_gflux_gflux);
692 A2 = two_thirds * r_kinematic_parameters[0] * dot_fflux_gflux;
694 dot_fflux_backstress += rFFlux[
i] * rBackStressVector[
i];
697 dot_gflux_gflux += rGFlux[
i] * rGFlux[
i];
699 A2 -= r_kinematic_parameters[1] * dot_fflux_backstress * std::sqrt(two_thirds * dot_gflux_gflux);
703 KRATOS_ERROR <<
" The Kinematic hardening type of plasticity is not set or wrong..." << kinematic_hardening_type << std::endl;
707 const double A3 = rHardeningParameter;
708 rPlasticDenominator = 1.0 / (A1 + A2 + A3);
710 if (r_kinematic_parameters.size() == 3) {
711 rPlasticDenominator *= (1.0 - r_kinematic_parameters[2]);
722 KRATOS_ERROR_IF_NOT(rMaterialProperties.
Has(YOUNG_MODULUS)) <<
"HARDENING_CURVE is not a defined value" << std::endl;
723 KRATOS_ERROR_IF_NOT(rMaterialProperties.
Has(HARDENING_CURVE)) <<
"HARDENING_CURVE is not a defined value" << std::endl;
724 KRATOS_ERROR_IF_NOT(rMaterialProperties.
Has(FRACTURE_ENERGY)) <<
"FRACTURE_ENERGY is not a defined value" << std::endl;
727 const int curve_type = rMaterialProperties[HARDENING_CURVE];
729 KRATOS_ERROR_IF_NOT(rMaterialProperties.
Has(MAXIMUM_STRESS)) <<
"MAXIMUM_STRESS is not a defined value" << std::endl;
730 KRATOS_ERROR_IF_NOT(rMaterialProperties.
Has(MAXIMUM_STRESS_POSITION)) <<
"MAXIMUM_STRESS_POSITION is not a defined value" << std::endl;
732 KRATOS_ERROR_IF_NOT(rMaterialProperties.
Has(CURVE_FITTING_PARAMETERS)) <<
"CURVE_FITTING_PARAMETERS is not a defined value" << std::endl;
733 KRATOS_ERROR_IF_NOT(rMaterialProperties.
Has(PLASTIC_STRAIN_INDICATORS)) <<
"PLASTIC_STRAIN_INDICATORS is not a defined value" << std::endl;
736 if (!rMaterialProperties.
Has(YIELD_STRESS)) {
737 KRATOS_ERROR_IF_NOT(rMaterialProperties.
Has(YIELD_STRESS_TENSION)) <<
"YIELD_STRESS_TENSION is not a defined value" << std::endl;
738 KRATOS_ERROR_IF_NOT(rMaterialProperties.
Has(YIELD_STRESS_COMPRESSION)) <<
"YIELD_STRESS_COMPRESSION is not a defined value" << std::endl;
740 const double yield_compression = rMaterialProperties[YIELD_STRESS_COMPRESSION];
741 const double yield_tension = rMaterialProperties[YIELD_STRESS_TENSION];
743 KRATOS_ERROR_IF(yield_compression <
tolerance) <<
"Yield stress in compression almost zero or negative, include YIELD_STRESS_COMPRESSION in definition";
744 KRATOS_ERROR_IF(yield_tension <
tolerance) <<
"Yield stress in tension almost zero or negative, include YIELD_STRESS_TENSION in definition";
746 const double yield_stress = rMaterialProperties[YIELD_STRESS];
748 KRATOS_ERROR_IF(yield_stress <
tolerance) <<
"Yield stress almost zero or negative, include YIELD_STRESS in definition";
751 return TYieldSurfaceType::Check(rMaterialProperties);
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
This object integrates the predictive stress using the plasticity theory by means of linear/exponenti...
Definition: generic_cl_integrator_kinematic_plasticity.h:69
HardeningCurveType
Definition: generic_cl_integrator_kinematic_plasticity.h:106
@ InitialHardeningExponentialSoftening
GenericConstitutiveLawIntegratorKinematicPlasticity & operator=(GenericConstitutiveLawIntegratorKinematicPlasticity const &rOther)
Assignment operator.
Definition: generic_cl_integrator_kinematic_plasticity.h:136
TYieldSurfaceType YieldSurfaceType
The type of yield surface.
Definition: generic_cl_integrator_kinematic_plasticity.h:81
static void CalculateEquivalentStressThresholdHardeningCurvePerfectPlasticity(const double PlasticDissipation, const double TensileIndicatorFactor, const double CompressionIndicatorFactor, double &rEquivalentStressThreshold, double &rSlope, ConstitutiveLaw::Parameters &rValues)
This method computes the uniaxial threshold using a perfect plasticity law.
Definition: generic_cl_integrator_kinematic_plasticity.h:547
KinematicHardeningType
Definition: generic_cl_integrator_kinematic_plasticity.h:115
@ ArmstrongFrederickKinematicHardening
@ AraujoVoyiadjisKinematicHardening
@ LinearKinematicHardening
static constexpr SizeType Dimension
The define the working dimension size, already defined in the yield surface.
Definition: generic_cl_integrator_kinematic_plasticity.h:84
GenericConstitutiveLawIntegratorKinematicPlasticity()
Initialization constructor.
Definition: generic_cl_integrator_kinematic_plasticity.h:126
BoundedMatrix< double, Dimension, Dimension > BoundedMatrixType
The definition of the bounded matrix type.
Definition: generic_cl_integrator_kinematic_plasticity.h:93
std::size_t IndexType
Definition of index.
Definition: generic_cl_integrator_kinematic_plasticity.h:78
static void CalculateEquivalentStressThresholdHardeningCurveLinearSoftening(const double PlasticDissipation, const double TensileIndicatorFactor, const double CompressionIndicatorFactor, double &rEquivalentStressThreshold, double &rSlope, ConstitutiveLaw::Parameters &rValues)
This method computes the uniaxial threshold using a linear softening.
Definition: generic_cl_integrator_kinematic_plasticity.h:480
static void CalculatePlasticDissipation(const BoundedArrayType &rPredictiveStressVector, const double TensileIndicatorFactor, const double CompressionIndicatorFactor, const Vector &PlasticStrainInc, double &rPlasticDissipation, BoundedArrayType &rHCapa, ConstitutiveLaw::Parameters &rValues, const double CharacteristicLength)
This method computes the plastic dissipation of the plasticity model.
Definition: generic_cl_integrator_kinematic_plasticity.h:428
YieldSurfaceType::PlasticPotentialType PlasticPotentialType
The type of plastic potential.
Definition: generic_cl_integrator_kinematic_plasticity.h:96
static constexpr SizeType VoigtSize
The define the Voigt size, already defined in the yield surface.
Definition: generic_cl_integrator_kinematic_plasticity.h:87
static void CalculateEquivalentPlasticStrain(const Vector &rStressVector, const double UniaxialStress, const Vector &rPlasticStrain, const double r0, ConstitutiveLaw::Parameters &rValues, double &rEquivalentPlasticStrain)
This method returns the equivalent plastic strain.
Definition: generic_cl_integrator_kinematic_plasticity.h:596
static void IntegrateStressVector(BoundedArrayType &rPredictiveStressVector, Vector &rStrainVector, double &rUniaxialStress, double &rThreshold, double &rPlasticDenominator, BoundedArrayType &rYieldSurfaceDerivative, BoundedArrayType &rDerivativePlasticPotential, double &rPlasticDissipation, BoundedArrayType &rPlasticStrainIncrement, Matrix &rConstitutiveMatrix, Vector &rPlasticStrain, ConstitutiveLaw::Parameters &rValues, const double CharacteristicLength, Vector &rBackStressVector, const Vector &rPreviousStressVector)
This method integrates the predictive stress vector with the CL using differents evolution laws using...
Definition: generic_cl_integrator_kinematic_plasticity.h:172
static double CalculatePlasticParameters(BoundedArrayType &rPredictiveStressVector, Vector &rStrainVector, double &rUniaxialStress, double &rThreshold, double &rPlasticDenominator, BoundedArrayType &rYieldSurfaceDerivative, BoundedArrayType &rDerivativePlasticPotential, double &rPlasticDissipation, BoundedArrayType &rPlasticStrainIncrement, const Matrix &rConstitutiveMatrix, ConstitutiveLaw::Parameters &rValues, const double CharacteristicLength, const Vector &rPlasticStrain, const Vector &rBackStressVector)
This method calculates all the plastic parameters required for the integration of the PredictiveStres...
Definition: generic_cl_integrator_kinematic_plasticity.h:265
array_1d< double, VoigtSize > BoundedArrayType
The definition of the Voigt array type.
Definition: generic_cl_integrator_kinematic_plasticity.h:90
static void CalculateDerivativeYieldSurface(const BoundedArrayType &rPredictiveStressVector, const BoundedArrayType &rDeviator, const double J2, BoundedArrayType &rDerivativeYieldSurface, ConstitutiveLaw::Parameters &rValues)
This method calculates the derivative of the yield surface.
Definition: generic_cl_integrator_kinematic_plasticity.h:309
static void CalculateEquivalentStressThresholdCurveFittingHardening(const double PlasticDissipation, const double TensileIndicatorFactor, const double CompressionIndicatorFactor, double &rEquivalentStressThreshold, double &rSlope, ConstitutiveLaw::Parameters &rValues, const double EquivalentPlasticStrain, const double CharacteristicLength)
This method computes the uniaxial threshold using a perfect plasticity law.
Definition: generic_cl_integrator_kinematic_plasticity.h:571
static void CalculateEquivalentStressThresholdHardeningCurveInitialHardeningExponentialSoftening(const double PlasticDissipation, const double TensileIndicatorFactor, const double CompressionIndicatorFactor, double &rEquivalentStressThreshold, double &rSlope, ConstitutiveLaw::Parameters &rValues)
This method computes the uniaxial threshold using a hardening-softening law.
Definition: generic_cl_integrator_kinematic_plasticity.h:525
static void CalculateEquivalentStressThresholdHardeningCurveExponentialSoftening(const double PlasticDissipation, const double TensileIndicatorFactor, const double CompressionIndicatorFactor, double &rEquivalentStressThreshold, double &rSlope, ConstitutiveLaw::Parameters &rValues, const double CharacteristicLength)
This method computes the uniaxial threshold using a exponential softening.
Definition: generic_cl_integrator_kinematic_plasticity.h:502
static void CalculateEquivalentStressThreshold(const double PlasticDissipation, const double TensileIndicatorFactor, const double CompressionIndicatorFactor, double &rEquivalentStressThreshold, double &rSlope, ConstitutiveLaw::Parameters &rValues, const double EquivalentPlasticStrain, const double CharacteristicLength)
This method computes the uniaxial threshold that differentiates the elastic-plastic behaviour.
Definition: generic_cl_integrator_kinematic_plasticity.h:455
KRATOS_CLASS_POINTER_DEFINITION(GenericConstitutiveLawIntegratorKinematicPlasticity)
Counted pointer of GenericConstitutiveLawIntegratorKinematicPlasticity.
static void GetInitialUniaxialThreshold(ConstitutiveLaw::Parameters &rValues, double &rThreshold)
This method returns the initial uniaxial stress threshold.
Definition: generic_cl_integrator_kinematic_plasticity.h:614
static void CalculatePlasticDenominator(const BoundedArrayType &rFFlux, const BoundedArrayType &rGFlux, const Matrix &rConstitutiveMatrix, double &rHardeningParameter, double &rPlasticDenominator, const Vector &rBackStressVector, ConstitutiveLaw::Parameters &rValues)
This method computes the plastic denominator needed to compute the plastic consistency factor.
Definition: generic_cl_integrator_kinematic_plasticity.h:646
static void CalculateHardeningParameter(const BoundedArrayType &rGFlux, const double SlopeThreshold, const BoundedArrayType &rHCapa, double &rHardeningParameter)
This method computes hardening parameter needed for the algorithm.
Definition: generic_cl_integrator_kinematic_plasticity.h:626
virtual ~GenericConstitutiveLawIntegratorKinematicPlasticity()
Destructor.
Definition: generic_cl_integrator_kinematic_plasticity.h:142
static int Check(const Properties &rMaterialProperties)
This method defines in the CL integrator.
Definition: generic_cl_integrator_kinematic_plasticity.h:719
static void CalculateDerivativePlasticPotential(const BoundedArrayType &rPredictiveStressVector, const BoundedArrayType &rDeviator, const double J2, BoundedArrayType &rDerivativePlasticPotential, ConstitutiveLaw::Parameters &rValues)
This method calculates the derivative of the plastic potential.
Definition: generic_cl_integrator_kinematic_plasticity.h:390
static void CalculateIndicatorsFactors(const BoundedArrayType &rPredictiveStressVector, double &rTensileIndicatorFactor, double &rCompressionIndicatorFactor)
This method computes the tensile/compressive indicators.
Definition: generic_cl_integrator_kinematic_plasticity.h:407
static void CalculateTangentMatrix(Matrix &rTangent, const Matrix &rElasticMatrix, const array_1d< double, VoigtSize > &rFFluxVector, const array_1d< double, VoigtSize > &rGFluxVector, const double Denominator)
This method calculates the analytical tangent tensor.
Definition: generic_cl_integrator_kinematic_plasticity.h:238
static void CalculateBackStress(BoundedArrayType &rPredictiveStressVector, ConstitutiveLaw::Parameters &rValues, const Vector &rPreviousStressVector, const Vector &rPlasticStrainIncrement, Vector &rBackStressVector)
This method computes the back stress for the kinematic plasticity This method has 3 different ways of...
Definition: generic_cl_integrator_kinematic_plasticity.h:330
static constexpr double tolerance
The machine precision tolerance.
Definition: generic_cl_integrator_kinematic_plasticity.h:75
GenericConstitutiveLawIntegratorKinematicPlasticity(GenericConstitutiveLawIntegratorKinematicPlasticity const &rOther)
Copy constructor.
Definition: generic_cl_integrator_kinematic_plasticity.h:131
static void CalculateEquivalentStressThresholdHardeningCurvePerfectPlasticity(const double PlasticDissipation, const double TensileIndicatorFactor, const double CompressionIndicatorFactor, double &rEquivalentStressThreshold, double &rSlope, ConstitutiveLaw::Parameters &rValues)
This method computes the uniaxial threshold using a perfect plasticity law.
Definition: generic_cl_integrator_plasticity.h:644
static void CalculatePlasticDissipation(const array_1d< double, VoigtSize > &rPredictiveStressVector, const double TensileIndicatorFactor, const double CompressionIndicatorFactor, const Vector &PlasticStrainInc, double &rPlasticDissipation, array_1d< double, VoigtSize > &rHCapa, ConstitutiveLaw::Parameters &rValues, const double CharacteristicLength)
This method computes the plastic dissipation of the plasticity model.
Definition: generic_cl_integrator_plasticity.h:383
static void CalculateIndicatorsFactors(const array_1d< double, VoigtSize > &rPredictiveStressVector, double &rTensileIndicatorFactor, double &rCompressionIndicatorFactor)
This method computes the tensile/compressive indicators.
Definition: generic_cl_integrator_plasticity.h:329
static void CalculateHardeningParameter(const array_1d< double, VoigtSize > &rGFlux, const double SlopeThreshold, const array_1d< double, VoigtSize > &rHCapa, double &rHardeningParameter)
This method computes hardening parameter needed for the algorithm.
Definition: generic_cl_integrator_plasticity.h:934
static void CalculateEquivalentStressThresholdHardeningCurveInitialHardeningExponentialSoftening(const double PlasticDissipation, const double TensileIndicatorFactor, const double CompressionIndicatorFactor, double &rEquivalentStressThreshold, double &rSlope, ConstitutiveLaw::Parameters &rValues)
This method computes the uniaxial threshold using a hardening-softening law.
Definition: generic_cl_integrator_plasticity.h:605
static void CalculateEquivalentPlasticStrain(const Vector &rStressVector, const double UniaxialStress, const Vector &rPlasticStrain, const double r0, ConstitutiveLaw::Parameters &rValues, double &rEquivalentPlasticStrain)
This method returns the equivalent plastic strain.
Definition: generic_cl_integrator_plasticity.h:898
static void CalculateEquivalentStressThresholdHardeningCurveLinearSoftening(const double PlasticDissipation, const double TensileIndicatorFactor, const double CompressionIndicatorFactor, double &rEquivalentStressThreshold, double &rSlope, ConstitutiveLaw::Parameters &rValues)
This method computes the uniaxial threshold using a linear softening.
Definition: generic_cl_integrator_plasticity.h:533
static void CalculateEquivalentStressThresholdHardeningCurveExponentialSoftening(const double PlasticDissipation, const double TensileIndicatorFactor, const double CompressionIndicatorFactor, double &rEquivalentStressThreshold, double &rSlope, ConstitutiveLaw::Parameters &rValues, const double CharacteristicLength)
This method computes the uniaxial threshold using a exponential softening.
Definition: generic_cl_integrator_plasticity.h:567
static void CalculateEquivalentStressThreshold(const double PlasticDissipation, const double TensileIndicatorFactor, const double CompressionIndicatorFactor, double &rEquivalentStressThreshold, double &rSlope, ConstitutiveLaw::Parameters &rValues, const double EquivalentPlasticStrain, const double CharacteristicLength)
This method computes the uniaxial threshold that differentiates the elastic-plastic behaviour.
Definition: generic_cl_integrator_plasticity.h:446
static void CalculateEquivalentStressThresholdCurveFittingHardening(const double PlasticDissipation, const double TensileIndicatorFactor, const double CompressionIndicatorFactor, double &rEquivalentStressThreshold, double &rSlope, ConstitutiveLaw::Parameters &rValues, const double EquivalentPlasticStrain, const double CharacteristicLength)
This method computes the uniaxial threshold using a perfect plasticity law.
Definition: generic_cl_integrator_plasticity.h:671
Definition: amatrix_interface.h:41
void resize(std::size_t NewSize1, std::size_t NewSize2, bool preserve=0)
Definition: amatrix_interface.h:224
Properties encapsulates data shared by different Elements or Conditions. It can store any type of dat...
Definition: properties.h:69
TVariableType::Type & GetValue(const TVariableType &rVariable)
Definition: properties.h:228
bool Has(TVariableType const &rThisVariable) const
Definition: properties.h:578
#define KRATOS_ERROR
Definition: exception.h:161
#define KRATOS_ERROR_IF_NOT(conditional)
Definition: exception.h:163
#define KRATOS_ERROR_IF(conditional)
Definition: exception.h:162
#define KRATOS_WARNING_IF(label, conditional)
Definition: logger.h:266
iteration
Definition: DEM_benchmarks.py:172
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
KratosZeroVector< double > ZeroVector
Definition: amatrix_interface.h:561
Internals::Matrix< double, AMatrix::dynamic, 1 > Vector
Definition: amatrix_interface.h:472
AMatrix::MatrixProductExpression< TExpression1Type, TExpression2Type > prod(AMatrix::MatrixExpression< TExpression1Type, TCategory1 > const &First, AMatrix::MatrixExpression< TExpression2Type, TCategory2 > const &Second)
Definition: amatrix_interface.h:568
AMatrix::VectorOuterProductExpression< TExpression1Type, TExpression2Type > outer_prod(AMatrix::MatrixExpression< TExpression1Type, TCategory1 > const &First, AMatrix::MatrixExpression< TExpression2Type, TCategory2 > const &Second)
Definition: amatrix_interface.h:582
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 max_iter
Definition: hinsberg_optimization.py:139
float J2
Definition: isotropic_damage_automatic_differentiation.py:133
I1
Definition: isotropic_damage_automatic_differentiation.py:230
integer i
Definition: TensorModule.f:17
Definition: constitutive_law.h:189
const Properties & GetMaterialProperties()
Definition: constitutive_law.h:457