16 template <ComputeStage compute_stage>
21 params.addClassDescription(
22 "This class uses the stress update material in a radial return isotropic power law creep "
23 "model. This class can be used in conjunction with other creep and plasticity materials "
24 "for more complex simulations.");
27 params.addCoupledVar(
"temperature",
"Coupled temperature");
28 params.addRequiredParam<Real>(
"coefficient",
"Leading coefficient in power-law equation");
29 params.addRequiredParam<Real>(
"n_exponent",
"Exponent on effective stress in power-law equation");
30 params.addParam<Real>(
"m_exponent", 0.0,
"Exponent on time in power-law equation");
31 params.addRequiredParam<Real>(
"activation_energy",
"Activation energy");
32 params.addParam<Real>(
"gas_constant", 8.3143,
"Universal gas constant");
33 params.addParam<Real>(
"start_time", 0.0,
"Start time (if not zero)");
37 template <ComputeStage compute_stage>
39 const InputParameters & parameters)
41 _temperature(isParamValid(
"temperature") ? &adCoupledValue(
"temperature") : nullptr),
42 _coefficient(getParam<Real>(
"coefficient")),
43 _n_exponent(getParam<Real>(
"n_exponent")),
44 _m_exponent(getParam<Real>(
"m_exponent")),
45 _activation_energy(getParam<Real>(
"activation_energy")),
46 _gas_constant(getParam<Real>(
"gas_constant")),
47 _start_time(getParam<Real>(
"start_time")),
51 paramError(
"start_time",
52 "Start time must be equal to or greater than the Executioner start_time if a "
53 "non-integer m_exponent is used");
56 template <ComputeStage compute_stage>
59 const ADReal & ,
const ADRankFourTensor & )
62 _exponential = std::exp(-_activation_energy / (_gas_constant * (*_temperature)[_qp]));
64 _exp_time =
std::pow(_t - _start_time, _m_exponent);
67 template <ComputeStage compute_stage>
70 const ADReal & scalar)
72 const ADReal stress_delta = effective_trial_stress - _three_shear_modulus * scalar;
73 const ADReal creep_rate =
74 _coefficient *
std::pow(stress_delta, _n_exponent) * _exponential * _exp_time;
75 return creep_rate * _dt - scalar;
78 template <ComputeStage compute_stage>
81 const ADReal & scalar)
83 const ADReal stress_delta = effective_trial_stress - _three_shear_modulus * scalar;
84 const ADReal creep_rate_derivative = -_coefficient * _three_shear_modulus * _n_exponent *
85 std::pow(stress_delta, _n_exponent - 1.0) * _exponential *
87 return creep_rate_derivative * _dt - 1.0;