https://mooseframework.inl.gov
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
ComputeMultipleInelasticCosseratStress Class Reference

ComputeMultipleInelasticStress computes the stress, the consistent tangent operator (or an approximation to it), and a decomposition of the strain into elastic and inelastic parts. More...

#include <ComputeMultipleInelasticCosseratStress.h>

Inheritance diagram for ComputeMultipleInelasticCosseratStress:
[legend]

Public Types

typedef DerivativeMaterialPropertyNameInterface::SymbolName SymbolName
 

Public Member Functions

 ComputeMultipleInelasticCosseratStress (const InputParameters &parameters)
 
virtual void initialSetup () override
 
const GenericMaterialProperty< U, is_ad > & getDefaultMaterialProperty (const std::string &name)
 
const GenericMaterialProperty< U, is_ad > & getDefaultMaterialPropertyByName (const std::string &name)
 
void validateDerivativeMaterialPropertyBase (const std::string &base)
 
const MaterialPropertyName derivativePropertyName (const MaterialPropertyName &base, const std::vector< SymbolName > &c) const
 
const MaterialPropertyName derivativePropertyNameFirst (const MaterialPropertyName &base, const SymbolName &c1) const
 
const MaterialPropertyName derivativePropertyNameSecond (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2) const
 
const MaterialPropertyName derivativePropertyNameThird (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2, const SymbolName &c3) const
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, unsigned int v2, unsigned int v3=libMesh::invalid_uint)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, unsigned int v1, unsigned int v2=libMesh::invalid_uint, unsigned int v3=libMesh::invalid_uint)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, unsigned int v2, unsigned int v3=libMesh::invalid_uint)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, unsigned int v1, unsigned int v2=libMesh::invalid_uint, unsigned int v3=libMesh::invalid_uint)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< VariableName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< SymbolName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< VariableName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< SymbolName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
void validateCoupling (const MaterialPropertyName &base, const std::vector< VariableName > &c, bool validate_aux=true)
 
void validateCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 
void validateCoupling (const MaterialPropertyName &base, const std::vector< VariableName > &c, bool validate_aux=true)
 
void validateCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 
void validateNonlinearCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 
void validateNonlinearCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 
const MaterialPropertyName propertyName (const MaterialPropertyName &base, const std::vector< SymbolName > &c) const
 
const MaterialPropertyName propertyName (const MaterialPropertyName &base, const std::vector< SymbolName > &c) const
 
const MaterialPropertyName propertyNameFirst (const MaterialPropertyName &base, const SymbolName &c1) const
 
const MaterialPropertyName propertyNameFirst (const MaterialPropertyName &base, const SymbolName &c1) const
 
const MaterialPropertyName propertyNameSecond (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2) const
 
const MaterialPropertyName propertyNameSecond (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2) const
 
const MaterialPropertyName propertyNameThird (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2, const SymbolName &c3) const
 
const MaterialPropertyName propertyNameThird (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2, const SymbolName &c3) const
 

Static Public Member Functions

static InputParameters validParams ()
 

Protected Types

enum class  TangentOperatorEnum { elastic , nonlinear }
 what sort of Tangent operator to calculate More...
 

Protected Member Functions

virtual void initQpStatefulProperties () override
 
virtual void computeQpStress () override
 Compute the stress and store it in the _stress material property for the current quadrature point.
 
virtual void computeQpJacobianMult () override
 Using _elasticity_tensor[_qp] and the consistent tangent operators, _consistent_tangent_operator[...] computed by the inelastic models, compute _Jacobian_mult[_qp].
 
virtual void computeAdmissibleState (unsigned model_number, RankTwoTensor &elastic_strain_increment, RankTwoTensor &inelastic_strain_increment, RankFourTensor &consistent_tangent_operator) override
 The current Cosserat models do not know they might be using the "host" version of the elasticity tensor during the return-map process.
 
virtual std::vector< MaterialName > getInelasticModelNames () override
 
virtual void updateQpState (RankTwoTensor &elastic_strain_increment, RankTwoTensor &combined_inelastic_strain_increment) override
 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, as well as the tangent operator (which is placed into _Jacobian_mult[_qp]).
 
virtual void computeQpStressIntermediateConfiguration ()
 Compute the stress for the current QP, but do not rotate tensors from the intermediate configuration to the new configuration.
 
virtual void finiteStrainRotation (const bool force_elasticity_rotation=false)
 Rotate _elastic_strain, _stress, _inelastic_strain, and _Jacobian_mult to the new configuration.
 
