https://mooseframework.inl.gov
Loading...
Searching...
No Matches
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{
18public:
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
42protected:
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
95 const Real _power_factor;
96
99
102
105
108
111
114
117
120
123};
DualNumber< Real, DNDerivativeType, true > ADReal
ViscoplasticityModel
Enum to choose which viscoplastic model to use.
ADMaterialProperty< Real > & _gauge_stress
Gauge stress.
const Real _power_factor
Power factor used for LPS model.
const Real _maximum_gauge_ratio
Maximum ratio between the gauge stress and the equilvalent stress.
virtual ADReal computeDerivative(const ADReal &, const ADReal &) override
virtual ADReal minimumPermissibleValue(const ADReal &effective_trial_stress) const override
void outputIterationSummary(std::stringstream *iter_output, const unsigned int total_it) override
Output summary information for the convergence history of the model.
virtual ADReal maximumPermissibleValue(const ADReal &effective_trial_stress) const override
const Real _pore_shape_factor
Pore shape factor depending on pore shape model.
virtual Real computeReferenceResidual(const ADReal &effective_trial_stress, const ADReal &scalar_effective_inelastic_strain) override
PoreShapeModel
Enum to choose which pore shape model to use.
virtual ADReal initialGuess(const ADReal &effective_trial_stress) override
Compute an initial guess for the value of the scalar.
virtual ADReal computeResidual(const ADReal &effective_trial_stress, const ADReal &scalar) override
Perform any necessary steps to finalize state after return mapping iterations.
ADRankTwoTensor computeDGaugeDSigma(const ADReal &gauge_stress, const ADReal &equiv_stress, const ADRankTwoTensor &dev_stress, const ADRankTwoTensor &stress)
const ADMaterialProperty< Real > & _coefficient
Leading coefficient.
const RankTwoTensor _dhydro_stress_dsigma
Derivative of hydrostatic stress with respect to the stress tensor.
ADReal _hydro_stress
Container for hydrostatic stress.
void computeInelasticStrainIncrement(ADReal &gauge_stress, ADReal &dpsi_dgauge, ADRankTwoTensor &creep_strain_increment, const ADReal &equiv_stress, const ADRankTwoTensor &dev_stress, const ADRankTwoTensor &stress)
ADReal computeH(const Real n, const ADReal &gauge_stress, const bool derivative=false)
enum ADViscoplasticityStressUpdate::PoreShapeModel _pore_shape
const Real _minimum_equivalent_stress
Minimum value of equivalent stress below which viscoplasticiy is not calculated.
const RankTwoTensor _identity_two
Rank two identity tensor.
const Real _power
Exponent on the effective stress.
const Real _maximum_equivalent_stress
Maximum value of equivalent stress above which an exception is thrown.
ADReal _derivative
Container for _derivative.
enum ADViscoplasticityStressUpdate::ViscoplasticityModel _model
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
const InputParameters & parameters() const
Base class that provides capability for Newton return mapping iterations on a single variable.
static RankFourTensor _identityTensor
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...
Real elasticity_tensor(unsigned int i, unsigned int j, unsigned int k, unsigned int l)