www.mooseframework.org
TensorMechanicsPlasticDruckerPrager.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 TENSORMECHANICSPLASTICDRUCKERPRAGER_H
8 #define TENSORMECHANICSPLASTICDRUCKERPRAGER_H
9 
12 
14 
15 template <>
17 
26 {
27 public:
28  TensorMechanicsPlasticDruckerPrager(const InputParameters & parameters);
29 
30  virtual std::string modelName() const override;
31 
33  void bothAB(Real intnl, Real & aaa, Real & bbb) const;
34 
36  void dbothAB(Real intnl, Real & daaa, Real & dbbb) const;
37 
43  {
44  friction = 0,
46  };
47 
54  void onlyB(Real intnl, int fd, Real & bbb) const;
55 
62  void donlyB(Real intnl, int fd, Real & dbbb) const;
63 
64 protected:
67 
70 
73 
74  virtual Real yieldFunction(const RankTwoTensor & stress, Real intnl) const override;
75 
76  virtual RankTwoTensor dyieldFunction_dstress(const RankTwoTensor & stress,
77  Real intnl) const override;
78 
79  virtual Real dyieldFunction_dintnl(const RankTwoTensor & stress, Real intnl) const override;
80 
81  virtual RankTwoTensor flowPotential(const RankTwoTensor & stress, Real intnl) const override;
82 
83  virtual RankFourTensor dflowPotential_dstress(const RankTwoTensor & stress,
84  Real intnl) const override;
85 
86  virtual RankTwoTensor dflowPotential_dintnl(const RankTwoTensor & stress,
87  Real intnl) const override;
88 
94  const MooseEnum _mc_interpolation_scheme;
95 
98 
101 
104 
106  virtual RankTwoTensor df_dsig(const RankTwoTensor & stress, Real bbb) const;
107 
108 private:
109  Real _aaa;
110  Real _bbb;
111  Real _bbb_flow;
112 
126  void initializeAandB(Real intnl, Real & aaa, Real & bbb) const;
127 
142  void initializeB(Real intnl, int fd, Real & bbb) const;
143 };
144 
145 #endif // TENSORMECHANICSPLASTICDRUCKERPRAGER_H
virtual Real dyieldFunction_dintnl(const RankTwoTensor &stress, Real intnl) const override
The derivative of yield function with respect to the internal parameter.
virtual Real yieldFunction(const RankTwoTensor &stress, Real intnl) const override
The following functions are what you should override when building single-plasticity models...
const bool _zero_psi_hardening
True if there is no hardening of dilation angle.
virtual RankTwoTensor df_dsig(const RankTwoTensor &stress, Real bbb) const
Function that&#39;s used in dyieldFunction_dstress and flowPotential.
TensorMechanicsPlasticDruckerPrager(const InputParameters &parameters)
virtual std::string modelName() const override
const TensorMechanicsHardeningModel & _mc_phi
Hardening model for tan(phi)
InputParameters validParams< TensorMechanicsPlasticDruckerPrager >()
void bothAB(Real intnl, Real &aaa, Real &bbb) const
Calculates aaa and bbb as a function of the internal parameter intnl.
virtual RankTwoTensor dyieldFunction_dstress(const RankTwoTensor &stress, Real intnl) const override
The derivative of yield function with respect to stress.
Rate-independent non-associative Drucker Prager with hardening/softening.
const TensorMechanicsHardeningModel & _mc_psi
Hardening model for tan(psi)
const bool _zero_phi_hardening
True if there is no hardening of friction angle.
void donlyB(Real intnl, int fd, Real &dbbb) const
Calculate d(bbb)/d(intnl) or d(bbb_flow)/d(intnl)
const bool _zero_cohesion_hardening
True if there is no hardening of cohesion.
FrictionDilation
bbb (friction) and bbb_flow (dilation) are computed using the same function, onlyB, and this parameter tells that function whether to compute bbb or bbb_flow
void dbothAB(Real intnl, Real &daaa, Real &dbbb) const
Calculates d(aaa)/d(intnl) and d(bbb)/d(intnl) as a function of the internal parameter intnl...
void initializeB(Real intnl, int fd, Real &bbb) const
Returns the Drucker-Prager parameters A nice reference on the different relationships between Drucker...
void onlyB(Real intnl, int fd, Real &bbb) const
Calculate bbb or bbb_flow.
const TensorMechanicsHardeningModel & _mc_cohesion
Hardening model for cohesion.
virtual RankTwoTensor flowPotential(const RankTwoTensor &stress, Real intnl) const override
The flow potential.
virtual RankFourTensor dflowPotential_dstress(const RankTwoTensor &stress, Real intnl) const override
The derivative of the flow potential with respect to stress.
Plastic Model base class The virtual functions written below must be over-ridden in derived classes t...
const MooseEnum _mc_interpolation_scheme
The parameters aaa and bbb are chosen to closely match the Mohr-Coulomb yield surface.
void initializeAandB(Real intnl, Real &aaa, Real &bbb) const
Returns the Drucker-Prager parameters A nice reference on the different relationships between Drucker...
virtual RankTwoTensor dflowPotential_dintnl(const RankTwoTensor &stress, Real intnl) const override
The derivative of the flow potential with respect to the internal parameter.