https://mooseframework.inl.gov
Functions
CohesiveZoneModelTools Namespace Reference

Functions

template<bool is_ad = false>
GenericRealVectorValue< is_ad > computedVnormdV (const GenericRealVectorValue< is_ad > &V)
 
template<bool is_ad = false>
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 More...
 
RankFourTensor computedFinversedF (const RankTwoTensor &F_inv)
 compute the derivative of F^-1 w.r.t. to F More...
 
template<bool is_ad = false>
GenericRealVectorValue< is_ad > computeNormalComponents (const GenericRealVectorValue< is_ad > &normal, const GenericRealVectorValue< is_ad > &vector)
 compute the normal componets of a vector More...
 
template<bool is_ad = false>
GenericRealVectorValue< is_ad > computeTangentComponents (const GenericRealVectorValue< is_ad > &normal, const GenericRealVectorValue< is_ad > &vector)
 compute the tangent componets of a vector More...
 
template<bool is_ad = false>
GenericRankTwoTensor< is_ad > computeReferenceRotation (const GenericRealVectorValue< is_ad > &normal, const unsigned int mesh_dimension)
 compute the czm reference rotation based on the normal in the undeformed configuration and the mesh dimension More...
 
template<bool is_ad = false>
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.r.t. More...
 
template<bool is_ad = false>
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)
 

Function Documentation

◆ computeAreaRatio()

template<bool is_ad = false>
GenericReal<is_ad> CohesiveZoneModelTools::computeAreaRatio ( const RankTwoTensor FinvT,
const Real J,
const RealVectorValue N 
)

compute the area ratio betweeen the deformed and undeformed configuration, and its derivatives w.r.t.

the deformation gradient, F

Definition at line 61 of file CohesiveZoneModelTools.h.

Referenced by CZMComputeGlobalTractionTotalLagrangian::computeEquilibriumTracionAndDerivatives().

62 {
63  return J * (FinvT * N).norm();
64 }
auto norm(const T &a) -> decltype(std::abs(a))
int N

◆ computeDAreaRatioDF()

template<bool is_ad = false>
GenericRankTwoTensor<is_ad> CohesiveZoneModelTools::computeDAreaRatioDF ( const GenericRankTwoTensor< is_ad > &  FinvT,
const GenericRealVectorValue< is_ad > &  N,
const GenericReal< is_ad > &  J,
const GenericRankFourTensor< is_ad > &  DFinv_DF 
)

Definition at line 68 of file CohesiveZoneModelTools.h.

Referenced by CZMComputeGlobalTractionTotalLagrangian::computeAreaRatioAndDerivatives().

72 {
73  const auto Fitr_N = FinvT * N;
74  const auto Fitr_N_norm = Fitr_N.norm();
76  for (unsigned int l = 0; l < 3; l++)
77  for (unsigned int m = 0; m < 3; m++)
78  {
79  R2temp(l, m) = 0;
80  for (unsigned int i = 0; i < 3; i++)
81  for (unsigned int j = 0; j < 3; j++)
82  R2temp(l, m) += Fitr_N(i) * DFinv_DF(j, i, l, m) * N(j);
83 
84  R2temp(l, m) *= J / Fitr_N_norm;
85  }
86 
87  return J * FinvT * Fitr_N_norm + R2temp;
88 }
int N
static const std::complex< double > j(0, 1)
Complex number "j" (also known as "i")
Moose::GenericType< RankTwoTensor, is_ad > GenericRankTwoTensor

◆ computedFinversedF()

RankFourTensor CohesiveZoneModelTools::computedFinversedF ( const RankTwoTensor F_inv)

compute the derivative of F^-1 w.r.t. to F

Definition at line 16 of file CohesiveZoneModelTools.C.

Referenced by CZMComputeGlobalTractionTotalLagrangian::computeAreaRatioAndDerivatives().

17 {
18  usingTensorIndices(i_, j_, k_, l_);
19  return -F_inv.times<i_, k_, j_, l_>(F_inv.transpose());
20 }
RankTwoTensorTempl< Real > transpose() const
RankFourTensorTempl< Real > times(const RankTwoTensorTempl< Real > &b) const

