www.mooseframework.org
RadialReturnStressUpdate.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 "StressUpdateBase.h"
14 
15 // Forward declaration
17 
18 template <>
20 
35 {
36 public:
37  static InputParameters validParams();
38 
39  RadialReturnStressUpdate(const InputParameters & parameters);
40 
54  virtual void updateState(RankTwoTensor & strain_increment,
55  RankTwoTensor & inelastic_strain_increment,
56  const RankTwoTensor & rotation_increment,
57  RankTwoTensor & stress_new,
58  const RankTwoTensor & stress_old,
59  const RankFourTensor & elasticity_tensor,
60  const RankTwoTensor & elastic_strain_old,
61  bool compute_full_tangent_operator,
62  RankFourTensor & tangent_operator) override;
63 
64  virtual Real computeReferenceResidual(const Real effective_trial_stress,
65  const Real scalar_effective_inelastic_strain) override;
66 
67  virtual Real minimumPermissibleValue(const Real /*effective_trial_stress*/) const override
68  {
69  return 0.0;
70  }
71 
72  virtual Real maximumPermissibleValue(const Real effective_trial_stress) const override;
73 
78  virtual Real computeTimeStepLimit() override;
79 
83  bool requiresIsotropicTensor() override { return true; }
84 
88  bool isIsotropic() override { return true; };
89 
90 protected:
91  virtual void initQpStatefulProperties() override;
92 
102 
108  virtual void computeStressInitialize(const Real /*effective_trial_stress*/,
109  const RankFourTensor & /*elasticity_tensor*/)
110  {
111  }
112 
118  virtual Real computeStressDerivative(const Real /*effective_trial_stress*/, const Real /*scalar*/)
119  {
120  return 0.0;
121  }
122 
127  virtual void computeStressFinalize(const RankTwoTensor & /*inelasticStrainIncrement*/) {}
128 
129  void outputIterationSummary(std::stringstream * iter_output,
130  const unsigned int total_it) override;
131 
134 
135  MaterialProperty<Real> & _effective_inelastic_strain;
136  const MaterialProperty<Real> & _effective_inelastic_strain_old;
138 
143 
148 
153 };
validParams< RadialReturnStressUpdate >
InputParameters validParams< RadialReturnStressUpdate >()
RadialReturnStressUpdate::computeReferenceResidual
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.
Definition: RadialReturnStressUpdate.C:150
RadialReturnStressUpdate::_identity_two
const RankTwoTensor _identity_two
Rank two identity tensor.
Definition: RadialReturnStressUpdate.h:142
RadialReturnStressUpdate::_deviatoric_projection_four
const RankFourTensor _deviatoric_projection_four
Rank four deviatoric projection tensor.
Definition: RadialReturnStressUpdate.h:152
RadialReturnStressUpdate::_max_inelastic_increment
Real _max_inelastic_increment
Definition: RadialReturnStressUpdate.h:137
RadialReturnStressUpdate::computeStressDerivative
virtual Real computeStressDerivative(const Real, const Real)
Calculate the derivative of the strain increment with respect to the updated stress.
Definition: RadialReturnStressUpdate.h:118
RadialReturnStressUpdate::minimumPermissibleValue
virtual Real minimumPermissibleValue(const Real) const override
Compute the minimum permissible value of the scalar.
Definition: RadialReturnStressUpdate.h:67
RadialReturnStressUpdate
RadialReturnStressUpdate computes the radial return stress increment for an isotropic elastic-viscopl...
Definition: RadialReturnStressUpdate.h:34
RadialReturnStressUpdate::updateState
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.
Definition: RadialReturnStressUpdate.C:65
RadialReturnStressUpdate::_effective_inelastic_strain
MaterialProperty< Real > & _effective_inelastic_strain
Definition: RadialReturnStressUpdate.h:135
RadialReturnStressUpdate::computeStressInitialize
virtual void computeStressInitialize(const Real, const RankFourTensor &)
Perform any necessary initialization before return mapping iterations.
Definition: RadialReturnStressUpdate.h:108
RadialReturnStressUpdate::_effective_inelastic_strain_old
const MaterialProperty< Real > & _effective_inelastic_strain_old
Definition: RadialReturnStressUpdate.h:136
SingleVariableReturnMappingSolution.h
RadialReturnStressUpdate::isIsotropic
bool isIsotropic() override
Radial return mapped models should be isotropic by default!
Definition: RadialReturnStressUpdate.h:88
RadialReturnStressUpdate::_three_shear_modulus
Real _three_shear_modulus
3 * shear modulus
Definition: RadialReturnStressUpdate.h:133
RadialReturnStressUpdate::maximumPermissibleValue
virtual Real maximumPermissibleValue(const Real effective_trial_stress) const override
Compute the maximum permissible value of the scalar.
Definition: RadialReturnStressUpdate.C:157
RadialReturnStressUpdate::computeTimeStepLimit
virtual Real computeTimeStepLimit() override
Compute the limiting value of the time step for this material.
Definition: RadialReturnStressUpdate.C:163
RadialReturnStressUpdate::validParams
static InputParameters validParams()
Definition: RadialReturnStressUpdate.C:18
RadialReturnStressUpdate::computeStressFinalize
virtual void computeStressFinalize(const RankTwoTensor &)
Perform any necessary steps to finalize state after return mapping iterations.
Definition: RadialReturnStressUpdate.h:127
RadialReturnStressUpdate::RadialReturnStressUpdate
RadialReturnStressUpdate(const InputParameters &parameters)
Definition: RadialReturnStressUpdate.C:37
RankFourTensorTempl
Definition: ACGrGrElasticDrivingForce.h:20
SingleVariableReturnMappingSolution
Base class that provides capability for Newton return mapping iterations on a single variable.
Definition: SingleVariableReturnMappingSolution.h:24
StressUpdateBase
StressUpdateBase is a material that is not called by MOOSE because of the compute=false flag set in t...
Definition: StressUpdateBase.h:52
RadialReturnStressUpdate::propagateQpStatefulPropertiesRadialReturn
void propagateQpStatefulPropertiesRadialReturn()
Propagate the properties pertaining to this intermediate class.
Definition: RadialReturnStressUpdate.C:59
RadialReturnStressUpdate::outputIterationSummary
void outputIterationSummary(std::stringstream *iter_output, const unsigned int total_it) override
Output summary information for the convergence history of the model.
Definition: RadialReturnStressUpdate.C:176
RadialReturnStressUpdate::initQpStatefulProperties
virtual void initQpStatefulProperties() override
Definition: RadialReturnStressUpdate.C:53
RadialReturnStressUpdate::requiresIsotropicTensor
bool requiresIsotropicTensor() override
Does the model require the elasticity tensor to be isotropic?
Definition: RadialReturnStressUpdate.h:83
RankTwoTensorTempl
Definition: ACGrGrElasticDrivingForce.h:17
RadialReturnStressUpdate::_identity_symmetric_four
const RankFourTensor _identity_symmetric_four
Rank four symmetric identity tensor.
Definition: RadialReturnStressUpdate.h:147
StressUpdateBase.h