www.mooseframework.org
TensorMechanicsHardeningCubic.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 "libmesh/utility.h"
12 
14 
16 
17 InputParameters
19 {
20  InputParameters params = TensorMechanicsHardeningModel::validParams();
21  params.addRequiredParam<Real>(
22  "value_0", "The value of the parameter for all internal_parameter <= internal_0");
23  params.addParam<Real>("value_residual",
24  "The value of the parameter for internal_parameter >= "
25  "internal_limit. Default = value_0, ie perfect "
26  "plasticity");
27  params.addParam<Real>(
28  "internal_0", 0.0, "The value of the internal_parameter when hardening begins");
29  params.addParam<Real>("internal_limit",
30  1.0,
31  "The value of the internal_parameter when hardening "
32  "ends. This hardening forms a cubic between "
33  "(internal_0, value_0) and (internal_limit, "
34  "value_residual) that is smooth at internal_0 and "
35  "internal_limit");
36  params.addClassDescription("Hardening is Cubic");
37  return params;
38 }
39 
41  : TensorMechanicsHardeningModel(parameters),
42  _val_0(getParam<Real>("value_0")),
43  _val_res(parameters.isParamValid("value_residual") ? getParam<Real>("value_residual") : _val_0),
44  _intnl_0(getParam<Real>("internal_0")),
45  _intnl_limit(getParam<Real>("internal_limit")),
46  _half_intnl_limit(0.5 * (_intnl_limit - _intnl_0)),
47  _alpha((_val_0 - _val_res) / (4.0 * Utility::pow<3>(_half_intnl_limit))),
48  _beta(-3.0 * _alpha * Utility::pow<2>(_half_intnl_limit))
49 {
50  if (_intnl_limit <= _intnl_0)
51  mooseError("internal_limit must be greater than internal_0 in Cubic Hardening");
52 }
53 
54 Real
56 {
57  const Real x = intnl - _intnl_0;
58  if (x <= 0.0)
59  return _val_0;
60  else if (intnl >= _intnl_limit)
61  return _val_res;
62  else
63  return _alpha * Utility::pow<3>(x - _half_intnl_limit) + _beta * (x - _half_intnl_limit) +
64  0.5 * (_val_0 + _val_res);
65 }
66 
67 Real
69 {
70  const Real x = intnl - _intnl_0;
71  if (x <= 0.0)
72  return 0.0;
73  else if (intnl >= _intnl_limit)
74  return 0.0;
75  else
76  return 3.0 * _alpha * Utility::pow<2>(x - _half_intnl_limit) + _beta;
77 }
78 
79 std::string
81 {
82  return "Cubic";
83 }
TensorMechanicsHardeningCubic::_val_0
Real _val_0
value is cubic between _val_0 at internal_parameter=_intnl_0, at _val_res at internal_parameter=_intn...
Definition: TensorMechanicsHardeningCubic.h:41
pow
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)
Definition: ExpressionBuilder.h:673
registerMooseObject
registerMooseObject("TensorMechanicsApp", TensorMechanicsHardeningCubic)
TensorMechanicsHardeningCubic::_alpha
Real _alpha
convenience parameter for cubic
Definition: TensorMechanicsHardeningCubic.h:56
TensorMechanicsHardeningCubic::derivative
virtual Real derivative(Real intnl) const override
Definition: TensorMechanicsHardeningCubic.C:68
TensorMechanicsHardeningCubic::_val_res
Real _val_res
value is cubic between _val_0 at internal_parameter=_intnl_0, at _val_res at internal_parameter=_intn...
Definition: TensorMechanicsHardeningCubic.h:44
TensorMechanicsHardeningCubic::_intnl_limit
Real _intnl_limit
value is cubic between _val_0 at internal_parameter=_intnl_0, at _val_res at internal_parameter=_intn...
Definition: TensorMechanicsHardeningCubic.h:50
TensorMechanicsHardeningCubic::modelName
virtual std::string modelName() const override
Definition: TensorMechanicsHardeningCubic.C:80
TensorMechanicsHardeningCubic::value
virtual Real value(Real intnl) const override
Definition: TensorMechanicsHardeningCubic.C:55
TensorMechanicsHardeningModel::validParams
static InputParameters validParams()
Definition: TensorMechanicsHardeningModel.C:17
defineLegacyParams
defineLegacyParams(TensorMechanicsHardeningCubic)
TensorMechanicsHardeningCubic::TensorMechanicsHardeningCubic
TensorMechanicsHardeningCubic(const InputParameters &parameters)
Definition: TensorMechanicsHardeningCubic.C:40
TensorMechanicsHardeningCubic::validParams
static InputParameters validParams()
Definition: TensorMechanicsHardeningCubic.C:18
TensorMechanicsHardeningCubic
Cubic hardening value = _val_0 for p <= _intnl_0 value = _val_res for p >= _intnl_limit value = cubic...
Definition: TensorMechanicsHardeningCubic.h:26
TensorMechanicsHardeningCubic.h
TensorMechanicsHardeningCubic::_beta
Real _beta
convenience parameter for cubic
Definition: TensorMechanicsHardeningCubic.h:59
TensorMechanicsHardeningCubic::_intnl_0
Real _intnl_0
value is cubic between _val_0 at internal_parameter=_intnl_0, at _val_res at internal_parameter=_intn...
Definition: TensorMechanicsHardeningCubic.h:47
TensorMechanicsHardeningCubic::_half_intnl_limit
Real _half_intnl_limit
convenience parameter for cubic
Definition: TensorMechanicsHardeningCubic.h:53
TensorMechanicsHardeningModel
Hardening Model base class.
Definition: TensorMechanicsHardeningModel.h:27