https://mooseframework.inl.gov
SolidMechanicsPlasticDruckerPragerHyperbolic.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 
22 {
23 public:
25 
27 
28  virtual std::string modelName() const override;
29 
30  virtual bool useCustomReturnMap() const override;
31 
32  virtual bool useCustomCTO() const override;
33 
34 protected:
35  Real yieldFunction(const RankTwoTensor & stress, Real intnl) const override;
36 
37  RankFourTensor dflowPotential_dstress(const RankTwoTensor & stress, Real intnl) const override;
38 
40  virtual RankTwoTensor df_dsig(const RankTwoTensor & stress, Real bbb) const override;
41 
42  virtual bool returnMap(const RankTwoTensor & trial_stress,
43  Real intnl_old,
44  const RankFourTensor & E_ijkl,
45  Real ep_plastic_tolerance,
46  RankTwoTensor & returned_stress,
47  Real & returned_intnl,
48  std::vector<Real> & dpm,
49  RankTwoTensor & delta_dp,
50  std::vector<Real> & yf,
51  bool & trial_stress_inadmissible) const override;
52 
53  virtual RankFourTensor
54  consistentTangentOperator(const RankTwoTensor & trial_stress,
55  Real intnl_old,
56  const RankTwoTensor & stress,
57  Real intnl,
58  const RankFourTensor & E_ijkl,
59  const std::vector<Real> & cumulative_pm) const override;
60 
61 private:
64 
67 
69  const bool _use_custom_cto;
70 
72  const unsigned _max_iters;
73 };
virtual RankTwoTensor df_dsig(const RankTwoTensor &stress, Real bbb) const override
Function that&#39;s used in dyieldFunction_dstress and flowPotential.
Rate-independent non-associative Drucker Prager with hardening/softening.
const bool _use_custom_cto
Whether to use the custom consistent tangent operator calculation.
virtual bool useCustomReturnMap() const override
Returns false. You will want to override this in your derived class if you write a custom returnMap f...
Real yieldFunction(const RankTwoTensor &stress, Real intnl) const override
The following functions are what you should override when building single-plasticity models...
Rate-independent non-associative Drucker Prager with hardening/softening.
const unsigned _max_iters
max iters for custom return map loop
virtual bool returnMap(const RankTwoTensor &trial_stress, Real intnl_old, const RankFourTensor &E_ijkl, Real ep_plastic_tolerance, RankTwoTensor &returned_stress, Real &returned_intnl, std::vector< Real > &dpm, RankTwoTensor &delta_dp, std::vector< Real > &yf, bool &trial_stress_inadmissible) const override
Performs a custom return-map.
const Real _smoother2
smoothing parameter for the cone&#39;s tip
RankFourTensor dflowPotential_dstress(const RankTwoTensor &stress, Real intnl) const override
The derivative of the flow potential with respect to stress.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const bool _use_custom_returnMap
whether to use the custom returnMap function
const InputParameters & parameters() const
virtual bool useCustomCTO() const override
Returns false. You will want to override this in your derived class if you write a custom consistent ...
virtual RankFourTensor consistentTangentOperator(const RankTwoTensor &trial_stress, Real intnl_old, const RankTwoTensor &stress, Real intnl, const RankFourTensor &E_ijkl, const std::vector< Real > &cumulative_pm) const override
Calculates a custom consistent tangent operator.