21 "This class uses the stress update material in a radial return isotropic power law creep "
22 "model. This class can be used in conjunction with other creep and plasticity materials "
23 "for more complex simulations.");
27 params.
addRequiredParam<Real>(
"coefficient",
"Leading coefficient in power-law equation");
28 params.
addRequiredParam<Real>(
"n_exponent",
"Exponent on effective stress in power-law equation");
29 params.
addParam<Real>(
"m_exponent", 0.0,
"Exponent on time in power-law equation");
31 params.
addParam<Real>(
"gas_constant", 8.3143,
"Universal gas constant");
32 params.
addParam<Real>(
"start_time", 0.0,
"Start time (if not zero)");
40 _temperature(this->isParamValid(
"temperature")
41 ? &this->template coupledGenericValue<is_ad>(
"temperature")
43 _coefficient(this->template getParam<Real>(
"coefficient")),
44 _n_exponent(this->template getParam<Real>(
"n_exponent")),
45 _m_exponent(this->template getParam<Real>(
"m_exponent")),
46 _activation_energy(this->template getParam<Real>(
"activation_energy")),
47 _gas_constant(this->template getParam<Real>(
"gas_constant")),
48 _start_time(this->template getParam<Real>(
"start_time")),
53 "Start time must be equal to or greater than the Executioner start_time if a "
54 "non-integer m_exponent is used");
63 using std::exp, std::pow;
69 _exponential = exp(-_activation_energy / (_gas_constant * (*_temperature)[_qp]));
71 _exp_time =
pow(_t - _start_time, _m_exponent);
75template <
typename ScalarType>
82 const ScalarType stress_delta = effective_trial_stress - _three_shear_modulus * scalar;
83 const ScalarType creep_rate =
84 _coefficient *
pow(stress_delta, _n_exponent) * _exponential * _exp_time;
85 return creep_rate * _dt - scalar;
95 const GenericReal<is_ad> stress_delta = effective_trial_stress - _three_shear_modulus * scalar;
97 -_coefficient * _three_shear_modulus * _n_exponent *
pow(stress_delta, _n_exponent - 1.0) *
98 _exponential * _exp_time;
99 return creep_rate_derivative * _dt - 1.0;
108 if (_n_exponent <= 1)
111 Real creep_factor = _n_exponent / (_n_exponent + 1);
121 _creep_strain[_qp] += plastic_strain_increment;
128 _creep_strain[_qp] = _creep_strain_old[_qp];
DualNumber< Real, DNDerivativeType, true > ADReal
DualNumber< ADReal, ADReal > ChainedADReal
DualNumber< Real, Real > ChainedReal
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)
typename GenericMaterialPropertyStruct< T, is_ad >::type GenericMaterialProperty
Moose::GenericType< RankFourTensor, is_ad > GenericRankFourTensor
Moose::GenericType< Real, is_ad > GenericReal
Moose::GenericType< RankTwoTensor, is_ad > GenericRankTwoTensor
registerMooseObject("SolidMechanicsApp", PowerLawCreepStressUpdate)
Real getStartTime() const
void paramError(const std::string ¶m, Args... args) const
This class uses the stress update material in a radial return isotropic creep model.
virtual GenericReal< is_ad > computeDerivative(const GenericReal< is_ad > &effective_trial_stress, const GenericReal< is_ad > &scalar) override
Compute the derivative of the residual as a function of the scalar variable.
virtual void computeStressInitialize(const GenericReal< is_ad > &effective_trial_stress, const GenericRankFourTensor< is_ad > &elasticity_tensor) override
Perform any necessary initialization before return mapping iterations.
virtual void computeStressFinalize(const GenericRankTwoTensor< is_ad > &plastic_strain_increment) override
Perform any necessary steps to finalize state after return mapping iterations.
PowerLawCreepStressUpdateTempl(const InputParameters ¶meters)
virtual void resetIncrementalMaterialProperties() override
Reset material properties.
ScalarType computeResidualInternal(const GenericReal< is_ad > &effective_trial_stress, const ScalarType &scalar)
virtual bool substeppingCapabilityEnabled() override
Does the model include the infrastructure for substep decomposition of the elastic strain initially u...
const Real _m_exponent
Exponent on time.
virtual Real computeStrainEnergyRateDensity(const GenericMaterialProperty< RankTwoTensor, is_ad > &stress, const GenericMaterialProperty< RankTwoTensor, is_ad > &strain_rate) override
Compute the strain energy rate density for this inelastic model for the current step.
static InputParameters validParams()
This class provides baseline functionallity for creep models based on the stress update material in a...
static InputParameters validParams()
RadialReturnStressUpdate computes the radial return stress increment for an isotropic elastic-viscopl...
virtual void computeStressInitialize(const GenericReal< is_ad > &effective_trial_stress, const GenericRankFourTensor< is_ad > &elasticity_tensor)
Perform any necessary initialization before return mapping iterations.
Real elasticity_tensor(unsigned int i, unsigned int j, unsigned int k, unsigned int l)