https://mooseframework.inl.gov
HillPlasticityStressUpdate.h
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://mooseframework.inl.gov
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
10 #pragma once
11 
13 
21 template <bool is_ad>
24 {
25 public:
27 
29 
30 protected:
36 
37  using Material::_qp;
38 
39  virtual void
41  const GenericDenseVector<is_ad> & stress,
43  virtual GenericReal<is_ad>
44  computeResidual(const GenericDenseVector<is_ad> & effective_trial_stress,
45  const GenericDenseVector<is_ad> & stress_new,
46  const GenericReal<is_ad> & scalar) override;
47  virtual GenericReal<is_ad>
48  computeDerivative(const GenericDenseVector<is_ad> & effective_trial_stress,
49  const GenericDenseVector<is_ad> & stress_new,
50  const GenericReal<is_ad> & scalar) override;
51 
52  virtual Real
53  computeReferenceResidual(const GenericDenseVector<is_ad> & effective_trial_stress,
54  const GenericDenseVector<is_ad> & stress_new,
55  const GenericReal<is_ad> & residual,
56  const GenericReal<is_ad> & scalar_effective_inelastic_strain) override;
57  virtual void propagateQpStatefulProperties() override;
62  bool requiresIsotropicTensor() override { return true; }
63 
66  const GenericReal<is_ad> & omega);
72 
77  virtual void computeStrainFinalize(GenericRankTwoTensor<is_ad> & /*inelasticStrainIncrement*/,
78  const GenericRankTwoTensor<is_ad> & /*stress*/,
79  const GenericDenseVector<is_ad> & /*stress_dev*/,
80  const GenericReal<is_ad> & /*delta_gamma*/) override;
81 
86  virtual void
87  computeStressFinalize(const GenericRankTwoTensor<is_ad> & inelasticStrainIncrement,
88  const GenericReal<is_ad> & delta_gamma,
90  const GenericDenseVector<is_ad> & /*stress_dev*/,
91  const GenericRankTwoTensor<is_ad> & /*stress_old*/,
92  const GenericRankFourTensor<is_ad> & /*elasticity_tensor*/) override;
93 
95  const GenericDenseVector<is_ad> & stress_trial);
96 
97  void computeDeltaDerivatives(const GenericReal<is_ad> & delta_gamma,
98  const GenericDenseVector<is_ad> & stress_trial,
99  const GenericReal<is_ad> & sy_alpha,
100  GenericReal<is_ad> & omega,
101  GenericReal<is_ad> & omega_gamma,
102  GenericReal<is_ad> & sy_gamma);
103 
106 
109 
112 
118 
122 
126 };
127 
Moose::GenericType< Real, is_ad > GenericReal
virtual void computeStressInitialize(const GenericDenseVector< is_ad > &stress_dev, const GenericDenseVector< is_ad > &stress, const GenericRankFourTensor< is_ad > &elasticity_tensor) override
HillPlasticityStressUpdateTempl< false > HillPlasticityStressUpdate
GenericReal< is_ad > computeHardeningValue(const GenericReal< is_ad > &scalar, const GenericReal< is_ad > &omega)
const MaterialProperty< Real > & _hardening_variable_old
virtual GenericReal< is_ad > computeDerivative(const GenericDenseVector< is_ad > &effective_trial_stress, const GenericDenseVector< is_ad > &stress_new, const GenericReal< is_ad > &scalar) override
void computeHillTensorEigenDecomposition(const DenseMatrix< Real > &hill_tensor)
Compute eigendecomposition of Hill&#39;s tensor for anisotropic plasticity.
GenericDenseMatrix< is_ad > _eigenvectors_hill
GenericDenseVector< is_ad > _stress_np1
GenericReal< is_ad > _two_shear_modulus
2 * shear modulus
Moose::GenericType< DenseVector< Real >, is_ad > GenericDenseVector
This class uses the stress update material in an anisotropic return mapping.
Moose::GenericType< RankFourTensor, is_ad > GenericRankFourTensor
Real elasticity_tensor(unsigned int i, unsigned int j, unsigned int k, unsigned int l)
unsigned int _qp
void computeDeltaDerivatives(const GenericReal< is_ad > &delta_gamma, const GenericDenseVector< is_ad > &stress_trial, const GenericReal< is_ad > &sy_alpha, GenericReal< is_ad > &omega, GenericReal< is_ad > &omega_gamma, GenericReal< is_ad > &sy_gamma)
GenericDenseVector< is_ad > _eigenvalues_hill
typename GenericMaterialPropertyStruct< T, is_ad >::type GenericMaterialProperty
virtual void computeStressFinalize(const GenericRankTwoTensor< is_ad > &inelasticStrainIncrement, const GenericReal< is_ad > &delta_gamma, GenericRankTwoTensor< is_ad > &stress, const GenericDenseVector< is_ad > &, const GenericRankTwoTensor< is_ad > &, const GenericRankFourTensor< is_ad > &) override
Perform any necessary steps to finalize state after return mapping iterations.
GenericReal< is_ad > _qsigma
Square of the q function for orthotropy.
const MaterialProperty< DenseMatrix< Real > > & _hill_tensor
Hill tensor, when global axes do not (somehow) align with those of the material Example: Large rotati...
virtual GenericReal< is_ad > computeResidual(const GenericDenseVector< is_ad > &effective_trial_stress, const GenericDenseVector< is_ad > &stress_new, const GenericReal< is_ad > &scalar) override
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
bool requiresIsotropicTensor() override
Does the model require the elasticity tensor to be isotropic? Yes, this class only does anisotropic p...
HillPlasticityStressUpdateTempl(const InputParameters &parameters)
GenericReal< is_ad > computeOmega(const GenericReal< is_ad > &delta_gamma, const GenericDenseVector< is_ad > &stress_trial)
virtual void computeStrainFinalize(GenericRankTwoTensor< is_ad > &, const GenericRankTwoTensor< is_ad > &, const GenericDenseVector< is_ad > &, const GenericReal< is_ad > &) override
Perform any necessary steps to finalize strain increment after return mapping iterations.
This class provides baseline functionality for anisotropic (Hill-like) plasticity models based on the...
virtual Real computeReferenceResidual(const GenericDenseVector< is_ad > &effective_trial_stress, const GenericDenseVector< is_ad > &stress_new, const GenericReal< is_ad > &residual, const GenericReal< is_ad > &scalar_effective_inelastic_strain) override
GenericMaterialProperty< Real, is_ad > & _hardening_variable
HillPlasticityStressUpdateTempl< true > ADHillPlasticityStressUpdate
Moose::GenericType< DenseMatrix< Real >, is_ad > GenericDenseMatrix
Moose::GenericType< RankTwoTensor, is_ad > GenericRankTwoTensor
virtual void propagateQpStatefulProperties() override