72 bool compute_full_tangent_operator =
false,
83 unsigned int total_number_substeps,
84 bool compute_full_tangent_operator =
false,
98 bool compute_full_tangent_operator =
false,
214 const unsigned int total_it)
override;
const MooseArray< Point > & _q_point
SubsteppingType _use_substepping
Whether user has requested the use of substepping technique to improve convergence [make const later]...
virtual void computeStressFinalize(const GenericRankTwoTensor< is_ad > &)
Perform any necessary steps to finalize state after return mapping iterations.
typename Moose::GenericType< RankFourTensor, is_ad > GenericRankFourTensor
void outputIterationSummary(std::stringstream *iter_output, const unsigned int total_it) override
Output summary information for the convergence history of the model.
constexpr auto increment(std::index_sequence< first, tail... >)
virtual void updateState(GenericRankTwoTensor< is_ad > &strain_increment, GenericRankTwoTensor< is_ad > &inelastic_strain_increment, const GenericRankTwoTensor< is_ad > &rotation_increment, GenericRankTwoTensor< is_ad > &stress_new, const RankTwoTensor &stress_old, const GenericRankFourTensor< is_ad > &elasticity_tensor, const RankTwoTensor &elastic_strain_old, bool compute_full_tangent_operator=false, RankFourTensor &tangent_operator=StressUpdateBaseTempl< is_ad >::_identityTensor) override
A radial return (J2) mapping method is performed with return mapping iterations.
static InputParameters validParams()
const RankFourTensor _deviatoric_projection_four
Rank four deviatoric projection tensor.
virtual GenericReal< is_ad > minimumPermissibleValue(const GenericReal< is_ad > &) const override
Compute the minimum permissible value of the scalar.
bool requiresIsotropicTensor() override
Does the model require the elasticity tensor to be isotropic?
Real _dt_original
original timestep (to be restored after substepping is completed)
GenericMaterialProperty< Real, is_ad > & _effective_inelastic_strain
virtual void computeStressInitialize(const GenericReal< is_ad > &effective_trial_stress, const GenericRankFourTensor< is_ad > &elasticity_tensor)
Perform any necessary initialization before return mapping iterations.
bool isIsotropic() override
Radial return mapped models should be isotropic by default!
RadialReturnStressUpdate computes the radial return stress increment for an isotropic elastic-viscopl...
virtual Real computeStressDerivative(const Real, const Real)
Calculate the derivative of the strain increment with respect to the updated stress.
virtual int calculateNumberSubsteps(const GenericRankTwoTensor< is_ad > &strain_increment) override
If substepping is enabled, calculate the number of substeps as a function of the elastic strain incre...
GenericReal< is_ad > _three_shear_modulus
3 * shear modulus
void updateEffectiveInelasticStrain(const GenericReal< is_ad > &increment)
virtual void updateStateSubstepInternal(GenericRankTwoTensor< is_ad > &, GenericRankTwoTensor< is_ad > &, const GenericRankTwoTensor< is_ad > &, GenericRankTwoTensor< is_ad > &, const RankTwoTensor &, const GenericRankFourTensor< is_ad > &, const RankTwoTensor &, unsigned int total_number_substeps, bool compute_full_tangent_operator=false, RankFourTensor &tangent_operator=StressUpdateBaseTempl< is_ad >::_identityTensor)
virtual void initQpStatefulProperties() override
const GenericReal< is_ad > & effectiveInelasticStrainIncrement() const
Current value of scalar inelastic strain.
typename GenericMaterialPropertyStruct< T, is_ad >::type GenericMaterialProperty
const MaterialProperty< Real > & _effective_inelastic_strain_old
Base class that provides capability for Newton return mapping iterations on a single variable...
virtual Real computeTimeStepLimit() override
Compute the limiting value of the time step for this material.
StressUpdateBase is a material that is not called by MOOSE because of the compute=false flag set in t...
const bool _apply_strain
Debugging option to enable specifying instead of calculating strain.
virtual bool substeppingCapabilityRequested() override
Has the user requested usage of (possibly) implemented substepping capability for inelastic models...
void computeTangentOperator(Real effective_trial_stress, const RankTwoTensor &stress_new, RankFourTensor &tangent_operator)
Calculate the tangent_operator.
Real _max_inelastic_increment
Maximum allowable scalar inelastic strain increment, used to control the timestep size in conjunction...
virtual GenericReal< is_ad > maximumPermissibleValue(const GenericReal< is_ad > &effective_trial_stress) const override
Compute the maximum permissible value of the scalar.
RadialReturnStressUpdateTempl(const InputParameters ¶meters)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void propagateQpStatefulPropertiesRadialReturn()
Propagate the properties pertaining to this intermediate class.
GenericReal< is_ad > _effective_inelastic_strain_increment
Stores the scalar effective inelastic strain increment from Newton iteration.
const unsigned int _maximum_number_substeps
Maximum number of substeps. If the calculation results in a larger number, cut overall time step...
typename Moose::GenericType< RankTwoTensor, is_ad > GenericRankTwoTensor
const InputParameters & parameters() const
RadialReturnStressUpdateTempl< true > ADRadialReturnStressUpdate
typename Moose::GenericType< Real, is_ad > GenericReal
void updateEffectiveInelasticStrainIncrement(const GenericReal< is_ad > &eisi)
const RankFourTensor _identity_symmetric_four
Rank four symmetric identity tensor.
virtual void updateStateSubstep(GenericRankTwoTensor< is_ad > &, GenericRankTwoTensor< is_ad > &, const GenericRankTwoTensor< is_ad > &, GenericRankTwoTensor< is_ad > &, const RankTwoTensor &, const GenericRankFourTensor< is_ad > &, const RankTwoTensor &, bool compute_full_tangent_operator=false, RankFourTensor &tangent_operator=StressUpdateBaseTempl< is_ad >::_identityTensor) override
Similar to the updateState function, this method updates the strain and stress for one substep...
const bool _adaptive_substepping
Use adaptive substepping, cutting substep sizes until convergence is achieved.
RadialReturnStressUpdateTempl< false > RadialReturnStressUpdate
const Elem *const & _current_elem
const RankTwoTensor _identity_two
Rank two identity tensor.
virtual Real computeReferenceResidual(const GenericReal< is_ad > &effective_trial_stress, const GenericReal< is_ad > &scalar_effective_inelastic_strain) override
Compute a reference quantity to be used for checking relative convergence.
const Real _substep_tolerance
Used to calculate the number of substeps taken in the radial return algorithm, when substepping is en...