https://mooseframework.inl.gov
Loading...
Searching...
No Matches
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
13registerMooseObjectRenamed("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
41Real
43{
44 return _value_0 * std::pow(intnl / _epsilon0 + 1, _exponent);
45}
46
47Real
49{
50 return _value_0 * _exponent / _epsilon0 * std::pow(intnl / _epsilon0 + 1, _exponent - 1);
51}
52
53std::string
55{
56 return "PowerRule";
57}
registerMooseObjectRenamed("SolidMechanicsApp", TensorMechanicsHardeningPowerRule, "01/01/2025 00:00", SolidMechanicsHardeningPowerRule)
registerMooseObject("SolidMechanicsApp", SolidMechanicsHardeningPowerRule)
void addRequiredParam(const std::string &name, const std::string &doc_string)
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
void addClassDescription(const std::string &doc_string)
Power-Rule Hardening defined by: assuming p = internal_parameter, then value = value_0 * (p / epsilon...
const Real _value_0
The value = value_0 * (p / epsilon0 + 1)^{exponent})
const Real _exponent
The value = value_0 * (p / epsilon0 + 1)^{exponent})
virtual Real derivative(Real intnl) const override
virtual Real value(Real intnl) const override
const Real _epsilon0
The value = value_0 * (p / epsilon0 + 1)^{exponent})
SolidMechanicsHardeningPowerRule(const InputParameters &parameters)
virtual std::string modelName() const override