LCOV - code coverage report
Current view: top level - src/userobjects - SolidMechanicsHardeningPowerRule.C (source / functions) Hit Total Coverage
Test: idaholab/moose solid_mechanics: #32971 (54bef8) with base c6cf66 Lines: 18 21 85.7 %
Date: 2026-05-29 20:40:07 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          68 : SolidMechanicsHardeningPowerRule::validParams()
      20             : {
      21          68 :   InputParameters params = SolidMechanicsHardeningModel::validParams();
      22         136 :   params.addRequiredParam<Real>("value_0", "The yield strength when internal variable = 0");
      23         136 :   params.addParam<Real>("epsilon0", 1.0, "The reference strain");
      24         136 :   params.addParam<Real>(
      25             :       "exponent",
      26         136 :       0.0,
      27             :       "Let p = internal_parameter.  Then value = value_0 * (p / epsilon0 + 1)^{exponent})");
      28          68 :   params.addClassDescription("Hardening defined by power rule");
      29          68 :   return params;
      30           0 : }
      31             : 
      32          34 : SolidMechanicsHardeningPowerRule::SolidMechanicsHardeningPowerRule(
      33          34 :     const InputParameters & parameters)
      34             :   : SolidMechanicsHardeningModel(parameters),
      35          34 :     _value_0(getParam<Real>("value_0")),
      36          68 :     _epsilon0(getParam<Real>("epsilon0")),
      37         102 :     _exponent(getParam<Real>("exponent"))
      38             : {
      39          34 : }
      40             : 
      41             : Real
      42    12956058 : SolidMechanicsHardeningPowerRule::value(Real intnl) const
      43             : {
      44    12956058 :   return _value_0 * std::pow(intnl / _epsilon0 + 1, _exponent);
      45             : }
      46             : 
      47             : Real
      48     7784372 : SolidMechanicsHardeningPowerRule::derivative(Real intnl) const
      49             : {
      50     7784372 :   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