Go to the documentation of this file.
12 #include "PiecewiseLinear.h"
23 params.addClassDescription(
"Computes the stress as a function of temperature "
24 "and plastic strain from user-supplied hardening "
25 "functions. This class can be used in conjunction "
26 "with other creep and plasticity materials for "
27 "more complex simulations");
28 params.set<Real>(
"yield_stress") = 1.0;
29 params.set<Real>(
"hardening_constant") = 1.0;
31 params.suppressParameter<Real>(
"yield_stress");
32 params.suppressParameter<FunctionName>(
"yield_stress_function");
33 params.suppressParameter<Real>(
"hardening_constant");
34 params.suppressParameter<FunctionName>(
"hardening_function");
36 params.addRequiredParam<std::vector<FunctionName>>(
37 "hardening_functions",
38 "List of functions of true stress as function of plastic strain at different temperatures");
39 params.addRequiredParam<std::vector<Real>>(
41 "List of temperatures corresponding to the functions listed in 'hardening_functions'");
47 const InputParameters & parameters)
49 _hardening_functions_names(getParam<std::vector<FunctionName>>(
"hardening_functions")),
50 _hf_temperatures(getParam<std::vector<Real>>(
"temperatures"))
54 mooseError(
"At least two stress-strain curves must be provided in hardening_functions");
59 mooseError(
"The vector of hardening function temperatures must have the same length as the "
60 "vector of temperature dependent hardening functions.");
63 for (
unsigned int i = 1; i < len_temps; ++i)
65 mooseError(
"The temperature dependent hardening functions and corresponding temperatures "
66 "should be listed in order of increasing temperature.");
68 std::vector<Real> yield_stress_vec;
69 for (
unsigned int i = 0; i < len; ++i)
71 const PiecewiseLinear *
const f =
78 yield_stress_vec.push_back(f->value(0.0, Point()));
87 const Real effectiveTrialStress,
const RankFourTensor & elasticity_tensor)
128 mooseError(
"The hardening function fraction cannot be less than zero.");
157 mooseError(
"The yield stress must be greater than zero, but during the simulation your yield "
158 "stress became less than zero.");
defineLegacyParams(TemperatureDependentHardeningStressUpdate)
std::vector< Real > _hf_temperatures
The temperatures at which each of the hardening functions are defined.
virtual void computeYieldStress(const RankFourTensor &elasticity_tensor) override
unsigned int _hf_index_lo
Indices to identify the lower and upper temperature bounds for the current value.
static InputParameters validParams()
registerMooseObject("TensorMechanicsApp", TemperatureDependentHardeningStressUpdate)
unsigned int _hf_index_hi
static InputParameters validParams()
virtual Real computeHardeningValue(Real scalar) override
const MaterialProperty< Real > & _hardening_variable_old
const MaterialProperty< Real > & _effective_inelastic_strain_old
virtual void computeStressInitialize(const Real effectiveTrialStress, const RankFourTensor &elasticity_tensor) override
Perform any necessary initialization before return mapping iterations.
const MaterialProperty< RankTwoTensor > & _plastic_strain_old
old value of plastic strain
std::vector< const PiecewiseLinear * > _hardening_functions
MaterialProperty< Real > & _hardening_variable
MaterialProperty< RankTwoTensor > & _plastic_strain
plastic strain in this model
TemperatureDependentHardeningStressUpdate(const InputParameters ¶meters)
Real _hf_fraction
The fraction of the temperature within the bounds of the relevant section of the piecewise hardening ...
void initializeHardeningFunctions()
Determines the section of the piecewise temperature dependent hardening function for the current temp...
This class inherits from IsotropicPlasticityStressUpdate.
const std::vector< FunctionName > _hardening_functions_names
The function names and expressions for hardening as a function of temperature.
MooseSharedPointer< LinearInterpolation > _interp_yield_stress
const VariableValue & _temperature
This class uses the Discrete material in a radial return isotropic plasticity model.
virtual Real computeHardeningDerivative(Real scalar) override