◆ computedRdF()

template<bool is_ad = false>
GenericRankFourTensor<is_ad> CohesiveZoneModelTools::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

Definition at line 30 of file CohesiveZoneModelTools.h.

Referenced by CZMComputeGlobalTractionTotalLagrangian::computeAreaRatioAndDerivatives().

31 {
32  const auto Uhat = U.trace() * RankTwoTensor::Identity() - U;
33  unsigned int k, l, m, n, p, q;
34  const auto Uhat_det = Uhat.det();
35 
37  for (k = 0; k < 3; k++)
38  for (l = 0; l < 3; l++)
39  for (m = 0; m < 3; m++)
40  for (n = 0; n < 3; n++)
41  {
42  dR_dF(k, l, m, n) = 0.;
43  for (p = 0; p < 3; p++)
44  for (q = 0; q < 3; q++)
45  dR_dF(k, l, m, n) +=
46  R(k, p) * (Uhat(p, q) * R(m, q) * Uhat(n, l) - Uhat(p, n) * R(m, q) * Uhat(q, l));
47 
48  dR_dF(k, l, m, n) /= Uhat_det;
49  }
50 
51  return dR_dF;
52 }
Moose::GenericType< RankFourTensor, is_ad > GenericRankFourTensor
static RankTwoTensorTempl Identity()
static const std::string R
Definition: NS.h:162
static const std::string k
Definition: NS.h:130

◆ computedVnormdV()

template<bool is_ad = false>
GenericRealVectorValue<is_ad> CohesiveZoneModelTools::computedVnormdV ( const GenericRealVectorValue< is_ad > &  V)

Definition at line 22 of file CohesiveZoneModelTools.h.

23 {
24  return V / V.norm();
25 }

◆ computeNormalComponents()

template<bool is_ad = false>
GenericRealVectorValue<is_ad> CohesiveZoneModelTools::computeNormalComponents ( const GenericRealVectorValue< is_ad > &  normal,
const GenericRealVectorValue< is_ad > &  vector 
)

compute the normal componets of a vector

Definition at line 94 of file CohesiveZoneModelTools.h.

Referenced by CZMRealVectorScalar::computeQpProperties().

96 {
97  return (normal * vector) * normal;
98 }

◆ computeReferenceRotation()

template<bool is_ad = false>
GenericRankTwoTensor<is_ad> CohesiveZoneModelTools::computeReferenceRotation ( const GenericRealVectorValue< is_ad > &  normal,
const unsigned int  mesh_dimension 
)

compute the czm reference rotation based on the normal in the undeformed configuration and the mesh dimension

Definition at line 112 of file CohesiveZoneModelTools.h.

114 {
116  switch (mesh_dimension)
117  {
118  case 3:
119  rot = RotationMatrix::rotVec1ToVec2<is_ad>(GenericRealVectorValue<false>(1, 0, 0), normal);
120  break;
121  case 2:
122  rot = RotationMatrix::rotVec2DToX<is_ad>(normal).transpose();
123  break;
124  case 1:
125  rot = RankTwoTensor::Identity();
126  break;
127  default:
128  mooseError("computeReferenceRotation: mesh_dimension value should be 1, 2 or, 3. You "
129  "provided " +
130  std::to_string(mesh_dimension));
131  }
132  return rot;
133 }
void mooseError(Args &&... args)
static RankTwoTensorTempl Identity()
Moose::GenericType< RealVectorValue, is_ad > GenericRealVectorValue
Moose::GenericType< RankTwoTensor, is_ad > GenericRankTwoTensor

◆ computeTangentComponents()

template<bool is_ad = false>
GenericRealVectorValue<is_ad> CohesiveZoneModelTools::computeTangentComponents ( const GenericRealVectorValue< is_ad > &  normal,
const GenericRealVectorValue< is_ad > &  vector 
)

compute the tangent componets of a vector

Definition at line 103 of file CohesiveZoneModelTools.h.

Referenced by CZMRealVectorScalar::computeQpProperties().

105 {
106  return vector - computeNormalComponents<is_ad>(normal, vector);
107 }