www.mooseframework.org
TensorMechanicsPlasticWeakPlaneTensile.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
11 #include "RankFourTensor.h"
12 
14 
16 
17 InputParameters
19 {
20  InputParameters params = TensorMechanicsPlasticModel::validParams();
21  params.addParam<Real>("stress_coefficient",
22  1.0,
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");
29 
30  return params;
31 }
32 
34  const InputParameters & parameters)
35  : TensorMechanicsPlasticModel(parameters),
36  _a(getParam<Real>("stress_coefficient")),
37  _strength(getUserObject<TensorMechanicsHardeningModel>("tensile_strength"))
38 {
39  // cannot check the following for all values of strength, but this is a start
40  if (_strength.value(0) < 0)
41  mooseError("Weak plane tensile strength must not be negative");
42 }
43 
44 Real
46  Real intnl) const
47 {
48  return _a * stress(2, 2) - tensile_strength(intnl);
49 }
50 
53  Real /*intnl*/) const
54 {
55  RankTwoTensor df_dsig;
56  df_dsig(2, 2) = _a;
57  return df_dsig;
58 }
59 
60 Real
62  Real intnl) const
63 {
64  return -dtensile_strength(intnl);
65 }
66 
69  Real /*intnl*/) const
70 {
71  RankTwoTensor df_dsig;
72  df_dsig(2, 2) = _a;
73  return df_dsig;
74 }
75 
78  Real /*intnl*/) const
79 {
80  return RankFourTensor();
81 }
82 
85  Real /*intnl*/) const
86 {
87  return RankTwoTensor();
88 }
89 
90 Real
92 {
93  return _strength.value(internal_param);
94 }
95 
96 Real
98 {
99  return _strength.derivative(internal_param);
100 }
101 
102 void
104  const RankTwoTensor & stress,
105  Real intnl,
106  const RankFourTensor & Eijkl,
107  std::vector<bool> & act,
108  RankTwoTensor & returned_stress) const
109 {
110  act.assign(1, false);
111 
112  if (f[0] <= _f_tol)
113  {
114  returned_stress = stress;
115  return;
116  }
117 
118  Real str = tensile_strength(intnl);
119 
120  RankTwoTensor n; // flow direction
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);
124 
125  // returned_stress = _a * stress - alpha*n
126  // where alpha = (_a * stress(2, 2) - str)/n(2, 2)
127  Real alpha = (_a * stress(2, 2) - str) / n(2, 2);
128 
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);
132 
133  act[0] = true;
134 }
135 
136 std::string
138 {
139  return "WeakPlaneTensile";
140 }
TensorMechanicsPlasticWeakPlaneTensile::yieldFunction
Real yieldFunction(const RankTwoTensor &stress, Real intnl) const override
The following functions are what you should override when building single-plasticity models.
Definition: TensorMechanicsPlasticWeakPlaneTensile.C:45
TensorMechanicsPlasticWeakPlaneTensile::flowPotential
RankTwoTensor flowPotential(const RankTwoTensor &stress, Real intnl) const override
The flow potential.
Definition: TensorMechanicsPlasticWeakPlaneTensile.C:68
TensorMechanicsPlasticWeakPlaneTensile::tensile_strength
virtual Real tensile_strength(const Real internal_param) const
tensile strength as a function of residual value, rate, and internal_param
Definition: TensorMechanicsPlasticWeakPlaneTensile.C:91
TensorMechanicsPlasticModel::validParams
static InputParameters validParams()
Definition: TensorMechanicsPlasticModel.C:18
defineLegacyParams
defineLegacyParams(TensorMechanicsPlasticWeakPlaneTensile)
TensorMechanicsPlasticWeakPlaneTensile::dflowPotential_dintnl
RankTwoTensor dflowPotential_dintnl(const RankTwoTensor &stress, Real intnl) const override
The derivative of the flow potential with respect to the internal parameter.
Definition: TensorMechanicsPlasticWeakPlaneTensile.C:84
TensorMechanicsPlasticWeakPlaneTensile.h
TensorMechanicsPlasticWeakPlaneTensile::TensorMechanicsPlasticWeakPlaneTensile
TensorMechanicsPlasticWeakPlaneTensile(const InputParameters &parameters)
Definition: TensorMechanicsPlasticWeakPlaneTensile.C:33
TensorMechanicsPlasticModel::_f_tol
const Real _f_tol
Tolerance on yield function.
Definition: TensorMechanicsPlasticModel.h:175
TensorMechanicsPlasticWeakPlaneTensile::_strength
const TensorMechanicsHardeningModel & _strength
Yield function = _a * stress_zz - _strength;.
Definition: TensorMechanicsPlasticWeakPlaneTensile.h:45
TensorMechanicsPlasticWeakPlaneTensile::_a
const Real _a
Yield function = _a * stress_zz - _strength;.
Definition: TensorMechanicsPlasticWeakPlaneTensile.h:42
TensorMechanicsPlasticWeakPlaneTensile::validParams
static InputParameters validParams()
Definition: TensorMechanicsPlasticWeakPlaneTensile.C:18
TensorMechanicsHardeningModel::derivative
virtual Real derivative(Real intnl) const
Definition: TensorMechanicsHardeningModel.C:47
registerMooseObject
registerMooseObject("TensorMechanicsApp", TensorMechanicsPlasticWeakPlaneTensile)
TensorMechanicsPlasticWeakPlaneTensile::modelName
virtual std::string modelName() const override
Definition: TensorMechanicsPlasticWeakPlaneTensile.C:137
TensorMechanicsPlasticWeakPlaneTensile::dyieldFunction_dintnl
Real dyieldFunction_dintnl(const RankTwoTensor &stress, Real intnl) const override
The derivative of yield function with respect to the internal parameter.
Definition: TensorMechanicsPlasticWeakPlaneTensile.C:61
TensorMechanicsHardeningModel::value
virtual Real value(Real intnl) const
Definition: TensorMechanicsHardeningModel.C:45
RankTwoTensor
RankTwoTensorTempl< Real > RankTwoTensor
Definition: ACGrGrElasticDrivingForce.h:17
RankFourTensorTempl
Definition: ACGrGrElasticDrivingForce.h:20
TensorMechanicsPlasticWeakPlaneTensile::dyieldFunction_dstress
RankTwoTensor dyieldFunction_dstress(const RankTwoTensor &stress, Real intnl) const override
The derivative of yield function with respect to stress.
Definition: TensorMechanicsPlasticWeakPlaneTensile.C:52
TensorMechanicsPlasticModel
Plastic Model base class The virtual functions written below must be over-ridden in derived classes t...
Definition: TensorMechanicsPlasticModel.h:42
TensorMechanicsPlasticWeakPlaneTensile::activeConstraints
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.
Definition: TensorMechanicsPlasticWeakPlaneTensile.C:103
TensorMechanicsPlasticWeakPlaneTensile::dtensile_strength
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
Definition: TensorMechanicsPlasticWeakPlaneTensile.C:97
RankTwoTensorTempl< Real >
RankFourTensor
RankFourTensorTempl< Real > RankFourTensor
Definition: ACGrGrElasticDrivingForce.h:20
TensorMechanicsPlasticWeakPlaneTensile::dflowPotential_dstress
RankFourTensor dflowPotential_dstress(const RankTwoTensor &stress, Real intnl) const override
The derivative of the flow potential with respect to stress.
Definition: TensorMechanicsPlasticWeakPlaneTensile.C:77
TensorMechanicsHardeningModel
Hardening Model base class.
Definition: TensorMechanicsHardeningModel.h:27
TensorMechanicsPlasticWeakPlaneTensile
Rate-independent associative weak-plane tensile failure with hardening/softening of the tensile stren...
Definition: TensorMechanicsPlasticWeakPlaneTensile.h:24