www.mooseframework.org
ADViscoplasticityStressUpdateBase.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 usingViscoplasticityStressUpdateBaseMembers \
16  usingStressUpdateBaseMembers; \
17  usingSingleVariableReturnMappingSolutionMembers; \
18  using ADViscoplasticityStressUpdateBase<compute_stage>::updateIntermediatePorosity; \
19  using ADViscoplasticityStressUpdateBase<compute_stage>::computeStressInitialize; \
20  using ADViscoplasticityStressUpdateBase<compute_stage>::computeStressFinalize; \
21  using ADViscoplasticityStressUpdateBase<compute_stage>::_intermediate_porosity; \
22  using ADViscoplasticityStressUpdateBase<compute_stage>::_derivative; \
23  using ADViscoplasticityStressUpdateBase<compute_stage>::_effective_inelastic_strain; \
24  using ADViscoplasticityStressUpdateBase<compute_stage>::_effective_inelastic_strain_old; \
25  using ADViscoplasticityStressUpdateBase<compute_stage>::_inelastic_strain; \
26  using ADViscoplasticityStressUpdateBase<compute_stage>::_inelastic_strain_old; \
27  using ADViscoplasticityStressUpdateBase<compute_stage>::_verbose; \
28  using ADViscoplasticityStressUpdateBase<compute_stage>::_porosity_old; \
29  using ADViscoplasticityStressUpdateBase<compute_stage>::_max_inelastic_increment
30 
31 template <ComputeStage>
33 
35 
36 template <ComputeStage compute_stage>
38  : public ADStressUpdateBase<compute_stage>,
39  public ADSingleVariableReturnMappingSolution<compute_stage>
40 {
41 public:
42  static InputParameters validParams();
43 
44  ADViscoplasticityStressUpdateBase(const InputParameters & parameters);
45 
46  virtual Real computeReferenceResidual(const ADReal & effective_trial_stress,
47  const ADReal & scalar_effective_inelastic_strain) override;
48 
53  virtual Real computeTimeStepLimit() override;
54 
58  bool requiresIsotropicTensor() override { return true; }
59 
60 protected:
61  virtual void initQpStatefulProperties() override;
62 
63  virtual void propagateQpStatefulProperties() override;
64 
70  virtual void computeStressInitialize(const ADReal & /*effective_trial_stress*/,
71  const ADRankFourTensor & /*elasticity_tensor*/)
72  {
73  }
74 
79  virtual void computeStressFinalize(const ADRankTwoTensor & /*plastic_strain_increment*/) {}
80 
81  virtual ADReal computeDerivative(const ADReal & /*effective_trial_stress*/,
82  const ADReal & /*scalar*/) override
83  {
84  return _derivative;
85  }
86 
87  void updateIntermediatePorosity(const ADRankTwoTensor & elastic_strain_increment);
88 
89  void outputIterationSummary(std::stringstream * iter_output,
90  const unsigned int total_it) override;
91 
93  const std::string _total_strain_base_name;
94 
96  const ADMaterialProperty(RankTwoTensor) & _strain_increment;
97 
99  ADMaterialProperty(Real) & _effective_inelastic_strain;
100  const MaterialProperty<Real> & _effective_inelastic_strain_old;
102 
104  ADMaterialProperty(RankTwoTensor) & _inelastic_strain;
105  const MaterialProperty<RankTwoTensor> & _inelastic_strain_old;
107 
110 
113 
115  const MaterialProperty<Real> & _porosity_old;
116 
118  const bool _verbose;
119 
121  ADReal _derivative;
122 
125 };
declareADValidParams
declareADValidParams(ADViscoplasticityStressUpdateBase)
ADViscoplasticityStressUpdateBase::updateIntermediatePorosity
void updateIntermediatePorosity(const ADRankTwoTensor &elastic_strain_increment)
Definition: ADViscoplasticityStressUpdateBase.C:120
ADViscoplasticityStressUpdateBase::usingSingleVariableReturnMappingSolutionMembers
usingSingleVariableReturnMappingSolutionMembers
Definition: ADViscoplasticityStressUpdateBase.h:124
ADViscoplasticityStressUpdateBase::requiresIsotropicTensor
bool requiresIsotropicTensor() override
Does the model require the elasticity tensor to be isotropic?
Definition: ADViscoplasticityStressUpdateBase.h:58
ADViscoplasticityStressUpdateBase::validParams
static InputParameters validParams()
Definition: ADViscoplasticityStressUpdateBase.C:16
ADViscoplasticityStressUpdateBase::initQpStatefulProperties
virtual void initQpStatefulProperties() override
Definition: ADViscoplasticityStressUpdateBase.C:66
ADViscoplasticityStressUpdateBase::_porosity_old
const MaterialProperty< Real > & _porosity_old
Material property for the old porosity.
Definition: ADViscoplasticityStressUpdateBase.h:115
ADViscoplasticityStressUpdateBase::_intermediate_porosity
ADReal _intermediate_porosity
Container for the porosity calculated from all other intelastic models except the current model.
Definition: ADViscoplasticityStressUpdateBase.h:112
ADSingleVariableReturnMappingSolution.h
ADViscoplasticityStressUpdateBase::_max_inelastic_increment
Real _max_inelastic_increment
Max increment for inelastic strain.
Definition: ADViscoplasticityStressUpdateBase.h:109
ADViscoplasticityStressUpdateBase::propagateQpStatefulProperties
virtual void propagateQpStatefulProperties() override
If updateState is not called during a timestep, this will be.
Definition: ADViscoplasticityStressUpdateBase.C:74
ADViscoplasticityStressUpdateBase::computeStressInitialize
virtual void computeStressInitialize(const ADReal &, const ADRankFourTensor &)
Perform any necessary initialization before return mapping iterations.
Definition: ADViscoplasticityStressUpdateBase.h:70
ADViscoplasticityStressUpdateBase::_inelastic_strain_old
const MaterialProperty< RankTwoTensor > & _inelastic_strain_old
Definition: ADViscoplasticityStressUpdateBase.h:105
ADViscoplasticityStressUpdateBase::outputIterationSummary
void outputIterationSummary(std::stringstream *iter_output, const unsigned int total_it) override
Output summary information for the convergence history of the model.
Definition: ADViscoplasticityStressUpdateBase.C:106
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
ADViscoplasticityStressUpdateBase::ADViscoplasticityStressUpdateBase
ADViscoplasticityStressUpdateBase(const InputParameters &parameters)
Definition: ADViscoplasticityStressUpdateBase.C:39
ADViscoplasticityStressUpdateBase::computeDerivative
virtual ADReal computeDerivative(const ADReal &, const ADReal &) override
Compute the derivative of the residual as a function of the scalar variable.
Definition: ADViscoplasticityStressUpdateBase.h:81
ADViscoplasticityStressUpdateBase::usingStressUpdateBaseMembers
usingStressUpdateBaseMembers
Definition: ADViscoplasticityStressUpdateBase.h:123
ADViscoplasticityStressUpdateBase::computeStressFinalize
virtual void computeStressFinalize(const ADRankTwoTensor &)
Perform any necessary steps to finalize state after return mapping iterations.
Definition: ADViscoplasticityStressUpdateBase.h:79
ADViscoplasticityStressUpdateBase::_effective_inelastic_strain_old
const MaterialProperty< Real > & _effective_inelastic_strain_old
Definition: ADViscoplasticityStressUpdateBase.h:100
ADViscoplasticityStressUpdateBase
Definition: ADViscoplasticityStressUpdateBase.h:32
ADViscoplasticityStressUpdateBase::_total_strain_base_name
const std::string _total_strain_base_name
String designating the base name of the total strain.
Definition: ADViscoplasticityStressUpdateBase.h:93
RankTwoTensorTempl
Definition: ACGrGrElasticDrivingForce.h:17
ADViscoplasticityStressUpdateBase::computeTimeStepLimit
virtual Real computeTimeStepLimit() override
Compute the limiting value of the time step for this material.
Definition: ADViscoplasticityStressUpdateBase.C:92
ADViscoplasticityStressUpdateBase::_derivative
ADReal _derivative
Container for _derivative.
Definition: ADViscoplasticityStressUpdateBase.h:121
ADViscoplasticityStressUpdateBase::_verbose
const bool _verbose
Flag to enable verbose output.
Definition: ADViscoplasticityStressUpdateBase.h:118
ADViscoplasticityStressUpdateBase::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: ADViscoplasticityStressUpdateBase.C:82
ADViscoplasticityStressUpdateBase::ADMaterialProperty
const ADMaterialProperty(RankTwoTensor) &_strain_increment
Material property for the total strain increment.
ADSingleVariableReturnMappingSolution
Base class that provides capability for Newton return mapping iterations on a single variable.
Definition: ADSingleVariableReturnMappingSolution.h:32