2.1 Crack Tip Field Function
In a paper published by Williams in 1957, the crack tip displacement field and stress field in a plane stress or plane strain state were expressed as an infinite series solution [21]. Although this solution is not a closed-form solution, it has a broad range of applications. This series expansion is widely used to calculate the SIF of many types of samples commonly used to study fracture mechanics [22]. Double edge notched test (DENT) samples were used in this study and the crack can be treated as a mode I crack. The displacement and stress fields are expressed as follows [23]:
$$\begin{gathered} u = \sum\limits_{{n = 1}}^{\infty } {\frac{{r^{{n/2}} }}{{2G}}} a_{n} \left[ {(\kappa + \frac{n}{2} + ( - 1)^{n} )\cos \frac{{n\theta }}{2}} \right. \hfill \\ \,\,\,{\text{ }} - \left. {\frac{n}{2}\cos \frac{{(n - 4)\theta }}{2}} \right], \hfill \\ \end{gathered}$$
(1a)
$$\begin{gathered} v = \sum\limits_{{n = 1}}^{\infty } {\frac{{r^{{n/2}} }}{{2G}}} a_{n} \left[ {(\kappa - \frac{n}{2} - ( - 1)^{n} )\sin \frac{{n\theta }}{2} } \right. \hfill \\ \quad +{\text{ }}\left. {\frac{n}{2}\sin \frac{{(n - 4)\theta }}{2}} \right], \hfill \\ \end{gathered}$$
(1b)
$$\begin{gathered} \sigma _{x} = \sum\limits_{{n = 1}}^{\infty } {\frac{n}{2}a_{n} } r^{{\frac{n}{2} - 1}} \left\{ {\left[ {2 + ( - 1)^{n} + \frac{n}{2}} \right]\cos \left( {\frac{n}{2} - 1} \right)\theta } \right. \hfill \\ \qquad -{\text{ }}\left. {\left( {\frac{n}{2} - 1} \right)\cos \left( {\frac{n}{2} - 3} \right)\theta } \right\}, \hfill \\ \end{gathered}$$
(2a)
$$\begin{gathered} \sigma _{y} = \sum\limits_{{n = 1}}^{\infty } {\frac{n}{2}a_{n} } r^{{\frac{n}{2} - 1}} \left\{ {\left[ {2 - ( - 1)^{n} - \frac{n}{2}} \right]\cos \left( {\frac{n}{2} - 1} \right)\theta } \right. \hfill \\ \qquad + {\text{ }}\left. {\left( {\frac{n}{2} - 1} \right)\cos \left( {\frac{n}{2} - 3} \right)\theta } \right\}, \hfill \\ \end{gathered}$$
(2b)
$$\begin{gathered} \sigma _{{xy}} = \sum\limits_{{n = 1}}^{\infty } {\frac{n}{2}a_{n} } r^{{\frac{n}{2} - 1}} \left\{ { - \left[ {( - 1)^{n} + \frac{n}{2}} \right]\sin \left( {\frac{n}{2} - 1} \right)\theta } \right. \hfill \\\qquad {\text{ }} + \left. {\left( {\frac{n}{2} - 1} \right)\sin \left( {\frac{n}{2} - 3} \right)\theta } \right\}, \hfill \\ \end{gathered}$$
(2c)
where \(a_{1} = K_{I}/ {\sqrt{2 \pi }}\), \(a_{2} = {{\sigma _{{0x}} } \mathord{\left/ {\vphantom {{\sigma _{{0x}} } 4}} \right. \kern-\nulldelimiterspace} 4}\), G is the shear modulus, \(\kappa = {{\left( {3 - \upsilon } \right)} \mathord{\left/ {\vphantom {{\left( {3 - \upsilon } \right)} {\left( {1 + \upsilon } \right)}}} \right. \kern-\nulldelimiterspace} {\left( {1 + \upsilon } \right)}}\) for the plane stress condition, and \(\kappa = 3 - 4\upsilon\) for the plane strain condition, where \(\upsilon\) is Poisson's ratio. The sample is rotated and translated during loading. The displacement field measured directly by DIC technology can be expressed as follows:
$$\begin{gathered} u = \sum\limits_{{n = 1}}^{\infty } {\frac{{r^{{n/2}} }}{{2G}}} a_{n} \left[ {\left( {\kappa + \frac{n}{2} + ( - 1)^{n} } \right)\cos \frac{{n\theta }}{2}} \right. \hfill \\ {\text{ }} - \left. {\frac{n}{2}\cos \frac{{(n - 4)\theta }}{2}} \right] + T_{x} - Ry, \hfill \\ \end{gathered}$$
(3a)
$$\begin{gathered} v = \sum\limits_{{n = 1}}^{\infty } {\frac{{r^{{n/2}} }}{{2G}}} a_{n} \left[ {\left( {\kappa - \frac{n}{2} - ( - 1)^{n} } \right)\sin \frac{{n\theta }}{2}} \right. \hfill \\ \quad {\text{ }} + \left. {\frac{n}{2}\sin \frac{{(n - 4)\theta }}{2}} \right] + T_{y} + Rx, \hfill \\ \end{gathered}$$
(3b)
where \(T_{x}\), \(T_{y}\), and \(R\) represent translation in the x direction, translation in the y direction, and rotation of the sample, respectively. Because Eq. (3) uses the crack tip position as the coordinate origin, the following transformations must be made in order to use the results obtained by the DIC measurement system:
$$r = \sqrt {(x_{i} - x_{o} )^{2} + (y_{i} - y_{o} )^{2} } ,$$
(4)
$$\theta = \text{arcos}\left( {\frac{{x_{i} - x_{o} }}{r}} \right),$$
(5)
where \((x_{i} ,y_{i} )\) are the coordinates of a point in the DIC measurement system, and \((x_{o} ,y_{o} )\) are the coordinates of the crack tip in the DIC measurement coordinate system.
2.2 Crack Tip Plastic Zone
When the equivalent stress is equal to the yield strength, metals experience plastic deformation. In addition, the SIF is a key parameter in linear elastic fracture mechanics. Therefore, if the displacement field is used to calculate the SIF in a test, the plastic region must be excised from the data by defining an inner radius for data collection that excludes the plastic zone. Parnas et al. [24] defined this inner radius of the fitting area as \(R_{{inner}} > {T \mathord{\left/ {\vphantom {T 2}} \right. \kern-\nulldelimiterspace} 2}\), where T is the sample thickness. However, the range of the plastic zone sometimes exceeds this inner diameter and hence, in either plane stress or plane strain, Dehnavi et al. [25] suggested using \(R_{{inner}} > (K_{I} )^{2} /[{\pi }\sigma _{y}^{2} ]\) or \(R_{{inner}} > (K_{I} )^{2} /[3{\pi }\sigma _{y}^{2} ]\) to determine the inner radius of the fitting area. However, the SIF range under given experimental conditions must be obtained before this formula can be applied, which makes this method not always applicable.
The displacement field measured by DIC can be used to obtain the strain field through numerical calculations. By combining the strain field with appropriate material parameters, the stress field and crack tip plastic region can be obtained. The strain field must be as accurate as possible and Pan et al. [26] proposed a full-field strain measurement method based on local least-squares fitting of the displacement field; because this method has strong noise reducing capability, it is much more accurate than the difference method. To obtain the strain field from the displacement field, Vasco-Olmo et al. [27] used the Green–Lagrange strain tensor, which is expressed as follows:
$$\left( {\begin{array}{*{20}c} {\varepsilon _{{xx}} } & {\varepsilon _{{yy}} } & {\varepsilon _{{xy}} } \\ \end{array} } \right)^{{\text{T}}} = {\mathbf{\varepsilon }}_{{\text{1}}} + {\mathbf{\varepsilon }}_{{\text{2}}} ,$$
(6)
where
$${\mathbf{\varepsilon }}_{{\text{1}}} = \left( {\begin{array}{*{20}c} {\frac{{\partial u_{p} }}{{\partial x}}} & {\frac{{\partial v_{p} }}{{\partial y}}} & {\frac{{\partial u_{p} }}{{\partial y}} + \frac{{\partial v_{p} }}{{\partial x}}} \\ \end{array} } \right)^{{\text{T}}} ,$$
(7)
$${\mathbf{\varepsilon }}_{{\text{2}}} = \frac{1}{2}\left( {\begin{array}{*{20}c} {\frac{{\partial u_{p} }}{{\partial x}}} & 0 & {\begin{array}{*{20}c} {\frac{{\partial v_{p} }}{{\partial x}}} & 0 \\ \end{array} } \\ 0 & {\frac{{\partial u_{p} }}{{\partial y}}} & {\begin{array}{*{20}c} 0 & {\frac{{\partial v_{p} }}{{\partial y}}} \\ \end{array} } \\ {\frac{{\partial u_{p} }}{{\partial y}}} & {\frac{{\partial u_{p} }}{{\partial x}}} & {\begin{array}{*{20}c} {\frac{{\partial v_{p} }}{{\partial y}}} & {\frac{{\partial v_{p} }}{{\partial x}}} \\ \end{array} } \\ \end{array} } \right)\left( {\begin{array}{*{20}c} {\frac{{\partial u_{p} }}{{\partial x}}} \\ {\frac{{\partial u_{p} }}{{\partial y}}} \\ {\frac{{\partial v_{p} }}{{\partial x}}} \\ {\frac{{\partial v_{p} }}{{\partial y}}} \\ \end{array} } \right),$$
(8)
where up and vp are the local horizontal and local vertical displacement fields obtained using local least-squares fitting, respectively. The stress field can then be obtained from the strain field as follows:
$$\left( {\begin{array}{*{20}c} {\sigma _{{xx}} } \\ {\sigma _{{yy}} } \\ {\sigma _{{xy}} } \\ \end{array} } \right) = \frac{E}{{1 - \upsilon ^{2} }}\left( {\begin{array}{*{20}c} 1 & \upsilon & 0 \\ \upsilon & 1 & 0 \\ 0 & 0 & {\frac{{1 - \upsilon }}{2}} \\ \end{array} } \right)\left( {\begin{array}{*{20}c} {\varepsilon _{{xx}} } \\ {\varepsilon _{{yy}} } \\ {\varepsilon _{{xy}} } \\ \end{array} } \right).$$
(9)
To determine the extent of the plastic zone, the von Mises stress or Tresca stress is used in combination with the yield strength of the material. In this study, the von Mises stress is used to identify the plastic zone.
2.3 Gauss-Newton Iterative Method
The inner radius of the region used for the iterative process can be calculated according to Section 2.2. The outer diameter of the fitting area and the number of Williams expansion terms used during the fitting process are determined according to the conditions. Let the horizontal and vertical displacements corresponding to the coordinates \((x_{i} ,y_{i} )\) of the displacement field in the fitting area be \(U_{i}\) and \(V_{i}\), respectively. The corresponding objective function is:
$$\begin{gathered} \psi ({\varvec{Z}}) = \sum\limits_{{i = 1}}^{m} {\{ \left[ {u_{i} (x_{i} ,y_{i} ;{\varvec{Z}}) - U_{i} } \right]^{2} } \\ + \left[ {v_{i} (x_{i} ,y_{i} ;{\varvec{Z}}) - V_{i} } \right]^{2} \} , \\ \end{gathered}$$
(10)
where \({\varvec{Z}} = \left( {a_{1} ,a_{2} , \cdots ,a_{l} ,x_{o} ,y_{o} ,T_{x} ,T_{y} ,R} \right)\), ai is the Williams expansion coefficient, and the \({\varvec{Z}}\) value at which \(\psi ({\varvec{Z}})\) reaches the minimum is the optimal solution of the objective function. Both the horizontal and vertical displacement fields contribute to the fitting: \(f_{i} = u_{i} (x_{i} ,y_{i} ;{\varvec{Z}}) - U_{i}\), \(g_{i} = v_{i} (x_{i} ,y_{i} ;{\varvec{Z}}) - V_{i}\). This problem is expressed as follows:
$$\mathop {\min }\limits_{{Z \in D}} \psi ({\varvec{Z}}) = \mathop {\min }\limits_{{Z \in D}} (\frac{1}{2}f({\varvec{Z}})^{{\text{T}}} f({\varvec{Z}}) + \frac{1}{2}g({\varvec{Z}})^{{\text{T}}} g({\varvec{Z}})).$$
(11)
The iterative form of the Gauss-Newton method is [28]:
$$\begin{gathered} \Delta {\varvec{Z}}_{k} = - \left[ {{\varvec{DF}}{\text{(}}{\varvec{Z}}_{k} {\text{)}}^{{\text{T}}} {\varvec{DF}}{\text{(}}{\varvec{Z}}_{k} {\text{)}}} \right]^{{ - 1}} {\varvec{DF}}{\text{(}}{\varvec{Z}}_{k} {\text{)}}^{{\text{T}}} {\varvec{F}}{\text{(}}{\varvec{Z}}_{k} {\text{),}} \hfill \\ {\varvec{Z}}_{{k{\varvec{ + }}{\text{1}}}} = {\varvec{Z}}_{k} + \Delta {\varvec{Z}}_{k} , \hfill \\ \end{gathered}$$
(12)
where \({\varvec{F}}{\text{(}}{\varvec{Z}}{\text{)}} = \left( {f_{1} ,f_{2} , \cdots ,f_{m} ,g_{1} ,g_{2} , \cdots ,g_{m} } \right)^{{\text{T}}} ,\) \({\varvec{DF}}{\text{(}}{\varvec{Z}}{\text{)}}\) is a Jacobi matrix, and the mathematical expression is a first-order partial derivative matrix. \({\varvec{Z}} = \left( {a_{1} ,a_{2} , \cdots ,a_{l} ,x_{o} ,y_{o} ,T_{x} ,T_{y} ,R} \right)^{{\text{T}}}\) is written as \({\varvec{Z}} = \left( {z_{1} ,z_{2} , \cdots ,z_{{l + 5}} } \right)^{{\text{T}}}\), where l is the number of expansion terms in the Williams equation, and zi corresponds to the above parameters. \({\varvec{DF}}{\text{(}}{\varvec{Z}}{\text{)}}\) can be written as follows according to the derivation rule:
$$\begin{gathered} {\varvec{DF}}{\text{(}}{\varvec{Z}}{\text{)}} = \hfill \\ \left( {\begin{array}{*{20}c} {\frac{{\partial u_{1} }}{{\partial z_{1} }}} & {\frac{{\partial u_{2} }}{{\partial z_{1} }}} & \cdots & {\frac{{\partial u_{m} }}{{\partial z_{1} }}} \\ {\frac{{\partial u_{1} }}{{\partial z_{2} }}} & {\frac{{\partial u_{2} }}{{\partial z_{2} }}} & \cdots & {\frac{{\partial u_{m} }}{{\partial z_{2} }}} \\ \vdots & \vdots & \ddots & \vdots \\ {\frac{{\partial u_{1} }}{{\partial z_{{l + 5}} }}} & {\frac{{\partial u_{2} }}{{\partial z_{{l + 5}} }}} & \cdots & {\frac{{\partial u_{m} }}{{\partial z_{{l + 5}} }}} \\ \end{array} \begin{array}{*{20}c} {\frac{{\partial v_{1} }}{{\partial z_{1} }}} & {\frac{{\partial v_{2} }}{{\partial z_{1} }}} & \cdots & {\frac{{\partial v_{m} }}{{\partial z_{1} }}} \\ {\frac{{\partial v_{1} }}{{\partial z_{2} }}} & {\frac{{\partial v_{2} }}{{\partial z_{2} }}} & \cdots & {\frac{{\partial v_{m} }}{{\partial z_{2} }}} \\ \vdots & \vdots & \ddots & \vdots \\ {\frac{{\partial v_{1} }}{{\partial z_{{l + 5}} }}} & {\frac{{\partial v_{2} }}{{\partial z_{{l + 5}} }}} & \cdots & {\frac{{\partial v_{m} }}{{\partial z_{{l + 5}} }}} \\ \end{array} } \right)^{{\text{T}}} \hfill \\ \end{gathered}$$
(13)
$$\frac{{\partial u_{i} }}{{\partial z_{j} }} = \left. {\frac{{\partial u}}{{\partial z_{j} }}} \right|_{{\begin{array}{*{20}c} {x = x_{i} } \\ {y = y_{i} } \\ \end{array} }} ,\frac{{\partial v_{i} }}{{\partial z_{j} }} = \left. {\frac{{\partial v}}{{\partial z_{j} }}} \right|_{{\begin{array}{*{20}c} {x = x_{i} } \\ {y = y_{i} } \\ \end{array} }}.$$
Note that because of the nonlinear nature of the matrix components, sometimes the components are correlated, which causes \({\varvec{DF}}{\text{(}}{\varvec{Z}}{\text{)}}\) to become degenerate or ill-conditioned, i.e., more sensitive to small errors, and \({\varvec{DF}}{\text{(}}{\varvec{Z}}_{k} {\text{)}}^{{\text{T}}} {\varvec{DF}}{\text{(}}{\varvec{Z}}_{k} {\text{)}}\) is also ill-conditioned [28]. In addition, the DIC technique measures the crack tip displacement field in units of pixels, with a single pixel generally equating to a distance between several microns and several tens of microns. Thus, \({\varvec{DF}}{\text{(}}{\varvec{Z}}_{k} {\text{)}}^{{\text{T}}} {\varvec{DF}}{\text{(}}{\varvec{Z}}_{k} {\text{)}}\) is always ill-conditioned in the actual calculation. There are two ways to solve this problem: one is to optimise the Gauss–Newton method itself, or the more commonly used damped least-squares method (the Levenberg–Marquardt method) and its variants [28, 29]; the other is to improve the accuracy with which ill-conditioned equations are solved. The preconditioned conjugate gradient (PCG) method can be used to solve a system of equations whose coefficient matrix is an ill-conditioned sparse symmetric matrix. \({\varvec{DF}}{\text{(}}{\varvec{Z}}_{k} {\text{)}}^{{\text{T}}} {\varvec{DF}}{\text{(}}{\varvec{Z}}_{k} {\text{)}}\) is a non-sparse symmetric matrix, and the sparsity of the matrix is not a necessary condition for applying the PCG method in MATLAB. The crack tip optimisation iterative algorithm can be written as shown in Figure 1.
Figure 1 can be run according to the following steps:
a) Determine the initial crack tip position \((x_{o} ,y_{o} )\) according to the discontinuity of the crack tip displacement filed.
b) Using \((x_{o} ,y_{o} )\) as the center, select a fitting area radius r. Take the fitting point in the displacement filed after removing the plastic area.
c) Using the linear fitting method and \((x_{o} ,y_{o} )\), \({\varvec{Z^{\prime}}} = (a_{1} ,a_{2} , \cdots ,a_{n} ,T_{x} ,T_{y} ,R)\) can be obtained.
d) Combine point \((x_{o} ,y_{o} )\) and vector \({\varvec{Z^{\prime}}}\) into \({\varvec{Z}} = (a_{1} ,a_{2} , \cdots ,a_{n} ,x_{o} ,y_{o} ,T_{x} ,T_{y} ,R)\), \({\varvec{Z}}\) as a nonlinear iterative initial value.
e) Solve \(\Delta {\varvec{Z}}_{k} = - \left[ {{\varvec{DF}}{\text{(}}{\varvec{Z}}_{k} {\text{)}}^{{\text{T}}} {\varvec{DF}}{\text{(}}{\varvec{Z}}_{k} {\text{)}}} \right]^{{ - 1}} {\varvec{DF}}{\text{(}}{\varvec{Z}}_{k} {\text{)}}^{{\text{T}}} {\varvec{F}}{\text{(}}{\varvec{Z}}_{k} {\text{),}}\) and calculate \({||\Delta \boldsymbol{Z}||}_{2}\).
f) Judge whether \({||\Delta \boldsymbol{Z}||}_{2}\) satisfies the convergence condition, if so, output \(\boldsymbol{Z}\).
g) If \({||\Delta \boldsymbol{Z}||}_{2}\) does not meet the convergence condition, perform \({\varvec{Z}} = {\varvec{Z}} + \Delta {\varvec{Z}}\), extract new crack tip coordinates, and update the fitting area.
h) Repeat steps e), f), g) until the convergence condition is meet, and Z is output.