v0.15.4
Loading...
Searching...
No Matches
Static Public Member Functions | Static Public Attributes | List of all members
EshelbianPlasticity::GriffithCohesiveLaw Struct Reference
Collaboration diagram for EshelbianPlasticity::GriffithCohesiveLaw:
[legend]

Static Public Member Functions

template<typename T >
static T getTau (const T &k, double gc)
 
template<typename T >
static auto getDiffTau (const T &tau, const T &kappa, double gc)
 
template<typename T >
static T getAlpha (const T &kappa, double gc, double min_stiffness)
 
template<typename T >
static T getDiffAlpha (const T &kappa, double gc)
 
template<typename T >
static auto invTau (const T &tau, double Gf)
 
template<typename T >
static auto calculateY (const T t_eff, const T &kappa, double gc)
 
template<typename T >
static auto calculateDissipation (const T &delta_kappa, const T t_eff, const T &kappa, double gc)
 
template<typename T >
static auto calculateDissipationSurplus (const T &delta_kappa, const T t_eff, const T &kappa, double gc)
 
template<typename T >
static auto calculateDissipationSurplusDiffKappa (const T &delta_kappa, const T &t_eff, const T &kappa, double gc)
 
template<typename T >
static auto calculateDissipationSurplusDiffTraction (const FTensor::Tensor1< T, 3 > &t_traction, const T &delta_kappa, const T &kappa, FTensor::Tensor1< double, 3 > &t_n_normalize, double gc, double beta)
 
template<typename T >
static auto calculateGap (const FTensor::Tensor1< T, 3 > &t_traction, FTensor::Tensor1< double, 3 > &t_n_normalize, double alpha, double beta)
 
template<typename T >
static auto calculateDiffGapDTraction (const FTensor::Tensor1< T, 3 > &t_traction, FTensor::Tensor1< double, 3 > &t_n_normalize, double alpha, double beta)
 
template<typename T >
static auto calculateEffectiveTraction (const FTensor::Tensor1< T, 3 > &t_traction, FTensor::Tensor1< double, 3 > &t_n_normalize, double beta)
 

Static Public Attributes

static constexpr double eps = 1e-8
 
static constexpr double pi = boost::math::constants::pi<double>()
 
static constexpr double root_pi
 

Detailed Description

Definition at line 26 of file EshelbianCohesive.cpp.

Member Function Documentation

◆ calculateDiffGapDTraction()

template<typename T >
static auto EshelbianPlasticity::GriffithCohesiveLaw::calculateDiffGapDTraction ( const FTensor::Tensor1< T, 3 > &  t_traction,
FTensor::Tensor1< double, 3 > &  t_n_normalize,
double  alpha,
double  beta 
)
inlinestatic

Definition at line 140 of file EshelbianCohesive.cpp.

142 {
143 FTENSOR_INDEX(3, i);
145 FTensor::Tensor1<std::complex<T>, 3> t_cpx_delta;
146 FTensor::Tensor1<std::complex<T>, 3> t_cpx_traction;
147 for (auto jj = 0; jj != 3; ++jj) {
148 t_cpx_traction(i) = t_traction(i);
149 t_cpx_traction(jj) += eps * 1i;
150 auto t_cpx_gap = calculateGap(t_cpx_traction, t_n_normalize, alpha, beta);
151 for (auto ii = 0; ii != 3; ++ii) {
152 auto v = t_cpx_gap(ii).imag();
153 t_dgap(ii, jj) = v / eps;
154 }
155 }
156 return t_dgap;
157 }
#define FTENSOR_INDEX(DIM, I)
FTensor::Index< 'i', SPACE_DIM > i
const double v
phase velocity of light in medium (cm/ns)
static auto calculateGap(const FTensor::Tensor1< T, 3 > &t_traction, FTensor::Tensor1< double, 3 > &t_n_normalize, double alpha, double beta)

◆ calculateDissipation()

template<typename T >
static auto EshelbianPlasticity::GriffithCohesiveLaw::calculateDissipation ( const T &  delta_kappa,
const T  t_eff,
const T &  kappa,
double  gc 
)
inlinestatic

Definition at line 68 of file EshelbianCohesive.cpp.

69 {
70 T Y = calculateY(t_eff, kappa + delta_kappa, gc);
71 return Y * delta_kappa;
72 }
double kappa
static auto calculateY(const T t_eff, const T &kappa, double gc)

