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

This class uses the stress update material in a radial return isotropic creep model. More...

#include <ADPowerLawCreepStressUpdate.h>

Inheritance diagram for ADPowerLawCreepStressUpdate< compute_stage >:
[legend]

Public Member Functions

 ADPowerLawCreepStressUpdate (const InputParameters &parameters)
 
virtual void updateState (ADRankTwoTensor &strain_increment, ADRankTwoTensor &inelastic_strain_increment, const ADRankTwoTensor &rotation_increment, ADRankTwoTensor &stress_new, const RankTwoTensor &stress_old, const ADRankFourTensor &elasticity_tensor, const RankTwoTensor &elastic_strain_old) override
 A radial return (J2) mapping method is performed with return mapping iterations. More...
 
virtual Real computeReferenceResidual (const ADReal &effective_trial_stress, const ADReal &scalar_effective_inelastic_strain) override
 Compute a reference quantity to be used for checking relative convergence. More...
 
virtual ADReal minimumPermissibleValue (const ADReal &) const override
 Compute the minimum permissible value of the scalar. More...
 
virtual ADReal maximumPermissibleValue (const ADReal &effective_trial_stress) const override
 Compute the maximum permissible value of the scalar. More...
 
virtual Real computeTimeStepLimit () override
 Compute the limiting value of the time step for this material. More...
 
bool requiresIsotropicTensor () override
 Does the model require the elasticity tensor to be isotropic? More...
 
void setQp (unsigned int qp)
 Sets the value of the global variable _qp for inheriting classes. More...
 
void resetQpProperties () final
 Retained as empty methods to avoid a warning from Material.C in framework. These methods are unused in all inheriting classes and should not be overwritten. More...
 
void resetProperties () final
 

Protected Member Functions

virtual void computeStressInitialize (const ADReal &effective_trial_stress, const ADRankFourTensor &elasticity_tensor) override
 Perform any necessary initialization before return mapping iterations. More...
 
virtual ADReal computeResidual (const ADReal &effective_trial_stress, const ADReal &scalar) override
 Compute the residual for a predicted value of the scalar. More...
 
virtual ADReal computeDerivative (const ADReal &effective_trial_stress, const ADReal &scalar) override
 Compute the derivative of the residual as a function of the scalar variable. More...
 
virtual void initQpStatefulProperties () override
 
virtual void propagateQpStatefulProperties () override
 If updateState is not called during a timestep, this will be. More...
 
virtual void computeStressFinalize (const ADRankTwoTensor &plastic_strain_increment) override
 Perform any necessary steps to finalize state after return mapping iterations. More...
 
 ADMaterialProperty (RankTwoTensor) &_creep_strain
 Creep strain material property. More...
 
 ADMaterialProperty (Real) &_effective_inelastic_strain
 
void propagateQpStatefulPropertiesRadialReturn ()
 Propagate the properties pertaining to this intermediate class. More...
 
void outputIterationSummary (std::stringstream *iter_output, const unsigned int total_it) override
 Output summary information for the convergence history of the model. More...
 
void returnMappingSolve (const ADReal &effective_trial_stress, ADReal &scalar, const ConsoleStream &console)
 Perform the return mapping iterations. More...
 
virtual ADReal initialGuess (const ADReal &)
 Compute an initial guess for the value of the scalar. More...
 
virtual void iterationFinalize (ADReal)
 Finalize internal state variables for a model for a given iteration. More...
 

Protected Attributes

const ADVariableValue * _temperature
 Temperature variable value. More...
 
const Real _coefficient
 Leading coefficient. More...
 
const Real _n_exponent
 Exponent on the effective stress. More...
 
const Real _m_exponent
 Exponent on time. More...
 
const Real _activation_energy
 Activation energy for exp term. More...
 
const Real _gas_constant
 Gas constant for exp term. More...
 
const Real _start_time
 Simulation start time. More...
 
ADReal _exponential
 Exponential calculated from activiaction, gas constant, and temperature. More...
 
