Go to the documentation of this file.
11 #include "RankFourTensor.h"
21 params.addParam<Real>(
"stress_coefficient",
23 "The yield function is stress_coefficient * stress_zz - tensile_strength");
24 params.addRequiredParam<UserObjectName>(
"tensile_strength",
25 "A TensorMechanicsHardening "
26 "UserObject that defines hardening "
27 "of the weak-plane tensile strength");
28 params.addClassDescription(
"Associative weak-plane tensile plasticity with hardening/softening");
34 const InputParameters & parameters)
36 _a(getParam<Real>(
"stress_coefficient")),
41 mooseError(
"Weak plane tensile strength must not be negative");
107 std::vector<bool> & act,
110 act.assign(1,
false);
114 returned_stress = stress;
121 for (
unsigned i = 0; i < 3; ++i)
122 for (
unsigned j = 0; j < 3; ++j)
123 n(i, j) =
_a * Eijkl(i, j, 2, 2);
127 Real alpha = (
_a * stress(2, 2) - str) / n(2, 2);
129 for (
unsigned i = 0; i < 3; ++i)
130 for (
unsigned j = 0; j < 3; ++j)
131 returned_stress(i, j) =
_a * stress(i, j) - alpha * n(i, j);
139 return "WeakPlaneTensile";
Real yieldFunction(const RankTwoTensor &stress, Real intnl) const override
The following functions are what you should override when building single-plasticity models.
RankTwoTensor flowPotential(const RankTwoTensor &stress, Real intnl) const override
The flow potential.
virtual Real tensile_strength(const Real internal_param) const
tensile strength as a function of residual value, rate, and internal_param
static InputParameters validParams()
defineLegacyParams(TensorMechanicsPlasticWeakPlaneTensile)
RankTwoTensor dflowPotential_dintnl(const RankTwoTensor &stress, Real intnl) const override
The derivative of the flow potential with respect to the internal parameter.
TensorMechanicsPlasticWeakPlaneTensile(const InputParameters ¶meters)
const Real _f_tol
Tolerance on yield function.
const TensorMechanicsHardeningModel & _strength
Yield function = _a * stress_zz - _strength;.
const Real _a
Yield function = _a * stress_zz - _strength;.
static InputParameters validParams()
virtual Real derivative(Real intnl) const
registerMooseObject("TensorMechanicsApp", TensorMechanicsPlasticWeakPlaneTensile)
virtual std::string modelName() const override
Real dyieldFunction_dintnl(const RankTwoTensor &stress, Real intnl) const override
The derivative of yield function with respect to the internal parameter.
virtual Real value(Real intnl) const
RankTwoTensorTempl< Real > RankTwoTensor
RankTwoTensor dyieldFunction_dstress(const RankTwoTensor &stress, Real intnl) const override
The derivative of yield function with respect to stress.
Plastic Model base class The virtual functions written below must be over-ridden in derived classes t...
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.
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
RankFourTensorTempl< Real > RankFourTensor
RankFourTensor dflowPotential_dstress(const RankTwoTensor &stress, Real intnl) const override
The derivative of the flow potential with respect to stress.
Hardening Model base class.
Rate-independent associative weak-plane tensile failure with hardening/softening of the tensile stren...