Go to the documentation of this file.
14 #include "PiecewiseLinear.h"
23 params.addClassDescription(
"Calculates the stress and plastic strain in the general isotropic "
24 "linear strain hardening plasticity model");
27 params.addParam<Real>(
"yield_stress",
"The point at which plastic strain begins accumulating");
28 params.addParam<FunctionName>(
"yield_stress_function",
29 "Yield stress as a function of temperature");
30 params.addParam<Real>(
"hardening_constant",
"Hardening slope");
31 params.addParam<FunctionName>(
"hardening_function",
32 "True stress as a function of plastic strain");
39 _yield_stress_function(
40 isParamValid(
"yield_stress_function") ? &getFunction(
"yield_stress_function") : NULL),
41 _yield_stress(isParamValid(
"yield_stress") ? getParam<Real>(
"yield_stress") : 0),
42 _hardening_constant(isParamValid(
"hardening_constant") ? getParam<Real>(
"hardening_constant")
44 _hardening_function(isParamValid(
"hardening_function") ? dynamic_cast<const PiecewiseLinear *>(
45 &getFunction(
"hardening_function"))
48 _plastic_strain(declareProperty<
SymmTensor>(
"plastic_strain")),
49 _plastic_strain_old(getMaterialPropertyOld<
SymmTensor>(
"plastic_strain")),
51 _hardening_variable(declareProperty<Real>(
"hardening_variable")),
52 _hardening_variable_old(getMaterialPropertyOld<Real>(
"hardening_variable"))
55 mooseError(
"Yield stress must be greater than zero");
58 mooseError(
"Either yield_stress or yield_stress_function must be given");
60 if ((isParamValid(
"hardening_constant") && isParamValid(
"hardening_function")) ||
61 (!isParamValid(
"hardening_constant") && !isParamValid(
"hardening_function")))
62 mooseError(
"Either hardening_constant or hardening_function must be defined");
65 mooseError(
"The hardening_function must be PiecewiseLinear");
80 dynamic_cast<const SymmIsotropicElasticityTensor *>(&elasticityTensor);
82 mooseError(
"IsotropicPlasticity requires a SymmIsotropicElasticityTensor");
169 mooseError(
"Yield stress must be greater than zero");
MaterialProperty< Real > & _hardening_variable
Defines an Isotropic Elasticity Tensor.
virtual void computeYieldStress()
registerMooseObject("SolidMechanicsApp", IsotropicPlasticity)
virtual void computeStressFinalize(const SymmTensor &plasticStrainIncrement) override
Perform any necessary steps to finalize state after return mapping iterations.
virtual Real computeResidual(const Real effectiveTrialStress, const Real scalar) override
Compute the residual for a predicted value of the scalar.
const Real _hardening_constant
const MaterialProperty< Real > & _effective_inelastic_strain_old
const Function * _yield_stress_function
virtual Real computeDerivative(const Real effectiveTrialStress, const Real scalar) override
Compute the derivative of the residual as a function of the scalar variable.
InputParameters validParams< ReturnMappingModel >()
virtual void computeStressInitialize(Real effectiveTrialStress, const SymmElasticityTensor &elasticityTensor) override
Perform any necessary initialization before return mapping iterations.
const MaterialProperty< Real > & _hardening_variable_old
const MaterialProperty< SymmTensor > & _plastic_strain_old
MaterialProperty< SymmTensor > & _plastic_strain
This class defines a basic set of capabilities any elasticity tensor should have.
IsotropicPlasticity(const InputParameters ¶meters)
Base class for models that perform return mapping iterations to compute stress.
virtual void iterationFinalize(Real scalar) override
Finalize internal state variables for a model for a given iteration.
virtual void initQpStatefulProperties() override
virtual Real computeHardeningValue(Real scalar)
InputParameters validParams< IsotropicPlasticity >()
const VariableValue & _temperature
const PiecewiseLinear *const _hardening_function
Real shearModulus() const
Return the shear modulus...
virtual void initQpStatefulProperties() override
virtual Real computeHardeningDerivative(Real scalar)