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) *
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 ",
virtual RankFourTensor d2qdstress2(const RankTwoTensor &stress) const override
d2(q)/d(stress)/d(stress) Derived classes must override this
const Real _shear
Shear modulus for the host medium.
initIdentitySymmetricFour
CappedDruckerPragerCosseratStressUpdate performs the return-map algorithm and associated stress updat...
CappedDruckerPragerCosseratStressUpdate(const InputParameters ¶meters)
Real _dp_dpt
derivative of Variable with respect to trial variable (used in consistent-tangent-operator calculatio...
Real _dq_dpt
derivative of Variable with respect to trial variable (used in consistent-tangent-operator calculatio...
RankTwoTensorTempl< T > innerProductTranspose(const RankTwoTensorTempl< T > &) const
Struct designed to hold info about a single yield function and its derivatives, as well as the flow d...
static InputParameters validParams()
void fillFromInputVector(const std::vector< T > &input, FillMethod fill_method)
void mooseWarning(Args &&... args) const
RankFourTensor _Ehost
Isotropic elasticity tensor for the host medium.
static InputParameters validParams()
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.
Real _dq_dqt
derivative of Variable with respect to trial variable (used in consistent-tangent-operator calculatio...
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.
RankFourTensorTempl< T > transposeMajor() const
registerMooseObject("SolidMechanicsApp", CappedDruckerPragerCosseratStressUpdate)
Real _Epp
elasticity tensor in p direction
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.
RankTwoTensorTempl< Real > transpose() const
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
CappedDruckerPragerStressUpdate performs the return-map algorithm and associated stress updates for p...
static const std::complex< double > j(0, 1)
Complex number "j" (also known as "i")
RankTwoTensorTempl< Real > initialContraction(const RankFourTensorTempl< Real > &b) const
Real _in_q_trial
trial value of q
Real _dp_dqt
derivative of Variable with respect to trial variable (used in consistent-tangent-operator calculatio...
RankFourTensorTempl< T > invSymm() const
static constexpr unsigned _tensor_dimensionality
Internal dimensionality of tensors (currently this is 3 throughout tensor_mechanics) ...
static const std::string k
const Elem *const & _current_elem