Real _exp_time
 Exponential calculated from current time. More...
 
 usingRadialReturnCreepStressUpdateBaseMembers
 
const MaterialProperty< RankTwoTensor > & _creep_strain_old
 
 usingRadialReturnStressUpdateMembers
 
ADReal _three_shear_modulus
 3 * shear modulus More...
 
const MaterialProperty< Real > & _effective_inelastic_strain_old
 
Real _max_inelastic_increment
 
 usingStressUpdateBaseMembers
 
 usingSingleVariableReturnMappingSolutionMembers
 
const std::string _base_name
 Name used as a prefix for all material properties related to the stress update model. More...
 
 usingMaterialMembers
 
bool _check_range
 Whether to check to see whether iterative solution is within admissible range, and set within that range if outside. More...
 
bool _line_search
 Whether to use line searches to improve convergence. More...
 
bool _bracket_solution
 Whether to save upper and lower bounds of root for scalar, and set solution to the midpoint between those bounds if outside them. More...
 

Detailed Description

template<ComputeStage compute_stage>
class ADPowerLawCreepStressUpdate< compute_stage >

This class uses the stress update material in a radial return isotropic creep model.

This class is one of the basic radial return constitutive models; more complex constitutive models combine creep and plasticity.

This class inherits from RadialReturnCreepStressUpdateBase and must be used in conjunction with ComputeMultipleInelasticStress. This class calculates creep based on stress, temperature, and time effects. This class also computes the creep strain as a stateful material property.

Definition at line 15 of file ADPowerLawCreepStressUpdate.h.

Constructor & Destructor Documentation

◆ ADPowerLawCreepStressUpdate()

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

Definition at line 33 of file ADPowerLawCreepStressUpdate.C.

36  _temperature(isParamValid("temperature") ? &adCoupledValue("temperature") : nullptr),
37  _coefficient(adGetParam<Real>("coefficient")),
38  _n_exponent(adGetParam<Real>("n_exponent")),
39  _m_exponent(adGetParam<Real>("m_exponent")),
40  _activation_energy(adGetParam<Real>("activation_energy")),
41  _gas_constant(adGetParam<Real>("gas_constant")),
42  _start_time(adGetParam<Real>("start_time")),
43  _exponential(1.0)
44 {
45  if (_start_time < this->_app.getStartTime() && (std::trunc(_m_exponent) != _m_exponent))
46  paramError("start_time",
47  "Start time must be equal to or greater than the Executioner start_time if a "
48  "non-integer m_exponent is used");
49 }
This class provides baseline functionallity for creep models based on the stress update material in a...
const Real _m_exponent
Exponent on time.
const Real _n_exponent
Exponent on the effective stress.
const Real _coefficient
Leading coefficient.
const ADVariableValue * _temperature
Temperature variable value.
const Real _start_time
Simulation start time.
ADReal _exponential
Exponential calculated from activiaction, gas constant, and temperature.
const Real _activation_energy
Activation energy for exp term.
const Real _gas_constant
Gas constant for exp term.

Member Function Documentation

◆ ADMaterialProperty() [1/2]

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

Creep strain material property.

◆ ADMaterialProperty() [2/2]

template<ComputeStage compute_stage>
ADRadialReturnStressUpdate< compute_stage >::ADMaterialProperty ( Real  ) &
protectedinherited

◆ computeDerivative()

template<ComputeStage compute_stage>
ADReal ADPowerLawCreepStressUpdate< compute_stage >::computeDerivative ( const ADReal &  effective_trial_stress,
const ADReal &  scalar 
)
overrideprotectedvirtual

Compute the derivative of the residual as a function of the scalar variable.

The residual should be in strain increment units for all models for consistency.

Parameters
effective_trial_stressEffective trial stress
scalarInelastic strain increment magnitude being solved for

Implements ADSingleVariableReturnMappingSolution< compute_stage >.

Definition at line 75 of file ADPowerLawCreepStressUpdate.C.

