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

DG kernel implementing cohesive zone models (CZM) for a 1D/2D/3D traction separation laws based on the displacement jump. More...

#include <CZMInterfaceKernel.h>

Inheritance diagram for CZMInterfaceKernel:
[legend]

Public Member Functions

 CZMInterfaceKernel (const InputParameters &parameters)
 

Protected Member Functions

virtual Real computeQpResidual (Moose::DGResidualType type)
 
virtual Real computeQpJacobian (Moose::DGJacobianType type)
 
virtual Real computeQpOffDiagJacobian (Moose::DGJacobianType type, unsigned int jvar)
 

Protected Attributes

const unsigned int _component
 the displacement component this kernel is operating on (0=x, 1=y, 2 =z) More...
 
const unsigned int _ndisp
 number of displacement components More...
 
std::vector< unsigned int > _disp_var
 Coupled displacement component variable IDs. More...
 
std::vector< unsigned int > _disp_neighbor_var
 
const MaterialProperty< RealVectorValue > & _traction_global
 
const MaterialProperty< RankTwoTensor > & _traction_derivatives_global
 

Detailed Description

DG kernel implementing cohesive zone models (CZM) for a 1D/2D/3D traction separation laws based on the displacement jump.

This kernel operates only on a single displacement compenent. One kernel is required for each mesh dimension.

Definition at line 24 of file CZMInterfaceKernel.h.

Constructor & Destructor Documentation

◆ CZMInterfaceKernel()

CZMInterfaceKernel::CZMInterfaceKernel ( const InputParameters &  parameters)

Definition at line 34 of file CZMInterfaceKernel.C.

35  : InterfaceKernel(parameters),
36  _component(getParam<unsigned int>("component")),
37  _ndisp(coupledComponents("displacements")),
40  _traction_global(getMaterialPropertyByName<RealVectorValue>("traction_global")),
42  getMaterialPropertyByName<RankTwoTensor>("traction_derivatives_global"))
43 {
44  if (getParam<bool>("use_displaced_mesh") == true)
45  mooseError("CZMInterfaceKernel cannot be used with use_displaced_mesh = true");
46 
47  for (unsigned int i = 0; i < _ndisp; ++i)
48  {
49  _disp_var[i] = coupled("displacements", i);
50  _disp_neighbor_var[i] = coupled("displacements", i);
51  }
52 }

Member Function Documentation

◆ computeQpJacobian()

Real CZMInterfaceKernel::computeQpJacobian ( Moose::DGJacobianType  type)
protectedvirtual

Definition at line 74 of file CZMInterfaceKernel.C.

75 {
76  // retrieve the diagonal Jacobian coefficient dependning on the displacement
77  // component (_component) this kernel is working on
79 
80  switch (type)
81  {
82  case Moose::ElementElement: // Residual_sign -1 ddeltaU_ddisp sign -1;
83  jac *= _test[_i][_qp] * _phi[_j][_qp];
84  break;
85  case Moose::ElementNeighbor: // Residual_sign -1 ddeltaU_ddisp sign 1;
86  jac *= -_test[_i][_qp] * _phi_neighbor[_j][_qp];
87  break;
88  case Moose::NeighborElement: // Residual_sign 1 ddeltaU_ddisp sign -1;
89  jac *= -_test_neighbor[_i][_qp] * _phi[_j][_qp];
90  break;
91  case Moose::NeighborNeighbor: // Residual_sign 1 ddeltaU_ddisp sign 1;
92  jac *= _test_neighbor[_i][_qp] * _phi_neighbor[_j][_qp];
93  break;
94  }
95  return jac;
96 }

◆ computeQpOffDiagJacobian()

Real CZMInterfaceKernel::computeQpOffDiagJacobian ( Moose::DGJacobianType  type,
unsigned int  jvar 
)
protectedvirtual

Definition at line 99 of file CZMInterfaceKernel.C.

