16 TensorMechanicsPlasticWeakPlaneTensileN,
25 params.
addClassDescription(
"Associative weak-plane tensile plasticity with hardening/softening, " 26 "with specified, fixed normal vector. (WeakPlaneTensile combined " 27 "with specifying N in the Material might be preferable to you.)");
40 mooseError(
"Weak plane tensile strength must not be negative");
42 mooseError(
"Weak-plane normal vector must not have zero length");
47 for (
unsigned i = 0; i < 3; ++i)
48 for (
unsigned j = 0;
j < 3; ++
j)
57 for (
unsigned i = 0; i < 3; ++i)
58 for (
unsigned j = 0;
j < 3; ++
j)
101 return "WeakPlaneTensileN";
auto norm() const -> decltype(std::norm(Real()))
Real yieldFunction(const RankTwoTensor &stress, Real intnl) const override
The following functions are what you should override when building single-plasticity models...
registerMooseObject("SolidMechanicsApp", SolidMechanicsPlasticWeakPlaneTensileN)
RankTwoTensor dflowPotential_dintnl(const RankTwoTensor &stress, Real intnl) const override
The derivative of the flow potential with respect to the internal parameter.
virtual Real value(Real intnl) const
virtual std::string modelName() const override
Rate-independent associative weak-plane tensile failure with hardening/softening of the tensile stren...
registerMooseObjectRenamed("SolidMechanicsApp", TensorMechanicsPlasticWeakPlaneTensileN, "01/01/2025 00:00", SolidMechanicsPlasticWeakPlaneTensileN)
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
const SolidMechanicsHardeningModel & _strength
Yield function = _a * stress_zz - _strength;.
GenericRealTensorValue< is_ad > rotVecToZ(GenericRealVectorValue< is_ad > vec)
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 ...
Rate-independent associative weak-plane tensile failure with hardening/softening, and normal directio...
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
RankTwoTensor _df_dsig
Flow direction, which is constant in this case.
void mooseError(Args &&... args) const
Real dyieldFunction_dintnl(const RankTwoTensor &stress, Real intnl) const override
The derivative of yield function with respect to the internal parameter.
static const std::complex< double > j(0, 1)
Complex number "j" (also known as "i")
RankFourTensor dflowPotential_dstress(const RankTwoTensor &stress, Real intnl) const override
The derivative of the flow potential with respect to stress.
RankTwoTensor dyieldFunction_dstress(const RankTwoTensor &stress, Real intnl) const override
The derivative of yield function with respect to stress.
RealTensorValue _rot
This rotation matrix rotates _input_n to (0, 0, 1)
RealVectorValue _input_n
Unit normal inputted by user.
SolidMechanicsPlasticWeakPlaneTensileN(const InputParameters ¶meters)
static InputParameters validParams()
static InputParameters validParams()