www.mooseframework.org
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Private Attributes | List of all members
ADComputeMultiplePorousInelasticStress< compute_stage > Class Template Reference

Compute state (stress and internal parameters such as plastic strains and internal parameters) using an iterative process. More...

#include <ADComputeMultiplePorousInelasticStress.h>

Inheritance diagram for ADComputeMultiplePorousInelasticStress< compute_stage >:
[legend]

Public Member Functions

 ADComputeMultiplePorousInelasticStress (const InputParameters &parameters)
 
virtual void initialSetup () override
 

Static Public Member Functions

static InputParameters validParams ()
 

Protected Member Functions

virtual void initQpStatefulProperties () override
 
virtual void computeQpProperties () override
 
virtual void computeQpStress () override
 
virtual void computeQpStressIntermediateConfiguration ()
 Compute the stress for the current QP, but do not rotate tensors from the intermediate configuration to the new configuration. More...
 
virtual void finiteStrainRotation ()
 Rotate _elastic_strain, _stress, and _inelastic_strain to the new configuration. More...
 
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 to find an admissible stress (which is placed into _stress[_qp]) and set of inelastic strains. More...
 
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, or when we're cycling through models Given the _strain_increment[_qp], find an admissible stress (which is put into _stress[_qp]) and inelastic strain. More...
 
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_number model produce an admissible stress (gets placed back in _stress[_qp]), and decompose the strain increment into an elastic part (gets placed back into elastic_strain_increment) and an inelastic part (inelastic_strain_increment). More...
 
 ADMaterialProperty (RankTwoTensor) &_inelastic_strain
 The sum of the inelastic strains that come from the plastic models. More...
 
const ADMaterialProperty (RankFourTensor) &_elasticity_tensor
 Elasticity tensor material property. More...
 
bool hasGuaranteedMaterialProperty (const MaterialPropertyName &prop, Guarantee guarantee)
 

Protected Attributes

const Real _initial_porosity
 Initial porosity value. Must be greater than zero. More...
 
 usingComputeMultipleInelasticStressMembers
 
const bool _perform_finite_strain_rotations
 after updateQpState, rotate the stress, elastic_strain, and inelastic_strain using _rotation_increment More...
 
const MaterialProperty< RankTwoTensor > & _inelastic_strain_old
 old value of inelastic strain More...
 
const unsigned _num_models
 number of plastic models More...
 
const std::vector< Real > _inelastic_weights
 _inelastic_strain = sum_i (_inelastic_weights_i * inelastic_strain_from_model_i) More...
 
const bool _cycle_models
 whether to cycle through the models, using only one model per timestep More...
 
MaterialProperty< Real > & _matl_timestep_limit
 
std::vector< ADStressUpdateBase< compute_stage > * > _models
 The user supplied list of inelastic models to use in the simulation. More...
 
bool _is_elasticity_tensor_guaranteed_isotropic
 is the elasticity tensor guaranteed to be isotropic? More...
 
 usingComputeFiniteStrainElasticStressMembers
 
const std::string _elasticity_tensor_name
 Name of the elasticity tensor material property. More...
 
const MaterialProperty< RankTwoTensor > & _stress_old
 
const MaterialProperty< RankTwoTensor > & _elastic_strain_old
 The old elastic strain is used to calculate the old stress in the case of variable elasticity tensors. More...
 
 usingComputeStressBaseMembers
 
const std::string _base_name
 
std::vector< const MaterialProperty< RankTwoTensor > * > _extra_stresses
 Extra stress tensors. More...
 
std::vector< const Function * > _initial_stress_fcn
 initial stress components More...
 
 usingMaterialMembers
 
const unsigned int _max_iterations
 Input parameters associated with the recompute iteration to return the stress state to the yield surface. More...
 
const Real _relative_tolerance
 
const Real _absolute_tolerance
 
const bool _internal_solve_full_iteration_history
 

Private Attributes

const InputParameters & _gc_params
 Parameters of the object with this interface. More...
 
FEProblemBase *const _gc_feproblem
 Reference to the FEProblemBase class. More...
 
BlockRestrictable *const _gc_block_restrict
 Access block restrictions of the object with this interface. More...
 
const MaterialProperty< Real > & _porosity_old
 
 ADMaterialProperty (Real) &_porosity
 Material property for porosity. More...
 

