www.mooseframework.org
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
PeridynamicsKernelBase Class Referenceabstract

Base kernel class for peridynamic models. More...

#include <PeridynamicsKernelBase.h>

Inheritance diagram for PeridynamicsKernelBase:
[legend]

Public Member Functions

 PeridynamicsKernelBase (const InputParameters &parameters)
 
virtual void computeResidual () override
 
virtual void computeJacobian () override
 
virtual Real computeQpResidual () override
 

Protected Member Functions

virtual void computeLocalResidual ()=0
 Function to compute local contribution to the residual at the current nodes. More...
 
virtual void computeNonlocalResidual ()
 Function to compute nonlocal contribution to the residual at the current nodes. More...
 
virtual void computeLocalJacobian ()
 Function to compute local contribution to the diagonal Jacobian at the current nodes. More...
 
virtual void prepare ()
 Function to precalculate data which will be used in the derived classes. More...
 

Protected Attributes

MooseVariable * _bond_status_var
 Bond_status variable. More...
 
const bool _use_full_jacobian
 Option to use full jacobian including nonlocal constribution or not. More...
 
RealGradient _origin_vec_ij
 Vector for current bond under undefored configuration. More...
 
Real _bond_status_ij
 Bond status of current bond/edge2. More...
 
PeridynamicsMesh_pdmesh
 Parameters for peridynamic mesh information. More...
 
const unsigned int _dim
 
const unsigned int _nnodes
 
std::vector< Real > _vols_ij
 
std::vector< Real > _dg_vol_frac_ij
 
std::vector< Real > _horiz_rad
 

Detailed Description

Base kernel class for peridynamic models.

Definition at line 25 of file PeridynamicsKernelBase.h.

Constructor & Destructor Documentation

◆ PeridynamicsKernelBase()

PeridynamicsKernelBase::PeridynamicsKernelBase ( const InputParameters &  parameters)

Definition at line 29 of file PeridynamicsKernelBase.C.

30  : Kernel(parameters),
31  _bond_status_var(&_subproblem.getStandardVariable(_tid, "bond_status")),
32  _use_full_jacobian(getParam<bool>("full_jacobian")),
33  _pdmesh(dynamic_cast<PeridynamicsMesh &>(_mesh)),
35  _nnodes(2),
39 {
40 }

Member Function Documentation

◆ computeJacobian()

void PeridynamicsKernelBase::computeJacobian ( )
overridevirtual

Definition at line 87 of file PeridynamicsKernelBase.C.

88 {
89  prepare();
90 
91  DenseMatrix<Number> & ke = _assembly.jacobianBlock(_var.number(), _var.number());
92  _local_ke.resize(ke.m(), ke.n());
93  _local_ke.zero();
94 
96 
97  ke += _local_ke;
98 
99  if (_has_diag_save_in)
100  {
101  unsigned int rows = ke.m();
102  DenseVector<Number> diag(rows);
103  for (unsigned int i = 0; i < rows; ++i)
104  diag(i) = _local_ke(i, i);
105 
106  Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
107  for (unsigned int i = 0; i < _diag_save_in.size(); ++i)
108  _diag_save_in[i]->sys().solution().add_vector(diag, _diag_save_in[i]->dofIndices());
109  }
110 
111  _local_ke.zero();
112 
113  if (_use_full_jacobian)
114  computeNonlocalJacobian();
115 }

◆ computeLocalJacobian()

virtual void PeridynamicsKernelBase::computeLocalJacobian ( )
inlineprotectedvirtual

Function to compute local contribution to the diagonal Jacobian at the current nodes.

Reimplemented in HeatConductionBPD.

Definition at line 48 of file PeridynamicsKernelBase.h.

48 {};

Referenced by computeJacobian().

◆ computeLocalResidual()

virtual void PeridynamicsKernelBase::computeLocalResidual ( )
protectedpure virtual

Function to compute local contribution to the residual at the current nodes.

Implemented in HeatConductionBPD, and HeatSourceBPD.

Referenced by computeResidual().

◆ computeNonlocalResidual()

virtual void PeridynamicsKernelBase::computeNonlocalResidual ( )
inlineprotectedvirtual

