LCOV - code coverage report
Current view: top level - src/materials/large_deformation_models - LargeDeformationJ2PowerLawCreep.C (source / functions) Hit Total Coverage
Test: coverage.info Lines: 31 32 96.9 %
Date: 2025-02-21 01:06:12 Functions: 4 4 100.0 %

          Line data    Source code
       1             : //* This file is part of the RACCOON application
       2             : //* being developed at Dolbow lab at Duke University
       3             : //* http://dolbow.pratt.duke.edu
       4             : 
       5             : #include "LargeDeformationJ2PowerLawCreep.h"
       6             : #include "RaccoonUtils.h"
       7             : 
       8             : registerMooseObject("raccoonApp", LargeDeformationJ2PowerLawCreep);
       9             : 
      10             : InputParameters
      11         146 : LargeDeformationJ2PowerLawCreep::validParams()
      12             : {
      13         146 :   InputParameters params = LargeDeformationJ2Plasticity::validParams();
      14         146 :   params.addClassDescription("Large deformation $J_2$ power-law creep. This is an approximation to "
      15             :                              "the consistent plasticity model using the update formula $\\epdot "
      16             :                              "= A \\dfrac{\\bar{\\sigma}}{\\sigma_y}^n$.");
      17         292 :   params.addRequiredParam<Real>("coefficient",
      18             :                                 "The coefficient $A$ in the update formula for creep rate");
      19         292 :   params.addRequiredParam<Real>("exponent",
      20             :                                 "The exponent $n$ in the update formula for creep rate");
      21         146 :   return params;
      22           0 : }
      23             : 
      24           6 : LargeDeformationJ2PowerLawCreep::LargeDeformationJ2PowerLawCreep(const InputParameters & parameters)
      25             :   : LargeDeformationJ2Plasticity(parameters),
      26           6 :     _coefficient(getParam<Real>("coefficient")),
      27          18 :     _exponent(getParam<Real>("exponent"))
      28             : {
      29           6 : }
      30             : 
      31             : ADReal
      32        7368 : LargeDeformationJ2PowerLawCreep::computeResidual(const ADReal & effective_trial_stress,
      33             :                                                  const ADReal & delta_ep)
      34             : {
      35             :   const ADReal stress_delta =
      36             :       effective_trial_stress -
      37       14736 :       _elasticity_model->computeMandelStress(delta_ep * _Np[_qp], /*plasticity_update = */ true)
      38        7368 :           .doubleContraction(_Np[_qp]);
      39             :   const ADReal yield_stress =
      40       14736 :       _hardening_model->plasticEnergy(_ep_old[_qp] + delta_ep, 1) +
      41       14736 :       _hardening_model->plasticDissipation(delta_ep, _ep_old[_qp] + delta_ep, 1);
      42       14736 :   const ADReal creep_rate = _coefficient * std::pow(stress_delta / yield_stress, _exponent);
      43       14736 :   return creep_rate * _dt - delta_ep;
      44             : }
      45             : 
      46             : ADReal
      47        5600 : LargeDeformationJ2PowerLawCreep::computeDerivative(const ADReal & effective_trial_stress,
      48             :                                                    const ADReal & delta_ep)
      49             : {
      50             :   const ADReal stress_delta =
      51             :       effective_trial_stress -
      52       11200 :       _elasticity_model->computeMandelStress(delta_ep * _Np[_qp], /*plasticity_update = */ true)
      53        5600 :           .doubleContraction(_Np[_qp]);
      54             :   const ADReal dstress_delta_ddelta_ep =
      55        5600 :       -_elasticity_model->computeMandelStress(_Np[_qp], /*plasticity_update = */ true)
      56        5600 :            .doubleContraction(_Np[_qp]);
      57             :   const ADReal yield_stress =
      58       11200 :       _hardening_model->plasticEnergy(_ep_old[_qp] + delta_ep, 1) +
      59       11200 :       _hardening_model->plasticDissipation(delta_ep, _ep_old[_qp] + delta_ep, 1);
      60             :   const ADReal dyield_stress_ddelta_ep =
      61       11200 :       _hardening_model->plasticEnergy(_ep_old[_qp] + delta_ep, 2) +
      62       11200 :       _hardening_model->plasticDissipation(delta_ep, _ep_old[_qp] + delta_ep, 2);
      63             :   const ADReal dcreep_rate =
      64       16800 :       _coefficient * _exponent * std::pow(stress_delta / yield_stress, _exponent - 1);
      65        5600 :   return dcreep_rate *
      66        5600 :              (dstress_delta_ddelta_ep * yield_stress - stress_delta * dyield_stress_ddelta_ep) /
      67        5600 :              yield_stress / yield_stress * _dt -
      68        5600 :          1;
      69             : }

Generated by: LCOV version 1.16