www.mooseframework.org
TensorMechanicsPlasticDruckerPrager.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 
28 {
29 public:
30  static InputParameters validParams();
31 
32  TensorMechanicsPlasticDruckerPrager(const InputParameters & parameters);
33 
34  virtual std::string modelName() const override;
35 
37  void bothAB(Real intnl, Real & aaa, Real & bbb) const;
38 
40  void dbothAB(Real intnl, Real & daaa, Real & dbbb) const;
41 
47  {
48  friction = 0,
50  };
51 
58  void onlyB(Real intnl, int fd, Real & bbb) const;
59 
66  void donlyB(Real intnl, int fd, Real & dbbb) const;
67 
68 protected:
71 
74 
77 
78  virtual Real yieldFunction(const RankTwoTensor & stress, Real intnl) const override;
79 
80  virtual RankTwoTensor dyieldFunction_dstress(const RankTwoTensor & stress,
81  Real intnl) const override;
82 
83  virtual Real dyieldFunction_dintnl(const RankTwoTensor & stress, Real intnl) const override;
84 
85  virtual RankTwoTensor flowPotential(const RankTwoTensor & stress, Real intnl) const override;
86 
88  Real intnl) const override;
89 
90  virtual RankTwoTensor dflowPotential_dintnl(const RankTwoTensor & stress,
91  Real intnl) const override;
92 
98  const MooseEnum _mc_interpolation_scheme;
99 
102 
105 
108 
110  virtual RankTwoTensor df_dsig(const RankTwoTensor & stress, Real bbb) const;
111 
112 private:
113  Real _aaa;
114  Real _bbb;
115  Real _bbb_flow;
116 
130  void initializeAandB(Real intnl, Real & aaa, Real & bbb) const;
131 
146  void initializeB(Real intnl, int fd, Real & bbb) const;
147 };
TensorMechanicsPlasticDruckerPrager::initializeB
void initializeB(Real intnl, int fd, Real &bbb) const
Returns the Drucker-Prager parameters A nice reference on the different relationships between Drucker...
Definition: TensorMechanicsPlasticDruckerPrager.C:301
TensorMechanicsPlasticDruckerPrager::_bbb_flow
Real _bbb_flow
Definition: TensorMechanicsPlasticDruckerPrager.h:115
TensorMechanicsPlasticDruckerPrager::modelName
virtual std::string modelName() const override
Definition: TensorMechanicsPlasticDruckerPrager.C:143
TensorMechanicsPlasticDruckerPrager::_zero_psi_hardening
const bool _zero_psi_hardening
True if there is no hardening of dilation angle.
Definition: TensorMechanicsPlasticDruckerPrager.h:107
TensorMechanicsPlasticDruckerPrager::onlyB
void onlyB(Real intnl, int fd, Real &bbb) const
Calculate bbb or bbb_flow.
Definition: TensorMechanicsPlasticDruckerPrager.C:161
TensorMechanicsPlasticDruckerPrager::donlyB
void donlyB(Real intnl, int fd, Real &dbbb) const
Calculate d(bbb)/d(intnl) or d(bbb_flow)/d(intnl)
Definition: TensorMechanicsPlasticDruckerPrager.C:177
TensorMechanicsPlasticDruckerPrager
Rate-independent non-associative Drucker Prager with hardening/softening.
Definition: TensorMechanicsPlasticDruckerPrager.h:27
TensorMechanicsPlasticDruckerPrager::df_dsig
virtual RankTwoTensor df_dsig(const RankTwoTensor &stress, Real bbb) const
Function that's used in dyieldFunction_dstress and flowPotential.
Definition: TensorMechanicsPlasticDruckerPrager.C:89
TensorMechanicsPlasticDruckerPrager::TensorMechanicsPlasticDruckerPrager
TensorMechanicsPlasticDruckerPrager(const InputParameters &parameters)
Definition: TensorMechanicsPlasticDruckerPrager.C:54
TensorMechanicsPlasticDruckerPrager::dflowPotential_dstress
virtual RankFourTensor dflowPotential_dstress(const RankTwoTensor &stress, Real intnl) const override
The derivative of the flow potential with respect to stress.
Definition: TensorMechanicsPlasticDruckerPrager.C:123
TensorMechanicsPlasticDruckerPrager::flowPotential
virtual RankTwoTensor flowPotential(const RankTwoTensor &stress, Real intnl) const override
The flow potential.
Definition: TensorMechanicsPlasticDruckerPrager.C:115
TensorMechanicsPlasticDruckerPrager::dilation
Definition: TensorMechanicsPlasticDruckerPrager.h:49
TensorMechanicsPlasticDruckerPrager::dflowPotential_dintnl
virtual RankTwoTensor dflowPotential_dintnl(const RankTwoTensor &stress, Real intnl) const override
The derivative of the flow potential with respect to the internal parameter.
Definition: TensorMechanicsPlasticDruckerPrager.C:134
TensorMechanicsPlasticDruckerPrager::_zero_phi_hardening
const bool _zero_phi_hardening
True if there is no hardening of friction angle.
Definition: TensorMechanicsPlasticDruckerPrager.h:104
TensorMechanicsPlasticDruckerPrager::_bbb
Real _bbb
Definition: TensorMechanicsPlasticDruckerPrager.h:114
TensorMechanicsPlasticDruckerPrager::_mc_phi
const TensorMechanicsHardeningModel & _mc_phi
Hardening model for tan(phi)
Definition: TensorMechanicsPlasticDruckerPrager.h:73
TensorMechanicsPlasticModel.h
TensorMechanicsPlasticDruckerPrager::yieldFunction
virtual Real yieldFunction(const RankTwoTensor &stress, Real intnl) const override
The following functions are what you should override when building single-plasticity models.
Definition: TensorMechanicsPlasticDruckerPrager.C:80
TensorMechanicsPlasticDruckerPrager::_aaa
Real _aaa
Definition: TensorMechanicsPlasticDruckerPrager.h:113
TensorMechanicsPlasticDruckerPrager::friction
Definition: TensorMechanicsPlasticDruckerPrager.h:48
TensorMechanicsPlasticDruckerPrager::_zero_cohesion_hardening
const bool _zero_cohesion_hardening
True if there is no hardening of cohesion.
Definition: TensorMechanicsPlasticDruckerPrager.h:101
TensorMechanicsPlasticDruckerPrager::FrictionDilation
FrictionDilation
bbb (friction) and bbb_flow (dilation) are computed using the same function, onlyB,...
Definition: TensorMechanicsPlasticDruckerPrager.h:46
validParams< TensorMechanicsPlasticDruckerPrager >
InputParameters validParams< TensorMechanicsPlasticDruckerPrager >()
TensorMechanicsPlasticDruckerPrager::dyieldFunction_dintnl
virtual Real dyieldFunction_dintnl(const RankTwoTensor &stress, Real intnl) const override
The derivative of yield function with respect to the internal parameter.
Definition: TensorMechanicsPlasticDruckerPrager.C:105
TensorMechanicsPlasticDruckerPrager::_mc_psi
const TensorMechanicsHardeningModel & _mc_psi
Hardening model for tan(psi)
Definition: TensorMechanicsPlasticDruckerPrager.h:76
TensorMechanicsPlasticDruckerPrager::dyieldFunction_dstress
virtual RankTwoTensor dyieldFunction_dstress(const RankTwoTensor &stress, Real intnl) const override
The derivative of yield function with respect to stress.
Definition: TensorMechanicsPlasticDruckerPrager.C:96
TensorMechanicsPlasticDruckerPrager::_mc_interpolation_scheme
const MooseEnum _mc_interpolation_scheme
The parameters aaa and bbb are chosen to closely match the Mohr-Coulomb yield surface.
Definition: TensorMechanicsPlasticDruckerPrager.h:98
RankFourTensorTempl< Real >
TensorMechanicsPlasticModel
Plastic Model base class The virtual functions written below must be over-ridden in derived classes t...
Definition: TensorMechanicsPlasticModel.h:42
TensorMechanicsPlasticDruckerPrager::_mc_cohesion
const TensorMechanicsHardeningModel & _mc_cohesion
Hardening model for cohesion.
Definition: TensorMechanicsPlasticDruckerPrager.h:70
RankTwoTensorTempl< Real >
TensorMechanicsPlasticDruckerPrager::validParams
static InputParameters validParams()
Definition: TensorMechanicsPlasticDruckerPrager.C:19
TensorMechanicsPlasticDruckerPrager::dbothAB
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.
Definition: TensorMechanicsPlasticDruckerPrager.C:219
TensorMechanicsPlasticDruckerPrager::initializeAandB
void initializeAandB(Real intnl, Real &aaa, Real &bbb) const
Returns the Drucker-Prager parameters A nice reference on the different relationships between Drucker...
Definition: TensorMechanicsPlasticDruckerPrager.C:270
TensorMechanicsPlasticDruckerPrager::bothAB
void bothAB(Real intnl, Real &aaa, Real &bbb) const
Calculates aaa and bbb as a function of the internal parameter intnl.
Definition: TensorMechanicsPlasticDruckerPrager.C:149
TensorMechanicsHardeningModel.h
TensorMechanicsHardeningModel
Hardening Model base class.
Definition: TensorMechanicsHardeningModel.h:27