www.mooseframework.org
TensorMechanicsPlasticMohrCoulomb.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 TENSORMECHANICSPLASTICMOHRCOULOMB_H
8 #define TENSORMECHANICSPLASTICMOHRCOULOMB_H
9 
12 
14 
15 template <>
17 
32 {
33 public:
34  TensorMechanicsPlasticMohrCoulomb(const InputParameters & parameters);
35 
36  virtual std::string modelName() const override;
37 
38 protected:
39  Real yieldFunction(const RankTwoTensor & stress, Real intnl) const override;
40 
41  RankTwoTensor dyieldFunction_dstress(const RankTwoTensor & stress, Real intnl) const override;
42 
43  Real dyieldFunction_dintnl(const RankTwoTensor & stress, Real intnl) const override;
44 
45  RankTwoTensor flowPotential(const RankTwoTensor & stress, Real intnl) const override;
46 
47  RankFourTensor dflowPotential_dstress(const RankTwoTensor & stress, Real intnl) const override;
48 
49  RankTwoTensor dflowPotential_dintnl(const RankTwoTensor & stress, Real intnl) const override;
50 
53 
56 
59 
68  MooseEnum _tip_scheme;
69 
72 
74  Real _cap_start;
75 
77  Real _cap_rate;
78 
80  Real _tt;
81 
83  Real _costt;
84 
86  Real _sintt;
87 
89  Real _cos3tt;
90 
92  Real _sin3tt;
93 
95  Real _cos6tt;
96 
98  Real _sin6tt;
99 
102 
104  virtual Real smooth(const RankTwoTensor & stress) const;
105 
107  virtual Real dsmooth(const RankTwoTensor & stress) const;
108 
110  virtual Real d2smooth(const RankTwoTensor & stress) const;
111 
113  virtual Real cohesion(const Real internal_param) const;
114 
116  virtual Real dcohesion(const Real internal_param) const;
117 
119  virtual Real phi(const Real internal_param) const;
120 
122  virtual Real dphi(const Real internal_param) const;
123 
125  virtual Real psi(const Real internal_param) const;
126 
128  virtual Real dpsi(const Real internal_param) const;
129 
130 private:
140  void abbo(const Real sin3lode, const Real sin_angle, Real & aaa, Real & bbb, Real & ccc) const;
141 
151  void
152  dabbo(const Real sin3lode, const Real sin_angle, Real & daaa, Real & dbbb, Real & dccc) const;
153 
160  RankTwoTensor df_dsig(const RankTwoTensor & stress, const Real sin_angle) const;
161 };
162 
163 #endif // TENSORMECHANICSPLASTICMOHRCOULOMB_H
virtual Real dsmooth(const RankTwoTensor &stress) const
returns the da/dstress_mean - see doco for _tip_scheme
virtual Real psi(const Real internal_param) const
dilation angle as a function of internal parameter
const TensorMechanicsHardeningModel & _cohesion
Hardening model for cohesion.
virtual std::string modelName() const override
TensorMechanicsPlasticMohrCoulomb(const InputParameters &parameters)
RankTwoTensor dyieldFunction_dstress(const RankTwoTensor &stress, Real intnl) const override
The derivative of yield function with respect to stress.
virtual Real dpsi(const Real internal_param) const
d(psi)/d(internal_param);
virtual Real smooth(const RankTwoTensor &stress) const
returns the &#39;a&#39; parameter - see doco for _tip_scheme
Real _cap_start
smoothing parameter dictating when the &#39;cap&#39; will start - see doco for _tip_scheme ...
const TensorMechanicsHardeningModel & _phi
Hardening model for phi.
virtual Real dcohesion(const Real internal_param) const
d(cohesion)/d(internal_param);
Real _cap_rate
dictates how quickly the &#39;cap&#39; degenerates to a hemisphere - see doco for _tip_scheme ...
Real _tt
edge smoothing parameter, in radians
void abbo(const Real sin3lode, const Real sin_angle, Real &aaa, Real &bbb, Real &ccc) const
Computes Abbo et al&#39;s A, B and C parameters.
RankFourTensor dflowPotential_dstress(const RankTwoTensor &stress, Real intnl) const override
The derivative of the flow potential with respect to stress.
virtual Real dphi(const Real internal_param) const
d(phi)/d(internal_param);
Real yieldFunction(const RankTwoTensor &stress, Real intnl) const override
The following functions are what you should override when building single-plasticity models...
Real _lode_cutoff
if secondInvariant < _lode_cutoff then set Lode angle to zero. This is to guard against precision-los...
RankTwoTensor flowPotential(const RankTwoTensor &stress, Real intnl) const override
The flow potential.
virtual Real cohesion(const Real internal_param) const
cohesion as a function of internal parameter
RankTwoTensor df_dsig(const RankTwoTensor &stress, const Real sin_angle) const
d(yieldFunction)/d(stress), but with the ability to put friction or dilation angle into the result ...
MooseEnum _tip_scheme
The yield function is modified to f = s_m*sinphi + sqrt(a + s_bar^2 K^2) - C*cosphi where "a" depends...
InputParameters validParams< TensorMechanicsPlasticMohrCoulomb >()
Real _sin3tt
sin(3*_tt) - useful for making comparisons with Lode angle
virtual Real d2smooth(const RankTwoTensor &stress) const
returns the d^2a/dstress_mean^2 - see doco for _tip_scheme
Plastic Model base class The virtual functions written below must be over-ridden in derived classes t...
virtual Real phi(const Real internal_param) const
friction angle as a function of internal parameter
Mohr-Coulomb plasticity, nonassociative with hardening/softening.
void dabbo(const Real sin3lode, const Real sin_angle, Real &daaa, Real &dbbb, Real &dccc) const
Computes derivatives of Abbo et al&#39;s A, B and C parameters wrt sin_angle.
Real _small_smoother2
Square of tip smoothing parameter to smooth the cone at mean_stress = T.
const TensorMechanicsHardeningModel & _psi
Hardening model for psi.
Real dyieldFunction_dintnl(const RankTwoTensor &stress, Real intnl) const override
The derivative of yield function with respect to the internal parameter.
RankTwoTensor dflowPotential_dintnl(const RankTwoTensor &stress, Real intnl) const override
The derivative of the flow potential with respect to the internal parameter.