77 {
78  const ADReal stress_delta = effective_trial_stress - _three_shear_modulus * scalar;
79  const ADReal creep_rate_derivative = -_coefficient * _three_shear_modulus * _n_exponent *
80  std::pow(stress_delta, _n_exponent - 1.0) * _exponential *
81  _exp_time;
82  return creep_rate_derivative * _dt - 1.0;
83 }
const Real _n_exponent
Exponent on the effective stress.
const Real _coefficient
Leading coefficient.
Real _exp_time
Exponential calculated from current time.
ADReal _exponential
Exponential calculated from activiaction, gas constant, and temperature.
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)
ADReal _three_shear_modulus
3 * shear modulus

◆ computeReferenceResidual()

template<ComputeStage compute_stage>
Real ADRadialReturnStressUpdate< compute_stage >::computeReferenceResidual ( const ADReal &  effective_trial_stress,
const ADReal &  scalar 
)
overridevirtualinherited

Compute a reference quantity to be used for checking relative convergence.

This should be in strain increment units for all models for consistency.

Parameters
effective_trial_stressEffective trial stress
scalarInelastic strain increment magnitude being solved for

Implements ADSingleVariableReturnMappingSolution< compute_stage >.

Definition at line 115 of file ADRadialReturnStressUpdate.C.

117 {
118  return MetaPhysicL::raw_value(effective_trial_stress / _three_shear_modulus) -
119  MetaPhysicL::raw_value(scalar_effective_inelastic_strain);
120 }
ADReal _three_shear_modulus
3 * shear modulus

◆ computeResidual()

template<ComputeStage compute_stage>
ADReal ADPowerLawCreepStressUpdate< compute_stage >::computeResidual ( const ADReal &  effective_trial_stress,
const ADReal &  scalar 
)
overrideprotectedvirtual

Compute the residual for a predicted value of the scalar.

This residual should be in strain increment units for all models for consistency.

Parameters
effective_trial_stressEffective trial stress
scalarInelastic strain increment magnitude being solved for

Implements ADSingleVariableReturnMappingSolution< compute_stage >.

Definition at line 64 of file ADPowerLawCreepStressUpdate.C.

66 {
67  const ADReal stress_delta = effective_trial_stress - _three_shear_modulus * scalar;
68  const ADReal creep_rate =
70  return creep_rate * _dt - scalar;
71 }
const Real _n_exponent
Exponent on the effective stress.
const Real _coefficient
Leading coefficient.
Real _exp_time
Exponential calculated from current time.
ADReal _exponential
Exponential calculated from activiaction, gas constant, and temperature.
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)
ADReal _three_shear_modulus
3 * shear modulus

◆ computeStressFinalize()

template<ComputeStage compute_stage>
void ADRadialReturnCreepStressUpdateBase< compute_stage >::computeStressFinalize ( const ADRankTwoTensor &  )
overrideprotectedvirtualinherited

Perform any necessary steps to finalize state after return mapping iterations.

Parameters
inelasticStrainIncrementInelastic strain increment

Reimplemented from ADRadialReturnStressUpdate< compute_stage >.

Definition at line 47 of file ADRadialReturnCreepStressUpdateBase.C.

49 {
50  _creep_strain[_qp] = _creep_strain_old[_qp] + plastic_strain_increment;
51 }
const MaterialProperty< RankTwoTensor > & _creep_strain_old

◆ computeStressInitialize()

template<ComputeStage compute_stage>
void ADPowerLawCreepStressUpdate< compute_stage >::computeStressInitialize ( const ADReal &  ,
const ADRankFourTensor &   
)
overrideprotectedvirtual

Perform any necessary initialization before return mapping iterations.

Parameters
effective_trial_stressEffective trial stress
elasticityTensorElasticity tensor

Reimplemented from ADRadialReturnStressUpdate< compute_stage >.

Definition at line 53 of file ADPowerLawCreepStressUpdate.C.

