www.mooseframework.org
ADComputeMultipleInelasticStress.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 
13 
14 #define usingComputeMultipleInelasticStressMembers \
15  usingComputeFiniteStrainElasticStressMembers; \
16  using ADComputeMultipleInelasticStress<compute_stage>::computeQpStressIntermediateConfiguration; \
17  using ADComputeMultipleInelasticStress<compute_stage>::finiteStrainRotation; \
18  using ADComputeMultipleInelasticStress<compute_stage>::updateQpState; \
19  using ADComputeMultipleInelasticStress<compute_stage>::updateQpStateSingleModel; \
20  using ADComputeMultipleInelasticStress<compute_stage>::computeAdmissibleState; \
21  using ADComputeMultipleInelasticStress<compute_stage>::_inelastic_strain; \
22  using ADComputeMultipleInelasticStress<compute_stage>::_inelastic_strain_old
23 
24 // Forward Declarations
25 template <ComputeStage>
27 template <ComputeStage>
29 template <typename>
33 template <typename>
37 
39 
55 template <ComputeStage compute_stage>
57 {
58 public:
59  static InputParameters validParams();
60 
61  ADComputeMultipleInelasticStress(const InputParameters & parameters);
62 
63  virtual void initialSetup() override;
64 
65 protected:
66  virtual void initQpStatefulProperties() override;
67 
68  virtual void computeQpStress() override;
69 
75 
80  virtual void finiteStrainRotation();
81 
93  virtual void updateQpState(ADRankTwoTensor & elastic_strain_increment,
94  ADRankTwoTensor & combined_inelastic_strain_increment);
95 
105  virtual void updateQpStateSingleModel(unsigned model_number,
106  ADRankTwoTensor & elastic_strain_increment,
107  ADRankTwoTensor & combined_inelastic_strain_increment);
108 
121  virtual void computeAdmissibleState(unsigned model_number,
122  ADRankTwoTensor & elastic_strain_increment,
123  ADRankTwoTensor & inelastic_strain_increment);
124 
126  const unsigned int _max_iterations;
131 
134 
136  ADMaterialProperty(RankTwoTensor) & _inelastic_strain;
137 
139  const MaterialProperty<RankTwoTensor> & _inelastic_strain_old;
140 
142  const unsigned _num_models;
143 
145  const std::vector<Real> _inelastic_weights;
146 
148  const bool _cycle_models;
149 
150  MaterialProperty<Real> & _matl_timestep_limit;
151 
159  std::vector<ADStressUpdateBase<compute_stage> *> _models;
160 
163 
165 };
ADComputeMultipleInelasticStress::_absolute_tolerance
const Real _absolute_tolerance
Definition: ADComputeMultipleInelasticStress.h:128
ADComputeMultipleInelasticStress::ADMaterialProperty
ADMaterialProperty(RankTwoTensor) &_inelastic_strain
The sum of the inelastic strains that come from the plastic models.
ADComputeMultipleInelasticStress::_relative_tolerance
const Real _relative_tolerance
Definition: ADComputeMultipleInelasticStress.h:127
ADComputeMultipleInelasticStress::_models
std::vector< ADStressUpdateBase< compute_stage > * > _models
The user supplied list of inelastic models to use in the simulation.
Definition: ADComputeMultipleInelasticStress.h:159
ADComputeMultipleInelasticStress::computeAdmissibleState
virtual void computeAdmissibleState(unsigned model_number, ADRankTwoTensor &elastic_strain_increment, ADRankTwoTensor &inelastic_strain_increment)
Given a trial stress (_stress[_qp]) and a strain increment (elastic_strain_increment) let the model_n...
Definition: ADComputeMultipleInelasticStress.C:328
ADComputeMultipleInelasticStress::usingComputeFiniteStrainElasticStressMembers
usingComputeFiniteStrainElasticStressMembers
Definition: ADComputeMultipleInelasticStress.h:164
ADComputeMultipleInelasticStress::finiteStrainRotation
virtual void finiteStrainRotation()
Rotate _elastic_strain, _stress, and _inelastic_strain to the new configuration.
Definition: ADComputeMultipleInelasticStress.C:172
ADComputeMultipleInelasticStress::validParams
static InputParameters validParams()
Definition: ADComputeMultipleInelasticStress.C:20
ADComputeFiniteStrainElasticStress.h
ADComputeMultipleInelasticStress::_num_models
const unsigned _num_models
number of plastic models
Definition: ADComputeMultipleInelasticStress.h:142
ADComputeMultipleInelasticStress::updateQpState
virtual void updateQpState(ADRankTwoTensor &elastic_strain_increment, ADRankTwoTensor &combined_inelastic_strain_increment)
Given the _strain_increment[_qp], iterate over all of the user-specified recompute materials in order...
Definition: ADComputeMultipleInelasticStress.C:183
ADComputeFiniteStrainElasticStress
ADComputeFiniteStrainElasticStress computes the stress following elasticity theory for finite strains...
Definition: ADComputeFiniteStrainElasticStress.h:25
ADStressUpdateBase
ADStressUpdateBase is a material that is not called by MOOSE because of the compute=false flag set in...
Definition: ADComputeMultipleInelasticStress.h:28
declareADValidParams
declareADValidParams(ADComputeMultipleInelasticStress)
ADComputeMultipleInelasticStress::_inelastic_strain_old
const MaterialProperty< RankTwoTensor > & _inelastic_strain_old
old value of inelastic strain
Definition: ADComputeMultipleInelasticStress.h:139
ADComputeMultipleInelasticStress
ADComputeMultipleInelasticStress computes the stress and a decomposition of the strain into elastic a...
Definition: ADComputeMultipleInelasticStress.h:26
ADComputeMultipleInelasticStress::ADComputeMultipleInelasticStress
ADComputeMultipleInelasticStress(const InputParameters &parameters)
Definition: ADComputeMultipleInelasticStress.C:68
ADComputeMultipleInelasticStress::initialSetup
virtual void initialSetup() override
Definition: ADComputeMultipleInelasticStress.C:104
ADComputeMultipleInelasticStress::_perform_finite_strain_rotations
const bool _perform_finite_strain_rotations
after updateQpState, rotate the stress, elastic_strain, and inelastic_strain using _rotation_incremen...
Definition: ADComputeMultipleInelasticStress.h:133
ADComputeMultipleInelasticStress::initQpStatefulProperties
virtual void initQpStatefulProperties() override
Definition: ADComputeMultipleInelasticStress.C:96
RankTwoTensor
RankTwoTensorTempl< Real > RankTwoTensor
Definition: ADComputeMultipleInelasticStress.h:30
ADComputeMultipleInelasticStress::_internal_solve_full_iteration_history
const bool _internal_solve_full_iteration_history
Definition: ADComputeMultipleInelasticStress.h:129
ADComputeMultipleInelasticStress::_is_elasticity_tensor_guaranteed_isotropic
bool _is_elasticity_tensor_guaranteed_isotropic
is the elasticity tensor guaranteed to be isotropic?
Definition: ADComputeMultipleInelasticStress.h:162
ADComputeMultipleInelasticStress::_matl_timestep_limit
MaterialProperty< Real > & _matl_timestep_limit
Definition: ADComputeMultipleInelasticStress.h:150
RankFourTensorTempl
Definition: ACGrGrElasticDrivingForce.h:20
DualRankFourTensor
RankFourTensorTempl< DualReal > DualRankFourTensor
Definition: ADComputeMultipleInelasticStress.h:36
ADComputeMultipleInelasticStress::_inelastic_weights
const std::vector< Real > _inelastic_weights
_inelastic_strain = sum_i (_inelastic_weights_i * inelastic_strain_from_model_i)
Definition: ADComputeMultipleInelasticStress.h:145
ADComputeMultipleInelasticStress::updateQpStateSingleModel
virtual void updateQpStateSingleModel(unsigned model_number, ADRankTwoTensor &elastic_strain_increment, ADRankTwoTensor &combined_inelastic_strain_increment)
An optimised version of updateQpState that gets used when the number of plastic models is unity,...
Definition: ADComputeMultipleInelasticStress.C:297
ADComputeMultipleInelasticStress::computeQpStressIntermediateConfiguration
virtual void computeQpStressIntermediateConfiguration()
Compute the stress for the current QP, but do not rotate tensors from the intermediate configuration ...
Definition: ADComputeMultipleInelasticStress.C:140
ADComputeMultipleInelasticStress::_cycle_models
const bool _cycle_models
whether to cycle through the models, using only one model per timestep
Definition: ADComputeMultipleInelasticStress.h:148
RankTwoTensorTempl
Definition: ACGrGrElasticDrivingForce.h:17
ADComputeMultipleInelasticStress::computeQpStress
virtual void computeQpStress() override
Definition: ADComputeMultipleInelasticStress.C:131
RankFourTensor
RankFourTensorTempl< Real > RankFourTensor
Definition: ADComputeMultipleInelasticStress.h:34
ADComputeMultipleInelasticStress::_max_iterations
const unsigned int _max_iterations
Input parameters associated with the recompute iteration to return the stress state to the yield surf...
Definition: ADComputeMultipleInelasticStress.h:126
DualRankTwoTensor
RankTwoTensorTempl< DualReal > DualRankTwoTensor
Definition: ADComputeMultipleInelasticStress.h:32