https://mooseframework.inl.gov
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
CZMInterfaceKernelTotalLagrangian Class Reference

DG cohesive zone model kernel for the Total Lagrangian formulation. More...

#include <CZMInterfaceKernelTotalLagrangian.h>

Inheritance diagram for CZMInterfaceKernelTotalLagrangian:
[legend]

Public Types

typedef std::vector< intJvarMap
 

Public Member Functions

 CZMInterfaceKernelTotalLagrangian (const InputParameters &parameters)
 
virtual void computeOffDiagJacobian (unsigned int jvar) override
 
unsigned int mapJvarToCvar (unsigned int jvar)
 
int mapJvarToCvar (unsigned int jvar, const JvarMap &jvar_map)
 
bool mapJvarToCvar (unsigned int jvar, unsigned int &cvar)
 
const JvarMapgetJvarMap ()
 
const JvarMapgetParameterJvarMap (std::string parameter_name)
 

Static Public Member Functions

static InputParameters validParams ()
 

Protected Member Functions

Real computeDResidualDDisplacement (const unsigned int &component_j, const Moose::DGJacobianType &type) const override
 method computing the derivative of residual[_component] w.r.t displacement[component_j] More...
 
Real JacLD (const unsigned int cc, const bool neighbor) const
 method computing the jacobian contribution due to rotations and area changes More...
 
Real computeQpResidual (Moose::DGResidualType type) override
 
Real computeQpJacobian (Moose::DGJacobianType type) override
 
Real computeQpOffDiagJacobian (Moose::DGJacobianType type, unsigned int jvar) override
 

Protected Attributes

const MaterialProperty< RankThreeTensor > & _dPK1traction_dF
 
const std::string _base_name
 Base name of the material system that this kernel applies to. More...
 
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< MooseVariable * > _vars
 
const unsigned int _n_args
 
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 > & _dtraction_djump_global
 

Detailed Description

DG cohesive zone model kernel for the Total Lagrangian formulation.

This kernel assummes the traction sepration law only depends from the displacement jump. One kernel is required for each displacement component

Definition at line 17 of file CZMInterfaceKernelTotalLagrangian.h.

Constructor & Destructor Documentation

◆ CZMInterfaceKernelTotalLagrangian()

CZMInterfaceKernelTotalLagrangian::CZMInterfaceKernelTotalLagrangian ( const InputParameters parameters)

Definition at line 24 of file CZMInterfaceKernelTotalLagrangian.C.

26  : CZMInterfaceKernelBase(parameters),
27  _dPK1traction_dF(getMaterialPropertyByName<RankThreeTensor>(_base_name + "dPK1traction_dF"))
28 {
29 }
const MaterialProperty< RankThreeTensor > & _dPK1traction_dF
const std::string _base_name
Base name of the material system that this kernel applies to.
CZMInterfaceKernelBase(const InputParameters &parameters)

Member Function Documentation

◆ computeDResidualDDisplacement()

Real CZMInterfaceKernelTotalLagrangian::computeDResidualDDisplacement ( const unsigned int component_j,
const Moose::DGJacobianType type 
) const
overrideprotectedvirtual

method computing the derivative of residual[_component] w.r.t displacement[component_j]

Implements CZMInterfaceKernelBase.

Definition at line 32 of file CZMInterfaceKernelTotalLagrangian.C.