Detailed Description

template<ComputeStage compute_stage>
class ADComputeMultiplePorousInelasticStress< compute_stage >

Compute state (stress and internal parameters such as plastic strains and internal parameters) using an iterative process.

A porosity material property is defined and is calcuated from the trace of inelastic strain increment.

Definition at line 15 of file ADComputeMultiplePorousInelasticStress.h.

Constructor & Destructor Documentation

◆ ADComputeMultiplePorousInelasticStress()

template<ComputeStage compute_stage>
ADComputeMultiplePorousInelasticStress< compute_stage >::ADComputeMultiplePorousInelasticStress ( const InputParameters &  parameters)

Definition at line 36 of file ADComputeMultiplePorousInelasticStress.C.

39  _porosity(declareADProperty<Real>(getParam<MaterialPropertyName>("porosity_name"))),
40  _porosity_old(getMaterialPropertyOld<Real>(getParam<MaterialPropertyName>("porosity_name"))),
41  _initial_porosity(getParam<Real>("initial_porosity"))
42 {
43 }

Member Function Documentation

◆ ADMaterialProperty() [1/3]

template<ComputeStage compute_stage>
const ADComputeFiniteStrainElasticStress< compute_stage >::ADMaterialProperty ( RankFourTensor  ) &
protectedinherited

Elasticity tensor material property.

◆ ADMaterialProperty() [2/3]

template<ComputeStage compute_stage>
ADComputeMultipleInelasticStress< compute_stage >::ADMaterialProperty ( RankTwoTensor  ) &
protectedinherited

The sum of the inelastic strains that come from the plastic models.

◆ ADMaterialProperty() [3/3]

template<ComputeStage compute_stage>
ADComputeMultiplePorousInelasticStress< compute_stage >::ADMaterialProperty ( Real  ) &
protected

Material property for porosity.

◆ computeAdmissibleState()

template<ComputeStage compute_stage>
void ADComputeMultipleInelasticStress< compute_stage >::computeAdmissibleState ( unsigned  model_number,
ADRankTwoTensor &  elastic_strain_increment,
ADRankTwoTensor &  inelastic_strain_increment 
)
protectedvirtualinherited

Given a trial stress (_stress[_qp]) and a strain increment (elastic_strain_increment) let the model_number model produce an admissible stress (gets placed back in _stress[_qp]), and decompose the strain increment into an elastic part (gets placed back into elastic_strain_increment) and an inelastic part (inelastic_strain_increment).

Parameters
model_numberThe inelastic model to use
elastic_strain_incrementUpon input, this is the strain increment. Upon output, it is the elastic part of the strain increment
inelastic_strain_incrementThe inelastic strain increment corresponding to the supplied strain increment

Definition at line 328 of file ADComputeMultipleInelasticStress.C.

332 {
333  _models[model_number]->updateState(elastic_strain_increment,
334  inelastic_strain_increment,
335  _rotation_increment[_qp],
336  _stress[_qp],
337  _stress_old[_qp],
338  _elasticity_tensor[_qp],
339  _elastic_strain_old[_qp]);
340 }

◆ computeQpProperties()

template<ComputeStage compute_stage>
void ADComputeMultiplePorousInelasticStress< compute_stage >::computeQpProperties ( )
overrideprotectedvirtual

Reimplemented from ADComputeStressBase< compute_stage >.

Definition at line 56 of file ADComputeMultiplePorousInelasticStress.C.

57 {
59 
60  _porosity[_qp] =
61  (1.0 - _porosity_old[_qp]) * (_inelastic_strain[_qp] - _inelastic_strain_old[_qp]).trace() +
62  _porosity_old[_qp];
63 }

◆ computeQpStress()

template<ComputeStage compute_stage>
void ADComputeMultipleInelasticStress< compute_stage >::computeQpStress ( )
overrideprotectedvirtualinherited

◆ computeQpStressIntermediateConfiguration()

template<ComputeStage compute_stage>
void ADComputeMultipleInelasticStress< compute_stage >::computeQpStressIntermediateConfiguration ( )
protectedvirtualinherited

Compute the stress for the current QP, but do not rotate tensors from the intermediate configuration to the new configuration.

