18 params.
addClassDescription(
"Capped Drucker-Prager plasticity stress calculator for the Cosserat "
19 "situation where the host medium (ie, the limit where all Cosserat "
20 "effects are zero) is isotropic. Note that the return-map flow rule "
21 "uses an isotropic elasticity tensor built with the 'host' properties "
22 "defined by the user.");
24 "host_youngs_modulus>0",
25 "Young's modulus for the isotropic host medium");
27 "host_poissons_ratio>=0 & host_poissons_ratio<0.5",
28 "Poisson's ratio for the isotropic host medium");
35 _shear(getParam<Real>(
"host_youngs_modulus") /
36 (2.0 * (1.0 + getParam<Real>(
"host_poissons_ratio"))))
38 const Real young = getParam<Real>(
"host_youngs_modulus");
39 const Real poisson = getParam<Real>(
"host_poissons_ratio");
40 const Real lambda = young * poisson / ((1.0 + poisson) * (1.0 - 2.0 * poisson));
58 const std::vector<Real> & ,
67 const Real p_trial = stress_trial.
trace();
72 stress = symm_stress + 0.5 * (stress_trial - stress_trial.
transpose());
86 bool compute_full_tangent_operator,
89 if (!compute_full_tangent_operator)
101 cto(i, j, k, l) = 0.5 * (Eijkl(i, j, k, l) + Eijkl(j, i, k, l));
102 EAijkl(i, j, k, l) = 0.5 * (Eijkl(i, j, k, l) - Eijkl(j, i, k, l));
119 cto(i, j, k, l) -= (i == j) * (1.0 / 3.0) *
120 (Ekl(k, l) * (1.0 -
_dp_dpt) + 0.5 * E_s_over_q(k, l) * (-
_dp_dqt));
122 s_over_q(i, j) * (Ekl(k, l) * (-
_dq_dpt) + 0.5 * E_s_over_q(k, l) * (1.0 -
_dq_dqt));
125 if (smoothed_q.
dg[1] != 0.0)
137 mooseWarning(
"CappedDruckerPragerCosseratStressUpdate: Cannot invert 1+T in consistent "
138 "tangent operator computation at quadpoint ",
registerMooseObject("SolidMechanicsApp", CappedDruckerPragerCosseratStressUpdate)
CappedDruckerPragerCosseratStressUpdate performs the return-map algorithm and associated stress updat...
const Real _shear
Shear modulus for the host medium.
CappedDruckerPragerCosseratStressUpdate(const InputParameters ¶meters)
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.
RankFourTensor _Ehost
Isotropic elasticity tensor for the host medium.
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.
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.
static InputParameters validParams()
CappedDruckerPragerStressUpdate performs the return-map algorithm and associated stress updates for p...
static InputParameters validParams()
virtual RankFourTensor d2qdstress2(const RankTwoTensor &stress) const override
d2(q)/d(stress)/d(stress) Derived classes must override this
Real _in_q_trial
trial value of q
void mooseWarning(Args &&... args) const
static constexpr unsigned _tensor_dimensionality
Internal dimensionality of tensors (currently this is 3 throughout solid mechanics)
void fillFromInputVector(const std::vector< T > &input, FillMethod fill_method)
RankFourTensorTempl< T > transposeMajor() const
initIdentitySymmetricFour
RankTwoTensorTempl< T > innerProductTranspose(const RankTwoTensorTempl< T > &) const
RankTwoTensorTempl< T > transpose() const
RankTwoTensorTempl< T > initialContraction(const RankFourTensorTempl< T > &b) const
const Elem *const & _current_elem
Real _dq_dpt
derivative of Variable with respect to trial variable (used in consistent-tangent-operator calculatio...
Real _dp_dqt
derivative of Variable with respect to trial variable (used in consistent-tangent-operator calculatio...
Real _Epp
elasticity tensor in p direction
Real _dq_dqt
derivative of Variable with respect to trial variable (used in consistent-tangent-operator calculatio...
Real _dp_dpt
derivative of Variable with respect to trial variable (used in consistent-tangent-operator calculatio...
Struct designed to hold info about a single yield function and its derivatives, as well as the flow d...