34 {
35  Real jacsd = _dtraction_djump_global[_qp](_component, component_j);
36  Real jac = 0;
37 
38  switch (type)
39  {
40  case Moose::ElementElement: // Residual_sign -1 ddeltaU_ddisp sign -1;
41  jac += _test[_i][_qp] * jacsd * _vars[component_j]->phiFace()[_j][_qp];
42  jac -= _test[_i][_qp] * JacLD(component_j, /*neighbor=*/false);
43  break;
44  case Moose::ElementNeighbor: // Residual_sign -1 ddeltaU_ddisp sign 1;
45  jac -= _test[_i][_qp] * jacsd * _vars[component_j]->phiFaceNeighbor()[_j][_qp];
46  jac -= _test[_i][_qp] * JacLD(component_j, /*neighbor=*/true);
47  break;
48  case Moose::NeighborElement: // Residual_sign 1 ddeltaU_ddisp sign -1;
49  jac -= _test_neighbor[_i][_qp] * jacsd * _vars[component_j]->phiFace()[_j][_qp];
50  jac += _test_neighbor[_i][_qp] * JacLD(component_j, /*neighbor=*/false);
51  break;
52  case Moose::NeighborNeighbor: // Residual_sign 1 ddeltaU_ddisp sign 1;
53  jac += _test_neighbor[_i][_qp] * jacsd * _vars[component_j]->phiFaceNeighbor()[_j][_qp];
54  jac += _test_neighbor[_i][_qp] * JacLD(component_j, /*neighbor=*/true);
55  break;
56  }
57 
58  return jac;
59 }
NeighborElement
ElementElement
const unsigned int _component
the displacement component this kernel is operating on (0=x, 1=y, 2 =z)
std::vector< MooseVariable * > _vars
ElementNeighbor
Real JacLD(const unsigned int cc, const bool neighbor) const
method computing the jacobian contribution due to rotations and area changes
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const MaterialProperty< RankTwoTensor > & _dtraction_djump_global
NeighborNeighbor

◆ computeQpJacobian()

Real CZMInterfaceKernelBase::computeQpJacobian ( Moose::DGJacobianType  type)
overrideprotectedinherited

Definition at line 79 of file CZMInterfaceKernelBase.C.

80 {
81  // retrieve the diagonal Jacobian coefficient dependning on the displacement
82  // component (_component) this kernel is working on
84 }
const unsigned int _component
the displacement component this kernel is operating on (0=x, 1=y, 2 =z)
virtual Real computeDResidualDDisplacement(const unsigned int &component_j, const Moose::DGJacobianType &type) const =0
method computing the derivative of residual[_component] w.r.t displacement[component_j] ...

◆ computeQpOffDiagJacobian()

Real CZMInterfaceKernelBase::computeQpOffDiagJacobian ( Moose::DGJacobianType  type,
unsigned int  jvar 
)
overrideprotectedinherited

Definition at line 87 of file CZMInterfaceKernelBase.C.

88 {
89  // bail out if jvar is not coupled
90  if (getJvarMap()[jvar] < 0)
91  return 0.0;
92 
93  // Jacobian of the residul[_component] w.r.t to the coupled displacement
94  // component[off_diag_component]
95  for (unsigned int off_diag_component = 0; off_diag_component < _ndisp; ++off_diag_component)
96  {
97  if (jvar == _disp_var[off_diag_component])
98  return computeDResidualDDisplacement(off_diag_component, type);
99  }
100  // this is the place where one should implement derivatives of the residual w.r.t. other variables
101  return 0.0;
102 }
std::vector< unsigned int > _disp_var
Coupled displacement component variable IDs.
const unsigned int _ndisp
number of displacement components
virtual Real computeDResidualDDisplacement(const unsigned int &component_j, const Moose::DGJacobianType &type) const =0
method computing the derivative of residual[_component] w.r.t displacement[component_j] ...

◆ computeQpResidual()

Real CZMInterfaceKernelBase::computeQpResidual ( Moose::DGResidualType  type)
overrideprotectedinherited

Definition at line 61 of file CZMInterfaceKernelBase.C.

62 {
64 
65  switch (type)
66  {
67  // [test_secondary-test_primary]*T where T represents the traction.
68  case Moose::Element:
69  r *= -_test[_i][_qp];
70  break;
71  case Moose::Neighbor:
72  r *= _test_neighbor[_i][_qp];
73  break;
74  }
75  return r;
76 }
const unsigned int _component
the displacement component this kernel is operating on (0=x, 1=y, 2 =z)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const MaterialProperty< RealVectorValue > & _traction_global

