20 "This class uses the stress update material in a radial return isotropic power law creep " 21 "model. This class can be used in conjunction with other creep and plasticity materials " 22 "for more complex simulations.");
27 "Leading coefficient in power-law equation");
29 "Exponent on effective stress in power-law equation");
31 "Exponent on time in power-law equation");
33 "Stress intervals to switch creep behavior");
34 params.
addRequiredParam<std::vector<Real>>(
"activation_energy",
"Activation energy");
35 params.
addParam<
Real>(
"gas_constant", 8.3143,
"Universal gas constant");
36 params.
addParam<
Real>(
"start_time", 0.0,
"Start time (if not zero)");
43 _temperature(isParamValid(
"temperature") ? &adCoupledValue(
"temperature") : nullptr),
44 _coefficient(getParam<
std::vector<
Real>>(
"coefficient")),
45 _n_exponent(getParam<
std::vector<
Real>>(
"n_exponent")),
46 _m_exponent(getParam<
std::vector<
Real>>(
"m_exponent")),
47 _stress_thresholds(getParam<
std::vector<
Real>>(
"stress_thresholds")),
48 _activation_energy(getParam<
std::vector<
Real>>(
"activation_energy")),
49 _gas_constant(getParam<
Real>(
"gas_constant")),
50 _start_time(getParam<
Real>(
"start_time")),
54 _number_of_models(_m_exponent.size())
59 "Stress thresholds input must be provided in increasing ordered");
65 "Inputs to ADMultiplePowerLawCreepStressUpdate creep models must have the same size");
69 "The number of creep models must be the number of stress thresholds minute. That " 70 "is, one creep model will be valid between two stress thresholds");
75 "Start time must be equal to or greater than the Executioner start_time if a " 76 "non-integer m_exponent is used");
102 return creep_rate *
_dt - scalar;
110 const ADReal creep_rate_derivative =
113 return creep_rate_derivative *
_dt - 1.0;
140 while (i < _number_of_models - 1 && effective_trial_stress >
_stress_thresholds[i + 1])
SubsteppingType _use_substepping
Whether user has requested the use of substepping technique to improve convergence [make const later]...
unsigned int _stress_index
Quadrature-point value pointing to the right power law parameters.
const std::vector< Real > _n_exponent
Exponent on the effective stress vector.
const ADVariableValue *const _temperature
Temperature variable value.
virtual void computeStressInitialize(const GenericReal< is_ad > &effective_trial_stress, const GenericRankFourTensor< is_ad > &elasticity_tensor)
Perform any necessary initialization before return mapping iterations.
virtual Real computeStrainEnergyRateDensity(const ADMaterialProperty< RankTwoTensor > &stress, const ADMaterialProperty< RankTwoTensor > &strain_rate) override
Real getStartTime() const
GenericReal< is_ad > _three_shear_modulus
3 * shear modulus
DualNumber< Real, DNDerivativeType, true > ADReal
static InputParameters validParams()
const std::vector< Real > _stress_thresholds
Stress thresholds vector.
virtual ADReal computeDerivative(const ADReal &effective_trial_stress, const ADReal &scalar) override
Real elasticity_tensor(unsigned int i, unsigned int j, unsigned int k, unsigned int l)
ADReal _exponential
Exponential calculated from activation, gas constant, and temperature.
std::size_t stressIndex(const ADReal &effective_trial_stress)
registerMooseObject("SolidMechanicsApp", ADMultiplePowerLawCreepStressUpdate)
const std::vector< Real > _m_exponent
Exponent on time vector.
void paramError(const std::string ¶m, Args... args) const
const Real _start_time
Simulation start time.
virtual bool substeppingCapabilityEnabled() override
Does the model include the infrastructure for substep decomposition of the elastic strain initially u...
const std::vector< Real > _activation_energy
Activation energy for exp term vector.
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
virtual ADReal computeResidual(const ADReal &effective_trial_stress, const ADReal &scalar) override
Real _exp_time
Exponential calculated from current time.
ADMultiplePowerLawCreepStressUpdate(const InputParameters ¶meters)
const std::vector< Real > _coefficient
Leading coefficient vector.
This class uses the stress update material in a radial return isotropic creep model.
const unsigned int _number_of_models
Total number of models provided by the user.
const Real _gas_constant
Gas constant for exp term.
MooseUnits pow(const MooseUnits &, int)
static InputParameters validParams()
virtual void computeStressInitialize(const ADReal &effective_trial_stress, const ADRankFourTensor &elasticity_tensor) override