100 {
101 
102  // find the displacement component associated to jvar
103  unsigned int off_diag_component;
104  for (off_diag_component = 0; off_diag_component < _ndisp; off_diag_component++)
105  if (_disp_var[off_diag_component] == jvar)
106  break;
107 
108  mooseAssert(off_diag_component < _ndisp,
109  "CZMInterfaceKernel::computeQpOffDiagJacobian wrong offdiagonal variable");
110 
111  Real jac = _traction_derivatives_global[_qp](_component, off_diag_component);
112 
113  switch (type)
114  {
115  case Moose::ElementElement: // Residual_sign -1 ddeltaU_ddisp sign -1;
116  jac *= _test[_i][_qp] * _phi[_j][_qp];
117  break;
118  case Moose::ElementNeighbor: // Residual_sign -1 ddeltaU_ddisp sign 1;
119  jac *= -_test[_i][_qp] * _phi_neighbor[_j][_qp];
120  break;
121  case Moose::NeighborElement: // Residual_sign 1 ddeltaU_ddisp sign -1;
122  jac *= -_test_neighbor[_i][_qp] * _phi[_j][_qp];
123  break;
124  case Moose::NeighborNeighbor: // Residual_sign 1 ddeltaU_ddisp sign 1;
125  jac *= _test_neighbor[_i][_qp] * _phi_neighbor[_j][_qp];
126  break;
127  }
128  return jac;
129 }

◆ computeQpResidual()

Real CZMInterfaceKernel::computeQpResidual ( Moose::DGResidualType  type)
protectedvirtual

Definition at line 55 of file CZMInterfaceKernel.C.

56 {
57 
58  Real r = _traction_global[_qp](_component);
59 
60  switch (type)
61  {
62  // [test_slave-test_master]*T where T represents the traction.
63  case Moose::Element:
64  r *= -_test[_i][_qp];
65  break;
66  case Moose::Neighbor:
67  r *= _test_neighbor[_i][_qp];
68  break;
69  }
70  return r;
71 }

Member Data Documentation

◆ _component

const unsigned int CZMInterfaceKernel::_component
protected

the displacement component this kernel is operating on (0=x, 1=y, 2 =z)

Definition at line 35 of file CZMInterfaceKernel.h.

Referenced by computeQpJacobian(), computeQpOffDiagJacobian(), and computeQpResidual().

◆ _disp_neighbor_var

std::vector<unsigned int> CZMInterfaceKernel::_disp_neighbor_var
protected

Definition at line 43 of file CZMInterfaceKernel.h.

Referenced by CZMInterfaceKernel().

◆ _disp_var

std::vector<unsigned int> CZMInterfaceKernel::_disp_var
protected

Coupled displacement component variable IDs.

Definition at line 42 of file CZMInterfaceKernel.h.

Referenced by computeQpOffDiagJacobian(), and CZMInterfaceKernel().

◆ _ndisp

const unsigned int CZMInterfaceKernel::_ndisp
protected

number of displacement components

Definition at line 38 of file CZMInterfaceKernel.h.

Referenced by computeQpOffDiagJacobian(), and CZMInterfaceKernel().

◆ _traction_derivatives_global

const MaterialProperty<RankTwoTensor>& CZMInterfaceKernel::_traction_derivatives_global
protected

Definition at line 49 of file CZMInterfaceKernel.h.

Referenced by computeQpJacobian(), and computeQpOffDiagJacobian().

◆ _traction_global

const MaterialProperty<RealVectorValue>& CZMInterfaceKernel::_traction_global
protected

Definition at line 48 of file CZMInterfaceKernel.h.

Referenced by computeQpResidual().


The documentation for this class was generated from the following files:
CZMInterfaceKernel::_ndisp
const unsigned int _ndisp
number of displacement components
Definition: CZMInterfaceKernel.h:38
CZMInterfaceKernel::_disp_neighbor_var
std::vector< unsigned int > _disp_neighbor_var
Definition: CZMInterfaceKernel.h:43
CZMInterfaceKernel::_traction_global
const MaterialProperty< RealVectorValue > & _traction_global
Definition: CZMInterfaceKernel.h:48
CZMInterfaceKernel::_traction_derivatives_global
const MaterialProperty< RankTwoTensor > & _traction_derivatives_global
Definition: CZMInterfaceKernel.h:49
CZMInterfaceKernel::_component
const unsigned int _component
the displacement component this kernel is operating on (0=x, 1=y, 2 =z)
Definition: CZMInterfaceKernel.h:35
CZMInterfaceKernel::_disp_var
std::vector< unsigned int > _disp_var
Coupled displacement component variable IDs.
Definition: CZMInterfaceKernel.h:42