https://mooseframework.inl.gov
Loading...
Searching...
No Matches
ViscoplasticityStressUpdateBase.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
12#include "StressUpdateBase.h"
13
14template <bool is_ad>
16{
17public:
19
21
22 virtual Real computeTimeStepLimit() override;
23 bool requiresIsotropicTensor() override { return true; }
24
26
27protected:
28 virtual void initQpStatefulProperties() override;
29
30 virtual void propagateQpStatefulProperties() override;
31
37 virtual void computeStressInitialize(const GenericReal<is_ad> & /*effective_trial_stress*/,
38 const GenericRankFourTensor<is_ad> & /*elasticity_tensor*/)
39 {
40 }
41
46 virtual void
47 computeStressFinalize(const GenericRankTwoTensor<is_ad> & /*plastic_strain_increment*/)
48 {
49 }
50
51 void updateIntermediatePorosity(const GenericRankTwoTensor<is_ad> & elastic_strain_increment);
52
54 const std::string _total_strain_base_name;
55
58
63
68
71
74
77
79 const bool _verbose;
80
83
85 {
86 ZERO,
89 };
90
93
94 using StressUpdateBaseTempl<is_ad>::_dt;
97 using StressUpdateBaseTempl<is_ad>::_qp;
99};
100
101#define usingViscoplasticityStressUpdateBaseMembers \
102 usingTransientInterfaceMembers; \
103 using ViscoplasticityStressUpdateBaseTempl<is_ad>::_name; \
104 using ViscoplasticityStressUpdateBaseTempl<is_ad>::_qp; \
105 using ViscoplasticityStressUpdateBaseTempl<is_ad>::isParamValid; \
106 using ViscoplasticityStressUpdateBaseTempl<is_ad>::paramError; \
107 using ViscoplasticityStressUpdateBaseTempl<is_ad>::paramWarning; \
108 using ViscoplasticityStressUpdateBaseTempl<is_ad>::updateState; \
109 using ViscoplasticityStressUpdateBaseTempl<is_ad>::_console; \
110 using ViscoplasticityStressUpdateBaseTempl<is_ad>::_q_point; \
111 using ViscoplasticityStressUpdateBaseTempl<is_ad>::_verbose; \
112 using ViscoplasticityStressUpdateBaseTempl<is_ad>::_intermediate_porosity; \
113 using ViscoplasticityStressUpdateBaseTempl<is_ad>::_effective_inelastic_strain; \
114 using ViscoplasticityStressUpdateBaseTempl<is_ad>::_effective_inelastic_strain_old; \
115 using ViscoplasticityStressUpdateBaseTempl<is_ad>::_inelastic_strain; \
116 using ViscoplasticityStressUpdateBaseTempl<is_ad>::_inelastic_strain_old; \
117 using ViscoplasticityStressUpdateBaseTempl<is_ad>::_porosity_old; \
118 using ViscoplasticityStressUpdateBaseTempl<is_ad>::updateIntermediatePorosity; \
119 using ViscoplasticityStressUpdateBaseTempl<is_ad>::computeStressFinalize; \
120 using ViscoplasticityStressUpdateBaseTempl<is_ad>::computeStressInitialize
121
typename GenericMaterialPropertyStruct< T, is_ad >::type GenericMaterialProperty
Moose::GenericType< RankFourTensor, is_ad > GenericRankFourTensor
Moose::GenericType< Real, is_ad > GenericReal
Moose::GenericType< RankTwoTensor, is_ad > GenericRankTwoTensor
ViscoplasticityStressUpdateBaseTempl< true > ADViscoplasticityStressUpdateBase
ViscoplasticityStressUpdateBaseTempl< false > ViscoplasticityStressUpdateBase
const InputParameters & parameters() const
const std::string & _name
StressUpdateBase is a material that is not called by MOOSE because of the compute=false flag set in t...
const std::string _base_name
Name used as a prefix for all material properties related to the stress update model.
const MooseArray< Point > & _q_point
virtual void updateState(GR2 &strain_increment, GR2 &inelastic_strain_increment, const GR2 &rotation_increment, GR2 &stress_new, const RankTwoTensor &stress_old, const GR4 &elasticity_tensor, const RankTwoTensor &elastic_strain_old, bool compute_full_tangent_operator=false, RankFourTensor &tangent_operator=StressUpdateBaseTempl< is_ad >::_identityTensor)
Given a strain increment that results in a trial stress, perform some procedure (such as an iterative...
const GenericMaterialProperty< RankTwoTensor, is_ad > & _strain_increment
Material property for the total strain increment.
const NegativeBehavior _negative_behavior
Enum for negative porosity handling.
void updateIntermediatePorosity(const GenericRankTwoTensor< is_ad > &elastic_strain_increment)
const MaterialProperty< Real > & _effective_inelastic_strain_old
GenericReal< is_ad > _intermediate_porosity
Container for the porosity calculated from all other intelastic models except the current model.
virtual void computeStressInitialize(const GenericReal< is_ad > &, const GenericRankFourTensor< is_ad > &)
Perform any necessary initialization before return mapping iterations.
virtual void propagateQpStatefulProperties() override
If updateState is not called during a timestep, this will be.
bool requiresIsotropicTensor() override
Does the model require the elasticity tensor to be isotropic?
const MaterialProperty< RankTwoTensor > & _inelastic_strain_old
GenericMaterialProperty< Real, is_ad > & _effective_inelastic_strain
Effective inelastic strain material property.
GenericMaterialProperty< RankTwoTensor, is_ad > & _inelastic_strain
Creep strain material property.
const std::string _total_strain_base_name
String designating the base name of the total strain.
virtual void computeStressFinalize(const GenericRankTwoTensor< is_ad > &)
Perform any necessary steps to finalize state after return mapping iterations.
const MaterialProperty< Real > & _porosity_old
Material property for the old porosity.
const bool _verbose
Flag to enable verbose output.
Real _max_inelastic_increment
Max increment for inelastic strain.