https://mooseframework.inl.gov
SolidMechanicsPlasticMohrCoulomb.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 
29 {
30 public:
32 
34 
35  virtual std::string modelName() const override;
36 
37 protected:
38  Real yieldFunction(const RankTwoTensor & stress, Real intnl) const override;
39 
40  RankTwoTensor dyieldFunction_dstress(const RankTwoTensor & stress, Real intnl) const override;
41 
42  Real dyieldFunction_dintnl(const RankTwoTensor & stress, Real intnl) const override;
43 
44  RankTwoTensor flowPotential(const RankTwoTensor & stress, Real intnl) const override;
45 
46  RankFourTensor dflowPotential_dstress(const RankTwoTensor & stress, Real intnl) const override;
47 
48  RankTwoTensor dflowPotential_dintnl(const RankTwoTensor & stress, Real intnl) const override;
49 
52 
55 
58 
68 
71 
74 
77 
80 
83 
86 
89 
92 
95 
98 
101 
103  virtual Real smooth(const RankTwoTensor & stress) const;
104 
106  virtual Real dsmooth(const RankTwoTensor & stress) const;
107 
109  virtual Real d2smooth(const RankTwoTensor & stress) const;
110 
112  virtual Real cohesion(const Real internal_param) const;
113 
115  virtual Real dcohesion(const Real internal_param) const;
116 
118  virtual Real phi(const Real internal_param) const;
119 
121  virtual Real dphi(const Real internal_param) const;
122 
124  virtual Real psi(const Real internal_param) const;
125 
127  virtual Real dpsi(const Real internal_param) const;
128 
129 private:
139  void abbo(const Real sin3lode, const Real sin_angle, Real & aaa, Real & bbb, Real & ccc) const;
140 
150  void
151  dabbo(const Real sin3lode, const Real sin_angle, Real & daaa, Real & dbbb, Real & dccc) const;
152 
159  RankTwoTensor df_dsig(const RankTwoTensor & stress, const Real sin_angle) const;
160 };
Real _lode_cutoff
if secondInvariant < _lode_cutoff then set Lode angle to zero. This is to guard against precision-los...
virtual Real d2smooth(const RankTwoTensor &stress) const
returns the d^2a/dstress_mean^2 - see doco for _tip_scheme
virtual Real dcohesion(const Real internal_param) const
d(cohesion)/d(internal_param);
virtual Real cohesion(const Real internal_param) const
cohesion as a function of internal parameter
Real _sin3tt
sin(3*_tt) - useful for making comparisons with Lode angle
RankTwoTensor dflowPotential_dintnl(const RankTwoTensor &stress, Real intnl) const override
The derivative of the flow potential with respect to the internal parameter.
Real _cap_rate
dictates how quickly the &#39;cap&#39; degenerates to a hemisphere - see doco for _tip_scheme ...
virtual Real dsmooth(const RankTwoTensor &stress) const
returns the da/dstress_mean - see doco for _tip_scheme
Real _tt
edge smoothing parameter, in radians
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...
virtual std::string modelName() const override
virtual Real dphi(const Real internal_param) const
d(phi)/d(internal_param);
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 yieldFunction(const RankTwoTensor &stress, Real intnl) const override
The following functions are what you should override when building single-plasticity models...
SolidMechanicsPlasticMohrCoulomb(const InputParameters &parameters)
const SolidMechanicsHardeningModel & _cohesion
Hardening model for cohesion.
Real dyieldFunction_dintnl(const RankTwoTensor &stress, Real intnl) const override
The derivative of yield function with respect to the internal parameter.
virtual Real psi(const Real internal_param) const
dilation angle as a function of internal parameter
const SolidMechanicsHardeningModel & _psi
Hardening model for psi.
RankFourTensor dflowPotential_dstress(const RankTwoTensor &stress, Real intnl) const override
The derivative of the flow potential with respect to stress.
const SolidMechanicsHardeningModel & _phi
Hardening model for phi.
RankTwoTensor dyieldFunction_dstress(const RankTwoTensor &stress, Real intnl) const override
The derivative of yield function with respect to stress.
RankTwoTensor flowPotential(const RankTwoTensor &stress, Real intnl) const override
The flow potential.
virtual Real dpsi(const Real internal_param) const
d(psi)/d(internal_param);
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.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
Real _cap_start
smoothing parameter dictating when the &#39;cap&#39; will start - see doco for _tip_scheme ...
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 ...
const InputParameters & parameters() const
Plastic Model base class The virtual functions written below must be over-ridden in derived classes t...
Real _small_smoother2
Square of tip smoothing parameter to smooth the cone at mean_stress = T.
virtual Real smooth(const RankTwoTensor &stress) const
returns the &#39;a&#39; parameter - see doco for _tip_scheme