◆ JacLD()

Real CZMInterfaceKernelTotalLagrangian::JacLD ( const unsigned int  cc,
const bool  neighbor 
) const
protected

method computing the jacobian contribution due to rotations and area changes

Definition at line 62 of file CZMInterfaceKernelTotalLagrangian.C.

Referenced by computeDResidualDDisplacement().

63 {
64  Real jacld = 0;
65  RealVectorValue phi;
66  if (neighbor)
67  phi = 0.5 * _vars[cc]->gradPhiFaceNeighbor()[_j][_qp];
68  else
69  phi = 0.5 * _vars[cc]->gradPhiFace()[_j][_qp];
70 
71  for (unsigned int j = 0; j < 3; j++)
72  jacld += _dPK1traction_dF[_qp](_component, cc, j) * phi(j);
73 
74  mooseAssert(std::isfinite(jacld), "CZMInterfaceKernelTotalLagrangian JacLD is not finite");
75  return jacld;
76 }
const unsigned int _component
the displacement component this kernel is operating on (0=x, 1=y, 2 =z)
std::vector< MooseVariable * > _vars
const MaterialProperty< RankThreeTensor > & _dPK1traction_dF
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
static const std::complex< double > j(0, 1)
Complex number "j" (also known as "i")

◆ validParams()

InputParameters CZMInterfaceKernelTotalLagrangian::validParams ( )
static

Definition at line 15 of file CZMInterfaceKernelTotalLagrangian.C.

16 {
18  params.addClassDescription("Calculate residual contribution for balancing the traction across an "
19  "interface (used in the cohesive zone method).");
20  params.set<std::string>("traction_global_name") = "PK1traction";
21  return params;
22 }
T & set(const std::string &name, bool quiet_mode=false)
static InputParameters validParams()
void addClassDescription(const std::string &doc_string)

Member Data Documentation

◆ _base_name

const std::string CZMInterfaceKernelBase::_base_name
protectedinherited

Base name of the material system that this kernel applies to.

Definition at line 35 of file CZMInterfaceKernelBase.h.

◆ _component

const unsigned int CZMInterfaceKernelBase::_component
protectedinherited

◆ _disp_neighbor_var

std::vector<unsigned int> CZMInterfaceKernelBase::_disp_neighbor_var
protectedinherited

◆ _disp_var

std::vector<unsigned int> CZMInterfaceKernelBase::_disp_var
protectedinherited

Coupled displacement component variable IDs.

Definition at line 45 of file CZMInterfaceKernelBase.h.

Referenced by CZMInterfaceKernelBase::computeQpOffDiagJacobian(), and CZMInterfaceKernelBase::CZMInterfaceKernelBase().

◆ _dPK1traction_dF

const MaterialProperty<RankThreeTensor>& CZMInterfaceKernelTotalLagrangian::_dPK1traction_dF
protected

Definition at line 32 of file CZMInterfaceKernelTotalLagrangian.h.

Referenced by JacLD().

◆ _dtraction_djump_global

const MaterialProperty<RankTwoTensor>& CZMInterfaceKernelBase::_dtraction_djump_global
protectedinherited

◆ _ndisp

const unsigned int CZMInterfaceKernelBase::_ndisp
protectedinherited

number of displacement components

Definition at line 41 of file CZMInterfaceKernelBase.h.

Referenced by CZMInterfaceKernelBase::computeQpOffDiagJacobian(), and CZMInterfaceKernelBase::CZMInterfaceKernelBase().

◆ _traction_global

const MaterialProperty<RealVectorValue>& CZMInterfaceKernelBase::_traction_global
protectedinherited

Definition at line 54 of file CZMInterfaceKernelBase.h.

Referenced by CZMInterfaceKernelBase::computeQpResidual().

◆ _vars

std::vector<MooseVariable *> CZMInterfaceKernelBase::_vars
protectedinherited

The documentation for this class was generated from the following files: