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

Kernel class for peridynamic heat conduction models. More...

#include <HeatConductionBPD.h>

Inheritance diagram for HeatConductionBPD:
[legend]

Public Member Functions

 HeatConductionBPD (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 computeLocalJacobian () override
 Function to compute local contribution to the diagonal Jacobian at the current nodes. More...
 
virtual void computeNonlocalResidual ()
 Function to compute nonlocal contribution to the residual 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...
 
const MaterialProperty< Real > & _bond_heat_flow
 Bond based material properties. More...
 
const MaterialProperty< Real > & _bond_dQdT
 
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 for peridynamic heat conduction models.

Definition at line 22 of file HeatConductionBPD.h.

Constructor & Destructor Documentation

◆ HeatConductionBPD()

HeatConductionBPD::HeatConductionBPD ( const InputParameters &  parameters)

Definition at line 25 of file HeatConductionBPD.C.

26  : PeridynamicsKernelBase(parameters),
27  _bond_heat_flow(getMaterialProperty<Real>("bond_heat_flow")),
28  _bond_dQdT(getMaterialProperty<Real>("bond_dQdT"))
29 {
30 }

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

void HeatConductionBPD::computeLocalJacobian ( )
overrideprotectedvirtual

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

Reimplemented from PeridynamicsKernelBase.

Definition at line 40 of file HeatConductionBPD.C.

41 {
42  for (_i = 0; _i < _test.size(); ++_i)
43  for (_j = 0; _j < _phi.size(); ++_j)
44  _local_ke(_i, _j) += -1 * (_i == _j ? 1 : -1) * _bond_dQdT[0] * _bond_status_ij;
45 }

◆ computeLocalResidual()

void HeatConductionBPD::computeLocalResidual ( )
overrideprotectedvirtual

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

Implements PeridynamicsKernelBase.

Definition at line 33 of file HeatConductionBPD.C.

34 {
35  _local_re(0) = -_bond_heat_flow[0] * _bond_status_ij;
36  _local_re(1) = -_local_re(0);
37 }

◆ 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_dQdT

const MaterialProperty<Real>& HeatConductionBPD::_bond_dQdT
protected

Definition at line 33 of file HeatConductionBPD.h.

Referenced by computeLocalJacobian().

◆ _bond_heat_flow

const MaterialProperty<Real>& HeatConductionBPD::_bond_heat_flow
protected

Bond based material properties.

Definition at line 32 of file HeatConductionBPD.h.

Referenced by computeLocalResidual().

◆ _bond_status_ij

Real PeridynamicsKernelBase::_bond_status_ij
protectedinherited

Bond status of current bond/edge2.

Definition at line 74 of file PeridynamicsKernelBase.h.

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

◆ _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 HeatSourceBPD::computeLocalResidual(), and PeridynamicsKernelBase::prepare().

◆ _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
HeatConductionBPD::_bond_dQdT
const MaterialProperty< Real > & _bond_dQdT
Definition: HeatConductionBPD.h:33
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
HeatConductionBPD::_bond_heat_flow
const MaterialProperty< Real > & _bond_heat_flow
Bond based material properties.
Definition: HeatConductionBPD.h:32
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
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