LCOV - code coverage report
Current view: top level - src/materials - ComputeSmallStrainMaterialBaseOSPD.C (source / functions) Hit Total Coverage
Test: idaholab/moose peridynamics: #32971 (54bef8) with base c6cf66 Lines: 49 50 98.0 %
Date: 2026-05-29 20:38:14 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 "ComputeSmallStrainMaterialBaseOSPD.h"
      11             : 
      12             : InputParameters
      13         382 : ComputeSmallStrainMaterialBaseOSPD::validParams()
      14             : {
      15         382 :   InputParameters params = ParametricMaterialBasePD::validParams();
      16         382 :   params.addClassDescription("Base class for ordinary state-based peridynamic mechanics models");
      17             : 
      18         382 :   return params;
      19           0 : }
      20             : 
      21         300 : ComputeSmallStrainMaterialBaseOSPD::ComputeSmallStrainMaterialBaseOSPD(
      22         300 :     const InputParameters & parameters)
      23             :   : ParametricMaterialBasePD(parameters),
      24         300 :     _bond_nonlocal_force(declareProperty<Real>("bond_nonlocal_force")),
      25         300 :     _bond_nonlocal_dfdU(declareProperty<Real>("bond_nonlocal_dfdU")),
      26         300 :     _bond_nonlocal_dfdT(declareProperty<Real>("bond_nonlocal_dfdT")),
      27         300 :     _bond_nonlocal_dfdE(declareProperty<Real>("bond_nonlocal_dfdE")),
      28         600 :     _d(2)
      29             : {
      30         300 : }
      31             : 
      32             : void
      33     1321976 : ComputeSmallStrainMaterialBaseOSPD::computeBondForce()
      34             : {
      35     1321976 :   if (_scalar_out_of_plane_strain_coupled)
      36             :   {
      37      804384 :     _bond_local_force[_qp] =
      38      804384 :         2.0 * _b *
      39      804384 :         (_mechanical_stretch[_qp] +
      40      804384 :          _poissons_ratio * (_scalar_out_of_plane_strain[0] -
      41      804384 :                             _alpha * (0.5 * (_temp[0] + _temp[1]) - _temp_ref))) /
      42      804384 :         _origin_vec.norm() * _node_vol[0] * _node_vol[1];
      43     1608768 :     _bond_local_dfdT[_qp] = -2.0 * _b * (1.0 + _poissons_ratio) * 0.5 * _alpha /
      44      804384 :                             _origin_vec.norm() * _node_vol[0] * _node_vol[1];
      45             : 
      46      804384 :     _bond_nonlocal_force[_qp] =
      47      804384 :         2.0 * _a * _d[_qp] * _d[_qp] *
      48      804384 :         (_mechanical_stretch[_qp] + _alpha * (0.5 * (_temp[0] + _temp[1]) - _temp_ref) -
      49      804384 :          _alpha * (_temp[_qp] - _temp_ref) +
      50      804384 :          _poissons_ratio * (_scalar_out_of_plane_strain[0] - _alpha * (_temp[_qp] - _temp_ref))) *
      51      804384 :         _node_vol[0] * _node_vol[1];
      52      804384 :     _bond_nonlocal_dfdT[_qp] = -2.0 * _a * _d[_qp] * _d[_qp] * (1.0 + _poissons_ratio) * _alpha *
      53      804384 :                                _node_vol[0] * _node_vol[1];
      54             :   }
      55             :   else
      56             :   {
      57      517592 :     _bond_local_force[_qp] =
      58      517592 :         2.0 * _b * _mechanical_stretch[_qp] / _origin_vec.norm() * _node_vol[0] * _node_vol[1];
      59      517592 :     _bond_local_dfdT[_qp] =
      60      517592 :         -2.0 * _b * 0.5 * _alpha / _origin_vec.norm() * _node_vol[0] * _node_vol[1];
      61             : 
      62      517592 :     _bond_nonlocal_force[_qp] =
      63      517592 :         2.0 * _a * _d[_qp] * _d[_qp] *
      64      517592 :         (_mechanical_stretch[_qp] + _alpha * (0.5 * (_temp[0] + _temp[1]) - _temp_ref) -
      65      517592 :          _alpha * (_temp[_qp] - _temp_ref)) *
      66      517592 :         _node_vol[0] * _node_vol[1];
      67      517592 :     _bond_nonlocal_dfdT[_qp] = -2.0 * _a * _d[_qp] * _d[_qp] * _alpha * _node_vol[0] * _node_vol[1];
      68             :   }
      69             : 
      70     1321976 :   _bond_local_dfdU[_qp] =
      71     1321976 :       2.0 * _b / _origin_vec.norm() / _origin_vec.norm() * _node_vol[0] * _node_vol[1];
      72     1321976 :   _bond_nonlocal_dfdU[_qp] =
      73     1321976 :       2.0 * _a * _d[_qp] * _d[_qp] / _origin_vec.norm() * _node_vol[0] * _node_vol[1];
      74             : 
      75     1321976 :   _bond_local_dfdE[_qp] =
      76     1321976 :       2.0 * _b * _poissons_ratio / _origin_vec.norm() * _node_vol[0] * _node_vol[1];
      77     1321976 :   _bond_nonlocal_dfdE[_qp] =
      78     1321976 :       2.0 * _a * _d[_qp] * _d[_qp] * _poissons_ratio * _node_vol[0] * _node_vol[1];
      79     1321976 : }

Generated by: LCOV version 1.14