Definition at line 140 of file ADComputeMultipleInelasticStress.C.

141 {
142  ADRankTwoTensor elastic_strain_increment;
143  ADRankTwoTensor combined_inelastic_strain_increment;
144 
145  if (_num_models == 0)
146  {
147  _elastic_strain[_qp] = _elastic_strain_old[_qp] + _strain_increment[_qp];
148 
149  // If the elasticity tensor values have changed and the tensor is isotropic,
150  // use the old strain to calculate the old stress
152  _stress[_qp] = _elasticity_tensor[_qp] * (_elastic_strain_old[_qp] + _strain_increment[_qp]);
153  else
154  _stress[_qp] = _stress_old[_qp] + _elasticity_tensor[_qp] * _strain_increment[_qp];
155  }
156  else
157  {
158  if (_num_models == 1 || _cycle_models)
159  updateQpStateSingleModel((_t_step - 1) % _num_models,
160  elastic_strain_increment,
161  combined_inelastic_strain_increment);
162  else
163  updateQpState(elastic_strain_increment, combined_inelastic_strain_increment);
164 
165  _elastic_strain[_qp] = _elastic_strain_old[_qp] + elastic_strain_increment;
166  _inelastic_strain[_qp] = _inelastic_strain_old[_qp] + combined_inelastic_strain_increment;
167  }
168 }

◆ finiteStrainRotation()

template<ComputeStage compute_stage>
void ADComputeMultipleInelasticStress< compute_stage >::finiteStrainRotation ( )
protectedvirtualinherited

Rotate _elastic_strain, _stress, and _inelastic_strain to the new configuration.

Definition at line 172 of file ADComputeMultipleInelasticStress.C.

173 {
174  _elastic_strain[_qp] =
175  _rotation_increment[_qp] * _elastic_strain[_qp] * _rotation_increment[_qp].transpose();
176  _stress[_qp] = _rotation_increment[_qp] * _stress[_qp] * _rotation_increment[_qp].transpose();
177  _inelastic_strain[_qp] =
178  _rotation_increment[_qp] * _inelastic_strain[_qp] * _rotation_increment[_qp].transpose();
179 }

◆ hasGuaranteedMaterialProperty()

bool GuaranteeConsumer::hasGuaranteedMaterialProperty ( const MaterialPropertyName &  prop,
Guarantee  guarantee 
)
protectedinherited

Definition at line 28 of file GuaranteeConsumer.C.

30 {
31  if (!_gc_feproblem->startedInitialSetup())
32  mooseError("hasGuaranteedMaterialProperty() needs to be called in initialSetup()");
33 
34  // Reference to MaterialWarehouse for testing and retrieving block ids
35  const auto & warehouse = _gc_feproblem->getMaterialWarehouse();
36 
37  // Complete set of ids that this object is active
38  const auto & ids = (_gc_block_restrict && _gc_block_restrict->blockRestricted())
39  ? _gc_block_restrict->blockIDs()
40  : _gc_feproblem->mesh().meshSubdomains();
41 
42  // Loop over each id for this object
43  for (const auto & id : ids)
44  {
45  // If block materials exist, look if any issue the required guarantee
46  if (warehouse.hasActiveBlockObjects(id))
47  {
48  const std::vector<std::shared_ptr<MaterialBase>> & mats = warehouse.getActiveBlockObjects(id);
49  for (const auto & mat : mats)
50  {
51  const auto & mat_props = mat->getSuppliedItems();
52  if (mat_props.count(prop_name))
53  {
54  auto guarantee_mat = dynamic_cast<GuaranteeProvider *>(mat.get());
55  if (guarantee_mat && !guarantee_mat->hasGuarantee(prop_name, guarantee))
56  {
57  // we found at least one material on the set of block we operate on
58  // that does _not_ provide the requested guarantee
59  return false;
60  }
61  }
62  }
63  }
64  }
65 
66  return true;
67 }

Referenced by ComputeFiniteStrainElasticStress::initialSetup(), ComputeSmearedCrackingStress::initialSetup(), ComputeLinearElasticPFFractureStress::initialSetup(), CriticalTimeStep::initialSetup(), and ComputeMultipleInelasticStress::initialSetup().

◆ initialSetup()

