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.");
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");
69 _exponential =
exp(-_activation_energy / (_gas_constant * (*_temperature)[_qp]));
71 _exp_time =
pow(_t - _start_time, _m_exponent);
75 template <
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;
102 template <
bool is_ad>
108 if (_n_exponent <= 1)
111 Real creep_factor = _n_exponent / (_n_exponent + 1);
116 template <
bool is_ad>
121 _creep_strain[_qp] += plastic_strain_increment;
124 template <
bool is_ad>
128 _creep_strain[_qp] = _creep_strain_old[_qp];
131 template <
bool is_ad>
Moose::GenericType< Real, is_ad > GenericReal
This class uses the stress update material in a radial return isotropic creep model.
void paramError(const std::string ¶m, Args... args) const
DualNumber< Real, Real > ChainedReal
virtual void computeStressInitialize(const GenericReal< is_ad > &effective_trial_stress, const GenericRankFourTensor< is_ad > &elasticity_tensor)
Perform any necessary initialization before return mapping iterations.
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) override
Perform any necessary initialization before return mapping iterations.
Real getStartTime() const
const Real _m_exponent
Exponent on time.
DualNumber< Real, DNDerivativeType, true > ADReal
Moose::GenericType< RankFourTensor, is_ad > GenericRankFourTensor
virtual bool substeppingCapabilityEnabled() override
Does the model include the infrastructure for substep decomposition of the elastic strain initially u...
Real elasticity_tensor(unsigned int i, unsigned int j, unsigned int k, unsigned int l)
virtual void computeStressFinalize(const GenericRankTwoTensor< is_ad > &plastic_strain_increment) override
Perform any necessary steps to finalize state after return mapping iterations.
typename GenericMaterialPropertyStruct< T, is_ad >::type GenericMaterialProperty
ScalarType computeResidualInternal(const GenericReal< is_ad > &effective_trial_stress, const ScalarType &scalar)
virtual void resetIncrementalMaterialProperties() override
Reset material properties.
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.
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)
This class provides baseline functionallity for creep models based on the stress update material in a...
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
static InputParameters validParams()
registerMooseObject("SolidMechanicsApp", PowerLawCreepStressUpdate)
PowerLawCreepStressUpdateTempl(const InputParameters ¶meters)
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.
MooseUnits pow(const MooseUnits &, int)
static InputParameters validParams()
Moose::GenericType< RankTwoTensor, is_ad > GenericRankTwoTensor
DualNumber< ADReal, ADReal > ChainedADReal