www.mooseframework.org
CappedWeakPlaneStressUpdate.h
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
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 
18 
19 template <>
21 
32 {
33 public:
34  static InputParameters validParams();
35 
36  CappedWeakPlaneStressUpdate(const InputParameters & parameters);
37 
41  bool requiresIsotropicTensor() override { return false; }
42 
43 protected:
46 
49 
52 
55 
58 
60  const Real _small_smoother2;
61 
63  const bool _perfect_guess;
64 
78  enum class StressReturnType
79  {
84 
87 
90 
93 
94  virtual void yieldFunctionValues(Real p,
95  Real q,
96  const std::vector<Real> & intnl,
97  std::vector<Real> & yf) const override;
98 
99  virtual void computeAllQ(Real p,
100  Real q,
101  const std::vector<Real> & intnl,
102  std::vector<yieldAndFlow> & all_q) const override;
103 
104  virtual void consistentTangentOperator(const RankTwoTensor & stress_trial,
105  Real p_trial,
106  Real q_trial,
107  const RankTwoTensor & stress,
108  Real p,
109  Real q,
110  Real gaE,
111  const yieldAndFlow & smoothed_q,
112  const RankFourTensor & Eijkl,
113  bool compute_full_tangent_operator,
114  RankFourTensor & cto) const override;
115 
116  virtual void setStressAfterReturn(const RankTwoTensor & stress_trial,
117  Real p_ok,
118  Real q_ok,
119  Real gaE,
120  const std::vector<Real> & intnl,
121  const yieldAndFlow & smoothed_q,
122  const RankFourTensor & Eijkl,
123  RankTwoTensor & stress) const override;
124 
125  virtual void preReturnMap(Real p_trial,
126  Real q_trial,
127  const RankTwoTensor & stress_trial,
128  const std::vector<Real> & intnl_old,
129  const std::vector<Real> & yf,
130  const RankFourTensor & Eijkl) override;
131 
132  virtual void initializeVars(Real p_trial,
133  Real q_trial,
134  const std::vector<Real> & intnl_old,
135  Real & p,
136  Real & q,
137  Real & gaE,
138  std::vector<Real> & intnl) const override;
139 
140  virtual void setIntnlValues(Real p_trial,
141  Real q_trial,
142  Real p,
143  Real q,
144  const std::vector<Real> & intnl_old,
145  std::vector<Real> & intnl) const override;
146 
147  virtual void setIntnlDerivatives(Real p_trial,
148  Real q_trial,
149  Real p,
150  Real q,
151  const std::vector<Real> & intnl,
152  std::vector<std::vector<Real>> & dintnl) const override;
153 
154  virtual void computePQ(const RankTwoTensor & stress, Real & p, Real & q) const override;
155 
156  virtual void initializeReturnProcess() override;
157 
158  virtual void finalizeReturnProcess(const RankTwoTensor & rotation_increment) override;
159 
160  virtual void setEppEqq(const RankFourTensor & Eijkl, Real & Epp, Real & Eqq) const override;
161 
162  virtual RankTwoTensor dpdstress(const RankTwoTensor & stress) const override;
163 
164  virtual RankFourTensor d2pdstress2(const RankTwoTensor & stress) const override;
165 
166  virtual RankTwoTensor dqdstress(const RankTwoTensor & stress) const override;
167 
168  virtual RankFourTensor d2qdstress2(const RankTwoTensor & stress) const override;
169 };
CappedWeakPlaneStressUpdate::setEppEqq
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.
Definition: CappedWeakPlaneStressUpdate.C:129
CappedWeakPlaneStressUpdate::StressReturnType
StressReturnType
This allows some simplification in the return-map process.
Definition: CappedWeakPlaneStressUpdate.h:78
CappedWeakPlaneStressUpdate::yieldFunctionValues
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.
Definition: CappedWeakPlaneStressUpdate.C:263
CappedWeakPlaneStressUpdate::_tstrength
const TensorMechanicsHardeningModel & _tstrength
Hardening model for tensile strength.
Definition: CappedWeakPlaneStressUpdate.h:54
CappedWeakPlaneStressUpdate::initializeVars
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.
Definition: CappedWeakPlaneStressUpdate.C:378
CappedWeakPlaneStressUpdate::_cohesion
const TensorMechanicsHardeningModel & _cohesion
Hardening model for cohesion.
Definition: CappedWeakPlaneStressUpdate.h:45
CappedWeakPlaneStressUpdate::_perfect_guess
const bool _perfect_guess
Initialize the NR proceedure from a guess coming from perfect plasticity.
Definition: CappedWeakPlaneStressUpdate.h:63
MultiParameterPlasticityStressUpdate::yieldAndFlow
Struct designed to hold info about a single yield function and its derivatives, as well as the flow d...
Definition: MultiParameterPlasticityStressUpdate.h:214
CappedWeakPlaneStressUpdate::_in_trial02
Real _in_trial02
trial value of stress(0, 2)
Definition: CappedWeakPlaneStressUpdate.h:86
CappedWeakPlaneStressUpdate::d2pdstress2
virtual RankFourTensor d2pdstress2(const RankTwoTensor &stress) const override
d2(p)/d(stress)/d(stress) Derived classes must override this
Definition: CappedWeakPlaneStressUpdate.C:494
CappedWeakPlaneStressUpdate::StressReturnType::no_tension
CappedWeakPlaneStressUpdate::setIntnlDerivatives
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,...
Definition: CappedWeakPlaneStressUpdate.C:161
CappedWeakPlaneStressUpdate::validParams
static InputParameters validParams()
Definition: CappedWeakPlaneStressUpdate.C:19
TwoParameterPlasticityStressUpdate
TwoParameterPlasticityStressUpdate performs the return-map algorithm and associated stress updates fo...
Definition: TwoParameterPlasticityStressUpdate.h:29
CappedWeakPlaneStressUpdate::d2qdstress2
virtual RankFourTensor d2qdstress2(const RankTwoTensor &stress) const override
d2(q)/d(stress)/d(stress) Derived classes must override this
Definition: CappedWeakPlaneStressUpdate.C:519
CappedWeakPlaneStressUpdate::StressReturnType::nothing_special
CappedWeakPlaneStressUpdate::_small_smoother2
const Real _small_smoother2
The cone vertex is smoothed by this amount.
Definition: CappedWeakPlaneStressUpdate.h:60
CappedWeakPlaneStressUpdate::computePQ
virtual void computePQ(const RankTwoTensor &stress, Real &p, Real &q) const override
Computes p and q, given stress.
Definition: CappedWeakPlaneStressUpdate.C:121
CappedWeakPlaneStressUpdate::computeAllQ
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.
Definition: CappedWeakPlaneStressUpdate.C:283
CappedWeakPlaneStressUpdate::_tan_psi
const TensorMechanicsHardeningModel & _tan_psi
Hardening model for tan(psi)
Definition: CappedWeakPlaneStressUpdate.h:51
CappedWeakPlaneStressUpdate::_in_trial12
Real _in_trial12
trial value of stress(1, 2)
Definition: CappedWeakPlaneStressUpdate.h:89
CappedWeakPlaneStressUpdate::_tan_phi
const TensorMechanicsHardeningModel & _tan_phi
Hardening model for tan(phi)
Definition: CappedWeakPlaneStressUpdate.h:48
CappedWeakPlaneStressUpdate::_cstrength
const TensorMechanicsHardeningModel & _cstrength
Hardening model for compressive strength.
Definition: CappedWeakPlaneStressUpdate.h:57
CappedWeakPlaneStressUpdate::_in_q_trial
Real _in_q_trial
trial value of q
Definition: CappedWeakPlaneStressUpdate.h:92
CappedWeakPlaneStressUpdate::StressReturnType::no_compression
CappedWeakPlaneStressUpdate::finalizeReturnProcess
virtual void finalizeReturnProcess(const RankTwoTensor &rotation_increment) override
Derived classes may use this to perform calculations after the return-map process has completed succe...
Definition: CappedWeakPlaneStressUpdate.C:95
CappedWeakPlaneStressUpdate::dpdstress
virtual RankTwoTensor dpdstress(const RankTwoTensor &stress) const override
d(p)/d(stress) Derived classes must override this
Definition: CappedWeakPlaneStressUpdate.C:486
CappedWeakPlaneStressUpdate::CappedWeakPlaneStressUpdate
CappedWeakPlaneStressUpdate(const InputParameters &parameters)
Definition: CappedWeakPlaneStressUpdate.C:59
RankFourTensorTempl< Real >
CappedWeakPlaneStressUpdate::dqdstress
virtual RankTwoTensor dqdstress(const RankTwoTensor &stress) const override
d(q)/d(stress) Derived classes must override this
Definition: CappedWeakPlaneStressUpdate.C:500
validParams< CappedWeakPlaneStressUpdate >
InputParameters validParams< CappedWeakPlaneStressUpdate >()
CappedWeakPlaneStressUpdate::initializeReturnProcess
virtual void initializeReturnProcess() override
Derived classes may use this to perform calculations before any return-map process is performed,...
Definition: CappedWeakPlaneStressUpdate.C:89
CappedWeakPlaneStressUpdate::preReturnMap
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...
Definition: CappedWeakPlaneStressUpdate.C:101
CappedWeakPlaneStressUpdate
CappedWeakPlaneStressUpdate performs the return-map algorithm and associated stress updates for plast...
Definition: CappedWeakPlaneStressUpdate.h:31
CappedWeakPlaneStressUpdate::requiresIsotropicTensor
bool requiresIsotropicTensor() override
Does the model require the elasticity tensor to be isotropic?
Definition: CappedWeakPlaneStressUpdate.h:41
RankTwoTensorTempl< Real >
CappedWeakPlaneStressUpdate::consistentTangentOperator
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.
Definition: CappedWeakPlaneStressUpdate.C:177
CappedWeakPlaneStressUpdate::_stress_return_type
enum CappedWeakPlaneStressUpdate::StressReturnType _stress_return_type
CappedWeakPlaneStressUpdate::setIntnlValues
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,...
Definition: CappedWeakPlaneStressUpdate.C:473
CappedWeakPlaneStressUpdate::setStressAfterReturn
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.
Definition: CappedWeakPlaneStressUpdate.C:136
TensorMechanicsHardeningModel.h
TwoParameterPlasticityStressUpdate.h
TensorMechanicsHardeningModel
Hardening Model base class.
Definition: TensorMechanicsHardeningModel.h:27