www.mooseframework.org
TensorMechanicsPlasticWeakPlaneTensile.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 
9 template <>
10 InputParameters
12 {
13  InputParameters params = validParams<TensorMechanicsPlasticModel>();
14  params.addParam<Real>("stress_coefficient",
15  1.0,
16  "The yield function is stress_coefficient * stress_zz - tensile_strength");
17  params.addRequiredParam<UserObjectName>("tensile_strength",
18  "A TensorMechanicsHardening "
19  "UserObject that defines hardening "
20  "of the weak-plane tensile strength");
21  params.addClassDescription("Associative weak-plane tensile plasticity with hardening/softening");
22 
23  return params;
24 }
25 
27  const InputParameters & parameters)
28  : TensorMechanicsPlasticModel(parameters),
29  _a(getParam<Real>("stress_coefficient")),
30  _strength(getUserObject<TensorMechanicsHardeningModel>("tensile_strength"))
31 {
32  // cannot check the following for all values of strength, but this is a start
33  if (_strength.value(0) < 0)
34  mooseError("Weak plane tensile strength must not be negative");
35 }
36 
37 Real
39  Real intnl) const
40 {
41  return _a * stress(2, 2) - tensile_strength(intnl);
42 }
43 
44 RankTwoTensor
46  Real /*intnl*/) const
47 {
48  RankTwoTensor df_dsig;
49  df_dsig(2, 2) = _a;
50  return df_dsig;
51 }
52 
53 Real
55  Real intnl) const
56 {
57  return -dtensile_strength(intnl);
58 }
59 
60 RankTwoTensor
62  Real /*intnl*/) const
63 {
64  RankTwoTensor df_dsig;
65  df_dsig(2, 2) = _a;
66  return df_dsig;
67 }
68 
69 RankFourTensor
71  Real /*intnl*/) const
72 {
73  return RankFourTensor();
74 }
75 
76 RankTwoTensor
78  Real /*intnl*/) const
79 {
80  return RankTwoTensor();
81 }
82 
83 Real
85 {
86  return _strength.value(internal_param);
87 }
88 
89 Real
91 {
92  return _strength.derivative(internal_param);
93 }
94 
95 void
97  const RankTwoTensor & stress,
98  Real intnl,
99  const RankFourTensor & Eijkl,
100  std::vector<bool> & act,
101  RankTwoTensor & returned_stress) const
102 {
103  act.assign(1, false);
104 
105  if (f[0] <= _f_tol)
106  {
107  returned_stress = stress;
108  return;
109  }
110 
111  Real str = tensile_strength(intnl);
112 
113  RankTwoTensor n; // flow direction
114  for (unsigned i = 0; i < 3; ++i)
115  for (unsigned j = 0; j < 3; ++j)
116  n(i, j) = _a * Eijkl(i, j, 2, 2);
117 
118  // returned_stress = _a * stress - alpha*n
119  // where alpha = (_a * stress(2, 2) - str)/n(2, 2)
120  Real alpha = (_a * stress(2, 2) - str) / n(2, 2);
121 
122  for (unsigned i = 0; i < 3; ++i)
123  for (unsigned j = 0; j < 3; ++j)
124  returned_stress(i, j) = _a * stress(i, j) - alpha * n(i, j);
125 
126  act[0] = true;
127 }
128 
129 std::string
131 {
132  return "WeakPlaneTensile";
133 }
const Real _a
Yield function = _a * stress_zz - _strength;.
virtual Real derivative(Real intnl) const
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 ...
RankTwoTensor dyieldFunction_dstress(const RankTwoTensor &stress, Real intnl) const override
The derivative of yield function with respect to stress.
RankTwoTensor flowPotential(const RankTwoTensor &stress, Real intnl) const override
The flow potential.
InputParameters validParams< TensorMechanicsPlasticWeakPlaneTensile >()
const TensorMechanicsHardeningModel & _strength
Yield function = _a * stress_zz - _strength;.
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.
InputParameters validParams< TensorMechanicsPlasticModel >()
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...
const Real _f_tol
Tolerance on yield function.
Real dyieldFunction_dintnl(const RankTwoTensor &stress, Real intnl) const override
The derivative of yield function with respect to the internal parameter.
TensorMechanicsPlasticWeakPlaneTensile(const InputParameters &parameters)
Plastic Model base class The virtual functions written below must be over-ridden in derived classes t...
RankTwoTensor dflowPotential_dintnl(const RankTwoTensor &stress, Real intnl) const override
The derivative of the flow potential with respect to the internal parameter.
RankFourTensor dflowPotential_dstress(const RankTwoTensor &stress, Real intnl) const override
The derivative of the flow potential with respect to stress.