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;
109 Real
triple(
const std::vector<Real> &
a,
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;
Real f(Real x)
Test function for Brents method.
const InputParameters & parameters() const
Hardening Model base class.
Plastic Model base class The virtual functions written below must be over-ridden in derived classes t...
FiniteStrainTensileMulti implements rate-independent associative tensile failure with hardening/softe...
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...
static InputParameters validParams()
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.
virtual bool useCustomCTO() const override
Returns false. You will want to override this in your derived class if you write a custom consistent ...
Real dot(const std::vector< Real > &a, const std::vector< Real > &b) const
dot product of two 3-dimensional vectors
const SolidMechanicsHardeningModel & _strength
const unsigned int _max_iters
maximum iterations allowed in the custom return-map algorithm
virtual void flowPotentialV(const RankTwoTensor &stress, Real intnl, std::vector< RankTwoTensor > &r) const override
The flow potentials.
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 Real tensile_strength(const Real internal_param) const
tensile strength as a function of residual value, rate, and internal_param
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.
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,...
const bool _use_custom_cto
Whether to use the custom consistent tangent operator calculation.
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.
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
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.
virtual void yieldFunctionV(const RankTwoTensor &stress, Real intnl, std::vector< Real > &f) const override
Calculates the yield functions.
const Real _shift
yield function is shifted by this amount to avoid problems with stress-derivatives at equal eigenvalu...
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_returnMap
Whether to use the custom return-map algorithm.
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 unsigned int numberSurfaces() const override
The number of yield surfaces for this plasticity model.
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.
virtual std::string modelName() const override
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.
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 dtensile_strength(const Real internal_param) const
d(tensile strength)/d(internal_param) as a function of residual value, rate, and internal_param