virtual void updateQpStateSingleModel (unsigned model_number, RankTwoTensor &elastic_strain_increment, RankTwoTensor &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, as well as the tangent operator (which is placed into _Jacobian_mult[_qp])
 
virtual void computeQpProperties () override
 
bool hasGuaranteedMaterialProperty (const MaterialPropertyName &prop, Guarantee guarantee)
 

Protected Attributes

const MaterialProperty< RankTwoTensor > & _curvature
 The Cosserat curvature strain.
 
const MaterialProperty< RankFourTensor > & _elastic_flexural_rigidity_tensor
 The Cosserat elastic flexural rigidity tensor.
 
MaterialProperty< RankTwoTensor > & _couple_stress
 the Cosserat couple-stress
 
const MaterialProperty< RankTwoTensor > & _couple_stress_old
 the old value of Cosserat couple-stress
 
MaterialProperty< RankFourTensor > & _Jacobian_mult_couple
 derivative of couple-stress w.r.t. curvature
 
const MaterialProperty< RankFourTensor > & _compliance
 Inverse of the elasticity tensor.
 
const bool _perform_finite_strain_rotations
 after updateQpState, rotate the stress, elastic_strain, inelastic_strain and Jacobian_mult using _rotation_increment
 
MaterialProperty< RankTwoTensor > & _inelastic_strain
 The sum of the inelastic strains that come from the plastic models.
 
const MaterialProperty< RankTwoTensor > & _inelastic_strain_old
 old value of inelastic strain
 
enum ComputeMultipleInelasticStressBase::TangentOperatorEnum _tangent_operator_type
 
unsigned _num_models
 number of plastic models
 
std::vector< bool > _tangent_computation_flag
 Flags to compute tangent during updateState call.
 
TangentCalculationMethod _tangent_calculation_method
 Calculation method for the tangent modulus.
 
std::vector< Real > _inelastic_weights
 _inelastic_strain = sum_i (_inelastic_weights_i * inelastic_strain_from_model_i)
 
std::vector< RankFourTensor_consistent_tangent_operator
 the consistent tangent operators computed by each plastic model
 
const bool _cycle_models
 whether to cycle through the models, using only one model per timestep
 
MaterialProperty< Real > & _material_timestep_limit
 
const RankFourTensor _identity_symmetric_four
 Rank four symmetric identity tensor.
 
std::vector< StressUpdateBase * > _models
 The user supplied list of inelastic models to use in the simulation.
 
bool _is_elasticity_tensor_guaranteed_isotropic
 is the elasticity tensor guaranteed to be isotropic?
 
bool _all_models_isotropic
 are all inelastic models inherently isotropic? (not the case for e.g. weak plane plasticity models)
 
DamageBaseTempl< false > * _damage_model
 Pointer to the damage model.
 
RankTwoTensor _undamaged_stress_old
 
const std::string _elasticity_tensor_name
 Name of the elasticity tensor material property.
 
const MaterialProperty< RankFourTensor > & _elasticity_tensor
 Elasticity tensor material property.
 
MaterialProperty< RankTwoTensor > & _rotation_total
 Rotation up to current step "n" to compute anisotropic elasticity tensor.
 
const MaterialProperty< RankTwoTensor > & _rotation_total_old
 Rotation up to "n - 1" (previous) step to compute anisotropic elasticity tensor.
 
const MaterialProperty< RankTwoTensor > & _rotation_increment
 Rotation increment material property.
 
const MaterialProperty< RankTwoTensor > & _stress_old
 Old state of the stress tensor material property.
 
const std::string _base_name
 Base name prepended to all material property names to allow for multi-material systems.
 
const MaterialProperty< RankTwoTensor > & _mechanical_strain
 Mechanical strain material property.
 
MaterialProperty< RankTwoTensor > & _stress
 Stress material property.
 
MaterialProperty< RankTwoTensor > & _elastic_strain
 Elastic strain material property.
 
const MaterialProperty< RankTwoTensor > & _extra_stress
 Extra stress tensor.
 
std::vector< const Function * > _initial_stress_fcn
 initial stress components
 
MaterialProperty< RankFourTensor > & _Jacobian_mult
 derivative of stress w.r.t. strain (_dstress_dstrain)
 
const unsigned int _max_iterations
 Input parameters associated with the recompute iteration to return the stress state to the yield surface.
 
const Real _relative_tolerance
 
const Real _absolute_tolerance
 
const bool _internal_solve_full_iteration_history
 
const MaterialProperty< RankTwoTensor > & _elastic_strain_old
 Strain tensors.
 
const MaterialProperty< RankTwoTensor > & _strain_increment
 

Private Member Functions

bool haveMaterialProperty (const std::string &prop_name)
 
std::vector< VariableName > buildVariableVector (const VariableName &c1, const VariableName &c2, const VariableName &c3)
 
void validateCouplingHelper (const MaterialPropertyName &base, const std::vector< VariableName > &c, const System &system, std::vector< VariableName > &missing)
 
bool isNotObjectVariable (const VariableName &name)
 

Private Attributes

FEProblemBase_dmi_fe_problem
 
const InputParameters_gc_params
 Parameters of the object with this interface.
 
FEProblemBase *const _gc_feproblem
 Reference to the FEProblemBase class.
 
BlockRestrictable *const _gc_block_restrict
 Access block restrictions of the object with this interface.
 

Detailed Description

ComputeMultipleInelasticStress computes the stress, the consistent tangent operator (or an approximation to it), and a decomposition of the strain into elastic and inelastic parts.

By default finite strains are assumed.

Cosserat couple-stress, and the cosserat version of the consistent tangent operator are also computed, but only using Cosserat elasticity.

The elastic strain is calculated by subtracting the computed inelastic strain increment tensor from the mechanical strain tensor. Mechanical strain is considered as the sum of the elastic and inelastic (plastic, creep, ect) strains.

This material is used to call the recompute iterative materials of a number of specified inelastic models that inherit from StressUpdateBase. It iterates over the specified inelastic models until the change in stress is within a user-specified tolerance, in order to produce the stress, the consistent tangent operator and the elastic and inelastic strains for the time increment.

Definition at line 33 of file ComputeMultipleInelasticCosseratStress.h.

Member Enumeration Documentation

◆ TangentOperatorEnum

enum class ComputeMultipleInelasticStressBase::TangentOperatorEnum
strongprotectedinherited

what sort of Tangent operator to calculate

Enumerator
elastic 
nonlinear 

Definition at line 139 of file ComputeMultipleInelasticStressBase.h.

Constructor & Destructor Documentation

◆ ComputeMultipleInelasticCosseratStress()

ComputeMultipleInelasticCosseratStress::ComputeMultipleInelasticCosseratStress ( const InputParameters parameters)

Definition at line 26 of file ComputeMultipleInelasticCosseratStress.C.

29 _curvature(getMaterialProperty<RankTwoTensor>("curvature")),
31 getMaterialProperty<RankFourTensor>("elastic_flexural_rigidity_tensor")),
32 _couple_stress(declareProperty<RankTwoTensor>("couple_stress")),
33 _couple_stress_old(getMaterialPropertyOld<RankTwoTensor>("couple_stress")),
34 _Jacobian_mult_couple(declareProperty<RankFourTensor>("couple_Jacobian_mult")),
35 _compliance(getMaterialProperty<RankFourTensor>(_base_name + "compliance_tensor"))
36{
37}
const std::string _base_name
Base name prepended to all material property names to allow for multi-material systems.
const MaterialProperty< RankFourTensor > & _elastic_flexural_rigidity_tensor
The Cosserat elastic flexural rigidity tensor.
const MaterialProperty< RankTwoTensor > & _couple_stress_old
the old value of Cosserat couple-stress
MaterialProperty< RankTwoTensor > & _couple_stress
the Cosserat couple-stress
const MaterialProperty< RankTwoTensor > & _curvature
The Cosserat curvature strain.
const MaterialProperty< RankFourTensor > & _compliance
Inverse of the elasticity tensor.
MaterialProperty< RankFourTensor > & _Jacobian_mult_couple
derivative of couple-stress w.r.t. curvature
ComputeMultipleInelasticStress computes the stress, the consistent tangent operator (or an approximat...

Member Function Documentation

◆ computeAdmissibleState()

void ComputeMultipleInelasticCosseratStress::computeAdmissibleState ( unsigned  model_number,
RankTwoTensor elastic_strain_increment,
RankTwoTensor inelastic_strain_increment,
RankFourTensor consistent_tangent_operator 
)
overrideprotectedvirtual

The current Cosserat models do not know they might be using the "host" version of the elasticity tensor during the return-map process.

Therefore, they compute the incorrect elastic/inelastic strain decomposition. Overriding this method allows the correction to be made.

Reimplemented from ComputeMultipleInelasticStressBase.

Definition at line 78 of file ComputeMultipleInelasticCosseratStress.C.

83{
84 const RankTwoTensor trial_stress = _stress[_qp];
85 const RankTwoTensor applied_strain_increment = elastic_strain_increment;
86
88 elastic_strain_increment,
89 inelastic_strain_increment,
90 consistent_tangent_operator);
91
92 inelastic_strain_increment = _compliance[_qp] * (trial_stress - _stress[_qp]);
93 elastic_strain_increment = applied_strain_increment - inelastic_strain_increment;
94}
MaterialProperty< RankTwoTensor > & _stress
Stress material property.
virtual void computeAdmissibleState(unsigned model_number, RankTwoTensor &elastic_strain_increment, RankTwoTensor &inelastic_strain_increment, RankFourTensor &consistent_tangent_operator)
Given a trial stress (_stress[_qp]) and a strain increment (elastic_strain_increment) let the model_n...

◆ computeQpJacobianMult()

void ComputeMultipleInelasticCosseratStress::computeQpJacobianMult ( )
overrideprotectedvirtual

Using _elasticity_tensor[_qp] and the consistent tangent operators, _consistent_tangent_operator[...] computed by the inelastic models, compute _Jacobian_mult[_qp].

Reimplemented from ComputeMultipleInelasticStressBase.

Definition at line 64 of file ComputeMultipleInelasticCosseratStress.C.

65{
68 else
69 {
71 for (unsigned i_rmm = 1; i_rmm < _num_models; ++i_rmm)
72 _Jacobian_mult[_qp] =
74 }
75}
const MaterialProperty< RankFourTensor > & _elasticity_tensor
Elasticity tensor material property.
MaterialProperty< RankFourTensor > & _Jacobian_mult
derivative of stress w.r.t. strain (_dstress_dstrain)
std::vector< RankFourTensor > _consistent_tangent_operator
the consistent tangent operators computed by each plastic model

◆ computeQpProperties()

void ComputeGeneralStressBase::computeQpProperties ( )
overrideprotectedvirtualinherited

Definition at line 44 of file ComputeGeneralStressBase.C.

45{
47
48 // Add in extra stress
49 _stress[_qp] += _extra_stress[_qp];
50}
const MaterialProperty< RankTwoTensor > & _extra_stress
Extra stress tensor.
virtual void computeQpStress()=0
Compute the stress and store it in the _stress material property for the current quadrature point.

◆ computeQpStress()

void ComputeMultipleInelasticCosseratStress::computeQpStress ( )
overrideprotectedvirtual

Compute the stress and store it in the _stress material property for the current quadrature point.

Reimplemented from ComputeMultipleInelasticStressBase.

Definition at line 47 of file ComputeMultipleInelasticCosseratStress.C.

48{
50
52 if (_fe_problem.currentlyComputingJacobian())
54
56 {
57 _couple_stress[_qp] =
58 _rotation_increment[_qp] * _couple_stress[_qp] * _rotation_increment[_qp].transpose();
60 }
61}
virtual void computeQpStress() override
Compute the stress and store it in the _stress material property for the current quadrature point.
const MaterialProperty< RankTwoTensor > & _rotation_increment
Rotation increment material property.
const bool _perform_finite_strain_rotations
after updateQpState, rotate the stress, elastic_strain, inelastic_strain and Jacobian_mult using _rot...

◆ computeQpStressIntermediateConfiguration()

void ComputeMultipleInelasticStressBase::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 227 of file ComputeMultipleInelasticStressBase.C.

228{
229 RankTwoTensor elastic_strain_increment;
230 RankTwoTensor combined_inelastic_strain_increment;
231
232 if (_num_models == 0)
233 {
235
236 // If the elasticity tensor values have changed and the tensor is isotropic,
237 // use the old strain to calculate the old stress
240 else
241 {
242 if (_damage_model)
244 else
246 }
247 if (_fe_problem.currentlyComputingJacobian())
249
250 _material_timestep_limit[_qp] = std::numeric_limits<Real>::max();
251 }
252 else
253 {
254 if (_num_models == 1 || _cycle_models)
256 elastic_strain_increment,
257 combined_inelastic_strain_increment);
258 else
259 updateQpState(elastic_strain_increment, combined_inelastic_strain_increment);
260
261 _elastic_strain[_qp] = _elastic_strain_old[_qp] + elastic_strain_increment;
262 _inelastic_strain[_qp] = _inelastic_strain_old[_qp] + combined_inelastic_strain_increment;
263 }
264}
const MaterialProperty< RankTwoTensor > & _stress_old
Old state of the stress tensor material property.
MaterialProperty< RankTwoTensor > & _elastic_strain
Elastic strain material property.
const MaterialProperty< RankTwoTensor > & _strain_increment
const bool _cycle_models
whether to cycle through the models, using only one model per timestep
virtual void updateQpStateSingleModel(unsigned model_number, RankTwoTensor &elastic_strain_increment, RankTwoTensor &combined_inelastic_strain_increment)
An optimised version of updateQpState that gets used when the number of plastic models is unity,...
DamageBaseTempl< false > * _damage_model
Pointer to the damage model.
MaterialProperty< RankTwoTensor > & _inelastic_strain
The sum of the inelastic strains that come from the plastic models.
virtual void updateQpState(RankTwoTensor &elastic_strain_increment, RankTwoTensor &combined_inelastic_strain_increment)=0
Given the _strain_increment[_qp], iterate over all of the user-specified recompute materials in order...
const MaterialProperty< RankTwoTensor > & _inelastic_strain_old
old value of inelastic strain
const MaterialProperty< RankTwoTensor > & _elastic_strain_old
Strain tensors.
bool _is_elasticity_tensor_guaranteed_isotropic
is the elasticity tensor guaranteed to be isotropic?

Referenced by ComputeMultipleInelasticStressBase::computeQpStress(), and ComputeSmearedCrackingStress::computeQpStress().

◆ finiteStrainRotation()

void ComputeMultipleInelasticStressBase::finiteStrainRotation ( const bool  force_elasticity_rotation = false)
protectedvirtualinherited

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

Parameters
force_elasticity_rotationForce the elasticity tensor to be rotated, even if it is not deemed necessary.

Definition at line 267 of file ComputeMultipleInelasticStressBase.C.

