https://mooseframework.inl.gov
Loading...
Searching...
No Matches
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{
30public:
32
34
35 virtual std::string modelName() const override;
36
37protected:
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
79 Real _tt;
80
82 Real _costt;
83
85 Real _sintt;
86
88 Real _cos3tt;
89
91 Real _sin3tt;
92
94 Real _cos6tt;
95
97 Real _sin6tt;
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
129private:
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};
const InputParameters & parameters() const
Plastic Model base class The virtual functions written below must be over-ridden in derived classes t...
Mohr-Coulomb plasticity, nonassociative with hardening/softening.
RankTwoTensor dyieldFunction_dstress(const RankTwoTensor &stress, Real intnl) const override
The derivative of yield function with respect to stress.
Real _cap_start
smoothing parameter dictating when the 'cap' will start - see doco for _tip_scheme
Real _tt
edge smoothing parameter, in radians
Real yieldFunction(const RankTwoTensor &stress, Real intnl) const override
The following functions are what you should override when building single-plasticity models.
virtual Real smooth(const RankTwoTensor &stress) const
returns the 'a' parameter - see doco for _tip_scheme
virtual Real dphi(const Real internal_param) const
d(phi)/d(internal_param);
virtual Real dcohesion(const Real internal_param) const
d(cohesion)/d(internal_param);
RankTwoTensor dflowPotential_dintnl(const RankTwoTensor &stress, Real intnl) const override
The derivative of the flow potential with respect to the internal parameter.
Real _small_smoother2
Square of tip smoothing parameter to smooth the cone at mean_stress = T.
const SolidMechanicsHardeningModel & _phi
Hardening model for phi.
virtual Real dsmooth(const RankTwoTensor &stress) const
returns the da/dstress_mean - see doco for _tip_scheme
Real _cap_rate
dictates how quickly the 'cap' degenerates to a hemisphere - see doco for _tip_scheme
virtual Real dpsi(const Real internal_param) const
d(psi)/d(internal_param);
Real _lode_cutoff
if secondInvariant < _lode_cutoff then set Lode angle to zero. This is to guard against precision-los...
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.
RankFourTensor dflowPotential_dstress(const RankTwoTensor &stress, Real intnl) const override
The derivative of the flow potential with respect to stress.
virtual Real psi(const Real internal_param) const
dilation angle as a function of internal parameter
const SolidMechanicsHardeningModel & _cohesion
Hardening model for cohesion.
RankTwoTensor flowPotential(const RankTwoTensor &stress, Real intnl) const override
The flow potential.
Real _sin3tt
sin(3*_tt) - useful for making comparisons with Lode angle
const SolidMechanicsHardeningModel & _psi
Hardening model for psi.
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.
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...
virtual Real cohesion(const Real internal_param) const
cohesion as a function of internal parameter
virtual Real phi(const Real internal_param) const
friction angle as a function of internal parameter
virtual Real d2smooth(const RankTwoTensor &stress) const
returns the d^2a/dstress_mean^2 - see doco for _tip_scheme
Real dyieldFunction_dintnl(const RankTwoTensor &stress, Real intnl) const override
The derivative of yield function with respect to the internal parameter.
virtual std::string modelName() const override