117 const std::vector<Real> & intnl,
118 std::vector<Real> & yf)
const override;
122 const std::vector<Real> & intnl,
123 std::vector<yieldAndFlow> & all_q)
const override;
128 const std::vector<Real> & intnl_old,
129 const std::vector<Real> & yf,
134 const std::vector<Real> & intnl_old,
138 std::vector<Real> & intnl)
const override;
144 const std::vector<Real> & intnl_old,
145 std::vector<Real> & intnl)
const override;
151 const std::vector<Real> & intnl,
152 std::vector<std::vector<Real>> & dintnl)
const override;
166 const std::vector<Real> & intnl,
180 bool compute_full_tangent_operator,
CappedDruckerPragerStressUpdate performs the return-map algorithm and associated stress updates for p...
virtual void setStressAfterReturn(const RankTwoTensor &stress_trial, Real p_ok, Real q_ok, Real gaE, const std::vector< Real > &intnl, const yieldAndFlow &smoothed_q, const RankFourTensor &Eijkl, RankTwoTensor &stress) const override
Sets stress from the admissible parameters.
bool isIsotropic() override
Is the implmented model isotropic? The safe default is 'false'.
virtual void setIntnlValues(Real p_trial, Real q_trial, Real p, Real q, const std::vector< Real > &intnl_old, std::vector< Real > &intnl) const override
Sets the internal parameters based on the trial values of p and q, their current values,...
virtual void computePQ(const RankTwoTensor &stress, Real &p, Real &q) const override
Computes p and q, given stress.
virtual RankFourTensor d2pdstress2(const RankTwoTensor &stress) const override
d2(p)/d(stress)/d(stress) Derived classes must override this
virtual void consistentTangentOperator(const RankTwoTensor &stress_trial, Real p_trial, Real q_trial, const RankTwoTensor &stress, Real p, Real q, Real gaE, const yieldAndFlow &smoothed_q, const RankFourTensor &Eijkl, bool compute_full_tangent_operator, RankFourTensor &cto) const override
Calculates the consistent tangent operator.
bool requiresIsotropicTensor() override
Does the model require the elasticity tensor to be isotropic?
static InputParameters validParams()
virtual RankTwoTensor dqdstress(const RankTwoTensor &stress) const override
d(q)/d(stress) Derived classes must override this
virtual void initializeVars(Real p_trial, Real q_trial, const std::vector< Real > &intnl_old, Real &p, Real &q, Real &gaE, std::vector< Real > &intnl) const override
Sets (p, q, gaE, intnl) at "good guesses" of the solution to the Return-Map algorithm.
virtual RankFourTensor d2qdstress2(const RankTwoTensor &stress) const override
d2(q)/d(stress)/d(stress) Derived classes must override this
virtual void finalizeReturnProcess(const RankTwoTensor &rotation_increment) override
Derived classes may use this to perform calculations after the return-map process has completed succe...
const SolidMechanicsHardeningModel & _cstrength
Hardening model for compressive strength.
virtual void computeAllQ(Real p, Real q, const std::vector< Real > &intnl, std::vector< yieldAndFlow > &all_q) const override
Completely fills all_q with correct values.
Real _in_q_trial
trial value of q
const Real _small_smoother2
The cone vertex is smoothed by this amount.
virtual void preReturnMap(Real p_trial, Real q_trial, const RankTwoTensor &stress_trial, const std::vector< Real > &intnl_old, const std::vector< Real > &yf, const RankFourTensor &Eijkl) override
Derived classes may employ this function to record stuff or do other computations prior to the return...
const bool _small_dilation
If true, and if the trial stress exceeds the tensile strength, then the user gaurantees that the retu...
const SolidMechanicsHardeningModel & _tstrength
Hardening model for tensile strength.
const bool _perfect_guess
Initialize the NR proceedure from a guess coming from perfect plasticity.
virtual void yieldFunctionValues(Real p, Real q, const std::vector< Real > &intnl, std::vector< Real > &yf) const override
Computes the values of the yield functions, given p, q and intnl parameters.
virtual void setIntnlDerivatives(Real p_trial, Real q_trial, Real p, Real q, const std::vector< Real > &intnl, std::vector< std::vector< Real > > &dintnl) const override
Sets the derivatives of internal parameters, based on the trial values of p and q,...
virtual void setEppEqq(const RankFourTensor &Eijkl, Real &Epp, Real &Eqq) const override
Set Epp and Eqq based on the elasticity tensor Derived classes must override this.
virtual void initializeReturnProcess() override
Derived classes may use this to perform calculations before any return-map process is performed,...
virtual RankTwoTensor dpdstress(const RankTwoTensor &stress) const override
d(p)/d(stress) Derived classes must override this
const SolidMechanicsPlasticDruckerPrager & _dp
Hardening model for cohesion, friction and dilation angles.
StressReturnType
This allows some simplification in the return-map process.
enum CappedDruckerPragerStressUpdate::StressReturnType _stress_return_type
const InputParameters & parameters() const
Hardening Model base class.
Rate-independent non-associative Drucker Prager with hardening/softening.
TwoParameterPlasticityStressUpdate performs the return-map algorithm and associated stress updates fo...
Struct designed to hold info about a single yield function and its derivatives, as well as the flow d...