From 3e6662d7321e2667b18740d331bcdafa65546ce6 Mon Sep 17 00:00:00 2001 From: SergioJimenez Date: Wed, 29 May 2024 09:34:07 +0200 Subject: [PATCH 1/4] Adding total_strain/plastic_strain distinction to exp softening --- .../generic_cl_integrator_plasticity.h | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliary_files/cl_integrators/generic_cl_integrator_plasticity.h b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliary_files/cl_integrators/generic_cl_integrator_plasticity.h index 617dd005374b..3cc7352a3ac8 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliary_files/cl_integrators/generic_cl_integrator_plasticity.h +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliary_files/cl_integrators/generic_cl_integrator_plasticity.h @@ -586,11 +586,22 @@ class GenericConstitutiveLawIntegratorPlasticity const double minimum_characteristic_fracture_energy_exponential_softening = (std::pow(yield_compression, 2)) / young_modulus; + const bool has_total_or_plastic_strain_space = r_material_properties.Has(TOTAL_OR_PLASTIC_STRAIN_SPACE); + const bool total_or_plastic_strain_space = has_total_or_plastic_strain_space ? r_material_properties[TOTAL_OR_PLASTIC_STRAIN_SPACE] : false; //Default value = plastic strain space + double initial_threshold; GetInitialUniaxialThreshold(rValues, initial_threshold); KRATOS_ERROR_IF(characteristic_fracture_energy_compression < minimum_characteristic_fracture_energy_exponential_softening) << "The Fracture Energy is to low: " << characteristic_fracture_energy_compression << std::endl; - rEquivalentStressThreshold = initial_threshold * (1.0 - PlasticDissipation); - rSlope = - initial_threshold; + if (total_or_plastic_strain_space) { // Curve built in the total strain space + rEquivalentStressThreshold = (young_modulus / initial_threshold) * ((0.5 * std::pow(initial_threshold, 2.0) / young_modulus - characteristic_fracture_energy_compression) + + std::sqrt(std::pow((0.5 * std::pow(initial_threshold, 2.0) / young_modulus + characteristic_fracture_energy_compression), 2.0) + - 2.0 * std::pow(initial_threshold, 2.0) / young_modulus * characteristic_fracture_energy_compression * PlasticDissipation)); + rSlope = - initial_threshold * characteristic_fracture_energy_compression * std::pow(std::pow((0.5 * std::pow(initial_threshold, 2.0) / young_modulus + characteristic_fracture_energy_compression), 2.0) + - 2.0 * std::pow(initial_threshold, 2.0) / young_modulus * characteristic_fracture_energy_compression * PlasticDissipation, -0.5); + } else { // Curve built in the plastic strain space + rEquivalentStressThreshold = initial_threshold * (1.0 - PlasticDissipation); + rSlope = - initial_threshold; + } } /** From 141781d8e45662e20b25350f8f26605ffc5de838 Mon Sep 17 00:00:00 2001 From: SergioJimenez Date: Wed, 29 May 2024 17:48:10 +0200 Subject: [PATCH 2/4] Minor changes in Iso plas integrator --- .../cl_integrators/generic_cl_integrator_plasticity.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliary_files/cl_integrators/generic_cl_integrator_plasticity.h b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliary_files/cl_integrators/generic_cl_integrator_plasticity.h index 293d31461693..113f0e0955a4 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliary_files/cl_integrators/generic_cl_integrator_plasticity.h +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliary_files/cl_integrators/generic_cl_integrator_plasticity.h @@ -247,7 +247,7 @@ class GenericConstitutiveLawIntegratorPlasticity array_1d h_capa = ZeroVector(VoigtSize); double J2, tensile_indicator_factor, compression_indicator_factor, slope, hardening_parameter, equivalent_plastic_strain, I1; - YieldSurfaceType::CalculateEquivalentStress( rPredictiveStressVector, rStrainVector, rUniaxialStress, rValues); + YieldSurfaceType::CalculateEquivalentStress(rPredictiveStressVector, rStrainVector, rUniaxialStress, rValues); AdvancedConstitutiveLawUtilities::CalculateI1Invariant(rPredictiveStressVector, I1); AdvancedConstitutiveLawUtilities::CalculateJ2Invariant(rPredictiveStressVector, I1, deviator, J2); CalculateFFluxVector(rPredictiveStressVector, deviator, J2, rFflux, rValues); @@ -669,7 +669,7 @@ class GenericConstitutiveLawIntegratorPlasticity } /** - * @brief This method computes the uniaxial threshold using a perfect plasticity law + * @brief This method computes the uniaxial threshold using an isotropic hardening (polynomial) - softening (exponential) plasticity law * @param PlasticDissipation The internal variable of energy dissipation due to plasticity * @param TensileIndicatorFactor The tensile indicator * @param CompressionIndicatorFactor The compressive indicator @@ -772,7 +772,7 @@ class GenericConstitutiveLawIntegratorPlasticity } /** - * @brief This method computes the uniaxial threshold using a linear-exponential softening, which changes from one to the other through the platic_dissipation_limit + * @brief This method computes the uniaxial threshold using an isotropic linear/exponential softening, which changes from one to the other through the platic_dissipation_limit * @param PlasticDissipation The internal variable of energy dissipation due to plasticity * @param TensileIndicatorFactor The tensile indicator * @param CompressionIndicatorFactor The compressive indicator From 4597fb4f7856c0d7a201c1e5956e488f6dfacb3d Mon Sep 17 00:00:00 2001 From: SergioJimenez Date: Wed, 29 May 2024 17:50:48 +0200 Subject: [PATCH 3/4] Correcting some methods in kin plasticity integrator The commit is mainly related with the fact that some operations in the stress integration process for the kinematic hardening plasticity must be done according to real stresses and not based on the ficticeous stresses computed using the back stress. --- ...neric_cl_integrator_kinematic_plasticity.h | 87 +++++++++++++++---- 1 file changed, 70 insertions(+), 17 deletions(-) diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliary_files/cl_integrators/generic_cl_integrator_kinematic_plasticity.h b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliary_files/cl_integrators/generic_cl_integrator_kinematic_plasticity.h index 471526ea9688..ffd9e6e74fda 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliary_files/cl_integrators/generic_cl_integrator_kinematic_plasticity.h +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliary_files/cl_integrators/generic_cl_integrator_kinematic_plasticity.h @@ -108,7 +108,9 @@ class GenericConstitutiveLawIntegratorKinematicPlasticity ExponentialSoftening = 1, InitialHardeningExponentialSoftening = 2, PerfectPlasticity = 3, - CurveFittingHardening = 4 + CurveFittingHardening = 4, + LinearExponentialSoftening = 5, + CurveDefinedByPoints = 6 }; enum class KinematicHardeningType @@ -283,13 +285,13 @@ class GenericConstitutiveLawIntegratorKinematicPlasticity BoundedArrayType h_capa = ZeroVector(VoigtSize); double J2, tensile_indicator_factor, compression_indicator_factor, slope, hardening_parameter, equivalent_plastic_strain, I1; - YieldSurfaceType::CalculateEquivalentStress( rPredictiveStressVector, rStrainVector, rUniaxialStress, rValues); + YieldSurfaceType::CalculateEquivalentStress(rPredictiveStressVector, rStrainVector, rUniaxialStress, rValues); AdvancedConstitutiveLawUtilities::CalculateI1Invariant(rPredictiveStressVector, I1); AdvancedConstitutiveLawUtilities::CalculateJ2Invariant(rPredictiveStressVector, I1, deviator, J2); CalculateDerivativeYieldSurface(rPredictiveStressVector, deviator, J2, rYieldSurfaceDerivative, rValues); CalculateDerivativePlasticPotential(rPredictiveStressVector, deviator, J2, rDerivativePlasticPotential, rValues); - CalculateIndicatorsFactors(rPredictiveStressVector, tensile_indicator_factor,compression_indicator_factor); - CalculatePlasticDissipation(rPredictiveStressVector, tensile_indicator_factor,compression_indicator_factor, rPlasticStrainIncrement,rPlasticDissipation, h_capa, rValues, CharacteristicLength); + CalculateIndicatorsFactors(rPredictiveStressVector + rBackStressVector, tensile_indicator_factor,compression_indicator_factor); // The real stress state is used. + CalculatePlasticDissipation(rPredictiveStressVector + rBackStressVector, tensile_indicator_factor,compression_indicator_factor, rPlasticStrainIncrement,rPlasticDissipation, h_capa, rValues, CharacteristicLength); // The real stress state is used. CalculateEquivalentPlasticStrain(rPredictiveStressVector, rUniaxialStress, rPlasticStrain, tensile_indicator_factor, rValues, equivalent_plastic_strain); CalculateEquivalentStressThreshold(rPlasticDissipation, tensile_indicator_factor,compression_indicator_factor, rThreshold, slope, rValues, equivalent_plastic_strain, CharacteristicLength); CalculateHardeningParameter(rDerivativePlasticPotential, slope, h_capa, hardening_parameter); @@ -437,8 +439,8 @@ class GenericConstitutiveLawIntegratorKinematicPlasticity ) { GenericConstitutiveLawIntegratorPlasticity::CalculatePlasticDissipation( - rPredictiveStressVector,TensileIndicatorFactor,CompressionIndicatorFactor, - PlasticStrainInc,rPlasticDissipation,rHCapa,rValues,CharacteristicLength); + rPredictiveStressVector, TensileIndicatorFactor, CompressionIndicatorFactor, + PlasticStrainInc, rPlasticDissipation, rHCapa, rValues, CharacteristicLength); } /** @@ -464,8 +466,8 @@ class GenericConstitutiveLawIntegratorKinematicPlasticity ) { GenericConstitutiveLawIntegratorPlasticity::CalculateEquivalentStressThreshold( - PlasticDissipation,TensileIndicatorFactor,CompressionIndicatorFactor,rEquivalentStressThreshold, - rSlope,rValues,EquivalentPlasticStrain,CharacteristicLength); + PlasticDissipation, TensileIndicatorFactor, CompressionIndicatorFactor, rEquivalentStressThreshold, + rSlope, rValues, EquivalentPlasticStrain, CharacteristicLength); } /** @@ -487,7 +489,7 @@ class GenericConstitutiveLawIntegratorKinematicPlasticity ) { GenericConstitutiveLawIntegratorPlasticity::CalculateEquivalentStressThresholdHardeningCurveLinearSoftening( - PlasticDissipation,TensileIndicatorFactor,CompressionIndicatorFactor,rEquivalentStressThreshold,rSlope,rValues); + PlasticDissipation, TensileIndicatorFactor, CompressionIndicatorFactor, rEquivalentStressThreshold, rSlope, rValues); } /** @@ -510,7 +512,7 @@ class GenericConstitutiveLawIntegratorKinematicPlasticity ) { GenericConstitutiveLawIntegratorPlasticity::CalculateEquivalentStressThresholdHardeningCurveExponentialSoftening( - PlasticDissipation,TensileIndicatorFactor,CompressionIndicatorFactor,rEquivalentStressThreshold,rSlope,rValues,CharacteristicLength); + PlasticDissipation, TensileIndicatorFactor, CompressionIndicatorFactor, rEquivalentStressThreshold, rSlope, rValues, CharacteristicLength); } /** @@ -532,7 +534,7 @@ class GenericConstitutiveLawIntegratorKinematicPlasticity ) { GenericConstitutiveLawIntegratorPlasticity::CalculateEquivalentStressThresholdHardeningCurveInitialHardeningExponentialSoftening( - PlasticDissipation,TensileIndicatorFactor,CompressionIndicatorFactor,rEquivalentStressThreshold,rSlope,rValues); + PlasticDissipation, TensileIndicatorFactor, CompressionIndicatorFactor, rEquivalentStressThreshold, rSlope, rValues); } /** @@ -554,11 +556,11 @@ class GenericConstitutiveLawIntegratorKinematicPlasticity ) { GenericConstitutiveLawIntegratorPlasticity::CalculateEquivalentStressThresholdHardeningCurvePerfectPlasticity( - PlasticDissipation,TensileIndicatorFactor,CompressionIndicatorFactor,rEquivalentStressThreshold,rSlope,rValues); + PlasticDissipation, TensileIndicatorFactor, CompressionIndicatorFactor, rEquivalentStressThreshold, rSlope, rValues); } /** - * @brief This method computes the uniaxial threshold using a perfect plasticity law + * @brief This method computes the uniaxial threshold using an isotropic hardening (polynomial) - softening (exponential) plasticity law * @param PlasticDissipation The internal variable of energy dissipation due to plasticity * @param TensileIndicatorFactor The tensile indicator * @param CompressionIndicatorFactor The compressive indicator @@ -580,8 +582,59 @@ class GenericConstitutiveLawIntegratorKinematicPlasticity ) { GenericConstitutiveLawIntegratorPlasticity::CalculateEquivalentStressThresholdCurveFittingHardening( - PlasticDissipation,TensileIndicatorFactor,CompressionIndicatorFactor,rEquivalentStressThreshold,rSlope,rValues, - EquivalentPlasticStrain,CharacteristicLength); + PlasticDissipation, TensileIndicatorFactor, CompressionIndicatorFactor, rEquivalentStressThreshold, rSlope, rValues, + EquivalentPlasticStrain, CharacteristicLength); + } + + /** + * @brief This method computes the uniaxial threshold using an isotropic linear/exponential softening, which changes from one to the other through the platic_dissipation_limit + * @param PlasticDissipation The internal variable of energy dissipation due to plasticity + * @param TensileIndicatorFactor The tensile indicator + * @param CompressionIndicatorFactor The compressive indicator + * @param rEquivalentStressThreshold The maximum uniaxial stress of the linear behaviour + * @param rSlope The slope of the PlasticDiss-Threshold curve + * @param CharacteristicLength Characteristic length of the finite element + * @param rValues Parameters of the constitutive law + */ + static void CalculateEquivalentStressThresholdHardeningCurveLinearExponentialSoftening( + const double PlasticDissipation, + const double TensileIndicatorFactor, + const double CompressionIndicatorFactor, + double& rEquivalentStressThreshold, + double& rSlope, + const double CharacteristicLength, + ConstitutiveLaw::Parameters& rValues + ) + { + GenericConstitutiveLawIntegratorPlasticity::CalculateEquivalentStressThresholdHardeningCurveLinearExponentialSoftening( + PlasticDissipation, TensileIndicatorFactor, CompressionIndicatorFactor, rEquivalentStressThreshold, rSlope, rValues, + EquivalentPlasticStrain, CharacteristicLength); + } + + /** + * @brief This method computes the uniaxial threshold using a two region curve: + * - point defined curve with linear interpolation followed by a + * - exponential curve. + * @param PlasticDissipation The internal variable of energy dissipation due to plasticity + * @param TensileIndicatorFactor The tensile indicator + * @param CompressionIndicatorFactor The compressive indicator + * @param rEquivalentStressThreshold The maximum uniaxial stress of the linear behaviour + * @param rSlope The slope of the PlasticDiss-Threshold curve + * @param rValues Parameters of the constitutive law + * @param CharacteristicLength Characteristic length of the finite element + */ + static void CalculateEquivalentStressThresholdHardeningCurveDefinedByPoints( + const double PlasticDissipation, + const double TensileIndicatorFactor, + const double CompressionIndicatorFactor, + double& rEquivalentStressThreshold, + double& rSlope, + ConstitutiveLaw::Parameters& rValues, + const double CharacteristicLength + ) + { + GenericConstitutiveLawIntegratorPlasticity::CalculateEquivalentStressThresholdHardeningCurveLinearExponentialSoftening( + PlasticDissipation, TensileIndicatorFactor, CompressionIndicatorFactor, rEquivalentStressThreshold, rSlope, rValues, CharacteristicLength); } /** @@ -603,7 +656,7 @@ class GenericConstitutiveLawIntegratorKinematicPlasticity ) { GenericConstitutiveLawIntegratorPlasticity::CalculateEquivalentPlasticStrain( - rStressVector,UniaxialStress,rPlasticStrain,r0,rValues,rEquivalentPlasticStrain); + rStressVector, UniaxialStress, rPlasticStrain, r0, rValues, rEquivalentPlasticStrain); } /** @@ -631,7 +684,7 @@ class GenericConstitutiveLawIntegratorKinematicPlasticity ) { GenericConstitutiveLawIntegratorPlasticity::CalculateHardeningParameter( - rGFlux,SlopeThreshold,rHCapa,rHardeningParameter); + rGFlux, SlopeThreshold, rHCapa, rHardeningParameter); } /** From 888a094c51b838ace92e0a000a4af3a0168f00ff Mon Sep 17 00:00:00 2001 From: SergioJimenez Date: Fri, 31 May 2024 15:37:03 +0200 Subject: [PATCH 4/4] Unnecessary methods as this is being computed in the Iso plas int --- ...neric_cl_integrator_kinematic_plasticity.h | 167 ------------------ 1 file changed, 167 deletions(-) diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliary_files/cl_integrators/generic_cl_integrator_kinematic_plasticity.h b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliary_files/cl_integrators/generic_cl_integrator_kinematic_plasticity.h index ffd9e6e74fda..980bd5d7b0e0 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliary_files/cl_integrators/generic_cl_integrator_kinematic_plasticity.h +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliary_files/cl_integrators/generic_cl_integrator_kinematic_plasticity.h @@ -470,173 +470,6 @@ class GenericConstitutiveLawIntegratorKinematicPlasticity rSlope, rValues, EquivalentPlasticStrain, CharacteristicLength); } - /** - * @brief This method computes the uniaxial threshold using a linear softening - * @param PlasticDissipation The internal variable of energy dissipation due to plasticity - * @param TensileIndicatorFactor The tensile indicator - * @param CompressionIndicatorFactor The compressive indicator - * @param rEquivalentStressThreshold The maximum uniaxial stress of the linear behaviour - * @param rSlope The slope of the PlasticDiss-Threshold curve - * @param rValues Parameters of the constitutive law - */ - static void CalculateEquivalentStressThresholdHardeningCurveLinearSoftening( - const double PlasticDissipation, - const double TensileIndicatorFactor, - const double CompressionIndicatorFactor, - double& rEquivalentStressThreshold, - double& rSlope, - ConstitutiveLaw::Parameters& rValues - ) - { - GenericConstitutiveLawIntegratorPlasticity::CalculateEquivalentStressThresholdHardeningCurveLinearSoftening( - PlasticDissipation, TensileIndicatorFactor, CompressionIndicatorFactor, rEquivalentStressThreshold, rSlope, rValues); - } - - /** - * @brief This method computes the uniaxial threshold using a exponential softening - * @param PlasticDissipation The internal variable of energy dissipation due to plasticity - * @param TensileIndicatorFactor The tensile indicator - * @param CompressionIndicatorFactor The compressive indicator - * @param rEquivalentStressThreshold The maximum uniaxial stress of the linear behaviour - * @param rSlope The slope of the PlasticDiss-Threshold curve - * @param rValues Parameters of the constitutive law - */ - static void CalculateEquivalentStressThresholdHardeningCurveExponentialSoftening( - const double PlasticDissipation, - const double TensileIndicatorFactor, - const double CompressionIndicatorFactor, - double& rEquivalentStressThreshold, - double& rSlope, - ConstitutiveLaw::Parameters& rValues, - const double CharacteristicLength - ) - { - GenericConstitutiveLawIntegratorPlasticity::CalculateEquivalentStressThresholdHardeningCurveExponentialSoftening( - PlasticDissipation, TensileIndicatorFactor, CompressionIndicatorFactor, rEquivalentStressThreshold, rSlope, rValues, CharacteristicLength); - } - - /** - * @brief This method computes the uniaxial threshold using a hardening-softening law - * @param PlasticDissipation The internal variable of energy dissipation due to plasticity - * @param TensileIndicatorFactor The tensile indicator - * @param CompressionIndicatorFactor The compressive indicator - * @param rEquivalentStressThreshold The maximum uniaxial stress of the linear behaviour - * @param rSlope The slope of the PlasticDiss-Threshold curve - * @param rValues Parameters of the constitutive law - */ - static void CalculateEquivalentStressThresholdHardeningCurveInitialHardeningExponentialSoftening( - const double PlasticDissipation, - const double TensileIndicatorFactor, - const double CompressionIndicatorFactor, - double& rEquivalentStressThreshold, - double& rSlope, - ConstitutiveLaw::Parameters& rValues - ) - { - GenericConstitutiveLawIntegratorPlasticity::CalculateEquivalentStressThresholdHardeningCurveInitialHardeningExponentialSoftening( - PlasticDissipation, TensileIndicatorFactor, CompressionIndicatorFactor, rEquivalentStressThreshold, rSlope, rValues); - } - - /** - * @brief This method computes the uniaxial threshold using a perfect plasticity law - * @param PlasticDissipation The internal variable of energy dissipation due to plasticity - * @param TensileIndicatorFactor The tensile indicator - * @param CompressionIndicatorFactor The compressive indicator - * @param rEquivalentStressThreshold The maximum uniaxial stress of the linear behaviour - * @param rSlope The slope of the PlasticDiss-Threshold curve - * @param rValues Parameters of the constitutive law - */ - static void CalculateEquivalentStressThresholdHardeningCurvePerfectPlasticity( - const double PlasticDissipation, - const double TensileIndicatorFactor, - const double CompressionIndicatorFactor, - double& rEquivalentStressThreshold, - double& rSlope, - ConstitutiveLaw::Parameters& rValues - ) - { - GenericConstitutiveLawIntegratorPlasticity::CalculateEquivalentStressThresholdHardeningCurvePerfectPlasticity( - PlasticDissipation, TensileIndicatorFactor, CompressionIndicatorFactor, rEquivalentStressThreshold, rSlope, rValues); - } - - /** - * @brief This method computes the uniaxial threshold using an isotropic hardening (polynomial) - softening (exponential) plasticity law - * @param PlasticDissipation The internal variable of energy dissipation due to plasticity - * @param TensileIndicatorFactor The tensile indicator - * @param CompressionIndicatorFactor The compressive indicator - * @param rEquivalentStressThreshold The maximum uniaxial stress of the linear behaviour - * @param rSlope The slope of the PlasticDiss-Threshold curve - * @param rValues Parameters of the constitutive law - * @param EquivalentPlasticStrain The Plastic Strain internal variable - * @param CharacteristicLength Characteristic length of the finite element - */ - 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 - ) - { - GenericConstitutiveLawIntegratorPlasticity::CalculateEquivalentStressThresholdCurveFittingHardening( - PlasticDissipation, TensileIndicatorFactor, CompressionIndicatorFactor, rEquivalentStressThreshold, rSlope, rValues, - EquivalentPlasticStrain, CharacteristicLength); - } - - /** - * @brief This method computes the uniaxial threshold using an isotropic linear/exponential softening, which changes from one to the other through the platic_dissipation_limit - * @param PlasticDissipation The internal variable of energy dissipation due to plasticity - * @param TensileIndicatorFactor The tensile indicator - * @param CompressionIndicatorFactor The compressive indicator - * @param rEquivalentStressThreshold The maximum uniaxial stress of the linear behaviour - * @param rSlope The slope of the PlasticDiss-Threshold curve - * @param CharacteristicLength Characteristic length of the finite element - * @param rValues Parameters of the constitutive law - */ - static void CalculateEquivalentStressThresholdHardeningCurveLinearExponentialSoftening( - const double PlasticDissipation, - const double TensileIndicatorFactor, - const double CompressionIndicatorFactor, - double& rEquivalentStressThreshold, - double& rSlope, - const double CharacteristicLength, - ConstitutiveLaw::Parameters& rValues - ) - { - GenericConstitutiveLawIntegratorPlasticity::CalculateEquivalentStressThresholdHardeningCurveLinearExponentialSoftening( - PlasticDissipation, TensileIndicatorFactor, CompressionIndicatorFactor, rEquivalentStressThreshold, rSlope, rValues, - EquivalentPlasticStrain, CharacteristicLength); - } - - /** - * @brief This method computes the uniaxial threshold using a two region curve: - * - point defined curve with linear interpolation followed by a - * - exponential curve. - * @param PlasticDissipation The internal variable of energy dissipation due to plasticity - * @param TensileIndicatorFactor The tensile indicator - * @param CompressionIndicatorFactor The compressive indicator - * @param rEquivalentStressThreshold The maximum uniaxial stress of the linear behaviour - * @param rSlope The slope of the PlasticDiss-Threshold curve - * @param rValues Parameters of the constitutive law - * @param CharacteristicLength Characteristic length of the finite element - */ - static void CalculateEquivalentStressThresholdHardeningCurveDefinedByPoints( - const double PlasticDissipation, - const double TensileIndicatorFactor, - const double CompressionIndicatorFactor, - double& rEquivalentStressThreshold, - double& rSlope, - ConstitutiveLaw::Parameters& rValues, - const double CharacteristicLength - ) - { - GenericConstitutiveLawIntegratorPlasticity::CalculateEquivalentStressThresholdHardeningCurveLinearExponentialSoftening( - PlasticDissipation, TensileIndicatorFactor, CompressionIndicatorFactor, rEquivalentStressThreshold, rSlope, rValues, CharacteristicLength); - } - /** * @brief This method returns the equivalent plastic strain * @param rThreshold The uniaxial stress threshold