www.mooseframework.org
ADRadialReturnStressUpdate.h
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
10 #pragma once
11 
12 #include "ADStressUpdateBase.h"
14 
15 #define usingRadialReturnStressUpdateMembers \
16  usingStressUpdateBaseMembers; \
17  usingSingleVariableReturnMappingSolutionMembers; \
18  using ADRadialReturnStressUpdate<compute_stage>::propagateQpStatefulPropertiesRadialReturn; \
19  using ADRadialReturnStressUpdate<compute_stage>::_three_shear_modulus; \
20  using ADRadialReturnStressUpdate<compute_stage>::_effective_inelastic_strain; \
21  using ADRadialReturnStressUpdate<compute_stage>::_effective_inelastic_strain_old; \
22  using ADRadialReturnStressUpdate<compute_stage>::_max_inelastic_increment
23 
24 // Forward declarations
25 template <ComputeStage>
27 
29 
42 template <ComputeStage compute_stage>
43 class ADRadialReturnStressUpdate : public ADStressUpdateBase<compute_stage>,
44  public ADSingleVariableReturnMappingSolution<compute_stage>
45 {
46 public:
47  static InputParameters validParams();
48 
49  ADRadialReturnStressUpdate(const InputParameters & parameters);
50 
62  virtual void updateState(ADRankTwoTensor & strain_increment,
63  ADRankTwoTensor & inelastic_strain_increment,
64  const ADRankTwoTensor & rotation_increment,
65  ADRankTwoTensor & stress_new,
66  const RankTwoTensor & stress_old,
67  const ADRankFourTensor & elasticity_tensor,
68  const RankTwoTensor & elastic_strain_old) override;
69 
70  virtual Real computeReferenceResidual(const ADReal & effective_trial_stress,
71  const ADReal & scalar_effective_inelastic_strain) override;
72 
73  virtual ADReal minimumPermissibleValue(const ADReal & /*effective_trial_stress*/) const override
74  {
75  return 0.0;
76  }
77 
78  virtual ADReal maximumPermissibleValue(const ADReal & effective_trial_stress) const override;
79 
84  virtual Real computeTimeStepLimit() override;
85 
89  bool requiresIsotropicTensor() override { return true; }
90 
91 protected:
92  virtual void initQpStatefulProperties() override;
93 
103 
109  virtual void computeStressInitialize(const ADReal & /*effective_trial_stress*/,
110  const ADRankFourTensor & /*elasticity_tensor*/)
111  {
112  }
113 
118  virtual void computeStressFinalize(const ADRankTwoTensor & /*inelasticStrainIncrement*/) {}
119 
120  void outputIterationSummary(std::stringstream * iter_output,
121  const unsigned int total_it) override;
122 
125 
126  ADMaterialProperty(Real) & _effective_inelastic_strain;
127  const MaterialProperty<Real> & _effective_inelastic_strain_old;
129  const bool _apply_strain;
130 
133 };
ADRadialReturnStressUpdate::usingStressUpdateBaseMembers
usingStressUpdateBaseMembers
Definition: ADRadialReturnStressUpdate.h:131
ADRadialReturnStressUpdate::_effective_inelastic_strain_old
const MaterialProperty< Real > & _effective_inelastic_strain_old
Definition: ADRadialReturnStressUpdate.h:127
ADRadialReturnStressUpdate::_apply_strain
const bool _apply_strain
Definition: ADRadialReturnStressUpdate.h:129
ADRadialReturnStressUpdate::computeStressInitialize
virtual void computeStressInitialize(const ADReal &, const ADRankFourTensor &)
Perform any necessary initialization before return mapping iterations.
Definition: ADRadialReturnStressUpdate.h:109
declareADValidParams
declareADValidParams(ADRadialReturnStressUpdate)
ADRadialReturnStressUpdate::validParams
static InputParameters validParams()
Definition: ADRadialReturnStressUpdate.C:19
ADSingleVariableReturnMappingSolution.h
ADRadialReturnStressUpdate::initQpStatefulProperties
virtual void initQpStatefulProperties() override
Definition: ADRadialReturnStressUpdate.C:54
ADRadialReturnStressUpdate::minimumPermissibleValue
virtual ADReal minimumPermissibleValue(const ADReal &) const override
Compute the minimum permissible value of the scalar.
Definition: ADRadialReturnStressUpdate.h:73
ADRadialReturnStressUpdate::propagateQpStatefulPropertiesRadialReturn
void propagateQpStatefulPropertiesRadialReturn()
Propagate the properties pertaining to this intermediate class.
Definition: ADRadialReturnStressUpdate.C:61
ADRadialReturnStressUpdate
ADRadialReturnStressUpdate computes the radial return stress increment for an isotropic elastic-visco...
Definition: ADRadialReturnStressUpdate.h:26
ADStressUpdateBase.h
ADStressUpdateBase
ADStressUpdateBase is a material that is not called by MOOSE because of the compute=false flag set in...
Definition: ADComputeMultipleInelasticStress.h:28
ADRadialReturnStressUpdate::usingSingleVariableReturnMappingSolutionMembers
usingSingleVariableReturnMappingSolutionMembers
Definition: ADRadialReturnStressUpdate.h:132
ADRadialReturnStressUpdate::ADMaterialProperty
ADMaterialProperty(Real) &_effective_inelastic_strain
ADRadialReturnStressUpdate::outputIterationSummary
void outputIterationSummary(std::stringstream *iter_output, const unsigned int total_it) override
Output summary information for the convergence history of the model.
Definition: ADRadialReturnStressUpdate.C:153
ADRadialReturnStressUpdate::computeReferenceResidual
virtual Real computeReferenceResidual(const ADReal &effective_trial_stress, const ADReal &scalar_effective_inelastic_strain) override
Compute a reference quantity to be used for checking relative convergence.
Definition: ADRadialReturnStressUpdate.C:124
ADRadialReturnStressUpdate::maximumPermissibleValue
virtual ADReal maximumPermissibleValue(const ADReal &effective_trial_stress) const override
Compute the maximum permissible value of the scalar.
Definition: ADRadialReturnStressUpdate.C:133
ADRadialReturnStressUpdate::_three_shear_modulus
ADReal _three_shear_modulus
3 * shear modulus
Definition: ADRadialReturnStressUpdate.h:124
ADRadialReturnStressUpdate::computeStressFinalize
virtual void computeStressFinalize(const ADRankTwoTensor &)
Perform any necessary steps to finalize state after return mapping iterations.
Definition: ADRadialReturnStressUpdate.h:118
ADRadialReturnStressUpdate::_max_inelastic_increment
Real _max_inelastic_increment
Definition: ADRadialReturnStressUpdate.h:128
ADRadialReturnStressUpdate::requiresIsotropicTensor
bool requiresIsotropicTensor() override
Does the model require the elasticity tensor to be isotropic?
Definition: ADRadialReturnStressUpdate.h:89
ADRadialReturnStressUpdate::ADRadialReturnStressUpdate
ADRadialReturnStressUpdate(const InputParameters &parameters)
Definition: ADRadialReturnStressUpdate.C:39
RankTwoTensorTempl< Real >
ADRadialReturnStressUpdate::computeTimeStepLimit
virtual Real computeTimeStepLimit() override
Compute the limiting value of the time step for this material.
Definition: ADRadialReturnStressUpdate.C:141
ADRadialReturnStressUpdate::updateState
virtual void updateState(ADRankTwoTensor &strain_increment, ADRankTwoTensor &inelastic_strain_increment, const ADRankTwoTensor &rotation_increment, ADRankTwoTensor &stress_new, const RankTwoTensor &stress_old, const ADRankFourTensor &elasticity_tensor, const RankTwoTensor &elastic_strain_old) override
A radial return (J2) mapping method is performed with return mapping iterations.
Definition: ADRadialReturnStressUpdate.C:68
ADSingleVariableReturnMappingSolution
Base class that provides capability for Newton return mapping iterations on a single variable.
Definition: ADSingleVariableReturnMappingSolution.h:32