https://mooseframework.inl.gov
Loading...
Searching...
No Matches
HillCreepStressUpdate.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
29template <bool is_ad>
31{
32public:
34
36
37protected:
41 using Material::_qp;
42
43 virtual void
45 const GenericDenseVector<is_ad> & stress,
46 const GenericRankFourTensor<is_ad> & elasticity_tensor) override;
47 virtual GenericReal<is_ad>
48 computeResidual(const GenericDenseVector<is_ad> & effective_trial_stress,
49 const GenericDenseVector<is_ad> & stress_new,
50 const GenericReal<is_ad> & scalar) override;
51
52 virtual GenericReal<is_ad>
53 computeDerivative(const GenericDenseVector<is_ad> & effective_trial_stress,
54 const GenericDenseVector<is_ad> & stress_new,
55 const GenericReal<is_ad> & scalar) override;
56
57 virtual Real
58 computeReferenceResidual(const GenericDenseVector<is_ad> & effective_trial_stress,
59 const GenericDenseVector<is_ad> & stress_new,
60 const GenericReal<is_ad> & residual,
61 const GenericReal<is_ad> & scalar_effective_inelastic_strain) override;
62
63 void computeQsigmaChanged(GenericReal<is_ad> & qsigma_changed,
64 const GenericDenseVector<is_ad> & stress_new,
65 const GenericReal<is_ad> & delta_gamma,
66 GenericRankTwoTensor<is_ad> & stress_changed);
67
75 virtual void computeStrainFinalize(GenericRankTwoTensor<is_ad> & inelasticStrainIncrement,
76 const GenericRankTwoTensor<is_ad> & stress,
77 const GenericDenseVector<is_ad> & stress_dev,
78 const GenericReal<is_ad> & delta_gamma) override;
79
87 virtual void
88 computeStressFinalize(const GenericRankTwoTensor<is_ad> & inelasticStrainIncrement,
89 const GenericReal<is_ad> & delta_gamma,
91 const GenericDenseVector<is_ad> & stress_dev,
92 const GenericRankTwoTensor<is_ad> & stress_old,
93 const GenericRankFourTensor<is_ad> & elasticity_tensor) override;
94
95 virtual GenericReal<is_ad>
96 initialGuess(const GenericDenseVector<is_ad> & /*stress_dev*/) override;
97
102 bool requiresIsotropicTensor() override { return false; }
103
109 virtual Real computeIntegrationErrorTimeStep() override
110 {
111 return this->_max_integration_error_time_step;
112 }
113
115 const bool _has_temp;
116
119
121 const Real _coefficient;
122
124 const Real _n_exponent;
125
127 const Real _m_exponent;
128
131
133 const Real _gas_constant;
134
136 const Real _start_time;
137
140
143
146
150
153
156
158 const std::string _elasticity_tensor_name;
159
162
165
168};
169
HillCreepStressUpdateTempl< false > HillCreepStressUpdate
HillCreepStressUpdateTempl< true > ADHillCreepStressUpdate
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 and creep models ba...
This class uses the stress update material for an anisotropic creep model.
virtual void computeStressInitialize(const GenericDenseVector< is_ad > &stress_dev, const GenericDenseVector< is_ad > &stress, const GenericRankFourTensor< is_ad > &elasticity_tensor) override
const MaterialProperty< DenseMatrix< Real > > * _hill_tensor
Hill tensor, when global axes do not (somehow) align with those of the material Example: Large rotati...
void computeQsigmaChanged(GenericReal< is_ad > &qsigma_changed, const GenericDenseVector< is_ad > &stress_new, const GenericReal< is_ad > &delta_gamma, GenericRankTwoTensor< is_ad > &stress_changed)
Real _exponential
Exponential calculated from activation, gas constant, and temperature.
bool _anisotropic_elasticity
Materials's elasticity tensor is anisotropic or not.
GenericDenseMatrix< is_ad > _C
Matrix form of the elasticity tensor.
const GenericMaterialProperty< RankFourTensor, is_ad > & _elasticity_tensor
Anisotropic elasticity tensor material property.
const std::string _elasticity_tensor_name
Name of the elasticity tensor material property.
const Real _start_time
Simulation start time.
const Real _coefficient
Leading coefficient.
virtual GenericReal< is_ad > computeResidual(const GenericDenseVector< is_ad > &effective_trial_stress, const GenericDenseVector< is_ad > &stress_new, const GenericReal< is_ad > &scalar) override
virtual Real computeIntegrationErrorTimeStep() override
Compute the limiting value of the time step for this material according to the numerical integration ...
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
GenericReal< is_ad > _two_shear_modulus
2 * shear modulus
Real _exp_time
Exponential calculated from current time.
const Real _n_exponent
Exponent on the effective stress.
virtual GenericReal< is_ad > initialGuess(const GenericDenseVector< is_ad > &) override
virtual void computeStressFinalize(const GenericRankTwoTensor< is_ad > &inelasticStrainIncrement, const GenericReal< is_ad > &delta_gamma, GenericRankTwoTensor< is_ad > &stress, const GenericDenseVector< is_ad > &stress_dev, const GenericRankTwoTensor< is_ad > &stress_old, const GenericRankFourTensor< is_ad > &elasticity_tensor) override
Perform any necessary steps to finalize state after return mapping iterations.
const Real _m_exponent
Exponent on time.
virtual void computeStrainFinalize(GenericRankTwoTensor< is_ad > &inelasticStrainIncrement, const GenericRankTwoTensor< is_ad > &stress, const GenericDenseVector< is_ad > &stress_dev, const GenericReal< is_ad > &delta_gamma) override
Perform any necessary steps to finalize strain increment after return mapping iterations.
const Real _activation_energy
Activation energy for exp term.
const MaterialProperty< std::vector< Real > > & _hill_constants
Hill constant material.
static InputParameters validParams()
const Real _gas_constant
Gas constant for exp term.
virtual GenericReal< is_ad > computeDerivative(const GenericDenseVector< is_ad > &effective_trial_stress, const GenericDenseVector< is_ad > &stress_new, const GenericReal< is_ad > &scalar) override
bool requiresIsotropicTensor() override
Does the model require the elasticity tensor to be isotropic? Not in principle.
const Function *const _prefactor_function
Prefactor for scaling creep.
const VariableValue & _temperature
Temperature variable value.
const bool _has_temp
Flag to determine if temperature is supplied by the user.
unsigned int _qp
const Elem *const & _current_elem
const MooseArray< Point > & _q_point
VariableValueTempl< false > VariableValue