LCOV - code coverage report
Current view: top level - src/kernels - MechanicsBaseNOSPD.C (source / functions) Hit Total Coverage
Test: idaholab/moose peridynamics: #31405 (292dce) with base fef103 Lines: 30 31 96.8 %
Date: 2025-09-04 07:55:08 Functions: 3 3 100.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 "MechanicsBaseNOSPD.h"
      11             : 
      12             : InputParameters
      13         542 : MechanicsBaseNOSPD::validParams()
      14             : {
      15         542 :   InputParameters params = MechanicsBasePD::validParams();
      16         542 :   params.addClassDescription("Base class for kernels of the stabilized non-ordinary "
      17             :                              "state-based peridynamic correspondence models");
      18             : 
      19        1084 :   params.addParam<std::vector<MaterialPropertyName>>(
      20             :       "eigenstrain_names",
      21             :       {},
      22             :       "List of eigenstrains to be coupled in non-ordinary state-based mechanics kernels");
      23             : 
      24         542 :   return params;
      25           0 : }
      26             : 
      27         388 : MechanicsBaseNOSPD::MechanicsBaseNOSPD(const InputParameters & parameters)
      28             :   : MechanicsBasePD(parameters),
      29         388 :     _multi(getMaterialProperty<Real>("multi")),
      30         776 :     _stress(getMaterialProperty<RankTwoTensor>("stress")),
      31         776 :     _shape2(getMaterialProperty<RankTwoTensor>("rank_two_shape_tensor")),
      32         776 :     _dgrad(getMaterialProperty<RankTwoTensor>("deformation_gradient")),
      33         776 :     _ddgraddu(getMaterialProperty<RankTwoTensor>("ddeformation_gradient_du")),
      34         776 :     _ddgraddv(getMaterialProperty<RankTwoTensor>("ddeformation_gradient_dv")),
      35         776 :     _ddgraddw(getMaterialProperty<RankTwoTensor>("ddeformation_gradient_dw")),
      36         776 :     _Jacobian_mult(getMaterialProperty<RankFourTensor>("Jacobian_mult")),
      37         776 :     _eigenstrain_names(getParam<std::vector<MaterialPropertyName>>("eigenstrain_names")),
      38         776 :     _deigenstrain_dT(_eigenstrain_names.size())
      39             : {
      40         388 :   if (_temp_coupled)
      41         244 :     for (unsigned int i = 0; i < _deigenstrain_dT.size(); ++i)
      42         122 :       _deigenstrain_dT[i] =
      43         244 :           &getMaterialPropertyDerivative<RankTwoTensor>(_eigenstrain_names[i], _temp_var->name());
      44         388 : }
      45             : 
      46             : RankTwoTensor
      47     1615136 : MechanicsBaseNOSPD::computeDSDU(unsigned int component, unsigned int nd)
      48             : {
      49             :   // compute the derivative of stress w.r.t the solution components for small strain
      50     1615136 :   RankTwoTensor dSdU;
      51     1615136 :   if (component == 0)
      52     1394024 :     dSdU = _Jacobian_mult[nd] * 0.5 * (_ddgraddu[nd].transpose() + _ddgraddu[nd]);
      53      918124 :   else if (component == 1)
      54     1418504 :     dSdU = _Jacobian_mult[nd] * 0.5 * (_ddgraddv[nd].transpose() + _ddgraddv[nd]);
      55      208872 :   else if (component == 2)
      56      417744 :     dSdU = _Jacobian_mult[nd] * 0.5 * (_ddgraddw[nd].transpose() + _ddgraddw[nd]);
      57             : 
      58     1615136 :   return dSdU;
      59             : }

Generated by: LCOV version 1.14