www.mooseframework.org
TensorMechanicsPlasticMohrCoulomb.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 
16 
17 template <>
19 
34 {
35 public:
36  static InputParameters validParams();
37 
38  TensorMechanicsPlasticMohrCoulomb(const InputParameters & parameters);
39 
40  virtual std::string modelName() const override;
41 
42 protected:
43  Real yieldFunction(const RankTwoTensor & stress, Real intnl) const override;
44 
45  RankTwoTensor dyieldFunction_dstress(const RankTwoTensor & stress, Real intnl) const override;
46 
47  Real dyieldFunction_dintnl(const RankTwoTensor & stress, Real intnl) const override;
48 
49  RankTwoTensor flowPotential(const RankTwoTensor & stress, Real intnl) const override;
50 
51  RankFourTensor dflowPotential_dstress(const RankTwoTensor & stress, Real intnl) const override;
52 
53  RankTwoTensor dflowPotential_dintnl(const RankTwoTensor & stress, Real intnl) const override;
54 
57 
60 
63 
72  MooseEnum _tip_scheme;
73 
76 
78  Real _cap_start;
79 
81  Real _cap_rate;
82 
84  Real _tt;
85 
87  Real _costt;
88 
90  Real _sintt;
91 
93  Real _cos3tt;
94 
96  Real _sin3tt;
97 
99  Real _cos6tt;
100 
102  Real _sin6tt;
103 
106 
108  virtual Real smooth(const RankTwoTensor & stress) const;
109 
111  virtual Real dsmooth(const RankTwoTensor & stress) const;
112 
114  virtual Real d2smooth(const RankTwoTensor & stress) const;
115 
117  virtual Real cohesion(const Real internal_param) const;
118 
120  virtual Real dcohesion(const Real internal_param) const;
121 
123  virtual Real phi(const Real internal_param) const;
124 
126  virtual Real dphi(const Real internal_param) const;
127 
129  virtual Real psi(const Real internal_param) const;
130 
132  virtual Real dpsi(const Real internal_param) const;
133 
134 private:
144  void abbo(const Real sin3lode, const Real sin_angle, Real & aaa, Real & bbb, Real & ccc) const;
145 
155  void
156  dabbo(const Real sin3lode, const Real sin_angle, Real & daaa, Real & dbbb, Real & dccc) const;
157 
164  RankTwoTensor df_dsig(const RankTwoTensor & stress, const Real sin_angle) const;
165 };
TensorMechanicsPlasticMohrCoulomb::flowPotential
RankTwoTensor flowPotential(const RankTwoTensor &stress, Real intnl) const override
The flow potential.
Definition: TensorMechanicsPlasticMohrCoulomb.C:228
TensorMechanicsPlasticMohrCoulomb::phi
virtual Real phi(const Real internal_param) const
friction angle as a function of internal parameter
Definition: TensorMechanicsPlasticMohrCoulomb.C:387
TensorMechanicsPlasticMohrCoulomb::dflowPotential_dintnl
RankTwoTensor dflowPotential_dintnl(const RankTwoTensor &stress, Real intnl) const override
The derivative of the flow potential with respect to the internal parameter.
Definition: TensorMechanicsPlasticMohrCoulomb.C:318
TensorMechanicsPlasticMohrCoulomb::_lode_cutoff
Real _lode_cutoff
if secondInvariant < _lode_cutoff then set Lode angle to zero. This is to guard against precision-los...
Definition: TensorMechanicsPlasticMohrCoulomb.h:105
TensorMechanicsPlasticMohrCoulomb::modelName
virtual std::string modelName() const override
Definition: TensorMechanicsPlasticMohrCoulomb.C:509
TensorMechanicsPlasticMohrCoulomb::_sintt
Real _sintt
sin(_tt)
Definition: TensorMechanicsPlasticMohrCoulomb.h:90
TensorMechanicsPlasticMohrCoulomb::df_dsig
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
Definition: TensorMechanicsPlasticMohrCoulomb.C:147
TensorMechanicsPlasticMohrCoulomb::_costt
Real _costt
cos(_tt)
Definition: TensorMechanicsPlasticMohrCoulomb.h:87
TensorMechanicsPlasticMohrCoulomb::dyieldFunction_dstress
RankTwoTensor dyieldFunction_dstress(const RankTwoTensor &stress, Real intnl) const override
The derivative of yield function with respect to stress.
Definition: TensorMechanicsPlasticMohrCoulomb.C:182
TensorMechanicsPlasticMohrCoulomb::_phi
const TensorMechanicsHardeningModel & _phi
Hardening model for phi.
Definition: TensorMechanicsPlasticMohrCoulomb.h:59
TensorMechanicsPlasticMohrCoulomb::_cohesion
const TensorMechanicsHardeningModel & _cohesion
Hardening model for cohesion.
Definition: TensorMechanicsPlasticMohrCoulomb.h:56
TensorMechanicsPlasticMohrCoulomb::_sin6tt
Real _sin6tt
sin(6*_tt)
Definition: TensorMechanicsPlasticMohrCoulomb.h:102
TensorMechanicsPlasticMohrCoulomb::_tt
Real _tt
edge smoothing parameter, in radians
Definition: TensorMechanicsPlasticMohrCoulomb.h:84
TensorMechanicsPlasticMohrCoulomb::validParams
static InputParameters validParams()
Definition: TensorMechanicsPlasticMohrCoulomb.C:19
TensorMechanicsPlasticMohrCoulomb::_small_smoother2
Real _small_smoother2
Square of tip smoothing parameter to smooth the cone at mean_stress = T.
Definition: TensorMechanicsPlasticMohrCoulomb.h:75
TensorMechanicsPlasticModel.h
TensorMechanicsPlasticMohrCoulomb::_tip_scheme
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...
Definition: TensorMechanicsPlasticMohrCoulomb.h:72
TensorMechanicsPlasticMohrCoulomb::dflowPotential_dstress
RankFourTensor dflowPotential_dstress(const RankTwoTensor &stress, Real intnl) const override
The derivative of the flow potential with respect to stress.
Definition: TensorMechanicsPlasticMohrCoulomb.C:235
TensorMechanicsPlasticMohrCoulomb::_psi
const TensorMechanicsHardeningModel & _psi
Hardening model for psi.
Definition: TensorMechanicsPlasticMohrCoulomb.h:62
validParams< TensorMechanicsPlasticMohrCoulomb >
InputParameters validParams< TensorMechanicsPlasticMohrCoulomb >()
TensorMechanicsPlasticMohrCoulomb::dpsi
virtual Real dpsi(const Real internal_param) const
d(psi)/d(internal_param);
Definition: TensorMechanicsPlasticMohrCoulomb.C:405
TensorMechanicsPlasticMohrCoulomb::smooth
virtual Real smooth(const RankTwoTensor &stress) const
returns the 'a' parameter - see doco for _tip_scheme
Definition: TensorMechanicsPlasticMohrCoulomb.C:453
TensorMechanicsPlasticMohrCoulomb::abbo
void abbo(const Real sin3lode, const Real sin_angle, Real &aaa, Real &bbb, Real &ccc) const
Computes Abbo et al's A, B and C parameters.
Definition: TensorMechanicsPlasticMohrCoulomb.C:411
TensorMechanicsPlasticMohrCoulomb::_sin3tt
Real _sin3tt
sin(3*_tt) - useful for making comparisons with Lode angle
Definition: TensorMechanicsPlasticMohrCoulomb.h:96
TensorMechanicsPlasticMohrCoulomb::dabbo
void dabbo(const Real sin3lode, const Real sin_angle, Real &daaa, Real &dbbb, Real &dccc) const
Computes derivatives of Abbo et al's A, B and C parameters wrt sin_angle.
Definition: TensorMechanicsPlasticMohrCoulomb.C:433
TensorMechanicsPlasticMohrCoulomb::_cap_start
Real _cap_start
smoothing parameter dictating when the 'cap' will start - see doco for _tip_scheme
Definition: TensorMechanicsPlasticMohrCoulomb.h:78
TensorMechanicsPlasticMohrCoulomb::_cos3tt
Real _cos3tt
cos(3*_tt)
Definition: TensorMechanicsPlasticMohrCoulomb.h:93
TensorMechanicsPlasticMohrCoulomb::d2smooth
virtual Real d2smooth(const RankTwoTensor &stress) const
returns the d^2a/dstress_mean^2 - see doco for _tip_scheme
Definition: TensorMechanicsPlasticMohrCoulomb.C:487
TensorMechanicsPlasticMohrCoulomb::dyieldFunction_dintnl
Real dyieldFunction_dintnl(const RankTwoTensor &stress, Real intnl) const override
The derivative of yield function with respect to the internal parameter.
Definition: TensorMechanicsPlasticMohrCoulomb.C:190
TensorMechanicsPlasticMohrCoulomb::yieldFunction
Real yieldFunction(const RankTwoTensor &stress, Real intnl) const override
The following functions are what you should override when building single-plasticity models.
Definition: TensorMechanicsPlasticMohrCoulomb.C:117
TensorMechanicsPlasticMohrCoulomb
Mohr-Coulomb plasticity, nonassociative with hardening/softening.
Definition: TensorMechanicsPlasticMohrCoulomb.h:33
TensorMechanicsPlasticMohrCoulomb::_cos6tt
Real _cos6tt
cos(6*_tt)
Definition: TensorMechanicsPlasticMohrCoulomb.h:99
TensorMechanicsPlasticMohrCoulomb::_cap_rate
Real _cap_rate
dictates how quickly the 'cap' degenerates to a hemisphere - see doco for _tip_scheme
Definition: TensorMechanicsPlasticMohrCoulomb.h:81
TensorMechanicsPlasticMohrCoulomb::dsmooth
virtual Real dsmooth(const RankTwoTensor &stress) const
returns the da/dstress_mean - see doco for _tip_scheme
Definition: TensorMechanicsPlasticMohrCoulomb.C:468
RankFourTensorTempl< Real >
TensorMechanicsPlasticMohrCoulomb::cohesion
virtual Real cohesion(const Real internal_param) const
cohesion as a function of internal parameter
Definition: TensorMechanicsPlasticMohrCoulomb.C:375
TensorMechanicsPlasticModel
Plastic Model base class The virtual functions written below must be over-ridden in derived classes t...
Definition: TensorMechanicsPlasticModel.h:42
TensorMechanicsPlasticMohrCoulomb::psi
virtual Real psi(const Real internal_param) const
dilation angle as a function of internal parameter
Definition: TensorMechanicsPlasticMohrCoulomb.C:399
TensorMechanicsPlasticMohrCoulomb::dcohesion
virtual Real dcohesion(const Real internal_param) const
d(cohesion)/d(internal_param);
Definition: TensorMechanicsPlasticMohrCoulomb.C:381
TensorMechanicsPlasticMohrCoulomb::dphi
virtual Real dphi(const Real internal_param) const
d(phi)/d(internal_param);
Definition: TensorMechanicsPlasticMohrCoulomb.C:393
TensorMechanicsPlasticMohrCoulomb::TensorMechanicsPlasticMohrCoulomb
TensorMechanicsPlasticMohrCoulomb(const InputParameters &parameters)
Definition: TensorMechanicsPlasticMohrCoulomb.C:71
RankTwoTensorTempl< Real >
TensorMechanicsHardeningModel.h
TensorMechanicsHardeningModel
Hardening Model base class.
Definition: TensorMechanicsHardeningModel.h:27