www.mooseframework.org
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
HeatSourceBPD Class Reference

Kernel class to implement hear source term for peridynamic heat conduction models. More...

#include <HeatSourceBPD.h>

Inheritance diagram for HeatSourceBPD:
[legend]

Public Member Functions

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

Protected Member Functions

virtual void computeLocalResidual () override
 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

const Function & _power_density
 Power density function. More...
 
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

Kernel class to implement hear source term for peridynamic heat conduction models.

Definition at line 22 of file HeatSourceBPD.h.

Constructor & Destructor Documentation

◆ HeatSourceBPD()

HeatSourceBPD::HeatSourceBPD ( const InputParameters &  parameters)

Definition at line 29 of file HeatSourceBPD.C.

30  : PeridynamicsKernelBase(parameters), _power_density(getFunction("power_density"))
31 {
32 }

Member Function Documentation

◆ computeJacobian()

void PeridynamicsKernelBase::computeJacobian ( )
overridevirtualinherited

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 ( )
inlineprotectedvirtualinherited

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 PeridynamicsKernelBase::computeJacobian().

◆ computeLocalResidual()

void HeatSourceBPD::computeLocalResidual ( )
overrideprotectedvirtual

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

Implements PeridynamicsKernelBase.

Definition at line 35 of file HeatSourceBPD.C.

36 {
37  Point p;
38  for (unsigned int i = 0; i < _nnodes; ++i)
39  {
40  std::vector<dof_id_type> neighbors = _pdmesh.getNeighbors(_current_elem->node_id(i));
41  _local_re(i) = -_power_density.value(_t, p) * _vols_ij[i] / neighbors.size();
42  }
43 }

◆ computeNonlocalResidual()

virtual void PeridynamicsKernelBase::computeNonlocalResidual ( )
inlineprotectedvirtualinherited

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

Definition at line 43 of file PeridynamicsKernelBase.h.

43 {};

Referenced by PeridynamicsKernelBase::computeResidual().

◆ computeQpResidual()

virtual Real PeridynamicsKernelBase::computeQpResidual ( )
inlineoverridevirtualinherited

Definition at line 32 of file PeridynamicsKernelBase.h.

32 { return 0.0; }

◆ computeResidual()

void PeridynamicsKernelBase::computeResidual ( )
overridevirtualinherited

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 ( )
protectedvirtualinherited

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 PeridynamicsKernelBase::computeJacobian(), PeridynamicsKernelBase::computeResidual(), and MechanicsBasePD::prepare().

Member Data Documentation

◆ _bond_status_ij

Real PeridynamicsKernelBase::_bond_status_ij
protectedinherited

◆ _bond_status_var

MooseVariable* PeridynamicsKernelBase::_bond_status_var
protectedinherited

Bond_status variable.

Definition at line 56 of file PeridynamicsKernelBase.h.

Referenced by PeridynamicsKernelBase::prepare().

◆ _dg_vol_frac_ij

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

Definition at line 66 of file PeridynamicsKernelBase.h.

Referenced by PeridynamicsKernelBase::prepare().

◆ _dim

const unsigned int PeridynamicsKernelBase::_dim
protectedinherited

Definition at line 63 of file PeridynamicsKernelBase.h.

◆ _horiz_rad

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

Definition at line 67 of file PeridynamicsKernelBase.h.

Referenced by PeridynamicsKernelBase::prepare().

◆ _nnodes

const unsigned int PeridynamicsKernelBase::_nnodes
protectedinherited

◆ _origin_vec_ij

RealGradient PeridynamicsKernelBase::_origin_vec_ij
protectedinherited

Vector for current bond under undefored configuration.

Definition at line 71 of file PeridynamicsKernelBase.h.

Referenced by PeridynamicsKernelBase::prepare().

◆ _pdmesh

PeridynamicsMesh& PeridynamicsKernelBase::_pdmesh
protectedinherited

Parameters for peridynamic mesh information.

Definition at line 62 of file PeridynamicsKernelBase.h.

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

◆ _power_density

const Function& HeatSourceBPD::_power_density
protected

Power density function.

Definition at line 31 of file HeatSourceBPD.h.

Referenced by computeLocalResidual().

◆ _use_full_jacobian

const bool PeridynamicsKernelBase::_use_full_jacobian
protectedinherited

Option to use full jacobian including nonlocal constribution or not.

Definition at line 59 of file PeridynamicsKernelBase.h.

Referenced by PeridynamicsKernelBase::computeJacobian().

◆ _vols_ij

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

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
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::getNeighbors
std::vector< dof_id_type > getNeighbors(dof_id_type node_id)
Function to return neighbor nodes indices for node node_id.
Definition: PeridynamicsMesh.C:362
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::PeridynamicsKernelBase
PeridynamicsKernelBase(const InputParameters &parameters)
Definition: PeridynamicsKernelBase.C:29
PeridynamicsKernelBase::computeNonlocalResidual
virtual void computeNonlocalResidual()
Function to compute nonlocal contribution to the residual at the current nodes.
Definition: PeridynamicsKernelBase.h:43
HeatSourceBPD::_power_density
const Function & _power_density
Power density function.
Definition: HeatSourceBPD.h:31
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