Function to compute nonlocal contribution to the residual at the current nodes.

Definition at line 43 of file PeridynamicsKernelBase.h.

43 {};

Referenced by computeResidual().

◆ computeQpResidual()

virtual Real PeridynamicsKernelBase::computeQpResidual ( )
inlineoverridevirtual

Definition at line 32 of file PeridynamicsKernelBase.h.

32 { return 0.0; }

◆ computeResidual()

void PeridynamicsKernelBase::computeResidual ( )
overridevirtual

Definition at line 60 of file PeridynamicsKernelBase.C.

61 {
62  prepare();
63 
64  DenseVector<Number> & re = _assembly.residualBlock(_var.number());
65  mooseAssert(re.size() == _nnodes,
66  "PeridynamicsKernelBase is designed to only work with EDGE2 elements");
67  _local_re.resize(re.size());
68  _local_re.zero();
69 
71 
72  re += _local_re;
73 
74  if (_has_save_in)
75  {
76  Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
77  for (unsigned int i = 0; i < _save_in.size(); ++i)
78  _save_in[i]->sys().solution().add_vector(_local_re, _save_in[i]->dofIndices());
79  }
80 
81  _local_re.zero();
82 
84 }

◆ prepare()

void PeridynamicsKernelBase::prepare ( )
protectedvirtual

Function to precalculate data which will be used in the derived classes.

Definition at line 43 of file PeridynamicsKernelBase.C.

44 {
45  for (unsigned int nd = 0; nd < _nnodes; ++nd)
46  {
47  _vols_ij[nd] = _pdmesh.getPDNodeVolume(_current_elem->node_id(nd));
48  dof_id_type id_ji_in_ij =
49  _pdmesh.getNeighborIndex(_current_elem->node_id(nd), _current_elem->node_id(1 - nd));
50  _dg_vol_frac_ij[nd] = _pdmesh.getDefGradVolFraction(_current_elem->node_id(nd), id_ji_in_ij);
51  _horiz_rad[nd] = _pdmesh.getHorizon(_current_elem->node_id(nd));
52  }
53 
54  _origin_vec_ij = _pdmesh.getPDNodeCoord(_current_elem->node_id(1)) -
55  _pdmesh.getPDNodeCoord(_current_elem->node_id(0));
56  _bond_status_ij = _bond_status_var->getElementalValue(_current_elem);
57 }

Referenced by computeJacobian(), computeResidual(), and MechanicsBasePD::prepare().

Member Data Documentation

◆ _bond_status_ij

Real PeridynamicsKernelBase::_bond_status_ij
protected

Bond status of current bond/edge2.

Definition at line 74 of file PeridynamicsKernelBase.h.

Referenced by HeatConductionBPD::computeLocalJacobian(), HeatConductionBPD::computeLocalResidual(), and prepare().

◆ _bond_status_var

MooseVariable* PeridynamicsKernelBase::_bond_status_var
protected

Bond_status variable.

Definition at line 56 of file PeridynamicsKernelBase.h.

Referenced by prepare().

◆ _dg_vol_frac_ij

std::vector<Real> PeridynamicsKernelBase::_dg_vol_frac_ij
protected

Definition at line 66 of file PeridynamicsKernelBase.h.

Referenced by prepare().

◆ _dim

const unsigned int PeridynamicsKernelBase::_dim
protected

Definition at line 63 of file PeridynamicsKernelBase.h.

◆ _horiz_rad

std::vector<Real> PeridynamicsKernelBase::_horiz_rad
protected

Definition at line 67 of file PeridynamicsKernelBase.h.

Referenced by prepare().

◆ _nnodes

const unsigned int PeridynamicsKernelBase::_nnodes
protected

◆ _origin_vec_ij

RealGradient PeridynamicsKernelBase::_origin_vec_ij
protected

Vector for current bond under undefored configuration.

Definition at line 71 of file PeridynamicsKernelBase.h.

Referenced by prepare().

◆ _pdmesh

PeridynamicsMesh& PeridynamicsKernelBase::_pdmesh
protected

Parameters for peridynamic mesh information.

Definition at line 62 of file PeridynamicsKernelBase.h.

Referenced by HeatSourceBPD::computeLocalResidual(), and prepare().

