LCOV - code coverage report
Current view: top level - src/userobjects - GeneralizedPlaneStrainUserObjectNOSPD.C (source / functions) Hit Total Coverage
Test: idaholab/moose peridynamics: #31405 (292dce) with base fef103 Lines: 24 25 96.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 "GeneralizedPlaneStrainUserObjectNOSPD.h"
      11             : #include "RankTwoTensor.h"
      12             : #include "RankFourTensor.h"
      13             : #include "Function.h"
      14             : 
      15             : registerMooseObject("PeridynamicsApp", GeneralizedPlaneStrainUserObjectNOSPD);
      16             : 
      17             : InputParameters
      18          47 : GeneralizedPlaneStrainUserObjectNOSPD::validParams()
      19             : {
      20          47 :   InputParameters params = GeneralizedPlaneStrainUserObjectBasePD::validParams();
      21          47 :   params.addClassDescription("Class for calculating the scalar residual and diagonal Jacobian "
      22             :                              "entry of generalized plane strain in the H1NOSPD formulation");
      23             : 
      24          47 :   return params;
      25           0 : }
      26             : 
      27          26 : GeneralizedPlaneStrainUserObjectNOSPD::GeneralizedPlaneStrainUserObjectNOSPD(
      28          26 :     const InputParameters & parameters)
      29             :   : GeneralizedPlaneStrainUserObjectBasePD(parameters),
      30          52 :     _stress(getMaterialProperty<RankTwoTensor>("stress"))
      31             : {
      32          26 : }
      33             : 
      34             : void
      35       70462 : GeneralizedPlaneStrainUserObjectNOSPD::execute()
      36             : {
      37             :   // dof_id_type for node i and j
      38       70462 :   dof_id_type node_i = _current_elem->node_id(0);
      39             :   dof_id_type node_j = _current_elem->node_id(1);
      40             : 
      41             :   // coordinates for node i and j
      42       70462 :   Point coord_i = _pdmesh.getNodeCoord(node_i);
      43       70462 :   Point coord_j = _pdmesh.getNodeCoord(node_j);
      44             : 
      45             :   // nodal area for node i and j
      46       70462 :   Real nv_i = _pdmesh.getNodeVolume(node_i);
      47       70462 :   Real nv_j = _pdmesh.getNodeVolume(node_j);
      48             : 
      49             :   // sum of volumes of material points used in bond-associated deformation gradient calculation
      50       70462 :   dof_id_type id_j_in_i = _pdmesh.getNeighborIndex(node_i, node_j);
      51       70462 :   dof_id_type id_i_in_j = _pdmesh.getNeighborIndex(node_j, node_i);
      52             : 
      53       70462 :   Real dg_vol_frac_i = _pdmesh.getHorizonSubsetVolumeFraction(node_i, id_j_in_i);
      54       70462 :   Real dg_vol_frac_j = _pdmesh.getHorizonSubsetVolumeFraction(node_j, id_i_in_j);
      55             : 
      56       70462 :   Real bond_status = _bond_status_var->getElementalValue(_current_elem);
      57             : 
      58             :   // residual
      59       70462 :   _residual += (_stress[0](2, 2) - _pressure.value(_t, coord_i) * _factor) * nv_i * dg_vol_frac_i *
      60             :                bond_status;
      61       70462 :   _residual += (_stress[1](2, 2) - _pressure.value(_t, coord_j) * _factor) * nv_j * dg_vol_frac_j *
      62             :                bond_status;
      63             : 
      64             :   // diagonal jacobian
      65       70462 :   _jacobian += (_Cijkl[0](2, 2, 2, 2) * nv_i * dg_vol_frac_i +
      66       70462 :                 _Cijkl[1](2, 2, 2, 2) * nv_j * dg_vol_frac_j) *
      67             :                bond_status;
      68       70462 : }

Generated by: LCOV version 1.14