https://mooseframework.inl.gov
SolidMechanicsHardeningGaussian.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  TensorMechanicsHardeningGaussian,
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>(
28  "internal_0", 0, "The value of the internal_parameter when hardening begins");
29  params.addParam<Real>("rate",
30  0,
31  "Let p = internal_parameter. Then value = value_0 for "
32  "p<internal_0, and value = value_residual + (value_0 - "
33  "value_residual)*exp(-0.5*rate*(p - internal_0)^2)");
34  params.addClassDescription("Hardening is Gaussian");
35  return params;
36 }
37 
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(-0.5 * _rate * x * x);
55 }
56 
57 Real
59 {
60  Real x = intnl - _intnl_0;
61  if (x <= 0)
62  return 0;
63  else
64  return -_rate * x * (_val_0 - _val_res) * std::exp(-0.5 * _rate * x * x);
65 }
66 
67 std::string
69 {
70  return "Gaussian";
71 }
virtual Real derivative(Real intnl) const override
Gaussian hardening The value = _val_res + (val_0 - val_res)*exp(-0.5*rate*(p - intnl_0)^2) for p>intn...
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
virtual Real value(Real intnl) const override
registerMooseObject("SolidMechanicsApp", SolidMechanicsHardeningGaussian)
void addRequiredParam(const std::string &name, const std::string &doc_string)
Real _val_res
The value = _val_res + (val_0 - val_res)*exp(-0.5*rate*(p - intnl_0)^2) for p>intnl_0. Here p = internal parameter.
Real _rate
The value = _val_res + (val_0 - val_res)*exp(-0.5*rate*(p - intnl_0)^2) for p>intnl_0. Here p = internal parameter.
virtual std::string modelName() const override
const std::vector< double > x
SolidMechanicsHardeningGaussian(const InputParameters &parameters)
Real _intnl_0
The value = _val_res + (val_0 - val_res)*exp(-0.5*rate*(p - intnl_0)^2) for p>intnl_0. Here p = internal parameter.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void addClassDescription(const std::string &doc_string)
registerMooseObjectRenamed("SolidMechanicsApp", TensorMechanicsHardeningGaussian, "01/01/2025 00:00", SolidMechanicsHardeningGaussian)
Real _val_0
The value = _val_res + (val_0 - val_res)*exp(-0.5*rate*(p - intnl_0)^2) for p>intnl_0. Here p = internal parameter.