https://mooseframework.inl.gov
RadialReturnBackstressStressUpdateBase.C
Go to the documentation of this file.
2 #include "RankTwoTensorForward.h"
3 
4 template <bool is_ad>
7 {
9  return params;
10 }
11 
12 template <bool is_ad>
14  const InputParameters & parameters)
15  : RadialReturnStressUpdateTempl<is_ad>(parameters),
16  _backstress(this->template declareGenericProperty<RankTwoTensor, is_ad>(this->_base_name +
17  "backstress")),
18  _backstress_old(
19  this->template getMaterialPropertyOld<RankTwoTensor>(this->_base_name + "backstress"))
20 {
21 }
22 
23 template <bool is_ad>
24 void
26 {
27  _backstress[_qp].zero();
29 }
30 
31 template <bool is_ad>
32 void
34 {
35  _backstress[_qp] = _backstress_old[_qp];
36  propagateQpStatefulPropertiesRadialReturn();
37 }
38 
39 template <bool is_ad>
40 void
42  GenericRankTwoTensor<is_ad> & strain_increment,
43  GenericRankTwoTensor<is_ad> & inelastic_strain_increment,
44  const GenericRankTwoTensor<is_ad> & rotation_increment,
45  GenericRankTwoTensor<is_ad> & stress_new,
46  const RankTwoTensor & stress_old,
47  const GenericRankFourTensor<is_ad> & elasticity_tensor,
48  const RankTwoTensor & elastic_strain_old,
49  bool compute_full_tangent_operator,
50  RankFourTensor & tangent_operator)
51 {
52  GenericRankTwoTensor<is_ad> stress_corrected = stress_new - _backstress_old[_qp];
53 
55  inelastic_strain_increment,
56  rotation_increment,
57  stress_corrected,
58  stress_old,
60  elastic_strain_old,
61  compute_full_tangent_operator,
62  tangent_operator);
63  stress_new = stress_corrected;
64 }
65 
virtual void updateState(GenericRankTwoTensor< is_ad > &strain_increment, GenericRankTwoTensor< is_ad > &inelastic_strain_increment, const GenericRankTwoTensor< is_ad > &, GenericRankTwoTensor< is_ad > &stress_new, const RankTwoTensor &, const GenericRankFourTensor< is_ad > &elasticity_tensor, const RankTwoTensor &elastic_strain_old, bool compute_full_tangent_operator, RankFourTensor &tangent_operator) override
A radial return (J2) mapping method is performed with return mapping iterations.
RadialReturnBackstressStressUpdateBaseTempl(const InputParameters &parameters)
virtual void propagateQpStatefulProperties() override
If updateState is not called during a timestep, this will be.
virtual void updateState(GenericRankTwoTensor< is_ad > &strain_increment, GenericRankTwoTensor< is_ad > &inelastic_strain_increment, const GenericRankTwoTensor< is_ad > &rotation_increment, GenericRankTwoTensor< is_ad > &stress_new, const RankTwoTensor &stress_old, const GenericRankFourTensor< is_ad > &elasticity_tensor, const RankTwoTensor &elastic_strain_old, bool compute_full_tangent_operator=false, RankFourTensor &tangent_operator=StressUpdateBaseTempl< is_ad >::_identityTensor) override
A radial return (J2) mapping method is performed with return mapping iterations.
static InputParameters validParams()
RadialReturnStressUpdate computes the radial return stress increment for an isotropic elastic-viscopl...
Moose::GenericType< RankFourTensor, is_ad > GenericRankFourTensor
Real elasticity_tensor(unsigned int i, unsigned int j, unsigned int k, unsigned int l)
virtual void initQpStatefulProperties() override
Moose::GenericType< RankTwoTensor, is_ad > GenericRankTwoTensor