14template <
bool is_ad,
typename R2,
typename R4>
19 params.
addClassDescription(
"Calculates an admissible state (stress that lies on or within the "
20 "yield surface, plastic strains, internal parameters, etc). This "
21 "class is intended to be a parent class for classes with specific "
22 "constitutive models.");
25 "Optional parameter that defines a prefix for all material "
26 "properties related to this stress update model. This allows for "
27 "multiple models of the same type to be used without naming conflicts.");
30 params.
set<
bool>(
"compute") =
false;
35template <
bool is_ad,
typename R2,
typename R4>
38 _base_name(this->isParamValid(
"base_name")
39 ? this->template getParam<
std::string>(
"base_name") +
"_"
44template <
bool is_ad,
typename R2,
typename R4>
51template <
bool is_ad,
typename R2,
typename R4>
56 "propagateQpStatefulProperties called: it needs to be implemented by your inelastic model");
59template <
bool is_ad,
typename R2,
typename R4>
63 return std::numeric_limits<Real>::max();
66template <
bool is_ad,
typename R2,
typename R4>
79 mooseError(
"updateState called: it needs to be implemented by your inelastic model");
82template <
bool is_ad,
typename R2,
typename R4>
95 this->paramError(
"use_substep",
96 "updateStateSubstep called: it needs to be implemented by your inelastic model");
99template <
bool is_ad,
typename R2,
typename R4>
111 "getTangentCalculationMethod called: no tangent moduli calculation is needed while using AD");
void mooseError(Args &&... args)
TangentCalculationMethod
TangentCalculationMethod is an enum that determines the calculation method for the tangent operator.
static InputParameters validParams()
StressUpdateBase is a material that is not called by MOOSE because of the compute=false flag set in t...
GenericRankFourTensor< is_ad > GR4
static InputParameters validParams()
GenericRankTwoTensor< is_ad > GR2
StressUpdateBaseTempl(const InputParameters ¶meters)
virtual Real computeTimeStepLimit()
void setQp(unsigned int qp)
Sets the value of the global variable _qp for inheriting classes.
virtual void propagateQpStatefulProperties()
If updateState is not called during a timestep, this will be.
virtual TangentCalculationMethod getTangentCalculationMethod()
virtual void updateStateSubstep(GR2 &, GR2 &, const GR2 &, GR2 &, const RankTwoTensor &, const GR4 &, const RankTwoTensor &, bool compute_full_tangent_operator=false, RankFourTensor &tangent_operator=StressUpdateBaseTempl< is_ad >::_identityTensor)
Similar to the updateState function, this method updates the strain and stress for one substep.
virtual void updateState(GR2 &strain_increment, GR2 &inelastic_strain_increment, const GR2 &rotation_increment, GR2 &stress_new, const RankTwoTensor &stress_old, const GR4 &elasticity_tensor, const RankTwoTensor &elastic_strain_old, bool compute_full_tangent_operator=false, RankFourTensor &tangent_operator=StressUpdateBaseTempl< is_ad >::_identityTensor)
Given a strain increment that results in a trial stress, perform some procedure (such as an iterative...