https://mooseframework.inl.gov
SolidMechanicsHardeningPowerRule.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  TensorMechanicsHardeningPowerRule,
15  "01/01/2025 00:00",
17 
20 {
22  params.addRequiredParam<Real>("value_0", "The yield strength when internal variable = 0");
23  params.addParam<Real>("epsilon0", 1.0, "The reference strain");
24  params.addParam<Real>(
25  "exponent",
26  0.0,
27  "Let p = internal_parameter. Then value = value_0 * (p / epsilon0 + 1)^{exponent})");
28  params.addClassDescription("Hardening defined by power rule");
29  return params;
30 }
31 
33  const InputParameters & parameters)
34  : SolidMechanicsHardeningModel(parameters),
35  _value_0(getParam<Real>("value_0")),
36  _epsilon0(getParam<Real>("epsilon0")),
37  _exponent(getParam<Real>("exponent"))
38 {
39 }
40 
41 Real
43 {
44  return _value_0 * std::pow(intnl / _epsilon0 + 1, _exponent);
45 }
46 
47 Real
49 {
50  return _value_0 * _exponent / _epsilon0 * std::pow(intnl / _epsilon0 + 1, _exponent - 1);
51 }
52 
53 std::string
55 {
56  return "PowerRule";
57 }
registerMooseObject("SolidMechanicsApp", SolidMechanicsHardeningPowerRule)
SolidMechanicsHardeningPowerRule(const InputParameters &parameters)
const Real _value_0
The value = value_0 * (p / epsilon0 + 1)^{exponent})
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
const Real _epsilon0
The value = value_0 * (p / epsilon0 + 1)^{exponent})
virtual Real derivative(Real intnl) const override
void addRequiredParam(const std::string &name, const std::string &doc_string)
virtual std::string modelName() const override
Power-Rule Hardening defined by: assuming p = internal_parameter, then value = value_0 * (p / epsilon...
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const Real _exponent
The value = value_0 * (p / epsilon0 + 1)^{exponent})
virtual Real value(Real intnl) const override
void addClassDescription(const std::string &doc_string)
registerMooseObjectRenamed("SolidMechanicsApp", TensorMechanicsHardeningPowerRule, "01/01/2025 00:00", SolidMechanicsHardeningPowerRule)
MooseUnits pow(const MooseUnits &, int)