◆ _use_full_jacobian

const bool PeridynamicsKernelBase::_use_full_jacobian
protected

Option to use full jacobian including nonlocal constribution or not.

Definition at line 59 of file PeridynamicsKernelBase.h.

Referenced by computeJacobian().

◆ _vols_ij

std::vector<Real> PeridynamicsKernelBase::_vols_ij
protected

Definition at line 65 of file PeridynamicsKernelBase.h.

Referenced by HeatSourceBPD::computeLocalResidual(), and prepare().


The documentation for this class was generated from the following files:
PeridynamicsMesh::getPDNodeVolume
Real getPDNodeVolume(dof_id_type node_id)
Function to return nodal volume for node node_id.
Definition: PeridynamicsMesh.C:435
PeridynamicsKernelBase::_bond_status_ij
Real _bond_status_ij
Bond status of current bond/edge2.
Definition: PeridynamicsKernelBase.h:74
PeridynamicsMesh::dimension
virtual unsigned int dimension() const override
Definition: PeridynamicsMesh.C:120
PeridynamicsKernelBase::computeLocalJacobian
virtual void computeLocalJacobian()
Function to compute local contribution to the diagonal Jacobian at the current nodes.
Definition: PeridynamicsKernelBase.h:48
PeridynamicsKernelBase::_bond_status_var
MooseVariable * _bond_status_var
Bond_status variable.
Definition: PeridynamicsKernelBase.h:56
PeridynamicsKernelBase::_nnodes
const unsigned int _nnodes
Definition: PeridynamicsKernelBase.h:64
PeridynamicsKernelBase::_dg_vol_frac_ij
std::vector< Real > _dg_vol_frac_ij
Definition: PeridynamicsKernelBase.h:66
PeridynamicsKernelBase::_horiz_rad
std::vector< Real > _horiz_rad
Definition: PeridynamicsKernelBase.h:67
PeridynamicsKernelBase::prepare
virtual void prepare()
Function to precalculate data which will be used in the derived classes.
Definition: PeridynamicsKernelBase.C:43
PeridynamicsMesh::getPDNodeCoord
Point getPDNodeCoord(dof_id_type node_id)
Function to return coordinates for node node_id.
Definition: PeridynamicsMesh.C:420
PeridynamicsKernelBase::_use_full_jacobian
const bool _use_full_jacobian
Option to use full jacobian including nonlocal constribution or not.
Definition: PeridynamicsKernelBase.h:59
PeridynamicsKernelBase::_pdmesh
PeridynamicsMesh & _pdmesh
Parameters for peridynamic mesh information.
Definition: PeridynamicsKernelBase.h:62
PeridynamicsMesh::getHorizon
Real getHorizon(dof_id_type node_id)
Function to return horizon size.
Definition: PeridynamicsMesh.C:471
PeridynamicsMesh::getNeighborIndex
dof_id_type getNeighborIndex(dof_id_type node_i, dof_id_type node_j)
Function to return the local neighbor index of node_j from node_i's neighbor list.
Definition: PeridynamicsMesh.C:368
PeridynamicsKernelBase::_dim
const unsigned int _dim
Definition: PeridynamicsKernelBase.h:63
PeridynamicsKernelBase::computeNonlocalResidual
virtual void computeNonlocalResidual()
Function to compute nonlocal contribution to the residual at the current nodes.
Definition: PeridynamicsKernelBase.h:43
PeridynamicsKernelBase::_origin_vec_ij
RealGradient _origin_vec_ij
Vector for current bond under undefored configuration.
Definition: PeridynamicsKernelBase.h:71
PeridynamicsMesh::getDefGradVolFraction
Real getDefGradVolFraction(dof_id_type node_id, dof_id_type neighbor_id)
Function to return summation of volumes of bond-associated neighbors used in the deformation gradient...
Definition: PeridynamicsMesh.C:453
PeridynamicsKernelBase::computeLocalResidual
virtual void computeLocalResidual()=0
Function to compute local contribution to the residual at the current nodes.
PeridynamicsKernelBase::_vols_ij
std::vector< Real > _vols_ij
Definition: PeridynamicsKernelBase.h:65