Go to the documentation of this file.
21 params.addClassDescription(
"This class uses the discrete material in a radial return isotropic "
22 "plasticity power law hardening model, solving for the yield stress "
23 "as the intersection of the power law relation curve and Hooke's law. "
24 " This class can be used in conjunction with other creep and "
25 "plasticity materials for more complex simulations.");
28 params.set<Real>(
"yield_stress") = 1.0;
29 params.set<Real>(
"hardening_constant") = 1.0;
30 params.suppressParameter<Real>(
"yield_stress");
31 params.suppressParameter<Real>(
"hardening_constant");
34 params.addRequiredParam<Real>(
"strength_coefficient",
35 "The strength coefficient (K) for power law hardening");
36 params.addRequiredRangeCheckedParam<Real>(
37 "strain_hardening_exponent",
38 "strain_hardening_exponent>=0.0 & strain_hardening_exponent <=1.0",
39 "The strain hardening exponent (n) for power law hardening");
45 const InputParameters & parameters)
47 _K(parameters.get<Real>(
"strength_coefficient")),
48 _strain_hardening_exponent(parameters.get<Real>(
"strain_hardening_exponent"))
54 const Real effective_trial_stress,
const RankFourTensor & elasticity_tensor)
83 _youngs_modulus = shear_modulus * (3.0 * lambda + 2 * shear_modulus) / (lambda + shear_modulus);
89 mooseError(
"The yield stress must be greater than zero, but during the simulation your yield "
90 "stress became less than zero.");
97 const Real lame_lambda = elasticity_tensor(0, 0, 1, 1);
99 if (_mesh.dimension() == 3 && lame_lambda != elasticity_tensor(1, 1, 2, 2))
101 "Check to ensure that your Elasticity Tensor is truly Isotropic: different lambda values");
virtual void computeStressInitialize(const Real effective_trial_stress, const RankFourTensor &elasticity_tensor) override
Perform any necessary initialization before return mapping iterations.
virtual void computeYieldStress(const RankFourTensor &elasticity_tensor) override
IsotropicPowerLawHardeningStressUpdate(const InputParameters ¶meters)
Real getIsotropicLameLambda(const RankFourTensor &elasticity_tensor)
virtual Real computeHardeningDerivative(Real scalar) override
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)
static InputParameters validParams()
This class uses the Discrete material in a radial return isotropic plasticity model.
registerMooseObject("TensorMechanicsApp", IsotropicPowerLawHardeningStressUpdate)
const MaterialProperty< Real > & _hardening_variable_old
Real _K
Power law hardening coefficients.
Real _effective_trial_stress
defineLegacyParams(IsotropicPowerLawHardeningStressUpdate)
Real _three_shear_modulus
3 * shear modulus
const MaterialProperty< RankTwoTensor > & _plastic_strain_old
old value of plastic strain
MaterialProperty< Real > & _hardening_variable
MaterialProperty< RankTwoTensor > & _plastic_strain
plastic strain in this model
Real _strain_hardening_exponent
static InputParameters validParams()
Real _youngs_modulus
Elastic constants.
This class uses the Discrete material in a radial return isotropic plasticity model.