https://mooseframework.inl.gov
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Private 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]
 
Real JacLD (const unsigned int cc, const bool neighbor) const
 method computing the jacobian contribution due to rotations and area changes
 
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.
 
const unsigned int _component
 the displacement component this kernel is operating on (0=x, 1=y, 2 =z)
 
const unsigned int _ndisp
 number of displacement components
 
std::vector< MooseVariable * > _vars
 
const unsigned int _n_args
 
std::vector< unsigned int_disp_var
 Coupled displacement component variable IDs.
 
std::vector< unsigned int_disp_neighbor_var
 
const MaterialProperty< RealVectorValue > & _traction_global
 
const MaterialProperty< RankTwoTensor > & _dtraction_djump_global
 

Private Attributes

const std::size_t _jvar_max_size
 
JvarMap _jvar_map
 
std::map< std::string, JvarMap_jvar_local_map
 

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}
Base class for implementing DG cohesive zone models (CZM) for 1D,2D, and 3D traction separation laws.
const std::string _base_name
Base name of the material system that this kernel applies to.
const MaterialProperty< RankThreeTensor > & _dPK1traction_dF

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}
std::vector< MooseVariable * > _vars
const unsigned int _component
the displacement component this kernel is operating on (0=x, 1=y, 2 =z)
const MaterialProperty< RankTwoTensor > & _dtraction_djump_global
Real JacLD(const unsigned int cc, const bool neighbor) const
method computing the jacobian contribution due to rotations and area changes
NeighborNeighbor
ElementElement
NeighborElement
ElementNeighbor
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real

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

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

63{
64 Real jacld = 0;
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}
VectorValue< Real > RealVectorValue

Referenced by computeDResidualDDisplacement().

◆ 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}
static InputParameters validParams()
void addClassDescription(const std::string &doc_string)
T & set(const std::string &name, bool quiet_mode=false)

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: