www.mooseframework.org
RadialReturnStressUpdate.h
Go to the documentation of this file.
1 /****************************************************************/
2 /* MOOSE - Multiphysics Object Oriented Simulation Environment */
3 /* */
4 /* All contents are licensed under LGPL V2.1 */
5 /* See LICENSE for full restrictions */
6 /****************************************************************/
7 #ifndef RADIALRETURNSTRESSUPDATE_H
8 #define RADIALRETURNSTRESSUPDATE_H
9 
10 #include "StressUpdateBase.h"
12 
13 // Forward declaration
15 
16 template <>
18 
33 {
34 public:
35  RadialReturnStressUpdate(const InputParameters & parameters,
36  const std::string inelastic_strain_name = "");
37 
51  virtual void updateState(RankTwoTensor & strain_increment,
52  RankTwoTensor & inelastic_strain_increment,
53  const RankTwoTensor & rotation_increment,
54  RankTwoTensor & stress_new,
55  const RankTwoTensor & stress_old,
56  const RankFourTensor & elasticity_tensor,
57  const RankTwoTensor & elastic_strain_old,
58  bool compute_full_tangent_operator,
59  RankFourTensor & tangent_operator) override;
60 
61  virtual Real computeReferenceResidual(const Real effective_trial_stress,
62  const Real scalar_effective_inelastic_strain) override;
63 
64  virtual Real maximumPermissibleValue(const Real effective_trial_stress) const override;
65 
70  virtual Real computeTimeStepLimit() override;
71 
75  bool requiresIsotropicTensor() override { return true; }
76 
77 protected:
78  virtual void initQpStatefulProperties() override;
79 
89 
95  virtual void computeStressInitialize(const Real /*effective_trial_stress*/,
96  const RankFourTensor & /*elasticity_tensor*/)
97  {
98  }
99 
104  virtual void computeStressFinalize(const RankTwoTensor & /*inelasticStrainIncrement*/) {}
105 
108 
109  MaterialProperty<Real> & _effective_inelastic_strain;
110  const MaterialProperty<Real> & _effective_inelastic_strain_old;
112 };
113 
114 #endif // RADIALRETURNSTRESSUPDATE_H
virtual void computeStressInitialize(const Real, const RankFourTensor &)
Perform any necessary initialization before return mapping iterations.
const MaterialProperty< Real > & _effective_inelastic_strain_old
virtual void computeStressFinalize(const RankTwoTensor &)
Perform any necessary steps to finalize state after return mapping iterations.
RadialReturnStressUpdate computes the radial return stress increment for an isotropic viscoplasticity...
StressUpdateBase is a material that is not called by MOOSE because of the compute=false flag set in t...
virtual Real maximumPermissibleValue(const Real effective_trial_stress) const override
Compute the maximum permissible value of the scalar.
RadialReturnStressUpdate(const InputParameters &parameters, const std::string inelastic_strain_name="")
Base class that provides capability for Newton return mapping iterations on a single variable...
InputParameters validParams< RadialReturnStressUpdate >()
virtual Real computeReferenceResidual(const Real effective_trial_stress, const Real scalar_effective_inelastic_strain) override
Compute a reference quantity to be used for checking relative convergence.
virtual void updateState(RankTwoTensor &strain_increment, RankTwoTensor &inelastic_strain_increment, const RankTwoTensor &rotation_increment, RankTwoTensor &stress_new, const RankTwoTensor &stress_old, const RankFourTensor &elasticity_tensor, const RankTwoTensor &elastic_strain_old, bool compute_full_tangent_operator, RankFourTensor &tangent_operator) override
A radial return (J2) mapping method is performed with return mapping iterations.
void propagateQpStatefulPropertiesRadialReturn()
Propagate the properties pertaining to this intermediate class.
bool requiresIsotropicTensor() override
Does the model require the elasticity tensor to be isotropic?
virtual Real computeTimeStepLimit() override
Compute the limiting value of the time step for this material.
MaterialProperty< Real > & _effective_inelastic_strain
virtual void initQpStatefulProperties() override
Real _three_shear_modulus
3 * shear modulus