Line data Source code
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 : 10 : #include "SolidMechanicsHardeningPowerRule.h" 11 : 12 : registerMooseObject("SolidMechanicsApp", SolidMechanicsHardeningPowerRule); 13 : registerMooseObjectRenamed("SolidMechanicsApp", 14 : TensorMechanicsHardeningPowerRule, 15 : "01/01/2025 00:00", 16 : SolidMechanicsHardeningPowerRule); 17 : 18 : InputParameters 19 120 : SolidMechanicsHardeningPowerRule::validParams() 20 : { 21 120 : InputParameters params = SolidMechanicsHardeningModel::validParams(); 22 240 : params.addRequiredParam<Real>("value_0", "The yield strength when internal variable = 0"); 23 240 : params.addParam<Real>("epsilon0", 1.0, "The reference strain"); 24 240 : params.addParam<Real>( 25 : "exponent", 26 240 : 0.0, 27 : "Let p = internal_parameter. Then value = value_0 * (p / epsilon0 + 1)^{exponent})"); 28 120 : params.addClassDescription("Hardening defined by power rule"); 29 120 : return params; 30 0 : } 31 : 32 60 : SolidMechanicsHardeningPowerRule::SolidMechanicsHardeningPowerRule( 33 60 : const InputParameters & parameters) 34 : : SolidMechanicsHardeningModel(parameters), 35 60 : _value_0(getParam<Real>("value_0")), 36 120 : _epsilon0(getParam<Real>("epsilon0")), 37 180 : _exponent(getParam<Real>("exponent")) 38 : { 39 60 : } 40 : 41 : Real 42 32015536 : SolidMechanicsHardeningPowerRule::value(Real intnl) const 43 : { 44 32015536 : return _value_0 * std::pow(intnl / _epsilon0 + 1, _exponent); 45 : } 46 : 47 : Real 48 19224164 : SolidMechanicsHardeningPowerRule::derivative(Real intnl) const 49 : { 50 19224164 : return _value_0 * _exponent / _epsilon0 * std::pow(intnl / _epsilon0 + 1, _exponent - 1); 51 : } 52 : 53 : std::string 54 0 : SolidMechanicsHardeningPowerRule::modelName() const 55 : { 56 0 : return "PowerRule"; 57 : }