33 std::vector<RankTwoTensor> & df_dstress)
const override;
37 std::vector<Real> & df_dintnl)
const override;
41 std::vector<RankTwoTensor> & r)
const override;
45 std::vector<RankFourTensor> & dr_dstress)
const override;
49 std::vector<RankTwoTensor> & dr_dintnl)
const override;
55 std::vector<bool> & act,
58 virtual std::string
modelName()
const override;
67 Real ep_plastic_tolerance,
69 Real & returned_intnl,
70 std::vector<Real> & dpm,
72 std::vector<Real> & yf,
73 bool & trial_stress_inadmissible)
const override;
81 const std::vector<Real> & cumulative_pm)
const override;
106 Real dot(
const std::vector<Real> &
a,
const std::vector<Real> &
b)
const;
110 const std::vector<Real> &
b,
111 const std::vector<Real> &
c)
const;
129 bool returnTip(
const std::vector<Real> & eigvals,
130 const std::vector<RealVectorValue> & n,
131 std::vector<Real> & dpm,
134 Real initial_guess)
const;
153 bool returnEdge(
const std::vector<Real> & eigvals,
154 const std::vector<RealVectorValue> & n,
155 std::vector<Real> & dpm,
158 Real initial_guess)
const;
177 bool returnPlane(
const std::vector<Real> & eigvals,
178 const std::vector<RealVectorValue> & n,
179 std::vector<Real> & dpm,
182 Real initial_guess)
const;
194 const std::vector<Real> & dpm,
196 Real ep_plastic_tolerance)
const;
206 Real ep_plastic_tolerance,
208 Real & returned_intnl,
209 std::vector<Real> & dpm,
211 std::vector<Real> & yf,
212 bool & trial_stress_inadmissible)
const;
virtual void yieldFunctionV(const RankTwoTensor &stress, Real intnl, std::vector< Real > &f) const override
Calculates the yield functions.
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 void dyieldFunction_dstressV(const RankTwoTensor &stress, Real intnl, std::vector< RankTwoTensor > &df_dstress) const override
The derivative of yield functions with respect to stress.
Real dot(const std::vector< Real > &a, const std::vector< Real > &b) const
dot product of two 3-dimensional vectors
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.
bool returnPlane(const std::vector< Real > &eigvals, const std::vector< RealVectorValue > &n, std::vector< Real > &dpm, RankTwoTensor &returned_stress, Real intnl_old, Real initial_guess) const
Tries to return-map to the Tensile plane The return value is true if the internal Newton-Raphson proc...
const bool _use_custom_returnMap
Whether to use the custom return-map algorithm.
virtual std::string modelName() const override
Real f(Real x)
Test function for Brents method.
bool KuhnTuckerOK(const RankTwoTensor &returned_diagonal_stress, const std::vector< Real > &dpm, Real str, Real ep_plastic_tolerance) const
Returns true if the Kuhn-Tucker conditions are satisfied.
FiniteStrainTensileMulti implements rate-independent associative tensile failure with hardening/softe...
virtual bool doReturnMap(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
Just like returnMap, but a protected interface that definitely uses the algorithm, since returnMap itself does not use the algorithm if _use_returnMap=false.
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 SolidMechanicsHardeningModel & _strength
bool returnTip(const std::vector< Real > &eigvals, const std::vector< RealVectorValue > &n, std::vector< Real > &dpm, RankTwoTensor &returned_stress, Real intnl_old, Real initial_guess) const
Tries to return-map to the Tensile tip.
virtual void flowPotentialV(const RankTwoTensor &stress, Real intnl, std::vector< RankTwoTensor > &r) const override
The flow potentials.
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 void dflowPotential_dstressV(const RankTwoTensor &stress, Real intnl, std::vector< RankFourTensor > &dr_dstress) const override
The derivative of the flow potential with respect to stress.
SolidMechanicsPlasticTensileMulti(const InputParameters ¶meters)
Hardening Model base class.
virtual void dyieldFunction_dintnlV(const RankTwoTensor &stress, Real intnl, std::vector< Real > &df_dintnl) const override
The derivative of yield functions with respect to the internal parameter.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const bool _use_custom_cto
Whether to use the custom consistent tangent operator calculation.
const Real _shift
yield function is shifted by this amount to avoid problems with stress-derivatives at equal eigenvalu...
virtual void dflowPotential_dintnlV(const RankTwoTensor &stress, Real intnl, std::vector< RankTwoTensor > &dr_dintnl) const override
The derivative of the flow potential with respect to the internal parameter.
bool returnEdge(const std::vector< Real > &eigvals, const std::vector< RealVectorValue > &n, std::vector< Real > &dpm, RankTwoTensor &returned_stress, Real intnl_old, Real initial_guess) const
Tries to return-map to the Tensile edge.
Real triple(const std::vector< Real > &a, const std::vector< Real > &b, const std::vector< Real > &c) const
triple product of three 3-dimensional vectors
const InputParameters & parameters() const
virtual unsigned int numberSurfaces() const override
The number of yield surfaces for this plasticity model.
static InputParameters validParams()
virtual Real tensile_strength(const Real internal_param) const
tensile strength as a function of residual value, rate, and internal_param
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.
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 ...
const unsigned int _max_iters
maximum iterations allowed in the custom return-map algorithm