14 template <
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;
35 template <
bool is_ad,
typename R2,
typename R4>
38 _base_name(this->isParamValid(
"base_name")
39 ? this->template getParam<
std::string>(
"base_name") +
"_" 44 template <
bool is_ad,
typename R2,
typename R4>
51 template <
bool is_ad,
typename R2,
typename R4>
56 "propagateQpStatefulProperties called: it needs to be implemented by your inelastic model");
59 template <
bool is_ad,
typename R2,
typename R4>
63 return std::numeric_limits<Real>::max();
66 template <
bool is_ad,
typename R2,
typename R4>
79 mooseError(
"updateState called: it needs to be implemented by your inelastic model");
82 template <
bool is_ad,
typename R2,
typename R4>
95 this->
template paramError(
97 "updateStateSubstep called: it needs to be implemented by your inelastic model");
100 template <
bool is_ad,
typename R2,
typename R4>
112 "getTangentCalculationMethod called: no tangent moduli calculation is needed while using AD");
void mooseError(Args &&... args)
virtual Real computeTimeStepLimit()
virtual void propagateQpStatefulProperties()
If updateState is not called during a timestep, this will be.
static InputParameters validParams()
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...
GenericRankFourTensor< is_ad > GR4
StressUpdateBaseTempl(const InputParameters ¶meters)
virtual TangentCalculationMethod getTangentCalculationMethod()
static InputParameters validParams()
StressUpdateBase is a material that is not called by MOOSE because of the compute=false flag set in t...
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
GenericRankTwoTensor< is_ad > GR2
void setQp(unsigned int qp)
Sets the value of the global variable _qp for inheriting classes.
TangentCalculationMethod
TangentCalculationMethod is an enum that determines the calculation method for the tangent operator...