◆ calculateDissipationSurplus()

template<typename T >
static auto EshelbianPlasticity::GriffithCohesiveLaw::calculateDissipationSurplus ( const T &  delta_kappa,
const T  t_eff,
const T &  kappa,
double  gc 
)
inlinestatic

Definition at line 75 of file EshelbianCohesive.cpp.

76 {
77 T M = calculateY(t_eff, kappa + delta_kappa, gc) -
78 getTau(kappa + delta_kappa, gc);
79 return -M * delta_kappa;
80 }
FTensor::Index< 'M', 3 > M
static T getTau(const T &k, double gc)

◆ calculateDissipationSurplusDiffKappa()

template<typename T >
static auto EshelbianPlasticity::GriffithCohesiveLaw::calculateDissipationSurplusDiffKappa ( const T &  delta_kappa,
const T &  t_eff,
const T &  kappa,
double  gc 
)
inlinestatic

Definition at line 83 of file EshelbianCohesive.cpp.

85 {
86
87 std::complex<T> cpx_delta = delta_kappa;
88 std::complex<T> cpx_t_eff = t_eff;
89 std::complex<T> cpx_kappa = kappa;
90 cpx_delta += eps * 1i;
91 std::complex<T> cpx_M =
92 calculateDissipationSurplus(cpx_delta, cpx_t_eff, cpx_kappa, gc);
93 return cpx_M.imag() / eps;
94 }
static auto calculateDissipationSurplus(const T &delta_kappa, const T t_eff, const T &kappa, double gc)

◆ calculateDissipationSurplusDiffTraction()

template<typename T >
static auto EshelbianPlasticity::GriffithCohesiveLaw::calculateDissipationSurplusDiffTraction ( const FTensor::Tensor1< T, 3 > &  t_traction,
const T &  delta_kappa,
const T &  kappa,
FTensor::Tensor1< double, 3 > &  t_n_normalize,
double  gc,
double  beta 
)
inlinestatic

Definition at line 97 of file EshelbianCohesive.cpp.

100 {
101 FTENSOR_INDEX(3, i);
102 FTensor::Tensor1<double, 3> t_diff_traction;
103 std::complex<T> cpx_delta = delta_kappa;
104 std::complex<T> cpx_kappa = kappa;
105 FTensor::Tensor1<std::complex<T>, 3> t_cpx_traction;
106 for (auto jj = 0; jj != 3; ++jj) {
107 t_cpx_traction(i) = t_traction(i);
108 t_cpx_traction(jj) += eps * 1i;
109 std::complex<T> cpx_teff =
110 calculateEffectiveTraction(t_cpx_traction, t_n_normalize, beta);
111 std::complex<T> cpx_M =
112 calculateDissipationSurplus(cpx_delta, cpx_teff, cpx_kappa, gc);
113 t_diff_traction(jj) = cpx_M.imag() / eps;
114 }
115 return t_diff_traction;
116 }
static auto calculateEffectiveTraction(const FTensor::Tensor1< T, 3 > &t_traction, FTensor::Tensor1< double, 3 > &t_n_normalize, double beta)

◆ calculateEffectiveTraction()

template<typename T >
static auto EshelbianPlasticity::GriffithCohesiveLaw::calculateEffectiveTraction ( const FTensor::Tensor1< T, 3 > &  t_traction,
FTensor::Tensor1< double, 3 > &  t_n_normalize,
double  beta 
)
inlinestatic

Definition at line 161 of file EshelbianCohesive.cpp.

163 {
164 auto t = calculateGap(t_traction, t_n_normalize, 1.0, beta);
165 FTENSOR_INDEX(3, i);
166 T t_eff = std::sqrt(t(i) * t(i));
167 return t_eff;
168 }
constexpr double t
plate stiffness
Definition plate.cpp:58

◆ calculateGap()

template<typename T >
static auto EshelbianPlasticity::GriffithCohesiveLaw::calculateGap ( const FTensor::Tensor1< T, 3 > &  t_traction,
FTensor::Tensor1< double, 3 > &  t_n_normalize,
double  alpha,
double  beta 
)
inlinestatic

Definition at line 119 of file EshelbianCohesive.cpp.

