https://mooseframework.inl.gov
ADViscoplasticityStressUpdate.h
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://mooseframework.inl.gov
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 
14 
17 {
18 public:
20 
22 
24 
25  virtual void updateState(ADRankTwoTensor & strain_increment,
26  ADRankTwoTensor & inelastic_strain_increment,
27  const ADRankTwoTensor & rotation_increment,
28  ADRankTwoTensor & stress_new,
29  const RankTwoTensor & stress_old,
31  const RankTwoTensor & elastic_strain_old,
32  bool compute_full_tangent_operator = false,
33  RankFourTensor & tangent_operator = _identityTensor) override;
34 
35  virtual ADReal minimumPermissibleValue(const ADReal & effective_trial_stress) const override;
36 
37  virtual ADReal maximumPermissibleValue(const ADReal & effective_trial_stress) const override;
38 
39  virtual Real computeReferenceResidual(const ADReal & effective_trial_stress,
40  const ADReal & scalar_effective_inelastic_strain) override;
41 
42 protected:
50  virtual ADReal initialGuess(const ADReal & effective_trial_stress) override;
51 
56  virtual ADReal computeResidual(const ADReal & effective_trial_stress,
57  const ADReal & scalar) override;
58 
59  virtual ADReal computeDerivative(const ADReal & /*effective_trial_stress*/,
60  const ADReal & /*scalar*/) override
61  {
62  return _derivative;
63  }
64 
65  void outputIterationSummary(std::stringstream * iter_output,
66  const unsigned int total_it) override;
67 
68  ADReal computeH(const Real n, const ADReal & gauge_stress, const bool derivative = false);
69 
70  ADRankTwoTensor computeDGaugeDSigma(const ADReal & gauge_stress,
71  const ADReal & equiv_stress,
72  const ADRankTwoTensor & dev_stress,
73  const ADRankTwoTensor & stress);
74 
75  void computeInelasticStrainIncrement(ADReal & gauge_stress,
76  ADReal & dpsi_dgauge,
77  ADRankTwoTensor & creep_strain_increment,
78  const ADReal & equiv_stress,
79  const ADRankTwoTensor & dev_stress,
80  const ADRankTwoTensor & stress);
81 
83  const enum class ViscoplasticityModel { LPS, GTN } _model;
84 
87 
90 
92  const Real _power;
93 
96 
99 
102 
105 
108 
111 
114 
117 
120 
123 };
virtual ADReal maximumPermissibleValue(const ADReal &effective_trial_stress) const override
virtual ADReal computeDerivative(const ADReal &, const ADReal &) override
const Real _minimum_equivalent_stress
Minimum value of equivalent stress below which viscoplasticiy is not calculated.
virtual ADReal computeResidual(const ADReal &effective_trial_stress, const ADReal &scalar) override
Perform any necessary steps to finalize state after return mapping iterations.
virtual ADReal minimumPermissibleValue(const ADReal &effective_trial_stress) const override
ADReal _hydro_stress
Container for hydrostatic stress.
ViscoplasticityModel
Enum to choose which viscoplastic model to use.
const Real _power
Exponent on the effective stress.
DualNumber< Real, DNDerivativeType, true > ADReal
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...
static RankFourTensor _identityTensor
ADMaterialProperty< Real > & _gauge_stress
Gauge stress.
virtual ADReal initialGuess(const ADReal &effective_trial_stress) override
Compute an initial guess for the value of the scalar.
Real elasticity_tensor(unsigned int i, unsigned int j, unsigned int k, unsigned int l)
void outputIterationSummary(std::stringstream *iter_output, const unsigned int total_it) override
Output summary information for the convergence history of the model.
virtual Real computeReferenceResidual(const ADReal &effective_trial_stress, const ADReal &scalar_effective_inelastic_strain) override
ADViscoplasticityStressUpdate(const InputParameters &parameters)
enum ADViscoplasticityStressUpdate::ViscoplasticityModel _model
Base class that provides capability for Newton return mapping iterations on a single variable...
ADReal _derivative
Container for _derivative.
const Real _maximum_gauge_ratio
Maximum ratio between the gauge stress and the equilvalent stress.
const Real _maximum_equivalent_stress
Maximum value of equivalent stress above which an exception is thrown.
const RankTwoTensor _identity_two
Rank two identity tensor.
const Real _power_factor
Power factor used for LPS model.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
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, bool compute_full_tangent_operator=false, RankFourTensor &tangent_operator=_identityTensor) override
void computeInelasticStrainIncrement(ADReal &gauge_stress, ADReal &dpsi_dgauge, ADRankTwoTensor &creep_strain_increment, const ADReal &equiv_stress, const ADRankTwoTensor &dev_stress, const ADRankTwoTensor &stress)
enum ADViscoplasticityStressUpdate::PoreShapeModel _pore_shape
ADRankTwoTensor computeDGaugeDSigma(const ADReal &gauge_stress, const ADReal &equiv_stress, const ADRankTwoTensor &dev_stress, const ADRankTwoTensor &stress)
const InputParameters & parameters() const
const Real _pore_shape_factor
Pore shape factor depending on pore shape model.
ADReal computeH(const Real n, const ADReal &gauge_stress, const bool derivative=false)
const ADMaterialProperty< Real > & _coefficient
Leading coefficient.
PoreShapeModel
Enum to choose which pore shape model to use.
const RankTwoTensor _dhydro_stress_dsigma
Derivative of hydrostatic stress with respect to the stress tensor.