template<ComputeStage compute_stage>
void ADComputeMultipleInelasticStress< compute_stage >::initialSetup ( )
overridevirtualinherited

Definition at line 104 of file ADComputeMultipleInelasticStress.C.

105 {
108 
109  std::vector<MaterialName> models = getParam<std::vector<MaterialName>>("inelastic_models");
110 
111  for (unsigned int i = 0; i < _num_models; ++i)
112  {
114  &this->template getMaterialByName<compute_stage>(models[i]));
115 
116  if (rrr)
117  {
118  _models.push_back(rrr);
120  mooseError("Model " + models[i] +
121  " requires an isotropic elasticity tensor, but the one supplied is not "
122  "guaranteed isotropic");
123  }
124  else
125  mooseError("Model " + models[i] + " is not compatible with ADComputeMultipleInelasticStress");
126  }
127 }

◆ initQpStatefulProperties()

template<ComputeStage compute_stage>
void ADComputeMultiplePorousInelasticStress< compute_stage >::initQpStatefulProperties ( )
overrideprotectedvirtual

◆ updateQpState()

template<ComputeStage compute_stage>
void ADComputeMultipleInelasticStress< compute_stage >::updateQpState ( ADRankTwoTensor &  elastic_strain_increment,
ADRankTwoTensor &  combined_inelastic_strain_increment 
)
protectedvirtualinherited

Given the _strain_increment[_qp], iterate over all of the user-specified recompute materials in order to find an admissible stress (which is placed into _stress[_qp]) and set of inelastic strains.

Parameters
elastic_strain_incrementThe elastic part of _strain_increment[_qp] after the iterative process has converged
combined_inelastic_strain_incrementThe inelastic part of _strain_increment[_qp] after the iterative process has converged. This is a weighted sum of all the inelastic strains computed by all the plastic models during the Picard iterative scheme. The weights are dictated by the user using _inelastic_weights

Definition at line 183 of file ADComputeMultipleInelasticStress.C.

186 {
188  {
189  _console << std::endl
190  << "iteration output for ADComputeMultipleInelasticStress solve:"
191  << " time=" << _t << " int_pt=" << _qp << std::endl;
192  }
193  Real l2norm_delta_stress;
194  Real first_l2norm_delta_stress = 1.0;
195  unsigned int counter = 0;
196 
197  std::vector<ADRankTwoTensor> inelastic_strain_increment;
198  inelastic_strain_increment.resize(_num_models);
199 
200  for (unsigned i_rmm = 0; i_rmm < _models.size(); ++i_rmm)
201  inelastic_strain_increment[i_rmm].zero();
202 
203  ADRankTwoTensor stress_max, stress_min;
204 
205  do
206  {
207  for (unsigned i_rmm = 0; i_rmm < _num_models; ++i_rmm)
208  {
209  _models[i_rmm]->setQp(_qp);
210 
211  // initially assume the strain is completely elastic
212  elastic_strain_increment = _strain_increment[_qp];
213  // and subtract off all inelastic strain increments calculated so far
214  // except the one that we're about to calculate
215  for (unsigned j_rmm = 0; j_rmm < _num_models; ++j_rmm)
216  if (i_rmm != j_rmm)
217  elastic_strain_increment -= inelastic_strain_increment[j_rmm];
218 
219  // form the trial stress, with the check for changed elasticity constants
221  _stress[_qp] =
222  _elasticity_tensor[_qp] * (_elastic_strain_old[_qp] + elastic_strain_increment);
223  else
224  _stress[_qp] = _stress_old[_qp] + _elasticity_tensor[_qp] * elastic_strain_increment;
225 
226  // given a trial stress (_stress[_qp]) and a strain increment (elastic_strain_increment)
227  // let the i^th model produce an admissible stress (as _stress[_qp]), and decompose
228  // the strain increment into an elastic part (elastic_strain_increment) and an
229  // inelastic part (inelastic_strain_increment[i_rmm])
230  computeAdmissibleState(i_rmm, elastic_strain_increment, inelastic_strain_increment[i_rmm]);
231 
232  if (i_rmm == 0)
233  {
234  stress_max = _stress[_qp];
235  stress_min = _stress[_qp];
236  }
237  else
238  {
239  for (unsigned int i = 0; i < LIBMESH_DIM; ++i)
240  {
241  for (unsigned int j = 0; j < LIBMESH_DIM; ++j)
242  {
243  if (_stress[_qp](i, j) > stress_max(i, j))
244  stress_max(i, j) = _stress[_qp](i, j);
245  else if (stress_min(i, j) > _stress[_qp](i, j))
246  stress_min(i, j) = _stress[_qp](i, j);
247  }
248  }
249  }
250  }
251 
252  // now check convergence in the stress:
253  // once the change in stress is within tolerance after each recompute material
254  // consider the stress to be converged
255  l2norm_delta_stress = MetaPhysicL::raw_value((stress_max - stress_min).L2norm());
256  if (counter == 0 && l2norm_delta_stress > 0.0)
257  first_l2norm_delta_stress = l2norm_delta_stress;
258 
260  {
261  _console << "stress iteration number = " << counter << "\n"
262  << " relative l2 norm delta stress = "
263  << (0 == first_l2norm_delta_stress ? 0
264  : l2norm_delta_stress / first_l2norm_delta_stress)
265  << "\n"
266  << " stress convergence relative tolerance = " << _relative_tolerance << "\n"
267  << " absolute l2 norm delta stress = " << l2norm_delta_stress << "\n"
268  << " stress convergence absolute tolerance = " << _absolute_tolerance << std::endl;
269  }
270  ++counter;
271  } while (counter < _max_iterations && l2norm_delta_stress > _absolute_tolerance &&
272  (l2norm_delta_stress / first_l2norm_delta_stress) > _relative_tolerance &&
273  _num_models != 1);
274 
275  if (counter == _max_iterations && l2norm_delta_stress > _absolute_tolerance &&
276  (l2norm_delta_stress / first_l2norm_delta_stress) > _relative_tolerance)
277  mooseException(
278  "In ", _name, ": Max stress iteration hit during ADComputeMultipleInelasticStress solve!");
279 
280  combined_inelastic_strain_increment.zero();
281  for (unsigned i_rmm = 0; i_rmm < _num_models; ++i_rmm)
282  combined_inelastic_strain_increment +=
283  _inelastic_weights[i_rmm] * inelastic_strain_increment[i_rmm];
284 
285  _matl_timestep_limit[_qp] = 0.0;
286  for (unsigned i_rmm = 0; i_rmm < _num_models; ++i_rmm)
287  _matl_timestep_limit[_qp] += 1.0 / _models[i_rmm]->computeTimeStepLimit();
288 
289  if (MooseUtils::absoluteFuzzyEqual(_matl_timestep_limit[_qp], 0.0))
290  _matl_timestep_limit[_qp] = std::numeric_limits<Real>::max();
291  else
292  _matl_timestep_limit[_qp] = 1.0 / _matl_timestep_limit[_qp];
293 }

◆ updateQpStateSingleModel()

template<ComputeStage compute_stage>
void ADComputeMultipleInelasticStress< compute_stage >::updateQpStateSingleModel ( unsigned  model_number,
ADRankTwoTensor &  elastic_strain_increment,
ADRankTwoTensor &  combined_inelastic_strain_increment 
)
protectedvirtualinherited

An optimised version of updateQpState that gets used when the number of plastic models is unity, or when we're cycling through models Given the _strain_increment[_qp], find an admissible stress (which is put into _stress[_qp]) and inelastic strain.

Parameters
model_numberUse this model number
elastic_strain_incrementThe elastic part of _strain_increment[_qp]
combined_inelastic_strain_incrementThe inelastic part of _strain_increment[_qp]

Definition at line 297 of file ADComputeMultipleInelasticStress.C.

301 {
302  for (auto model : _models)
303  model->setQp(_qp);
304 
305  elastic_strain_increment = _strain_increment[_qp];
306 
307  // If the elasticity tensor values have changed and the tensor is isotropic,
308  // use the old strain to calculate the old stress
310  _stress[_qp] = _elasticity_tensor[_qp] * (_elastic_strain_old[_qp] + elastic_strain_increment);
311  else
312  _stress[_qp] = _stress_old[_qp] + _elasticity_tensor[_qp] * elastic_strain_increment;
313 
315  model_number, elastic_strain_increment, combined_inelastic_strain_increment);
316 
317  _matl_timestep_limit[_qp] = _models[0]->computeTimeStepLimit();
318 
319  /* propagate internal variables, etc, to this timestep for those inelastic models where
320  * "updateState" is not called */
321  for (unsigned i_rmm = 0; i_rmm < _num_models; ++i_rmm)
322  if (i_rmm != model_number)
323  _models[i_rmm]->propagateQpStatefulProperties();
324 }

◆ validParams()

template<ComputeStage compute_stage>
InputParameters ADComputeMultiplePorousInelasticStress< compute_stage >::validParams ( )
static

Definition at line 20 of file ADComputeMultiplePorousInelasticStress.C.

21 {
23  params.addClassDescription(
24  "Compute state (stress and internal parameters such as plastic "
25  "strains and internal parameters) using an iterative process. A porosity material property "
26  "is defined and is calculated from the trace of inelastic strain increment.");
27 
28  params.addParam<MaterialPropertyName>(
29  "porosity_name", "porosity", "Name of porosity material property");
30  params.addRequiredRangeCheckedParam<Real>(
31  "initial_porosity", "initial_porosity>0.0 & initial_porosity<1.0", "Initial porosity");
32  return params;
33 }

Member Data Documentation

◆ _absolute_tolerance

template<ComputeStage compute_stage>
const Real ADComputeMultipleInelasticStress< compute_stage >::_absolute_tolerance
protectedinherited

Definition at line 128 of file ADComputeMultipleInelasticStress.h.

◆ _base_name

template<ComputeStage compute_stage>
const std::string ADComputeStressBase< compute_stage >::_base_name
protectedinherited

Definition at line 53 of file ADComputeStressBase.h.

◆ _cycle_models

template<ComputeStage compute_stage>
const bool ADComputeMultipleInelasticStress< compute_stage >::_cycle_models
protectedinherited

whether to cycle through the models, using only one model per timestep

Definition at line 148 of file ADComputeMultipleInelasticStress.h.

◆ _elastic_strain_old

template<ComputeStage compute_stage>
const MaterialProperty<RankTwoTensor>& ADComputeFiniteStrainElasticStress< compute_stage >::_elastic_strain_old
protectedinherited

The old elastic strain is used to calculate the old stress in the case of variable elasticity tensors.

Definition at line 59 of file ADComputeFiniteStrainElasticStress.h.

◆ _elasticity_tensor_name

template<ComputeStage compute_stage>
const std::string ADComputeFiniteStrainElasticStress< compute_stage >::_elasticity_tensor_name
protectedinherited

Name of the elasticity tensor material property.

Definition at line 48 of file ADComputeFiniteStrainElasticStress.h.

◆ _extra_stresses

template<ComputeStage compute_stage>
std::vector<const MaterialProperty<RankTwoTensor> *> ADComputeStressBase< compute_stage >::_extra_stresses
protectedinherited

Extra stress tensors.

Definition at line 60 of file ADComputeStressBase.h.

Referenced by ADComputeStressBase< compute_stage >::ADComputeStressBase().

◆ _gc_block_restrict

BlockRestrictable* const GuaranteeConsumer::_gc_block_restrict
privateinherited

Access block restrictions of the object with this interface.

Definition at line 41 of file GuaranteeConsumer.h.

Referenced by GuaranteeConsumer::hasGuaranteedMaterialProperty().

◆ _gc_feproblem

FEProblemBase* const GuaranteeConsumer::_gc_feproblem
privateinherited

Reference to the FEProblemBase class.

Definition at line 38 of file GuaranteeConsumer.h.

Referenced by GuaranteeConsumer::hasGuaranteedMaterialProperty().

◆ _gc_params

const InputParameters& GuaranteeConsumer::_gc_params
privateinherited

Parameters of the object with this interface.

Definition at line 35 of file GuaranteeConsumer.h.

◆ _inelastic_strain_old

template<ComputeStage compute_stage>
const MaterialProperty<RankTwoTensor>& ADComputeMultipleInelasticStress< compute_stage >::_inelastic_strain_old
protectedinherited

old value of inelastic strain

Definition at line 139 of file ADComputeMultipleInelasticStress.h.

◆ _inelastic_weights

template<ComputeStage compute_stage>
const std::vector<Real> ADComputeMultipleInelasticStress< compute_stage >::_inelastic_weights
protectedinherited

_inelastic_strain = sum_i (_inelastic_weights_i * inelastic_strain_from_model_i)

Definition at line 145 of file ADComputeMultipleInelasticStress.h.

Referenced by ADComputeMultipleInelasticStress< compute_stage >::ADComputeMultipleInelasticStress().

◆ _initial_porosity

template<ComputeStage compute_stage>
const Real ADComputeMultiplePorousInelasticStress< compute_stage >::_initial_porosity
protected

Initial porosity value. Must be greater than zero.

Definition at line 44 of file ADComputeMultiplePorousInelasticStress.h.

◆ _initial_stress_fcn

template<ComputeStage compute_stage>
std::vector<const Function *> ADComputeStressBase< compute_stage >::_initial_stress_fcn
protectedinherited

initial stress components

Definition at line 63 of file ADComputeStressBase.h.

◆ _internal_solve_full_iteration_history

template<ComputeStage compute_stage>
const bool ADComputeMultipleInelasticStress< compute_stage >::_internal_solve_full_iteration_history
protectedinherited

Definition at line 129 of file ADComputeMultipleInelasticStress.h.

◆ _is_elasticity_tensor_guaranteed_isotropic

template<ComputeStage compute_stage>
bool ADComputeMultipleInelasticStress< compute_stage >::_is_elasticity_tensor_guaranteed_isotropic
protectedinherited

is the elasticity tensor guaranteed to be isotropic?

Definition at line 162 of file ADComputeMultipleInelasticStress.h.

◆ _matl_timestep_limit

template<ComputeStage compute_stage>
MaterialProperty<Real>& ADComputeMultipleInelasticStress< compute_stage >::_matl_timestep_limit
protectedinherited

Definition at line 150 of file ADComputeMultipleInelasticStress.h.

◆ _max_iterations

template<ComputeStage compute_stage>
const unsigned int ADComputeMultipleInelasticStress< compute_stage >::_max_iterations
protectedinherited

Input parameters associated with the recompute iteration to return the stress state to the yield surface.

Definition at line 126 of file ADComputeMultipleInelasticStress.h.

◆ _models

template<ComputeStage compute_stage>
std::vector<ADStressUpdateBase<compute_stage> *> ADComputeMultipleInelasticStress< compute_stage >::_models
protectedinherited

The user supplied list of inelastic models to use in the simulation.

Users should take care to list creep models first and plasticity models last to allow for the case when a creep model relaxes the stress state inside of the yield surface in an iteration.

Definition at line 159 of file ADComputeMultipleInelasticStress.h.

◆ _num_models

template<ComputeStage compute_stage>
const unsigned ADComputeMultipleInelasticStress< compute_stage >::_num_models
protectedinherited

◆ _perform_finite_strain_rotations

template<ComputeStage compute_stage>
const bool ADComputeMultipleInelasticStress< compute_stage >::_perform_finite_strain_rotations
protectedinherited

after updateQpState, rotate the stress, elastic_strain, and inelastic_strain using _rotation_increment

Definition at line 133 of file ADComputeMultipleInelasticStress.h.

◆ _porosity_old

template<ComputeStage compute_stage>
const MaterialProperty<Real>& ADComputeMultiplePorousInelasticStress< compute_stage >::_porosity_old
protected

Definition at line 40 of file ADComputeMultiplePorousInelasticStress.h.

◆ _relative_tolerance

template<ComputeStage compute_stage>
const Real ADComputeMultipleInelasticStress< compute_stage >::_relative_tolerance
protectedinherited

Definition at line 127 of file ADComputeMultipleInelasticStress.h.

◆ _stress_old

template<ComputeStage compute_stage>
const MaterialProperty<RankTwoTensor>& ADComputeFiniteStrainElasticStress< compute_stage >::_stress_old
protectedinherited

Definition at line 53 of file ADComputeFiniteStrainElasticStress.h.

◆ usingComputeFiniteStrainElasticStressMembers

template<ComputeStage compute_stage>
ADComputeMultipleInelasticStress< compute_stage >::usingComputeFiniteStrainElasticStressMembers
protectedinherited

Definition at line 164 of file ADComputeMultipleInelasticStress.h.

