https://mooseframework.inl.gov
Loading...
Searching...
No Matches
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
21template <bool is_ad>
24{
25public:
27
29
30protected:
31 using AnisotropicReturnPlasticityStressUpdateBaseTempl<is_ad>::_effective_inelastic_strain;
32 using AnisotropicReturnPlasticityStressUpdateBaseTempl<is_ad>::_effective_inelastic_strain_old;
35 using AnisotropicReturnPlasticityStressUpdateBaseTempl<is_ad>::isBlockDiagonal;
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);
71 void computeHillTensorEigenDecomposition(const DenseMatrix<Real> & hill_tensor);
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
HillPlasticityStressUpdateTempl< true > ADHillPlasticityStressUpdate
HillPlasticityStressUpdateTempl< false > HillPlasticityStressUpdate
typename GenericMaterialPropertyStruct< T, is_ad >::type GenericMaterialProperty
Moose::GenericType< RankFourTensor, is_ad > GenericRankFourTensor
Moose::GenericType< DenseVector< Real >, is_ad > GenericDenseVector
Moose::GenericType< Real, is_ad > GenericReal
Moose::GenericType< RankTwoTensor, is_ad > GenericRankTwoTensor
Moose::GenericType< DenseMatrix< Real >, is_ad > GenericDenseMatrix
This class provides baseline functionality for anisotropic (Hill-like) plasticity models based on the...
GenericMaterialProperty< RankTwoTensor, is_ad > & _plasticity_strain
Plasticity strain tensor material property.
This class uses the stress update material in an anisotropic return mapping.
GenericDenseMatrix< is_ad > _eigenvectors_hill
GenericDenseVector< is_ad > _eigenvalues_hill
void computeHillTensorEigenDecomposition(const DenseMatrix< Real > &hill_tensor)
Compute eigendecomposition of Hill's tensor for anisotropic plasticity.
GenericMaterialProperty< Real, is_ad > & _hardening_variable
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 > computeHardeningValue(const GenericReal< is_ad > &scalar, const GenericReal< is_ad > &omega)
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)
GenericReal< is_ad > computeOmega(const GenericReal< is_ad > &delta_gamma, const GenericDenseVector< is_ad > &stress_trial)
const MaterialProperty< DenseMatrix< Real > > & _hill_tensor
Hill tensor, when global axes do not (somehow) align with those of the material Example: Large rotati...
GenericReal< is_ad > _qsigma
Square of the q function for orthotropy.
GenericReal< is_ad > _two_shear_modulus
2 * shear modulus
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.
virtual void computeStressInitialize(const GenericDenseVector< is_ad > &stress_dev, const GenericDenseVector< is_ad > &stress, const GenericRankFourTensor< is_ad > &elasticity_tensor) override
virtual void propagateQpStatefulProperties() override
virtual GenericReal< is_ad > computeDerivative(const GenericDenseVector< is_ad > &effective_trial_stress, const GenericDenseVector< is_ad > &stress_new, const GenericReal< is_ad > &scalar) override
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
virtual GenericReal< is_ad > computeResidual(const GenericDenseVector< is_ad > &effective_trial_stress, const GenericDenseVector< is_ad > &stress_new, const GenericReal< is_ad > &scalar) override
const MaterialProperty< Real > & _hardening_variable_old
bool requiresIsotropicTensor() override
Does the model require the elasticity tensor to be isotropic? Yes, this class only does anisotropic p...
unsigned int _qp
Real elasticity_tensor(unsigned int i, unsigned int j, unsigned int k, unsigned int l)