www.mooseframework.org
TensorMechanicsPlasticMeanCapTC.h
Go to the documentation of this file.
1 /****************************************************************/
2 /* MOOSE - Multiphysics Object Oriented Simulation Environment */
3 /* */
4 /* All contents are licensed under LGPL V2.1 */
5 /* See LICENSE for full restrictions */
6 /****************************************************************/
7 #ifndef TENSORMECHANICSPLASTICMEANCAPTC_H
8 #define TENSORMECHANICSPLASTICMEANCAPTC_H
9 
12 
14 
15 template <>
17 
28 {
29 public:
30  TensorMechanicsPlasticMeanCapTC(const InputParameters & parameters);
31 
32  virtual void activeConstraints(const std::vector<Real> & f,
33  const RankTwoTensor & stress,
34  Real intnl,
35  const RankFourTensor & Eijkl,
36  std::vector<bool> & act,
37  RankTwoTensor & returned_stress) const override;
38 
39  virtual bool useCustomReturnMap() const override;
40 
41  virtual bool useCustomCTO() const override;
42 
43  virtual bool returnMap(const RankTwoTensor & trial_stress,
44  Real intnl_old,
45  const RankFourTensor & E_ijkl,
46  Real ep_plastic_tolerance,
47  RankTwoTensor & returned_stress,
48  Real & returned_intnl,
49  std::vector<Real> & dpm,
50  RankTwoTensor & delta_dp,
51  std::vector<Real> & yf,
52  bool & trial_stress_inadmissible) const override;
53 
54  virtual RankFourTensor
55  consistentTangentOperator(const RankTwoTensor & trial_stress,
56  Real intnl_old,
57  const RankTwoTensor & stress,
58  Real intnl,
59  const RankFourTensor & E_ijkl,
60  const std::vector<Real> & cumulative_pm) const override;
61 
62  virtual std::string modelName() const override;
63 
64 protected:
66  const unsigned _max_iters;
67 
70 
72  const bool _use_custom_cto;
73 
76 
79 
80  Real yieldFunction(const RankTwoTensor & stress, Real intnl) const override;
81 
82  RankTwoTensor dyieldFunction_dstress(const RankTwoTensor & stress, Real intnl) const override;
83 
84  Real dyieldFunction_dintnl(const RankTwoTensor & stress, Real intnl) const override;
85 
86  RankTwoTensor flowPotential(const RankTwoTensor & stress, Real intnl) const override;
87 
88  RankFourTensor dflowPotential_dstress(const RankTwoTensor & stress, Real intnl) const override;
89 
90  RankTwoTensor dflowPotential_dintnl(const RankTwoTensor & stress, Real intnl) const override;
91 
100  Real hardPotential(const RankTwoTensor & stress, Real intnl) const override;
101 
102  virtual RankTwoTensor dhardPotential_dstress(const RankTwoTensor & stress,
103  Real intnl) const override;
104 
105  virtual Real dhardPotential_dintnl(const RankTwoTensor & stress, Real intnl) const override;
106 
113  RankTwoTensor df_dsig(const RankTwoTensor & stress, Real intnl) const;
114 
116  virtual Real tensile_strength(const Real internal_param) const;
117 
119  virtual Real dtensile_strength(const Real internal_param) const;
120 
122  virtual Real compressive_strength(const Real internal_param) const;
123 
125  virtual Real dcompressive_strength(const Real internal_param) const;
126 };
127 
128 #endif // TENSORMECHANICSPLASTICMEANCAPTC_H
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.
RankTwoTensor flowPotential(const RankTwoTensor &stress, Real intnl) const override
The flow potential.
Real yieldFunction(const RankTwoTensor &stress, Real intnl) const override
The following functions are what you should override when building single-plasticity models...
virtual Real dcompressive_strength(const Real internal_param) const
d(compressive strength)/d(internal_param) as a function of residual value, rate, and internal_param ...
RankTwoTensor dflowPotential_dintnl(const RankTwoTensor &stress, Real intnl) const override
The derivative of the flow potential with respect to the internal parameter.
virtual RankTwoTensor dhardPotential_dstress(const RankTwoTensor &stress, Real intnl) const override
The derivative of the hardening potential with respect to stress.
const TensorMechanicsHardeningModel & _c_strength
the compressive strength
TensorMechanicsPlasticMeanCapTC(const InputParameters &parameters)
virtual Real tensile_strength(const Real internal_param) const
tensile strength as a function of residual value, rate, and internal_param
RankTwoTensor df_dsig(const RankTwoTensor &stress, Real intnl) const
Derivative of the yield function with respect to stress.
const bool _use_custom_returnMap
Whether to use the custom return-map algorithm.
virtual Real dtensile_strength(const Real internal_param) const
d(tensile strength)/d(internal_param) as a function of residual value, rate, and internal_param ...
InputParameters validParams< TensorMechanicsPlasticMeanCapTC >()
const unsigned _max_iters
max iters for custom return map loop
Real hardPotential(const RankTwoTensor &stress, Real intnl) const override
The hardening potential.
virtual void activeConstraints(const std::vector< Real > &f, const RankTwoTensor &stress, Real intnl, const RankFourTensor &Eijkl, std::vector< bool > &act, RankTwoTensor &returned_stress) const override
The active yield surfaces, given a vector of yield functions.
const bool _use_custom_cto
Whether to use the custom consistent tangent operator algorithm.
RankTwoTensor dyieldFunction_dstress(const RankTwoTensor &stress, Real intnl) const override
The derivative of yield function with respect to stress.
RankFourTensor dflowPotential_dstress(const RankTwoTensor &stress, Real intnl) const override
The derivative of the flow potential with respect to stress.
virtual bool useCustomReturnMap() const override
Returns false. You will want to override this in your derived class if you write a custom returnMap f...
virtual Real dhardPotential_dintnl(const RankTwoTensor &stress, Real intnl) const override
The derivative of the hardening potential with respect to the internal parameter. ...
Rate-independent associative mean-cap tensile AND compressive failure with hardening/softening of the...
Real dyieldFunction_dintnl(const RankTwoTensor &stress, Real intnl) const override
The derivative of yield function with respect to the internal parameter.
virtual Real compressive_strength(const Real internal_param) const
compressive strength as a function of residual value, rate, and internal_param
Plastic Model base class The virtual functions written below must be over-ridden in derived classes t...
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.
virtual std::string modelName() const override
const TensorMechanicsHardeningModel & _strength
the tensile strength