https://mooseframework.inl.gov
SolidMechanicsPlasticMeanCapTC.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 
25 {
26 public:
28 
30 
31  virtual void activeConstraints(const std::vector<Real> & f,
32  const RankTwoTensor & stress,
33  Real intnl,
34  const RankFourTensor & Eijkl,
35  std::vector<bool> & act,
36  RankTwoTensor & returned_stress) const override;
37 
38  virtual bool useCustomReturnMap() const override;
39 
40  virtual bool useCustomCTO() 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  virtual std::string modelName() const override;
62 
63 protected:
65  const unsigned _max_iters;
66 
69 
71  const bool _use_custom_cto;
72 
75 
78 
79  Real yieldFunction(const RankTwoTensor & stress, Real intnl) const override;
80 
81  RankTwoTensor dyieldFunction_dstress(const RankTwoTensor & stress, Real intnl) const override;
82 
83  Real dyieldFunction_dintnl(const RankTwoTensor & stress, Real intnl) const override;
84 
85  RankTwoTensor flowPotential(const RankTwoTensor & stress, Real intnl) const override;
86 
87  RankFourTensor dflowPotential_dstress(const RankTwoTensor & stress, Real intnl) const override;
88 
89  RankTwoTensor dflowPotential_dintnl(const RankTwoTensor & stress, Real intnl) const override;
90 
99  Real hardPotential(const RankTwoTensor & stress, Real intnl) const override;
100 
101  virtual RankTwoTensor dhardPotential_dstress(const RankTwoTensor & stress,
102  Real intnl) const override;
103 
104  virtual Real dhardPotential_dintnl(const RankTwoTensor & stress, Real intnl) const override;
105 
112  RankTwoTensor df_dsig(const RankTwoTensor & stress, Real intnl) const;
113 
115  virtual Real tensile_strength(const Real internal_param) const;
116 
118  virtual Real dtensile_strength(const Real internal_param) const;
119 
121  virtual Real compressive_strength(const Real internal_param) const;
122 
124  virtual Real dcompressive_strength(const Real internal_param) const;
125 };
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.
Real hardPotential(const RankTwoTensor &stress, Real intnl) const override
The hardening potential.
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 ...
virtual bool useCustomCTO() const override
Returns false. You will want to override this in your derived class if you write a custom consistent ...
virtual Real dhardPotential_dintnl(const RankTwoTensor &stress, Real intnl) const override
The derivative of the hardening potential with respect to the internal parameter. ...
const SolidMechanicsHardeningModel & _c_strength
the compressive strength
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.
Real yieldFunction(const RankTwoTensor &stress, Real intnl) const override
The following functions are what you should override when building single-plasticity models...
virtual std::string modelName() const override
RankFourTensor dflowPotential_dstress(const RankTwoTensor &stress, Real intnl) const override
The derivative of the flow potential with respect to stress.
virtual RankTwoTensor dhardPotential_dstress(const RankTwoTensor &stress, Real intnl) const override
The derivative of the hardening potential with respect to stress.
virtual Real tensile_strength(const Real internal_param) const
tensile strength as a function of residual value, rate, and internal_param
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 ...
const unsigned _max_iters
max iters for custom return map loop
Real dyieldFunction_dintnl(const RankTwoTensor &stress, Real intnl) const override
The derivative of yield function with respect to the internal parameter.
Real f(Real x)
Test function for Brents method.
RankTwoTensor flowPotential(const RankTwoTensor &stress, Real intnl) const override
The flow potential.
SolidMechanicsPlasticMeanCapTC(const InputParameters &parameters)
virtual bool useCustomReturnMap() const override
Returns false. You will want to override this in your derived class if you write a custom returnMap f...
RankTwoTensor dyieldFunction_dstress(const RankTwoTensor &stress, Real intnl) const override
The derivative of yield function with respect to stress.
const bool _use_custom_cto
Whether to use the custom consistent tangent operator algorithm.
const bool _use_custom_returnMap
Whether to use the custom return-map algorithm.
RankTwoTensor df_dsig(const RankTwoTensor &stress, Real intnl) const
Derivative of the yield function with respect to stress.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
RankTwoTensor dflowPotential_dintnl(const RankTwoTensor &stress, Real intnl) const override
The derivative of the flow potential with respect to the internal parameter.
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 SolidMechanicsHardeningModel & _strength
the tensile strength
const InputParameters & parameters() const
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...
Rate-independent associative mean-cap tensile AND compressive failure with hardening/softening of the...