https://mooseframework.inl.gov
SolidMechanicsPlasticDruckerPrager.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 
23 {
24 public:
26 
28 
29  virtual std::string modelName() const override;
30 
32  void bothAB(Real intnl, Real & aaa, Real & bbb) const;
33 
35  void dbothAB(Real intnl, Real & daaa, Real & dbbb) const;
36 
42  {
43  friction = 0,
45  };
46 
53  void onlyB(Real intnl, int fd, Real & bbb) const;
54 
61  void donlyB(Real intnl, int fd, Real & dbbb) const;
62 
63 protected:
66 
69 
72 
73  virtual Real yieldFunction(const RankTwoTensor & stress, Real intnl) const override;
74 
75  virtual RankTwoTensor dyieldFunction_dstress(const RankTwoTensor & stress,
76  Real intnl) const override;
77 
78  virtual Real dyieldFunction_dintnl(const RankTwoTensor & stress, Real intnl) const override;
79 
80  virtual RankTwoTensor flowPotential(const RankTwoTensor & stress, Real intnl) const override;
81 
83  Real intnl) const override;
84 
85  virtual RankTwoTensor dflowPotential_dintnl(const RankTwoTensor & stress,
86  Real intnl) const override;
87 
94 
97 
99  const bool _zero_phi_hardening;
100 
103 
105  virtual RankTwoTensor df_dsig(const RankTwoTensor & stress, Real bbb) const;
106 
107 private:
111 
125  void initializeAandB(Real intnl, Real & aaa, Real & bbb) const;
126 
141  void initializeB(Real intnl, int fd, Real & bbb) const;
142 };
SolidMechanicsPlasticDruckerPrager(const InputParameters &parameters)
const bool _zero_cohesion_hardening
True if there is no hardening of cohesion.
const SolidMechanicsHardeningModel & _mc_psi
Hardening model for tan(psi)
void donlyB(Real intnl, int fd, Real &dbbb) const
Calculate d(bbb)/d(intnl) or d(bbb_flow)/d(intnl)
virtual RankTwoTensor df_dsig(const RankTwoTensor &stress, Real bbb) const
Function that's used in dyieldFunction_dstress and flowPotential.
void bothAB(Real intnl, Real &aaa, Real &bbb) const
Calculates aaa and bbb 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...
const bool _zero_phi_hardening
True if there is no hardening of friction angle.
const MooseEnum _mc_interpolation_scheme
The parameters aaa and bbb are chosen to closely match the Mohr-Coulomb yield surface.
void onlyB(Real intnl, int fd, Real &bbb) const
Calculate bbb or bbb_flow.
Rate-independent non-associative Drucker Prager with hardening/softening.
const bool _zero_psi_hardening
True if there is no hardening of dilation angle.
virtual RankFourTensor dflowPotential_dstress(const RankTwoTensor &stress, Real intnl) const override
The derivative of the flow potential with respect to stress.
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...
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
virtual Real yieldFunction(const RankTwoTensor &stress, Real intnl) const override
The following functions are what you should override when building single-plasticity models...
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const SolidMechanicsHardeningModel & _mc_cohesion
Hardening model for cohesion.
virtual RankTwoTensor dflowPotential_dintnl(const RankTwoTensor &stress, Real intnl) const override
The derivative of the flow potential with respect to the internal parameter.
virtual RankTwoTensor dyieldFunction_dstress(const RankTwoTensor &stress, Real intnl) const override
The derivative of yield function with respect to stress.
const InputParameters & parameters() const
virtual Real dyieldFunction_dintnl(const RankTwoTensor &stress, Real intnl) const override
The derivative of yield function with respect to the internal parameter.
const SolidMechanicsHardeningModel & _mc_phi
Hardening model for tan(phi)
Plastic Model base class The virtual functions written below must be over-ridden in derived classes t...
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 flowPotential(const RankTwoTensor &stress, Real intnl) const override
The flow potential.
virtual std::string modelName() const override