https://mooseframework.inl.gov
SolidMechanicsHardeningCutExponential.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://mooseframework.inl.gov
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 
13 registerMooseObjectRenamed("SolidMechanicsApp",
14  TensorMechanicsHardeningCutExponential,
15  "01/01/2025 00:00",
17 
20 {
22  params.addRequiredParam<Real>(
23  "value_0", "The value of the parameter for all internal_parameter <= internal_0");
24  params.addParam<Real>("value_residual",
25  "The value of the parameter for internal_parameter = "
26  "infinity. Default = value_0, ie perfect plasticity");
27  params.addParam<Real>("internal_0", 0, "The cutoff of internal parameter");
28  params.addParam<Real>("rate",
29  0,
30  "Let p = internal_parameter. Then value = value_0 for "
31  "p<internal_0, and otherwise, value = value_residual + (value_0 "
32  "- value_residual)*exp(-rate*(p - internal_0)");
33  params.addClassDescription("Hardening is Cut-exponential");
34  return params;
35 }
36 
38  const InputParameters & parameters)
39  : SolidMechanicsHardeningModel(parameters),
40  _val_0(getParam<Real>("value_0")),
41  _val_res(parameters.isParamValid("value_residual") ? getParam<Real>("value_residual") : _val_0),
42  _intnl_0(getParam<Real>("internal_0")),
43  _rate(getParam<Real>("rate"))
44 {
45 }
46 
47 Real
49 {
50  Real x = intnl - _intnl_0;
51  if (x <= 0)
52  return _val_0;
53  else
54  return _val_res + (_val_0 - _val_res) * std::exp(-_rate * x);
55 }
56 
57 Real
59 {
60  Real x = intnl - _intnl_0;
61  if (x <= 0)
62  return 0;
63  else
64  return -_rate * (_val_0 - _val_res) * std::exp(-_rate * x);
65 }
66 
67 std::string
69 {
70  return "CutExponential";
71 }
registerMooseObjectRenamed("SolidMechanicsApp", TensorMechanicsHardeningCutExponential, "01/01/2025 00:00", SolidMechanicsHardeningCutExponential)
Real _rate
The value = _val_res + (val_0 - val_res)*exp(-rate*(internal_parameter - _intnl_0)), for internal_parameter >= _intnl_0, otherwise value = _val_0.
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
Real _val_res
The value = _val_res + (val_0 - val_res)*exp(-rate*(internal_parameter - _intnl_0)), for internal_parameter >= _intnl_0, otherwise value = _val_0.
virtual Real derivative(Real intnl) const override
void addRequiredParam(const std::string &name, const std::string &doc_string)
registerMooseObject("SolidMechanicsApp", SolidMechanicsHardeningCutExponential)
const std::vector< double > x
Real _val_0
The value = _val_res + (val_0 - val_res)*exp(-rate*(internal_parameter - _intnl_0)), for internal_parameter >= _intnl_0, otherwise value = _val_0.
Real _intnl_0
The value = _val_res + (val_0 - val_res)*exp(-rate*(internal_parameter - _intnl_0)), for internal_parameter >= _intnl_0, otherwise value = _val_0.
CutExponential hardening The value = _val_res + (val_0 - val_res)*exp(-rate*(internal_parameter - _in...
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
SolidMechanicsHardeningCutExponential(const InputParameters &parameters)
void addClassDescription(const std::string &doc_string)