121 {
122 FTENSOR_INDEX(3, i);
123 FTENSOR_INDEX(3, j);
124 constexpr auto t_kd = FTensor::Kronecker_Delta<double>();
126 t_P(i, j) = t_n_normalize(i) * t_n_normalize(j);
128 t_Q(i, j) = t_kd(i, j) - t_P(i, j);
129 FTensor::Tensor1<T, 3> t_normal;
130 t_normal(i) = t_P(i, j) * t_traction(j);
131 FTensor::Tensor1<T, 3> t_tangential;
132 t_tangential(i) = t_Q(i, j) * t_traction(j);
133 FTensor::Tensor1<T, 3> t_gap_np1;
134 t_gap_np1(i) = alpha * (t_normal(i) + (t_tangential(i) / beta));
135 return t_gap_np1;
136 }
Kronecker Delta class.
constexpr auto t_kd
FTensor::Index< 'j', 3 > j

◆ calculateY()

template<typename T >
static auto EshelbianPlasticity::GriffithCohesiveLaw::calculateY ( const T  t_eff,
const T &  kappa,
double  gc 
)
inlinestatic

Definition at line 62 of file EshelbianCohesive.cpp.

62 {
63 T diff_alpha = getDiffAlpha(kappa, gc);
64 return 0.5 * t_eff * t_eff * diff_alpha;
65 }
static T getDiffAlpha(const T &kappa, double gc)

◆ getAlpha()

template<typename T >
static T EshelbianPlasticity::GriffithCohesiveLaw::getAlpha ( const T &  kappa,
double  gc,
double  min_stiffness 
)
inlinestatic

Definition at line 45 of file EshelbianCohesive.cpp.

45 {
46 auto tau = getTau(kappa, gc);
47 return kappa / (kappa * min_stiffness + tau);
48 }

◆ getDiffAlpha()

template<typename T >
static T EshelbianPlasticity::GriffithCohesiveLaw::getDiffAlpha ( const T &  kappa,
double  gc 
)
inlinestatic

Definition at line 50 of file EshelbianCohesive.cpp.

50 {
51 T tau = getTau(kappa, gc);
52 T diff_tau = getDiffTau(tau, kappa, gc);
53 return (tau - kappa * diff_tau) / (tau * tau);
54 }
static auto getDiffTau(const T &tau, const T &kappa, double gc)

◆ getDiffTau()

template<typename T >
static auto EshelbianPlasticity::GriffithCohesiveLaw::getDiffTau ( const T &  tau,
const T &  kappa,
double  gc 
)
inlinestatic

Definition at line 40 of file EshelbianCohesive.cpp.

40 {
41 return -tau * (1.0 + (1.0 / (2.0 * kappa)));
42 }

◆ getTau()

template<typename T >
static T EshelbianPlasticity::GriffithCohesiveLaw::getTau ( const T &  k,
double  gc 
)
inlinestatic

Definition at line 34 of file EshelbianCohesive.cpp.

34 {
35 const T c = static_cast<T>(gc) / root_pi;
36 return c * std::exp(-k) / std::sqrt(k);
37 }
const double c
speed of light (cm/ns)
FTensor::Index< 'k', 3 > k

◆ invTau()

template<typename T >
static auto EshelbianPlasticity::GriffithCohesiveLaw::invTau ( const T &  tau,
double  Gf 
)
inlinestatic

Definition at line 56 of file EshelbianCohesive.cpp.

56 {
57 const T z = (2.0 * Gf * Gf) / (pi * tau * tau);
58 return T(0.5) * boost::math::lambert_w(z, 0); // k=0 == principal branch
59 }

Member Data Documentation

◆ eps

constexpr double EshelbianPlasticity::GriffithCohesiveLaw::eps = 1e-8
inlinestaticconstexpr

Definition at line 28 of file EshelbianCohesive.cpp.

◆ pi

constexpr double EshelbianPlasticity::GriffithCohesiveLaw::pi = boost::math::constants::pi<double>()
inlinestaticconstexpr

Definition at line 30 of file EshelbianCohesive.cpp.

◆ root_pi

constexpr double EshelbianPlasticity::GriffithCohesiveLaw::root_pi
inlinestaticconstexpr
Initial value:
=
boost::math::constants::root_pi<double>()

Definition at line 31 of file EshelbianCohesive.cpp.


The documentation for this struct was generated from the following file: