LCOV - code coverage report
Current view: top level - src/materials - ComputeSmallStrainMaterialBaseOSPD.C (source / functions) Hit Total Coverage
Test: idaholab/moose peridynamics: #31405 (292dce) with base fef103 Lines: 49 50 98.0 %
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 "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     1324304 : ComputeSmallStrainMaterialBaseOSPD::computeBondForce()
      34             : {
      35     1324304 :   if (_scalar_out_of_plane_strain_coupled)
      36             :   {
      37      806712 :     _bond_local_force[_qp] =
      38      806712 :         2.0 * _b *
      39      806712 :         (_mechanical_stretch[_qp] +
      40      806712 :          _poissons_ratio * (_scalar_out_of_plane_strain[0] -
      41      806712 :                             _alpha * (0.5 * (_temp[0] + _temp[1]) - _temp_ref))) /
      42      806712 :         _origin_vec.norm() * _node_vol[0] * _node_vol[1];
      43     1613424 :     _bond_local_dfdT[_qp] = -2.0 * _b * (1.0 + _poissons_ratio) * 0.5 * _alpha /
      44      806712 :                             _origin_vec.norm() * _node_vol[0] * _node_vol[1];
      45             : 
      46      806712 :     _bond_nonlocal_force[_qp] =
      47      806712 :         2.0 * _a * _d[_qp] * _d[_qp] *
      48      806712 :         (_mechanical_stretch[_qp] + _alpha * (0.5 * (_temp[0] + _temp[1]) - _temp_ref) -
      49      806712 :          _alpha * (_temp[_qp] - _temp_ref) +
      50      806712 :          _poissons_ratio * (_scalar_out_of_plane_strain[0] - _alpha * (_temp[_qp] - _temp_ref))) *
      51      806712 :         _node_vol[0] * _node_vol[1];
      52      806712 :     _bond_nonlocal_dfdT[_qp] = -2.0 * _a * _d[_qp] * _d[_qp] * (1.0 + _poissons_ratio) * _alpha *
      53      806712 :                                _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     1324304 :   _bond_local_dfdU[_qp] =
      71     1324304 :       2.0 * _b / _origin_vec.norm() / _origin_vec.norm() * _node_vol[0] * _node_vol[1];
      72     1324304 :   _bond_nonlocal_dfdU[_qp] =
      73     1324304 :       2.0 * _a * _d[_qp] * _d[_qp] / _origin_vec.norm() * _node_vol[0] * _node_vol[1];
      74             : 
      75     1324304 :   _bond_local_dfdE[_qp] =
      76     1324304 :       2.0 * _b * _poissons_ratio / _origin_vec.norm() * _node_vol[0] * _node_vol[1];
      77     1324304 :   _bond_nonlocal_dfdE[_qp] =
      78     1324304 :       2.0 * _a * _d[_qp] * _d[_qp] * _poissons_ratio * _node_vol[0] * _node_vol[1];
      79     1324304 : }

Generated by: LCOV version 1.14