https://mooseframework.inl.gov
CZMComputeGlobalTractionTotalLagrangian.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://mooseframework.inl.gov
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
11 #include "CohesiveZoneModelTools.h"
12 
14 
17 {
19 
20  params.addClassDescription("Compute the equilibrium traction (PK1) and its derivatives for the "
21  "Total Lagrangian formulation.");
22  return params;
23 }
24 
26  const InputParameters & parameters)
27  : CZMComputeGlobalTractionBase(parameters),
28  _displacement_jump_global(
29  getMaterialPropertyByName<RealVectorValue>(_base_name + "displacement_jump_global")),
30  _czm_reference_rotation(
31  getMaterialPropertyByName<RankTwoTensor>(_base_name + "czm_reference_rotation")),
32  _R(getMaterialPropertyByName<RankTwoTensor>(_base_name + "czm_rotation")),
33  _F(getMaterialPropertyByName<RankTwoTensor>(_base_name + "F_czm")),
34  _PK1traction(declarePropertyByName<RealVectorValue>(_base_name + "PK1traction")),
35  _dPK1traction_dF(declarePropertyByName<RankThreeTensor>(_base_name + "dPK1traction_dF"))
36 {
37 }
38 
39 void
41 {
42  _PK1traction[_qp] = 0;
43 }
44 
45 void
47 {
48  _J = _F[_qp].det();
49  _F_inv = _F[_qp].inverse();
50 
52 
55 
56  // compute derivatives of _PK1traction wrt dF
60 }
61 
62 void
64 {
65  // compute the PK1 traction derivatives w.r.t the displacment jump in global
66  // coordinates
69  _czm_total_rotation[_qp].transpose();
70 }
71 
72 void
74 {
76  usingTensorIndices(i_, j_, k_, l_, m_);
77  _dczm_total_rotation_dF = _czm_reference_rotation[_qp].times<m_, j_, i_, m_, k_, l_>(_dR_dF);
78 
80 
83 }
84 
85 void
87 {
88  // The derivative of the PK1 traction w.r.t. F
89  usingTensorIndices(i_, j_, k_, l_);
90  const RankThreeTensor djump_dF =
92 
95  _area_ratio *
97  (_czm_total_rotation[_qp] * _dinterface_traction_djump[_qp]).contraction(djump_dF));
98 }
GenericRankFourTensor< is_ad > computedRdF(const GenericRankTwoTensor< is_ad > &R, const GenericRankTwoTensor< is_ad > &U)
compute the derivative of the rotation matrix, R=FU^-1, using Chen and Wheeler 1993 ...
MaterialProperty< RankThreeTensor > & _dPK1traction_dF
the derivitve of the PK1 traction w.r.t. F
void computeEquilibriumTracionAndDerivatives() override
computes the PK1 traction and its derivatives
const MaterialProperty< RankTwoTensor > & _F
the interface deformation gradient
const MaterialProperty< RealVectorValue > & _displacement_jump_global
the displacement jump in global coordinates
GenericReal< is_ad > computeAreaRatio(const RankTwoTensor &FinvT, const Real &J, const RealVectorValue &N)
compute the area ratio betweeen the deformed and undeformed configuration, and its derivatives w...
registerMooseObject("SolidMechanicsApp", CZMComputeGlobalTractionTotalLagrangian)
GenericRankTwoTensor< is_ad > computeDAreaRatioDF(const GenericRankTwoTensor< is_ad > &FinvT, const GenericRealVectorValue< is_ad > &N, const GenericReal< is_ad > &J, const GenericRankFourTensor< is_ad > &DFinv_DF)
Moose::GenericType< RankFourTensor, is_ad > GenericRankFourTensor
const MaterialProperty< RealVectorValue > & _interface_traction
unsigned int _qp
Base class traction computing the traction used to impose equilibrium and its derivatives w...
void computeAreaRatioAndDerivatives()
computes the area ratio and increment rate derivatives
const MaterialProperty< RankTwoTensor > & _dinterface_traction_djump
RankFourTensor _dR_dF
the rotation derivatives w.r.t.
CZMComputeGlobalTractionTotalLagrangian(const InputParameters &parameters)
Real _area_ratio
the area ratio and its derivtive w.r.t.
MaterialProperty< RealVectorValue > & _traction_global
the value of the traction in global and interface coordinates
const MaterialProperty< RankTwoTensor > & _R
the rotation associated to F
RankFourTensor computedFinversedF(const RankTwoTensor &F_inv)
compute the derivative of F^-1 w.r.t. to F
RankTwoTensorTempl< Real > transpose() const
This class uses the interface traction and its derivatives w.r.t.
RankFourTensorTempl< T > transposeIj() const
void computedTPK1dJumpGlobal()
computes the PK1 traction derivatives w.r.t. the global displacement jump
RankTwoTensor _F_inv
the inverse of the deformation gradient
const MaterialProperty< RankTwoTensor > & _czm_reference_rotation
the rotation matrix transforming from local to global coordinates in the undeformed configuration ...
const MooseArray< Point > & _normals
RankThreeTensorTempl< Real > mixedProductJkI(const libMesh::VectorValue< Real > &b) const
RankThreeTensorTempl< T > contraction(const libMesh::VectorValue< T > &b) const
MaterialProperty< RankTwoTensor > & _dtraction_djump_global
the traction&#39;s derivatives w.r.t.
void addClassDescription(const std::string &doc_string)
const MaterialProperty< RankTwoTensor > & _czm_total_rotation
the rotation matrix trnasforming from interface to global coordinates
void computedTPK1dF()
computes the PK1 traction derivatives w.r.t. F
MaterialProperty< RealVectorValue > & _PK1traction
the PK1 traction