55 {
56  if (_temperature)
57  _exponential = std::exp(-_activation_energy / (_gas_constant * (*_temperature)[_qp]));
58 
60 }
const Real _m_exponent
Exponent on time.
const ADVariableValue * _temperature
Temperature variable value.
Real _exp_time
Exponential calculated from current time.
const Real _start_time
Simulation start time.
ADReal _exponential
Exponential calculated from activiaction, gas constant, and temperature.
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)
const Real _activation_energy
Activation energy for exp term.
const Real _gas_constant
Gas constant for exp term.

◆ computeTimeStepLimit()

template<ComputeStage compute_stage>
Real ADRadialReturnStressUpdate< compute_stage >::computeTimeStepLimit ( )
overridevirtualinherited

Compute the limiting value of the time step for this material.

Returns
Limiting time step

Reimplemented from ADStressUpdateBase< compute_stage >.

Definition at line 132 of file ADRadialReturnStressUpdate.C.

133 {
134  Real scalar_inelastic_strain_incr = MetaPhysicL::raw_value(_effective_inelastic_strain[_qp]) -
136  if (MooseUtils::absoluteFuzzyEqual(scalar_inelastic_strain_incr, 0.0))
137  return std::numeric_limits<Real>::max();
138 
139  return _dt * _max_inelastic_increment / scalar_inelastic_strain_incr;
140 }
const MaterialProperty< Real > & _effective_inelastic_strain_old

◆ initialGuess()

template<ComputeStage compute_stage>
virtual ADReal ADSingleVariableReturnMappingSolution< compute_stage >::initialGuess ( const ADReal &  )
inlineprotectedvirtualinherited

Compute an initial guess for the value of the scalar.

For some cases, an intellegent starting point can provide enhanced robustness in the Newton iterations. This is also an opportunity for classes that derive from this to perform initialization tasks.

Parameters
effective_trial_stressEffective trial stress

Definition at line 79 of file ADSingleVariableReturnMappingSolution.h.

79 { return 0.0; }

◆ initQpStatefulProperties()

template<ComputeStage compute_stage>
void ADRadialReturnCreepStressUpdateBase< compute_stage >::initQpStatefulProperties ( )
overrideprotectedvirtualinherited

Reimplemented from ADRadialReturnStressUpdate< compute_stage >.

Definition at line 29 of file ADRadialReturnCreepStressUpdateBase.C.

30 {
31  _creep_strain[_qp].zero();
32 
34 }
virtual void initQpStatefulProperties() override

◆ iterationFinalize()

template<ComputeStage compute_stage>
virtual void ADSingleVariableReturnMappingSolution< compute_stage >::iterationFinalize ( ADReal  )
inlineprotectedvirtualinherited

Finalize internal state variables for a model for a given iteration.

Parameters
scalarInelastic strain increment magnitude being solved for

Definition at line 111 of file ADSingleVariableReturnMappingSolution.h.

111 {}

◆ maximumPermissibleValue()

template<ComputeStage compute_stage>
ADReal ADRadialReturnStressUpdate< compute_stage >::maximumPermissibleValue ( const ADReal &  effective_trial_stress) const
overridevirtualinherited

Compute the maximum permissible value of the scalar.

For some models, the magnitude of this may be known.

Parameters
effective_trial_stressEffective trial stress

Reimplemented from ADSingleVariableReturnMappingSolution< compute_stage >.

Definition at line 124 of file ADRadialReturnStressUpdate.C.

126 {
127  return effective_trial_stress / _three_shear_modulus;
128 }
ADReal _three_shear_modulus
3 * shear modulus

◆ minimumPermissibleValue()

template<ComputeStage compute_stage>
virtual ADReal ADRadialReturnStressUpdate< compute_stage >::minimumPermissibleValue ( const ADReal &  effective_trial_stress) const
inlineoverridevirtualinherited

Compute the minimum permissible value of the scalar.

For some models, the magnitude of this may be known.

Parameters
effective_trial_stressEffective trial stress

Reimplemented from ADSingleVariableReturnMappingSolution< compute_stage >.

Definition at line 68 of file ADRadialReturnStressUpdate.h.

69  {
70  return 0.0;
71  }

◆ outputIterationSummary()

template<ComputeStage compute_stage>
void ADRadialReturnStressUpdate< compute_stage >::outputIterationSummary ( std::stringstream *  iter_output,
const unsigned int  total_it 
)
overrideprotectedvirtualinherited

Output summary information for the convergence history of the model.

Parameters
iter_outputOutput stream
total_itTotal iteration count

Reimplemented from ADSingleVariableReturnMappingSolution< compute_stage >.

Definition at line 144 of file ADRadialReturnStressUpdate.C.

146 {
147  if (iter_output)
148  {
149  *iter_output << "At element " << _current_elem->id() << " _qp=" << _qp << " Coordinates "
150  << _q_point[_qp] << " block=" << _current_elem->subdomain_id() << '\n';
151  }
153  total_it);
154 }
virtual void outputIterationSummary(std::stringstream *iter_output, const unsigned int total_it)
Output summary information for the convergence history of the model.

◆ propagateQpStatefulProperties()

template<ComputeStage compute_stage>
void ADRadialReturnCreepStressUpdateBase< compute_stage >::propagateQpStatefulProperties ( )
overrideprotectedvirtualinherited

If updateState is not called during a timestep, this will be.

This method allows derived classes to set internal parameters from their Old values, for instance

Reimplemented from ADStressUpdateBase< compute_stage >.

Definition at line 38 of file ADRadialReturnCreepStressUpdateBase.C.

39 {
40  _creep_strain[_qp] = _creep_strain_old[_qp];
41 
43 }
const MaterialProperty< RankTwoTensor > & _creep_strain_old
void propagateQpStatefulPropertiesRadialReturn()
Propagate the properties pertaining to this intermediate class.

◆ propagateQpStatefulPropertiesRadialReturn()

template<ComputeStage compute_stage>
void ADRadialReturnStressUpdate< compute_stage >::propagateQpStatefulPropertiesRadialReturn ( )
protectedinherited

Propagate the properties pertaining to this intermediate class.

This is intended to be called from propagateQpStatefulProperties() in classes that inherit from this one. This is intentionally named uniquely because almost all models that derive from this class have their own stateful properties, and this forces them to define their own implementations of propagateQpStatefulProperties().

Definition at line 54 of file ADRadialReturnStressUpdate.C.

55 {
56  _effective_inelastic_strain[_qp] = _effective_inelastic_strain_old[_qp];
57 }
const MaterialProperty< Real > & _effective_inelastic_strain_old

◆ requiresIsotropicTensor()

template<ComputeStage compute_stage>
bool ADRadialReturnStressUpdate< compute_stage >::requiresIsotropicTensor ( )
inlineoverridevirtualinherited

Does the model require the elasticity tensor to be isotropic?

Implements ADStressUpdateBase< compute_stage >.

Definition at line 84 of file ADRadialReturnStressUpdate.h.

84 { return true; }

◆ resetProperties()

template<ComputeStage compute_stage>
void ADStressUpdateBase< compute_stage >::resetProperties ( )
inlinefinalinherited

Definition at line 102 of file ADStressUpdateBase.h.

102 {}

◆ resetQpProperties()

template<ComputeStage compute_stage>
void ADStressUpdateBase< compute_stage >::resetQpProperties ( )
inlinefinalinherited

Retained as empty methods to avoid a warning from Material.C in framework. These methods are unused in all inheriting classes and should not be overwritten.

Definition at line 101 of file ADStressUpdateBase.h.

101 {}

◆ returnMappingSolve()

template<ComputeStage compute_stage>
void ADSingleVariableReturnMappingSolution< compute_stage >::returnMappingSolve ( const ADReal &  effective_trial_stress,
ADReal &  scalar,
const ConsoleStream &  console 
)
protectedinherited

Perform the return mapping iterations.

Parameters
effective_trial_stressEffective trial stress
scalarInelastic strain increment magnitude being solved for
consoleConsole output

Definition at line 94 of file ADSingleVariableReturnMappingSolution.C.

96 {
97  // construct the stringstream here only if the debug level is set to ALL
98  std::stringstream * iter_output =
99  (_internal_solve_output_on == InternalSolveOutput::ALWAYS) ? new std::stringstream : nullptr;
100 
101  // do the internal solve and capture iteration info during the first round
102  // iff full history output is requested regardless of whether the solve failed or succeeded
103  auto solve_state = internalSolve(effective_trial_stress,
104  scalar,
105  _internal_solve_full_iteration_history ? iter_output : nullptr);
106  if (solve_state != SolveState::SUCCESS &&
108  {
109  // output suppressed by user, throw immediately
111  throw MooseException("");
112 
113  // user expects some kind of output, if necessary setup output stream now
114  if (!iter_output)
115  iter_output = new std::stringstream;
116 
117  // add the appropriate error message to the output
118  switch (solve_state)
119  {
120  case SolveState::NAN_INF:
121  *iter_output << "Encountered inf or nan in material return mapping iterations.\n";
122  break;
123 
125  *iter_output << "Exceeded maximum iterations in material return mapping iterations.\n";
126  break;
127 
128  default:
129  mooseError("Unhandled solver state");
130  }
131 
132  // if full history output is only requested for failed solves we have to repeat
133  // the solve a second time
135  internalSolve(effective_trial_stress, scalar, iter_output);
136 
137  // Append summary and throw exception
138  outputIterationSummary(iter_output, _iteration);
139  throw MooseException(iter_output->str());
140  }
141 
143  {
144  // the solve did not fail but the user requested debug output anyways
145  outputIterationSummary(iter_output, _iteration);
146  console << iter_output->str();
147  }
148 }
virtual void outputIterationSummary(std::stringstream *iter_output, const unsigned int total_it)
Output summary information for the convergence history of the model.
enum ADSingleVariableReturnMappingSolution::InternalSolveOutput _internal_solve_output_on
const bool _internal_solve_full_iteration_history
Whether to output iteration information all the time (regardless of whether iterations converge) ...
SolveState internalSolve(const ADReal effective_trial_stress, ADReal &scalar, std::stringstream *iter_output=nullptr)
Method called from within this class to perform the actual return mappping iterations.

◆ setQp()

template<ComputeStage compute_stage>
void ADStressUpdateBase< compute_stage >::setQp ( unsigned int  qp)
inherited

Sets the value of the global variable _qp for inheriting classes.

Definition at line 42 of file ADStressUpdateBase.C.

43 {
44  _qp = qp;
45 }

◆ updateState()

template<ComputeStage compute_stage>
void ADRadialReturnStressUpdate< compute_stage >::updateState ( ADRankTwoTensor &  strain_increment,
ADRankTwoTensor &  inelastic_strain_increment,
const ADRankTwoTensor &  rotation_increment,
ADRankTwoTensor &  stress_new,
const RankTwoTensor stress_old,
const ADRankFourTensor &  elasticity_tensor,
const RankTwoTensor elastic_strain_old 
)
overridevirtualinherited

A radial return (J2) mapping method is performed with return mapping iterations.

Parameters
strain_incrementSum of elastic and inelastic strain increments
inelastic_strain_incrementInelastic strain increment calculated by this class
rotationincrement Not used by this class
stress_newNew trial stress from pure elastic calculation
stress_oldOld state of stress
elasticity_tensorRank 4 C_{ijkl}, must be isotropic
elastic_strain_oldOld state of total elastic strain

Implements ADStressUpdateBase< compute_stage >.

Definition at line 61 of file ADRadialReturnStressUpdate.C.

69 {
70  // compute the deviatoric trial stress and trial strain from the current intermediate
71  // configuration
72  ADRankTwoTensor deviatoric_trial_stress = stress_new.deviatoric();
73 
74  // compute the effective trial stress
75  ADReal dev_trial_stress_squared =
76  deviatoric_trial_stress.doubleContraction(deviatoric_trial_stress);
77  ADReal effective_trial_stress = MooseUtils::absoluteFuzzyEqual(dev_trial_stress_squared, 0.0)
78  ? 0.0
79  : std::sqrt(3.0 / 2.0 * dev_trial_stress_squared);
80 
81  // Set the value of 3 * shear modulus for use as a reference residual value
83 
84  computeStressInitialize(effective_trial_stress, elasticity_tensor);
85 
86  // Use Newton iteration to determine the scalar effective inelastic strain increment
87  ADReal scalar_effective_inelastic_strain = 0.0;
88  if (!MooseUtils::absoluteFuzzyEqual(effective_trial_stress, 0.0))
89  {
90  returnMappingSolve(effective_trial_stress, scalar_effective_inelastic_strain, _console);
91  if (scalar_effective_inelastic_strain != 0.0)
92  inelastic_strain_increment =
93  deviatoric_trial_stress *
94  (1.5 * scalar_effective_inelastic_strain / effective_trial_stress);
95  else
96  inelastic_strain_increment.zero();
97  }
98  else
99  inelastic_strain_increment.zero();
100 
101  strain_increment -= inelastic_strain_increment;
102  _effective_inelastic_strain[_qp] =
103  _effective_inelastic_strain_old[_qp] + scalar_effective_inelastic_strain;
104 
105  // Use the old elastic strain here because we require tensors used by this class
106  // to be isotropic and this method natively allows for changing in time
107  // elasticity tensors
108  stress_new = elasticity_tensor * (elastic_strain_old + strain_increment);
109 
110  computeStressFinalize(inelastic_strain_increment);
111 }
auto getIsotropicShearModulus(const T &elasticity_tensor) -> decltype(elasticity_tensor(0, 1, 0, 1))
Get the shear modulus for an isotropic elasticity tensor param elasticity_tensor the tensor (must be ...
virtual void computeStressFinalize(const ADRankTwoTensor &)
Perform any necessary steps to finalize state after return mapping iterations.
void returnMappingSolve(const ADReal &effective_trial_stress, ADReal &scalar, const ConsoleStream &console)
Perform the return mapping iterations.
const MaterialProperty< Real > & _effective_inelastic_strain_old
virtual void computeStressInitialize(const ADReal &, const ADRankFourTensor &)
Perform any necessary initialization before return mapping iterations.
ADReal _three_shear_modulus
3 * shear modulus

Member Data Documentation

◆ _activation_energy

template<ComputeStage compute_stage>
const Real ADPowerLawCreepStressUpdate< compute_stage >::_activation_energy
protected

Activation energy for exp term.

Definition at line 56 of file ADPowerLawCreepStressUpdate.h.

◆ _base_name

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

Name used as a prefix for all material properties related to the stress update model.

Definition at line 107 of file ADStressUpdateBase.h.

◆ _bracket_solution

template<ComputeStage compute_stage>
bool ADSingleVariableReturnMappingSolution< compute_stage >::_bracket_solution
protectedinherited

Whether to save upper and lower bounds of root for scalar, and set solution to the midpoint between those bounds if outside them.

Definition at line 128 of file ADSingleVariableReturnMappingSolution.h.

◆ _check_range

template<ComputeStage compute_stage>
bool ADSingleVariableReturnMappingSolution< compute_stage >::_check_range
protectedinherited

Whether to check to see whether iterative solution is within admissible range, and set within that range if outside.

Definition at line 121 of file ADSingleVariableReturnMappingSolution.h.

◆ _coefficient

template<ComputeStage compute_stage>
const Real ADPowerLawCreepStressUpdate< compute_stage >::_coefficient
protected

Leading coefficient.

Definition at line 47 of file ADPowerLawCreepStressUpdate.h.

◆ _creep_strain_old

template<ComputeStage compute_stage>
const MaterialProperty<RankTwoTensor>& ADRadialReturnCreepStressUpdateBase< compute_stage >::_creep_strain_old
protectedinherited

Definition at line 42 of file ADRadialReturnCreepStressUpdateBase.h.

◆ _effective_inelastic_strain_old

template<ComputeStage compute_stage>
const MaterialProperty<Real>& ADRadialReturnStressUpdate< compute_stage >::_effective_inelastic_strain_old
protectedinherited

Definition at line 122 of file ADRadialReturnStressUpdate.h.

◆ _exp_time

template<ComputeStage compute_stage>
Real ADPowerLawCreepStressUpdate< compute_stage >::_exp_time
protected

Exponential calculated from current time.

Definition at line 68 of file ADPowerLawCreepStressUpdate.h.

◆ _exponential

template<ComputeStage compute_stage>
ADReal ADPowerLawCreepStressUpdate< compute_stage >::_exponential
protected

Exponential calculated from activiaction, gas constant, and temperature.

Definition at line 65 of file ADPowerLawCreepStressUpdate.h.

◆ _gas_constant

template<ComputeStage compute_stage>
const Real ADPowerLawCreepStressUpdate< compute_stage >::_gas_constant
protected

Gas constant for exp term.

Definition at line 59 of file ADPowerLawCreepStressUpdate.h.

◆ _line_search

template<ComputeStage compute_stage>
bool ADSingleVariableReturnMappingSolution< compute_stage >::_line_search
protectedinherited

Whether to use line searches to improve convergence.

Definition at line 124 of file ADSingleVariableReturnMappingSolution.h.

◆ _m_exponent

template<ComputeStage compute_stage>
const Real ADPowerLawCreepStressUpdate< compute_stage >::_m_exponent
protected

◆ _max_inelastic_increment

template<ComputeStage compute_stage>
Real ADRadialReturnStressUpdate< compute_stage >::_max_inelastic_increment
protectedinherited

Definition at line 123 of file ADRadialReturnStressUpdate.h.

◆ _n_exponent

template<ComputeStage compute_stage>
const Real ADPowerLawCreepStressUpdate< compute_stage >::_n_exponent
protected

Exponent on the effective stress.

Definition at line 50 of file ADPowerLawCreepStressUpdate.h.

◆ _start_time

template<ComputeStage compute_stage>
const Real ADPowerLawCreepStressUpdate< compute_stage >::_start_time
protected

Simulation start time.

Definition at line 62 of file ADPowerLawCreepStressUpdate.h.

◆ _temperature

template<ComputeStage compute_stage>
const ADVariableValue* ADPowerLawCreepStressUpdate< compute_stage >::_temperature
protected

Temperature variable value.

Definition at line 44 of file ADPowerLawCreepStressUpdate.h.

◆ _three_shear_modulus

template<ComputeStage compute_stage>
ADReal ADRadialReturnStressUpdate< compute_stage >::_three_shear_modulus
protectedinherited

3 * shear modulus

Definition at line 119 of file ADRadialReturnStressUpdate.h.

◆ usingMaterialMembers

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

Definition at line 109 of file ADStressUpdateBase.h.

◆ usingRadialReturnCreepStressUpdateBaseMembers

template<ComputeStage compute_stage>
ADPowerLawCreepStressUpdate< compute_stage >::usingRadialReturnCreepStressUpdateBaseMembers
protected

Definition at line 70 of file ADPowerLawCreepStressUpdate.h.

◆ usingRadialReturnStressUpdateMembers

template<ComputeStage compute_stage>
ADRadialReturnCreepStressUpdateBase< compute_stage >::usingRadialReturnStressUpdateMembers
protectedinherited

Definition at line 44 of file ADRadialReturnCreepStressUpdateBase.h.

◆ usingSingleVariableReturnMappingSolutionMembers

template<ComputeStage compute_stage>
ADRadialReturnStressUpdate< compute_stage >::usingSingleVariableReturnMappingSolutionMembers
protectedinherited

Definition at line 126 of file ADRadialReturnStressUpdate.h.

◆ usingStressUpdateBaseMembers

template<ComputeStage compute_stage>
ADRadialReturnStressUpdate< compute_stage >::usingStressUpdateBaseMembers
protectedinherited

Definition at line 125 of file ADRadialReturnStressUpdate.h.


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