◆ usingComputeMultipleInelasticStressMembers

template<ComputeStage compute_stage>
ADComputeMultiplePorousInelasticStress< compute_stage >::usingComputeMultipleInelasticStressMembers
protected

Definition at line 46 of file ADComputeMultiplePorousInelasticStress.h.

◆ usingComputeStressBaseMembers

template<ComputeStage compute_stage>
ADComputeFiniteStrainElasticStress< compute_stage >::usingComputeStressBaseMembers
protectedinherited

Definition at line 61 of file ADComputeFiniteStrainElasticStress.h.

◆ usingMaterialMembers

template<ComputeStage compute_stage>
ADComputeStressBase< compute_stage >::usingMaterialMembers
protectedinherited

Definition at line 65 of file ADComputeStressBase.h.


The documentation for this class was generated from the following files:
ADComputeMultipleInelasticStress::_absolute_tolerance
const Real _absolute_tolerance
Definition: ADComputeMultipleInelasticStress.h:128
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
ADComputeFiniteStrainElasticStress::_stress_old
const MaterialProperty< RankTwoTensor > & _stress_old
Definition: ADComputeFiniteStrainElasticStress.h:53
ADComputeMultipleInelasticStress::finiteStrainRotation
virtual void finiteStrainRotation()
Rotate _elastic_strain, _stress, and _inelastic_strain to the new configuration.
Definition: ADComputeMultipleInelasticStress.C:172
ADComputeStressBase::initQpStatefulProperties
virtual void initQpStatefulProperties() override
Definition: ADComputeStressBase.C:53
counter
static unsigned int counter
Definition: ContactPenetrationAuxAction.C:17
ADComputeMultipleInelasticStress::validParams
static InputParameters validParams()
Definition: ADComputeMultipleInelasticStress.C:20
GuaranteeConsumer::_gc_block_restrict
BlockRestrictable *const _gc_block_restrict
Access block restrictions of the object with this interface.
Definition: GuaranteeConsumer.h:41
ADComputeStressBase::computeQpProperties
virtual void computeQpProperties() override
Definition: ADComputeStressBase.C:61
ADComputeMultipleInelasticStress::_num_models
const unsigned _num_models
number of plastic models
Definition: ADComputeMultipleInelasticStress.h:142
GuaranteeConsumer::_gc_feproblem
FEProblemBase *const _gc_feproblem
Reference to the FEProblemBase class.
Definition: GuaranteeConsumer.h:38
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::_elasticity_tensor_name
const std::string _elasticity_tensor_name
Name of the elasticity tensor material property.
Definition: ADComputeFiniteStrainElasticStress.h:48
ADComputeFiniteStrainElasticStress::_elastic_strain_old
const MaterialProperty< RankTwoTensor > & _elastic_strain_old
The old elastic strain is used to calculate the old stress in the case of variable elasticity tensors...
Definition: ADComputeFiniteStrainElasticStress.h:59
ADStressUpdateBase
ADStressUpdateBase is a material that is not called by MOOSE because of the compute=false flag set in...
Definition: ADComputeMultipleInelasticStress.h:28
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::_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::_internal_solve_full_iteration_history
const bool _internal_solve_full_iteration_history
Definition: ADComputeMultipleInelasticStress.h:129
GuaranteeConsumer::hasGuaranteedMaterialProperty
bool hasGuaranteedMaterialProperty(const MaterialPropertyName &prop, Guarantee guarantee)
Definition: GuaranteeConsumer.C:28
ADStressUpdateBase::requiresIsotropicTensor
virtual bool requiresIsotropicTensor()=0
Does the model require the elasticity tensor to be isotropic?
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
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
ADComputeMultiplePorousInelasticStress::_initial_porosity
const Real _initial_porosity
Initial porosity value. Must be greater than zero.
Definition: ADComputeMultiplePorousInelasticStress.h:44
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
RankTwoScalarTools::L2norm
T L2norm(const RankTwoTensorTempl< T > &r2tensor)
Definition: RankTwoScalarTools.h:98
ADComputeMultiplePorousInelasticStress::_porosity_old
const MaterialProperty< Real > & _porosity_old
Definition: ADComputeMultiplePorousInelasticStress.h:40
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
Guarantee::ISOTROPIC