https://mooseframework.inl.gov
Loading...
Searching...
No Matches
CappedWeakPlaneStressUpdate.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
14
15#include <array>
16
27{
28public:
30
32
36 bool requiresIsotropicTensor() override { return false; }
37
38protected:
41
44
47
50
53
55 const Real _small_smoother2;
56
58 const bool _perfect_guess;
59
79
82
85
88
89 virtual void yieldFunctionValues(Real p,
90 Real q,
91 const std::vector<Real> & intnl,
92 std::vector<Real> & yf) const override;
93
94 virtual void computeAllQ(Real p,
95 Real q,
96 const std::vector<Real> & intnl,
97 std::vector<yieldAndFlow> & all_q) const override;
98
99 virtual void consistentTangentOperator(const RankTwoTensor & stress_trial,
100 Real p_trial,
101 Real q_trial,
102 const RankTwoTensor & stress,
103 Real p,
104 Real q,
105 Real gaE,
106 const yieldAndFlow & smoothed_q,
107 const RankFourTensor & Eijkl,
108 bool compute_full_tangent_operator,
109 RankFourTensor & cto) const override;
110
111 virtual void setStressAfterReturn(const RankTwoTensor & stress_trial,
112 Real p_ok,
113 Real q_ok,
114 Real gaE,
115 const std::vector<Real> & intnl,
116 const yieldAndFlow & smoothed_q,
117 const RankFourTensor & Eijkl,
118 RankTwoTensor & stress) const override;
119
120 virtual void preReturnMap(Real p_trial,
121 Real q_trial,
122 const RankTwoTensor & stress_trial,
123 const std::vector<Real> & intnl_old,
124 const std::vector<Real> & yf,
125 const RankFourTensor & Eijkl) override;
126
127 virtual void initializeVars(Real p_trial,
128 Real q_trial,
129 const std::vector<Real> & intnl_old,
130 Real & p,
131 Real & q,
132 Real & gaE,
133 std::vector<Real> & intnl) const override;
134
135 virtual void setIntnlValues(Real p_trial,
136 Real q_trial,
137 Real p,
138 Real q,
139 const std::vector<Real> & intnl_old,
140 std::vector<Real> & intnl) const override;
141
142 virtual void setIntnlDerivatives(Real p_trial,
143 Real q_trial,
144 Real p,
145 Real q,
146 const std::vector<Real> & intnl,
147 std::vector<std::vector<Real>> & dintnl) const override;
148
149 virtual void computePQ(const RankTwoTensor & stress, Real & p, Real & q) const override;
150
151 virtual void initializeReturnProcess() override;
152
153 virtual void finalizeReturnProcess(const RankTwoTensor & rotation_increment) override;
154
155 virtual void setEppEqq(const RankFourTensor & Eijkl, Real & Epp, Real & Eqq) const override;
156
157 virtual RankTwoTensor dpdstress(const RankTwoTensor & stress) const override;
158
159 virtual RankFourTensor d2pdstress2(const RankTwoTensor & stress) const override;
160
161 virtual RankTwoTensor dqdstress(const RankTwoTensor & stress) const override;
162
163 virtual RankFourTensor d2qdstress2(const RankTwoTensor & stress) const override;
164};
const Real p
CappedWeakPlaneStressUpdate performs the return-map algorithm and associated stress updates for plast...
const SolidMechanicsHardeningModel & _cstrength
Hardening model for compressive strength.
virtual RankTwoTensor dqdstress(const RankTwoTensor &stress) const override
d(q)/d(stress) Derived classes must override this
virtual void setIntnlDerivatives(Real p_trial, Real q_trial, Real p, Real q, const std::vector< Real > &intnl, std::vector< std::vector< Real > > &dintnl) const override
Sets the derivatives of internal parameters, based on the trial values of p and q,...
virtual void yieldFunctionValues(Real p, Real q, const std::vector< Real > &intnl, std::vector< Real > &yf) const override
Computes the values of the yield functions, given p, q and intnl parameters.
virtual RankFourTensor d2pdstress2(const RankTwoTensor &stress) const override
d2(p)/d(stress)/d(stress) Derived classes must override this
Real _in_trial12
trial value of stress(1, 2)
virtual void finalizeReturnProcess(const RankTwoTensor &rotation_increment) override
Derived classes may use this to perform calculations after the return-map process has completed succe...
virtual void setIntnlValues(Real p_trial, Real q_trial, Real p, Real q, const std::vector< Real > &intnl_old, std::vector< Real > &intnl) const override
Sets the internal parameters based on the trial values of p and q, their current values,...
virtual RankTwoTensor dpdstress(const RankTwoTensor &stress) const override
d(p)/d(stress) Derived classes must override this
virtual void initializeVars(Real p_trial, Real q_trial, const std::vector< Real > &intnl_old, Real &p, Real &q, Real &gaE, std::vector< Real > &intnl) const override
Sets (p, q, gaE, intnl) at "good guesses" of the solution to the Return-Map algorithm.
virtual void computeAllQ(Real p, Real q, const std::vector< Real > &intnl, std::vector< yieldAndFlow > &all_q) const override
Completely fills all_q with correct values.
StressReturnType
This allows some simplification in the return-map process.
virtual RankFourTensor d2qdstress2(const RankTwoTensor &stress) const override
d2(q)/d(stress)/d(stress) Derived classes must override this
virtual void setEppEqq(const RankFourTensor &Eijkl, Real &Epp, Real &Eqq) const override
Set Epp and Eqq based on the elasticity tensor Derived classes must override this.
const SolidMechanicsHardeningModel & _tstrength
Hardening model for tensile strength.
const Real _small_smoother2
The cone vertex is smoothed by this amount.
virtual void initializeReturnProcess() override
Derived classes may use this to perform calculations before any return-map process is performed,...
bool requiresIsotropicTensor() override
Does the model require the elasticity tensor to be isotropic?
const SolidMechanicsHardeningModel & _cohesion
Hardening model for cohesion.
virtual void setStressAfterReturn(const RankTwoTensor &stress_trial, Real p_ok, Real q_ok, Real gaE, const std::vector< Real > &intnl, const yieldAndFlow &smoothed_q, const RankFourTensor &Eijkl, RankTwoTensor &stress) const override
Sets stress from the admissible parameters.
const SolidMechanicsHardeningModel & _tan_psi
Hardening model for tan(psi)
enum CappedWeakPlaneStressUpdate::StressReturnType _stress_return_type
virtual void computePQ(const RankTwoTensor &stress, Real &p, Real &q) const override
Computes p and q, given stress.
const SolidMechanicsHardeningModel & _tan_phi
Hardening model for tan(phi)
const bool _perfect_guess
Initialize the NR proceedure from a guess coming from perfect plasticity.
virtual void consistentTangentOperator(const RankTwoTensor &stress_trial, Real p_trial, Real q_trial, const RankTwoTensor &stress, Real p, Real q, Real gaE, const yieldAndFlow &smoothed_q, const RankFourTensor &Eijkl, bool compute_full_tangent_operator, RankFourTensor &cto) const override
Calculates the consistent tangent operator.
virtual void preReturnMap(Real p_trial, Real q_trial, const RankTwoTensor &stress_trial, const std::vector< Real > &intnl_old, const std::vector< Real > &yf, const RankFourTensor &Eijkl) override
Derived classes may employ this function to record stuff or do other computations prior to the return...
Real _in_trial02
trial value of stress(0, 2)
const InputParameters & parameters() const
TwoParameterPlasticityStressUpdate performs the return-map algorithm and associated stress updates fo...
Struct designed to hold info about a single yield function and its derivatives, as well as the flow d...