268{
269 _elastic_strain[_qp] =
270 _rotation_increment[_qp] * _elastic_strain[_qp] * _rotation_increment[_qp].transpose();
271 _stress[_qp] = _rotation_increment[_qp] * _stress[_qp] * _rotation_increment[_qp].transpose();
272 _inelastic_strain[_qp] =
273 _rotation_increment[_qp] * _inelastic_strain[_qp] * _rotation_increment[_qp].transpose();
274
275 if (force_elasticity_rotation ||
279 _Jacobian_mult[_qp].rotate(_rotation_increment[_qp]);
280}
TangentCalculationMethod _tangent_calculation_method
Calculation method for the tangent modulus.
bool _all_models_isotropic
are all inelastic models inherently isotropic? (not the case for e.g. weak plane plasticity models)

Referenced by ComputeMultipleInelasticStressBase::computeQpStress(), and ComputeSmearedCrackingStress::computeQpStress().

◆ getInelasticModelNames()

std::vector< MaterialName > ComputeMultipleInelasticStress::getInelasticModelNames ( )
overrideprotectedvirtualinherited

Implements ComputeMultipleInelasticStressBase.

Definition at line 36 of file ComputeMultipleInelasticStress.C.

37{
38 return getParam<std::vector<MaterialName>>("inelastic_models");
39}

◆ hasGuaranteedMaterialProperty()

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

Definition at line 28 of file GuaranteeConsumer.C.

30{
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
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}
void mooseError(Args &&... args)
virtual const std::set< SubdomainID > & blockIDs() const
virtual bool blockRestricted() const
const MaterialWarehouse & getMaterialWarehouse() const
virtual MooseMesh & mesh() override
virtual bool startedInitialSetup()
BlockRestrictable *const _gc_block_restrict
Access block restrictions of the object with this interface.
FEProblemBase *const _gc_feproblem
Reference to the FEProblemBase class.
Add-on class that provides the functionality to issue guarantees for declared material properties.
const std::set< SubdomainID > & meshSubdomains() const

Referenced by ComputeFiniteStrainElasticStress::computeQpStress(), LagrangianStressDivergenceBase::initialSetup(), ADComputeMultipleInelasticStress::initialSetup(), ADComputeSmearedCrackingStress::initialSetup(), ComputeLinearElasticPFFractureStress::initialSetup(), ComputeMultipleInelasticStressBase::initialSetup(), ComputeSmearedCrackingStress::initialSetup(), ComputeLagrangianStressBase::initialSetup(), ComputeStVenantKirchhoffStress::initialSetup(), and CriticalTimeStep::initialSetup().

◆ initialSetup()

void ComputeMultipleInelasticStressBase::initialSetup ( )
overridevirtualinherited

Reimplemented in ComputeCreepPlasticityStress, and ComputeSmearedCrackingStress.

Definition at line 100 of file ComputeMultipleInelasticStressBase.C.

101{
102 _damage_model = isParamValid("damage_model")
103 ? dynamic_cast<DamageBaseTempl<false> *>(&getMaterial("damage_model"))
104 : nullptr;
105
108
109 std::vector<MaterialName> models = getInelasticModelNames();
110
111 _num_models = models.size();
114
115 _inelastic_weights = isParamValid("combined_inelastic_strain_weights")
116 ? getParam<std::vector<Real>>("combined_inelastic_strain_weights")
117 : std::vector<Real>(_num_models, 1.0);
118
119 if (_inelastic_weights.size() != _num_models)
120 mooseError("ComputeMultipleInelasticStressBase: combined_inelastic_strain_weights must contain "
121 "the same "
122 "number of entries as inelastic_models ",
123 _inelastic_weights.size(),
124 " ",
126
127 for (const auto i : make_range(_num_models))
128 {
129 StressUpdateBase * rrr = dynamic_cast<StressUpdateBase *>(&getMaterialByName(models[i]));
130
131 if (rrr)
132 {
133 _models.push_back(rrr);
136 mooseError("Model " + models[i] +
137 " requires an isotropic elasticity tensor, but the one supplied is not "
138 "guaranteed isotropic");
139 }
140 else
141 mooseError("Model " + models[i] +
142 " is not compatible with ComputeMultipleInelasticStressBase");
143 }
144
145 // Check if tangent calculation methods are consistent. If all models have
146 // TangentOperatorEnum::ELASTIC or tangent_operator is set by the user as elasic, then the tangent
147 // is never calculated: J_tot = C. If PARTIAL and NONE models are present, utilize PARTIAL
148 // formulation: J_tot = (I + J_1 + ... J_N)^-1 C. If FULL and NONE models are present, utilize
149 // FULL formulation: J_tot = J_1 * C^-1 * J_2 * C^-1 * ... J_N * C. If PARTIAL and FULL models are
150 // present, error out.
151
153 {
154 bool full_present = false;
155 bool partial_present = false;
156 for (const auto i : make_range(_num_models))
157 {
158 if (_models[i]->getTangentCalculationMethod() == TangentCalculationMethod::FULL)
159 {
160 full_present = true;
163 }
164 else if (_models[i]->getTangentCalculationMethod() == TangentCalculationMethod::PARTIAL)
165 {
166 partial_present = true;
169 }
170 }
171 if (full_present && partial_present)
172 mooseError("In ",
173 _name,
174 ": Models that calculate the full tangent operator and the partial tangent "
175 "operator are being combined. Either set tangent_operator to elastic, implement "
176 "the corrent tangent formulations, or use different models.");
177 }
178
179 if (isParamValid("damage_model") && !_damage_model)
180 paramError("damage_model",
181 "Damage Model " + _damage_model->name() +
182 " is not compatible with ComputeMultipleInelasticStressBase");
183
184 // This check prevents the hierarchy from silently skipping substepping without informing the user
185 for (const auto model_number : index_range(_models))
186 {
187 const bool use_substep = _models[model_number]->substeppingCapabilityRequested();
188 if (use_substep && !_models[model_number]->substeppingCapabilityEnabled())
189 {
190 std::stringstream error_message;
191 error_message << "Usage of substepping has been requested, but the inelastic model "
192 << _models[model_number]->name() << " does not implement substepping yet.";
193 mooseError(error_message.str());
194 }
195 }
196}
const std::string _elasticity_tensor_name
Name of the elasticity tensor material property.
std::vector< Real > _inelastic_weights
_inelastic_strain = sum_i (_inelastic_weights_i * inelastic_strain_from_model_i)
std::vector< StressUpdateBase * > _models
The user supplied list of inelastic models to use in the simulation.
virtual std::vector< MaterialName > getInelasticModelNames()=0
std::vector< bool > _tangent_computation_flag
Flags to compute tangent during updateState call.
DamageBase is a base class for damage models, which modify the stress tensor computed by another mode...
Definition DamageBase.h:26
bool hasGuaranteedMaterialProperty(const MaterialPropertyName &prop, Guarantee guarantee)
const std::string & name() const
StressUpdateBase is a material that is not called by MOOSE because of the compute=false flag set in t...
virtual bool requiresIsotropicTensor()=0
Does the model require the elasticity tensor to be isotropic?
virtual bool isIsotropic()
Is the implmented model isotropic? The safe default is 'false'.
auto index_range(const T &sizable)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
IntRange< T > make_range(T beg, T end)

Referenced by ComputeCreepPlasticityStress::initialSetup().

◆ initQpStatefulProperties()

void ComputeMultipleInelasticCosseratStress::initQpStatefulProperties ( )
overrideprotectedvirtual

◆ updateQpState()

void ComputeMultipleInelasticStress::updateQpState ( RankTwoTensor elastic_strain_increment,
RankTwoTensor combined_inelastic_strain_increment 
)
overrideprotectedvirtualinherited

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, as well as the tangent operator (which is placed into _Jacobian_mult[_qp]).

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

Implements ComputeMultipleInelasticStressBase.

Definition at line 42 of file ComputeMultipleInelasticStress.C.

44{
46 {
47 _console << std::endl
48 << "iteration output for ComputeMultipleInelasticStress solve:"
49 << " time=" << _t << " int_pt=" << _qp << std::endl;
50 }
51 Real l2norm_delta_stress;
52 Real first_l2norm_delta_stress = 1.0;
53 unsigned int counter = 0;
54
55 std::vector<RankTwoTensor> inelastic_strain_increment;
56 inelastic_strain_increment.resize(_num_models);
57
58 for (const auto i_rmm : index_range(_models))
59 inelastic_strain_increment[i_rmm].zero();
60
61 RankTwoTensor stress_max, stress_min;
62
63 do
64 {
65 for (const auto i_rmm : index_range(_models))
66 {
67 _models[i_rmm]->setQp(_qp);
68
69 // initially assume the strain is completely elastic
70 elastic_strain_increment = _strain_increment[_qp];
71 // and subtract off all inelastic strain increments calculated so far
72 // except the one that we're about to calculate
73 for (const auto j_rmm : make_range(_num_models))
74 if (i_rmm != j_rmm)
75 elastic_strain_increment -= inelastic_strain_increment[j_rmm];
76
77 // form the trial stress, with the check for changed elasticity constants
79 _stress[_qp] =
80 _elasticity_tensor[_qp] * (_elastic_strain_old[_qp] + elastic_strain_increment);
81 else
82 {
83 if (_damage_model)
84 _stress[_qp] = _undamaged_stress_old + _elasticity_tensor[_qp] * elastic_strain_increment;
85 else
86 _stress[_qp] = _stress_old[_qp] + _elasticity_tensor[_qp] * elastic_strain_increment;
87 }
88
89 // given a trial stress (_stress[_qp]) and a strain increment (elastic_strain_increment)
90 // let the i^th model produce an admissible stress (as _stress[_qp]), and decompose
91 // the strain increment into an elastic part (elastic_strain_increment) and an
92 // inelastic part (inelastic_strain_increment[i_rmm])
94 elastic_strain_increment,
95 inelastic_strain_increment[i_rmm],
97
98 if (i_rmm == 0)
99 {
100 stress_max = _stress[_qp];
101 stress_min = _stress[_qp];
102 }
103 else
104 {
105 for (const auto i : make_range(Moose::dim))
106 for (const auto j : make_range(Moose::dim))
107 if (_stress[_qp](i, j) > stress_max(i, j))
108 stress_max(i, j) = _stress[_qp](i, j);
109 else if (stress_min(i, j) > _stress[_qp](i, j))
110 stress_min(i, j) = _stress[_qp](i, j);
111 }
112 }
113
114 // now check convergence in the stress:
115 // once the change in stress is within tolerance after each recompute material
116 // consider the stress to be converged
117 l2norm_delta_stress = (stress_max - stress_min).L2norm();
118 if (counter == 0 && l2norm_delta_stress > 0.0)
119 first_l2norm_delta_stress = l2norm_delta_stress;
120
122 {
123 _console << "stress iteration number = " << counter << "\n"
124 << " relative l2 norm delta stress = "
125 << (0 == first_l2norm_delta_stress ? 0
126 : l2norm_delta_stress / first_l2norm_delta_stress)
127 << "\n"
128 << " stress convergence relative tolerance = " << _relative_tolerance << "\n"
129 << " absolute l2 norm delta stress = " << l2norm_delta_stress << "\n"
130 << " stress convergence absolute tolerance = " << _absolute_tolerance << std::endl;
131 }
132 ++counter;
133 } while (counter < _max_iterations && l2norm_delta_stress > _absolute_tolerance &&
134 (l2norm_delta_stress / first_l2norm_delta_stress) > _relative_tolerance &&
135 _num_models != 1);
136
137 if (counter == _max_iterations && l2norm_delta_stress > _absolute_tolerance &&
138 (l2norm_delta_stress / first_l2norm_delta_stress) > _relative_tolerance)
139 throw MooseException("Max stress iteration hit during ComputeMultipleInelasticStress solve!");
140
141 combined_inelastic_strain_increment.zero();
142 for (const auto i_rmm : make_range(_num_models))
143 combined_inelastic_strain_increment +=
144 _inelastic_weights[i_rmm] * inelastic_strain_increment[i_rmm];
145
146 if (_fe_problem.currentlyComputingJacobian())
148
149 _material_timestep_limit[_qp] = 0.0;
150 for (const auto i_rmm : make_range(_num_models))
151 _material_timestep_limit[_qp] += 1.0 / _models[i_rmm]->computeTimeStepLimit();
152
153 if (MooseUtils::absoluteFuzzyEqual(_material_timestep_limit[_qp], 0.0))
154 _material_timestep_limit[_qp] = std::numeric_limits<Real>::max();
155 else
157}
for(PetscInt i=0;i< nvars;++i)
unsigned int dim
const unsigned int _max_iterations
Input parameters associated with the recompute iteration to return the stress state to the yield surf...
virtual void computeQpJacobianMult()
Using _elasticity_tensor[_qp] and the consistent tangent operators, _consistent_tangent_operator[....
T L2norm(const RankTwoTensorTempl< T > &r2tensor)
if(subdm)
const Number zero

◆ updateQpStateSingleModel()

void ComputeMultipleInelasticStressBase::updateQpStateSingleModel ( unsigned  model_number,
RankTwoTensor elastic_strain_increment,
RankTwoTensor 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, as well as the tangent operator (which is placed into _Jacobian_mult[_qp])

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 305 of file ComputeMultipleInelasticStressBase.C.

309{
310 for (auto model : _models)
311 model->setQp(_qp);
312
313 elastic_strain_increment = _strain_increment[_qp];
314
315 // If the elasticity tensor values have changed and the tensor is isotropic,
316 // use the old strain to calculate the old stress
318 _stress[_qp] = _elasticity_tensor[_qp] * (_elastic_strain_old[_qp] + elastic_strain_increment);
319 else
320 {
321 if (_damage_model)
322 _stress[_qp] = _undamaged_stress_old + _elasticity_tensor[_qp] * elastic_strain_increment;
323 else
324 _stress[_qp] = _stress_old[_qp] + _elasticity_tensor[_qp] * elastic_strain_increment;
325 }
326
327 computeAdmissibleState(model_number,
328 elastic_strain_increment,
329 combined_inelastic_strain_increment,
331
332 if (_fe_problem.currentlyComputingJacobian())
333 {
337 {
339 mooseAssert(A.isSymmetric(), "Tangent operator isn't symmetric");
340 _Jacobian_mult[_qp] = A.invSymm() * _elasticity_tensor[_qp];
341 }
342 else
344 }
345
346 _material_timestep_limit[_qp] = _models[0]->computeTimeStepLimit();
347
348 /* propagate internal variables, etc, to this timestep for those inelastic models where
349 * "updateState" is not called */
350 for (const auto i_rmm : make_range(_num_models))
351 if (i_rmm != model_number)
352 _models[i_rmm]->propagateQpStatefulProperties();
353}
const PertinentGeochemicalSystem model(database, {"H2O", "H+", "HCO3-", "O2(aq)", "Ca++", ">(s)FeOH", "radius_neg1", "radius_neg1.5"}, {"Calcite"}, {}, {"Calcite_asdf"}, {"CH4(aq)"}, {">(s)FeOCa+"}, "O2(aq)", "e-")
const RankFourTensor _identity_symmetric_four
Rank four symmetric identity tensor.

Referenced by ComputeMultipleInelasticStressBase::computeQpStressIntermediateConfiguration().

◆ validParams()

InputParameters ComputeMultipleInelasticCosseratStress::validParams ( )
static

Definition at line 15 of file ComputeMultipleInelasticCosseratStress.C.

16{
18 params.addClassDescription("Compute state (stress and other quantities such as plastic "
19 "strains and internal parameters) using an iterative process, as well "
20 "as Cosserat versions of these quantities. Only elasticity is "
21 "currently implemented for the Cosserat versions. "
22 "Combinations of creep models and plastic models may be used");
23 return params;
24}
void addClassDescription(const std::string &doc_string)

Member Data Documentation

◆ _absolute_tolerance

const Real ComputeMultipleInelasticStressBase::_absolute_tolerance
protectedinherited

◆ _all_models_isotropic

bool ComputeMultipleInelasticStressBase::_all_models_isotropic
protectedinherited

are all inelastic models inherently isotropic? (not the case for e.g. weak plane plasticity models)

Definition at line 179 of file ComputeMultipleInelasticStressBase.h.

Referenced by ComputeMultipleInelasticStressBase::finiteStrainRotation(), and ComputeMultipleInelasticStressBase::initialSetup().

◆ _base_name

const std::string ComputeGeneralStressBase::_base_name
protectedinherited

Base name prepended to all material property names to allow for multi-material systems.

Definition at line 43 of file ComputeGeneralStressBase.h.

Referenced by ComputeCosseratLinearElasticStress::initialSetup(), and ComputeLinearElasticStress::initialSetup().

◆ _compliance

const MaterialProperty<RankFourTensor>& ComputeMultipleInelasticCosseratStress::_compliance
protected

Inverse of the elasticity tensor.

Definition at line 72 of file ComputeMultipleInelasticCosseratStress.h.

Referenced by computeAdmissibleState(), and computeQpJacobianMult().

◆ _consistent_tangent_operator

std::vector<RankFourTensor> ComputeMultipleInelasticStressBase::_consistent_tangent_operator
protectedinherited

◆ _couple_stress

MaterialProperty<RankTwoTensor>& ComputeMultipleInelasticCosseratStress::_couple_stress
protected

the Cosserat couple-stress

Definition at line 63 of file ComputeMultipleInelasticCosseratStress.h.

Referenced by computeQpStress(), and initQpStatefulProperties().

◆ _couple_stress_old

const MaterialProperty<RankTwoTensor>& ComputeMultipleInelasticCosseratStress::_couple_stress_old
protected

the old value of Cosserat couple-stress

Definition at line 66 of file ComputeMultipleInelasticCosseratStress.h.

◆ _curvature

const MaterialProperty<RankTwoTensor>& ComputeMultipleInelasticCosseratStress::_curvature
protected

The Cosserat curvature strain.

Definition at line 57 of file ComputeMultipleInelasticCosseratStress.h.

Referenced by computeQpStress().

◆ _cycle_models

const bool ComputeMultipleInelasticStressBase::_cycle_models
protectedinherited

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

Definition at line 157 of file ComputeMultipleInelasticStressBase.h.

Referenced by ComputeMultipleInelasticStressBase::computeQpStressIntermediateConfiguration().

◆ _damage_model

DamageBaseTempl<false>* ComputeMultipleInelasticStressBase::_damage_model
protectedinherited

◆ _elastic_flexural_rigidity_tensor

const MaterialProperty<RankFourTensor>& ComputeMultipleInelasticCosseratStress::_elastic_flexural_rigidity_tensor
protected

The Cosserat elastic flexural rigidity tensor.

Definition at line 60 of file ComputeMultipleInelasticCosseratStress.h.

Referenced by computeQpStress().

◆ _elastic_strain

MaterialProperty<RankTwoTensor>& ComputeGeneralStressBase::_elastic_strain
protectedinherited

◆ _elastic_strain_old

const MaterialProperty<RankTwoTensor>& ComputeMultipleInelasticStressBase::_elastic_strain_old
protectedinherited

◆ _elasticity_tensor

const MaterialProperty<RankFourTensor>& ComputeFiniteStrainElasticStress::_elasticity_tensor
protectedinherited

◆ _elasticity_tensor_name

const std::string ComputeFiniteStrainElasticStress::_elasticity_tensor_name
protectedinherited

◆ _extra_stress

const MaterialProperty<RankTwoTensor>& ComputeGeneralStressBase::_extra_stress
protectedinherited

Extra stress tensor.

Definition at line 53 of file ComputeGeneralStressBase.h.

Referenced by ComputeGeneralStressBase::computeQpProperties().

◆ _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.

◆ _identity_symmetric_four

const RankFourTensor ComputeMultipleInelasticStressBase::_identity_symmetric_four
protectedinherited

◆ _inelastic_strain

MaterialProperty<RankTwoTensor>& ComputeMultipleInelasticStressBase::_inelastic_strain
protectedinherited

◆ _inelastic_strain_old

const MaterialProperty<RankTwoTensor>& ComputeMultipleInelasticStressBase::_inelastic_strain_old
protectedinherited

◆ _inelastic_weights

std::vector<Real> ComputeMultipleInelasticStressBase::_inelastic_weights
protectedinherited

_inelastic_strain = sum_i (_inelastic_weights_i * inelastic_strain_from_model_i)

Definition at line 151 of file ComputeMultipleInelasticStressBase.h.

Referenced by ComputeMultipleInelasticStressBase::initialSetup(), and ComputeMultipleInelasticStress::updateQpState().

◆ _initial_stress_fcn

std::vector<const Function *> ComputeGeneralStressBase::_initial_stress_fcn
protectedinherited

initial stress components

Definition at line 56 of file ComputeGeneralStressBase.h.

◆ _internal_solve_full_iteration_history

const bool ComputeMultipleInelasticStressBase::_internal_solve_full_iteration_history
protectedinherited

◆ _is_elasticity_tensor_guaranteed_isotropic

bool ComputeMultipleInelasticStressBase::_is_elasticity_tensor_guaranteed_isotropic
protectedinherited

◆ _Jacobian_mult

MaterialProperty<RankFourTensor>& ComputeGeneralStressBase::_Jacobian_mult
protectedinherited

◆ _Jacobian_mult_couple

MaterialProperty<RankFourTensor>& ComputeMultipleInelasticCosseratStress::_Jacobian_mult_couple
protected

derivative of couple-stress w.r.t. curvature

Definition at line 69 of file ComputeMultipleInelasticCosseratStress.h.

Referenced by computeQpStress().

◆ _material_timestep_limit

MaterialProperty<Real>& ComputeMultipleInelasticStressBase::_material_timestep_limit
protectedinherited

◆ _max_iterations

const unsigned int ComputeMultipleInelasticStressBase::_max_iterations
protectedinherited

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

Definition at line 118 of file ComputeMultipleInelasticStressBase.h.

Referenced by ComputeCreepPlasticityStress::updateQpState(), and ComputeMultipleInelasticStress::updateQpState().

◆ _mechanical_strain

const MaterialProperty<RankTwoTensor>& ComputeGeneralStressBase::_mechanical_strain
protectedinherited

◆ _models

std::vector<StressUpdateBase *> ComputeMultipleInelasticStressBase::_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 173 of file ComputeMultipleInelasticStressBase.h.

Referenced by ComputeMultipleInelasticStressBase::computeAdmissibleState(), ComputeSmearedCrackingStress::computeQpStress(), ComputeCreepPlasticityStress::initialSetup(), ComputeMultipleInelasticStressBase::initialSetup(), ComputeCreepPlasticityStress::updateQpState(), ComputeMultipleInelasticStress::updateQpState(), and ComputeMultipleInelasticStressBase::updateQpStateSingleModel().

◆ _num_models

unsigned ComputeMultipleInelasticStressBase::_num_models
protectedinherited

◆ _perform_finite_strain_rotations

const bool ComputeMultipleInelasticStressBase::_perform_finite_strain_rotations
protectedinherited

◆ _relative_tolerance

const Real ComputeMultipleInelasticStressBase::_relative_tolerance
protectedinherited

◆ _rotation_increment

const MaterialProperty<RankTwoTensor>& ComputeFiniteStrainElasticStress::_rotation_increment
protectedinherited

◆ _rotation_total

MaterialProperty<RankTwoTensor>& ComputeFiniteStrainElasticStress::_rotation_total
protectedinherited

Rotation up to current step "n" to compute anisotropic elasticity tensor.

Definition at line 37 of file ComputeFiniteStrainElasticStress.h.

Referenced by ComputeFiniteStrainElasticStress::computeQpStress(), and ComputeFiniteStrainElasticStress::initQpStatefulProperties().

◆ _rotation_total_old

const MaterialProperty<RankTwoTensor>& ComputeFiniteStrainElasticStress::_rotation_total_old
protectedinherited

Rotation up to "n - 1" (previous) step to compute anisotropic elasticity tensor.

Definition at line 39 of file ComputeFiniteStrainElasticStress.h.

Referenced by ComputeFiniteStrainElasticStress::computeQpStress().

◆ _strain_increment

const MaterialProperty<RankTwoTensor>& ComputeMultipleInelasticStressBase::_strain_increment
protectedinherited

◆ _stress

MaterialProperty<RankTwoTensor>& ComputeGeneralStressBase::_stress
protectedinherited

Stress material property.

Definition at line 48 of file ComputeGeneralStressBase.h.

Referenced by ComputeMultipleInelasticStressBase::computeAdmissibleState(), computeAdmissibleState(), ComputeGeneralStressBase::computeQpProperties(), ComputeMultiPlasticityStress::computeQpStress(), ComputeStrainIncrementBasedStress::computeQpStress(), FiniteStrainPlasticMaterial::computeQpStress(), AbaqusUMATStress::computeQpStress(), ComputeCosseratLinearElasticStress::computeQpStress(), ComputeFiniteStrainElasticStress::computeQpStress(), ComputeLinearElasticPFFractureStress::computeQpStress(), ComputeLinearElasticStress::computeQpStress(), ComputeLinearViscoelasticStress::computeQpStress(), ComputeMultipleInelasticStressBase::computeQpStress(), ComputeSmearedCrackingStress::computeQpStress(), ComputeMultipleCrystalPlasticityStress::computeQpStress(), ComputeMultipleInelasticStressBase::computeQpStressIntermediateConfiguration(), ComputeLinearElasticPFFractureStress::computeStrainSpectral(), ComputeLinearElasticPFFractureStress::computeStrainVolDev(), ComputeLinearElasticPFFractureStress::computeStressSpectral(), ComputeCreepPlasticityStress::computeTangentOperators(), ComputeMultipleInelasticStressBase::finiteStrainRotation(), FiniteStrainCrystalPlasticity::initQpStatefulProperties(), FiniteStrainUObasedCP::initQpStatefulProperties(), FiniteStrainHyperElasticViscoPlastic::initQpStatefulProperties(), ComputeGeneralStressBase::initQpStatefulProperties(), ComputeMultiPlasticityStress::postReturnMap(), FiniteStrainCrystalPlasticity::postSolveQp(), FiniteStrainUObasedCP::postSolveQp(), FiniteStrainHyperElasticViscoPlastic::postSolveQp(), ComputeSmearedCrackingStress::updateCrackingStateAndStress(), ComputeCreepPlasticityStress::updateQpState(), ComputeMultipleInelasticStress::updateQpState(), and ComputeMultipleInelasticStressBase::updateQpStateSingleModel().

◆ _stress_old

const MaterialProperty<RankTwoTensor>& ComputeFiniteStrainElasticStress::_stress_old
protectedinherited

◆ _tangent_calculation_method

TangentCalculationMethod ComputeMultipleInelasticStressBase::_tangent_calculation_method
protectedinherited

◆ _tangent_computation_flag

std::vector<bool> ComputeMultipleInelasticStressBase::_tangent_computation_flag
protectedinherited

Flags to compute tangent during updateState call.

Definition at line 145 of file ComputeMultipleInelasticStressBase.h.

Referenced by ComputeMultipleInelasticStressBase::computeAdmissibleState(), and ComputeMultipleInelasticStressBase::initialSetup().

◆ _tangent_operator_type

enum ComputeMultipleInelasticStressBase::TangentOperatorEnum ComputeMultipleInelasticStressBase::_tangent_operator_type
protectedinherited

◆ _undamaged_stress_old

RankTwoTensor ComputeMultipleInelasticStressBase::_undamaged_stress_old
protectedinherited

The documentation for this class was generated from the following files: