LCOV - code coverage report
Current view: top level - src/userobjects - SolidMechanicsHardeningPowerRule.C (source / functions) Hit Total Coverage
Test: idaholab/moose solid_mechanics: f45d79 Lines: 18 21 85.7 %
Date: 2025-07-25 05:00:39 Functions: 4 5 80.0 %
Legend: Lines: hit not hit

          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             : }

Generated by: LCOV version 1.14