www.mooseframework.org
TensorMechanicsPlasticWeakPlaneTensileN.C
Go to the documentation of this file.
1 /****************************************************************/
2 /* MOOSE - Multiphysics Object Oriented Simulation Environment */
3 /* */
4 /* All contents are licensed under LGPL V2.1 */
5 /* See LICENSE for full restrictions */
6 /****************************************************************/
8 #include "RotationMatrix.h" // for rotVecToZ
9 
10 template <>
11 InputParameters
13 {
14  InputParameters params = validParams<TensorMechanicsPlasticWeakPlaneTensile>();
15  params.addRequiredParam<RealVectorValue>("normal_vector", "The normal vector to the weak plane");
16  params.addClassDescription("Associative weak-plane tensile plasticity with hardening/softening, "
17  "with specified, fixed normal vector. (WeakPlaneTensile combined "
18  "with specifying N in the Material might be preferable to you.)");
19 
20  return params;
21 }
22 
24  const InputParameters & parameters)
26  _input_n(getParam<RealVectorValue>("normal_vector")),
27  _df_dsig(RankTwoTensor())
28 {
29  // cannot check the following for all values of strength, but this is a start
30  if (_strength.value(0) < 0)
31  mooseError("Weak plane tensile strength must not be negative");
32  if (_input_n.norm() == 0)
33  mooseError("Weak-plane normal vector must not have zero length");
34  else
35  _input_n /= _input_n.norm();
36  _rot = RotationMatrix::rotVecToZ(_input_n);
37 
38  for (unsigned i = 0; i < 3; ++i)
39  for (unsigned j = 0; j < 3; ++j)
40  _df_dsig(i, j) = _rot(2, i) * _rot(2, j);
41 }
42 
43 Real
45  Real intnl) const
46 {
47  Real s22 = 0;
48  for (unsigned i = 0; i < 3; ++i)
49  for (unsigned j = 0; j < 3; ++j)
50  s22 += _rot(2, i) * _rot(2, j) * stress(i, j);
51  return s22 - tensile_strength(intnl);
52 }
53 
54 RankTwoTensor
56  Real /*intnl*/) const
57 {
58  return _df_dsig;
59 }
60 
61 Real
63  Real intnl) const
64 {
65  return -dtensile_strength(intnl);
66 }
67 
68 RankTwoTensor
70  Real /*intnl*/) const
71 {
72  return _df_dsig;
73 }
74 
75 RankFourTensor
77  Real /*intnl*/) const
78 {
79  return RankFourTensor();
80 }
81 
82 RankTwoTensor
84  Real /*intnl*/) const
85 {
86  return RankTwoTensor();
87 }
88 
89 std::string
91 {
92  return "WeakPlaneTensileN";
93 }
RankFourTensor dflowPotential_dstress(const RankTwoTensor &stress, Real intnl) const override
The derivative of the flow potential with respect to stress.
RankTwoTensor flowPotential(const RankTwoTensor &stress, Real intnl) const override
The flow potential.
RealTensorValue _rot
This rotation matrix rotates _input_n to (0, 0, 1)
RankTwoTensor dflowPotential_dintnl(const RankTwoTensor &stress, Real intnl) const override
The derivative of the flow potential with respect to the internal parameter.
virtual Real tensile_strength(const Real internal_param) const
tensile strength as a function of residual value, rate, and internal_param
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 ...
InputParameters validParams< TensorMechanicsPlasticWeakPlaneTensile >()
Real dyieldFunction_dintnl(const RankTwoTensor &stress, Real intnl) const override
The derivative of yield function with respect to the internal parameter.
RankTwoTensor dyieldFunction_dstress(const RankTwoTensor &stress, Real intnl) const override
The derivative of yield function with respect to stress.
const TensorMechanicsHardeningModel & _strength
Yield function = _a * stress_zz - _strength;.
Rate-independent associative weak-plane tensile failure with hardening/softening of the tensile stren...
InputParameters validParams< TensorMechanicsPlasticWeakPlaneTensileN >()
RankTwoTensor _df_dsig
Flow direction, which is constant in this case.
RealVectorValue _input_n
Unit normal inputted by user.
virtual Real value(Real intnl) const
Real yieldFunction(const RankTwoTensor &stress, Real intnl) const override
The following functions are what you should override when building single-plasticity models...
TensorMechanicsPlasticWeakPlaneTensileN(const InputParameters &parameters)