www.mooseframework.org
CappedWeakPlaneStressUpdate.h
Go to the documentation of this file.
1 /****************************************************************/
2 /* MOOSE - Multiphysics Object Oriented Simulation Environment */
3 /* */
4 /* All contents are licensed under LGPL V2.1 */
5 /* See LICENSE for full restrictions */
6 /****************************************************************/
7 #ifndef CAPPEDWEAKPLANESTRESSUPDATE_H
8 #define CAPPEDWEAKPLANESTRESSUPDATE_H
9 
12 
13 #include <array>
14 
16 
17 template <>
19 
30 {
31 public:
32  CappedWeakPlaneStressUpdate(const InputParameters & parameters);
33 
37  bool requiresIsotropicTensor() override { return false; }
38 
39 protected:
42 
45 
48 
51 
54 
56  const Real _small_smoother2;
57 
59  const bool _perfect_guess;
60 
74  enum class StressReturnType
75  {
80 
83 
86 
89 
90  virtual void yieldFunctionValues(Real p,
91  Real q,
92  const std::vector<Real> & intnl,
93  std::vector<Real> & yf) const override;
94 
95  virtual void computeAllQ(Real p,
96  Real q,
97  const std::vector<Real> & intnl,
98  std::vector<yieldAndFlow> & all_q) const override;
99 
100  virtual void consistentTangentOperator(const RankTwoTensor & stress_trial,
101  Real p_trial,
102  Real q_trial,
103  const RankTwoTensor & stress,
104  Real p,
105  Real q,
106  Real gaE,
107  const yieldAndFlow & smoothed_q,
108  const RankFourTensor & Eijkl,
109  bool compute_full_tangent_operator,
110  RankFourTensor & cto) const override;
111 
112  virtual void setStressAfterReturn(const RankTwoTensor & stress_trial,
113  Real p_ok,
114  Real q_ok,
115  Real gaE,
116  const std::vector<Real> & intnl,
117  const yieldAndFlow & smoothed_q,
118  const RankFourTensor & Eijkl,
119  RankTwoTensor & stress) const override;
120 
121  virtual void preReturnMap(Real p_trial,
122  Real q_trial,
123  const RankTwoTensor & stress_trial,
124  const std::vector<Real> & intnl_old,
125  const std::vector<Real> & yf,
126  const RankFourTensor & Eijkl) override;
127 
128  virtual void initializeVars(Real p_trial,
129  Real q_trial,
130  const std::vector<Real> & intnl_old,
131  Real & p,
132  Real & q,
133  Real & gaE,
134  std::vector<Real> & intnl) const override;
135 
136  virtual void setIntnlValues(Real p_trial,
137  Real q_trial,
138  Real p,
139  Real q,
140  const std::vector<Real> & intnl_old,
141  std::vector<Real> & intnl) const override;
142 
143  virtual void setIntnlDerivatives(Real p_trial,
144  Real q_trial,
145  Real p,
146  Real q,
147  const std::vector<Real> & intnl,
148  std::vector<std::vector<Real>> & dintnl) const override;
149 
150  virtual void computePQ(const RankTwoTensor & stress, Real & p, Real & q) const override;
151 
152  virtual void initializeReturnProcess() override;
153 
154  virtual void finalizeReturnProcess(const RankTwoTensor & rotation_increment) override;
155 
156  virtual void setEppEqq(const RankFourTensor & Eijkl, Real & Epp, Real & Eqq) const override;
157 
158  virtual RankTwoTensor dpdstress(const RankTwoTensor & stress) const override;
159 
160  virtual RankFourTensor d2pdstress2(const RankTwoTensor & stress) const override;
161 
162  virtual RankTwoTensor dqdstress(const RankTwoTensor & stress) const override;
163 
164  virtual RankFourTensor d2qdstress2(const RankTwoTensor & stress) const override;
165 };
166 
167 #endif // CAPPEDWEAKPLANESTRESSUPDATE_H
const TensorMechanicsHardeningModel & _cstrength
Hardening model for compressive strength.
virtual RankTwoTensor dpdstress(const RankTwoTensor &stress) const override
d(p)/d(stress) Derived classes must override this
InputParameters validParams< CappedWeakPlaneStressUpdate >()
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...
const TensorMechanicsHardeningModel & _cohesion
Hardening model for cohesion.
virtual RankFourTensor d2pdstress2(const RankTwoTensor &stress) const override
d2(p)/d(stress)/d(stress) Derived classes must override this
Struct designed to hold info about a single yield function and its derivatives, as well as the flow d...
virtual RankTwoTensor dqdstress(const RankTwoTensor &stress) const override
d(q)/d(stress) Derived classes must override this
TwoParameterPlasticityStressUpdate performs the return-map algorithm and associated stress updates fo...
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.
const TensorMechanicsHardeningModel & _tan_phi
Hardening model for tan(phi)
Real _in_trial02
trial value of stress(0, 2)
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 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.
virtual void finalizeReturnProcess(const RankTwoTensor &rotation_increment) override
Derived classes may use this to perform calculations after the return-map process has completed succe...
StressReturnType
This allows some simplification in the return-map process.
const TensorMechanicsHardeningModel & _tan_psi
Hardening model for tan(psi)
const bool _perfect_guess
Initialize the NR proceedure from a guess coming from perfect plasticity.
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.
enum CappedWeakPlaneStressUpdate::StressReturnType _stress_return_type
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.
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, and the old values of the internal parameters.
virtual RankFourTensor d2qdstress2(const RankTwoTensor &stress) const override
d2(q)/d(stress)/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 computePQ(const RankTwoTensor &stress, Real &p, Real &q) const override
Computes p and q, given stress.
CappedWeakPlaneStressUpdate(const InputParameters &parameters)
CappedWeakPlaneStressUpdate performs the return-map algorithm and associated stress updates for plast...
virtual void initializeReturnProcess() override
Derived classes may use this to perform calculations before any return-map process is performed...
const Real _small_smoother2
The cone vertex is smoothed by this amount.
const TensorMechanicsHardeningModel & _tstrength
Hardening model for tensile strength.
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, their current values, and the old values of the internal parameters.
bool requiresIsotropicTensor() override
Does the model require the elasticity tensor to be isotropic?
Real _in_trial12
trial value of stress(1, 2)