Stress Intensity Factors II#
We will follow Williams’s approach[^I1]. The boundary conditions of our problem are such that the crack faces will be traction free:
Next, remembering that the stresses in polar coordinate are expressed as: In polar coordinates, stresses are expressed as:
The B.C leads to the requirement:
\begin{align*} &\phi_{,rr} = 0 &\left( \frac{1}{r}\phi_{,\theta}\right )_{,r} =0 \end{align*}
We know that \(\phi\) will depend on both \(r\) and \(\theta\). For the sake of having shorter equations, we can start be defining \(\psi\) such that:
and since we are looking for a solution for the bi-harmonic problem \(\nabla ^4 \phi =0\) we need to find \(\psi\) that will satisfy
The following form will satisfy (7) :
leading to
Equation (9) is obviously satisfied for \(r=0\) and \(\lambda \geq 3\) otherwise, we must solve :
from which we can find that:
plugging (10) into (7) & (8) leads to :
and finally \(\phi\) assumes the form:
To find the coefficients in (12) we will first write explicitly the stresses.
To make our life easier (and to avoid stupid mistakes :) ) we will use the symbolic math python library sympy
#here we import the library
from sympy import *
init_printing(pretty_print=True, backcolor='Transparent',use_latex='png' ,fontsize='13pt', wrap_line=True,forecolor='Black')
---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
Cell In[1], line 2
1 #here we import the library
----> 2 from sympy import *
3 init_printing(pretty_print=True, backcolor='Transparent',use_latex='png' ,fontsize='13pt', wrap_line=True,forecolor='Black')
ModuleNotFoundError: No module named 'sympy'
Next, we will define the symbols we are using:
phi, A,B,C,D = symbols('phi A B C D')
L, r, theta = symbols('lambda r theta',real=True)
Since we are about to calculate the stresses using (6) it will be usefull to define the operators used for those calculations:
def Srr(phi,r,theta):
return (phi.diff(r)/r + (1/r**2)*phi.diff(theta,2))
def Srt(phi,r,theta):
phi_t =(1/r)*phi.diff(theta)
return -phi_t.diff(r)
def Stt(phi,r,theta):
return phi.diff(r,2)
Ok, almost good to go,
Next we need to define the function \(\phi\) based on (12) :
phi = r**(L+1) * ((A/4/L)*cos((L-1)*theta) +
(B/4/L)*sin((L-1)*theta) +
(C) *cos((L+1)*theta) +
(D) *sin((L+1)*theta) )
phi
Calculating the stresses is now a simple task:
sigma_rr = Srr(phi,r,theta)
sigma_rt = Srt(phi,r,theta)
sigma_tt = Stt(phi,r,theta)
And now \(\sigma_{rr}\) is given by:
temp = sigma_rr*4/r**(L-1)
temp =((A*apart(temp,A).coeff(A) + B*apart(temp,B).coeff(B)+C*apart(temp,C).coeff(C)+D*apart(temp,D).coeff(D)))
(r**(L-1)/4)*simplify(temp)
\(\sigma_{r\theta}\) by:
simplify(sigma_rt)
and \(\sigma_{\theta \theta}\)
simplify(sigma_tt)
M = Matrix(([apart(sigma_tt,A).coeff(A), apart(sigma_tt,C).coeff(C), apart(sigma_tt,B).coeff(B), apart(sigma_tt,D).coeff(D),A],
[apart(sigma_rt,A).coeff(A),apart(sigma_rt,C).coeff(C), apart(sigma_rt,B).coeff(B), apart(sigma_rt,D).coeff(D),C],
[apart(sigma_tt,A).coeff(A), apart(sigma_tt,C).coeff(C), apart(sigma_tt,B).coeff(B),apart(sigma_tt,D).coeff(D),B],
[apart(sigma_rt,A).coeff(A), apart(sigma_rt,C).coeff(C), apart(sigma_rt,B).coeff(B),apart(sigma_tt,D).coeff(D),D]))
simplify(M)
The B.C, in conjuction with the stress expressions we have obtained can be written as a system of equations :
sigma_rtP = sigma_rt.subs(theta,pi)
sigma_rtN = sigma_rt.subs(theta,-pi)
sigma_ttP = sigma_tt.subs(theta,pi)
sigma_ttN = sigma_tt.subs(theta,-pi)
simplify_logic(sigma_ttN)
The solution we are looking for is of the form:
M = Matrix(([apart(sigma_ttP,A).coeff(A), apart(sigma_ttP,C).coeff(C),apart(sigma_ttP,B).coeff(B), apart(sigma_ttP,D).coeff(D)],
[apart(sigma_rtP,A).coeff(A), apart(sigma_rtP,C).coeff(C),apart(sigma_rtP,B).coeff(B), apart(sigma_rtP,D).coeff(D)],
[apart(sigma_ttN,A).coeff(A), apart(sigma_ttN,C).coeff(C),apart(sigma_ttN,B).coeff(B), apart(sigma_ttN,D).coeff(D)],
[apart(sigma_rtN,A).coeff(A), apart(sigma_rtN,C).coeff(C),apart(sigma_rtN,B).coeff(B), apart(sigma_rtN,D).coeff(D)]))
simplify(M)
rearranging M such that :
M[0,:] = M[0,:]+M[2,:]
M[1,:] = M[1,:]+M[3,:]
M[2,:] = M[2,:]-M[0,:]
M[3,:] = M[3,:]-M[1,:]
We arrivae at:
Ma = M.copy()
Ma[0,:] = M[0,:]+M[2,:]
Ma[1,:] = M[1,:]-M[3,:]
Ma[2,:] = M[2,:]-M[0,:]
Ma[3,:] = M[3,:]+M[1,:]
simplify(Ma)
Ma.det()
for:
the detreminant is always zero
We saw that the stress will behave as \(r^{\lambda -1}\) and the strain will follow the same power law.
This results in having the strain energy to be:
and for the energy to obtain a finite value we demand that \(2 \lambda >0\) leading to \( n \geq 1\)
LEt us now go row by row and look at the solutions for {A, B, C, D}
from the first row we obtain
for \(\lambda = 1,2,3....\infty\)
From the seond row we obtain
for \(\lambda = \frac{1}{2},\frac{3}{2},\frac{5}{2}....\infty\)
Similarly from the second bloc of M we obtain
for \(\lambda = \frac{1}{2},\frac{3}{2},\frac{5}{2}....\infty\)
and
for \(\lambda = 1,2,3....\infty\)
From the above solutions it is clear that we have two sets of solutions one for for \(\color{red}{\lambda = 1,2,3....\infty}\) for which
and one for \(\color{blue}{\lambda = \frac{1}{2},\frac{3}{2},\frac{5}{2}....\infty}\)
We can write to final solution as a superposition of the two such that
Looking for example at \(\sigma_{rr}\) it now reads (up to n=4) :
Restricting ourselves now to just one set of solutions such that \(\lambda = \frac{1}{2}\) we obtain:
Finally
Substituting \(\theta = 0\) we obtain :
\(\sigma_{\theta \theta}(r,0) = \frac{A_0}{2 \sqrt(r)}=\frac{K_{I}}{\sqrt{2 \pi r}}\) which leads us to the immediate conclusion that \(A_0 = \sqrt{\frac{2}{\pi}}K_{I}\)
and
\(\sigma_{r\theta}(r,0) = \frac{B_0}{2 \sqrt(r)}=\frac{K_{II}}{\sqrt{2 \pi r}}\) which leads us to the immediate conclusion that \(B_0 = \sqrt{\frac{2}{\pi}}K_{II}\)
Singular solution for mode I and II#
The singular stresses calculated for mode I and mode II are now given by :
Mode I stresses
Mode II stresses
The singular displacement field (mode I&II)#
The strains are found using the equations of elasticity (in this case for plane stress):
and from there we can intgerate to obtain the displacements
Mode I displacements (singular terms)
Mode II displacements (singular terms)
What about mode III?#
Im sure you will all be glad to know that mode III presents a much simpler solution.
We will denote the displacements in the \(x\) direction as \(u\), \(y\) direction as \(v\) and \(z\) direction as \(w\).
Next, using polar coordinates, we need to find \(w\) to satisfy :
and the B.C (traction free crack surfaces)
Assuming the displacements can be written as a seperable function \(w(r,\theta)=R(r)T(\theta)\).
Equation (16) now reads
A non trivial solution exist only for the case of \(\lambda ^2\) and thus
and (17) becomes :
the above set of equations leads to two solutions:
and finally
\(w(r,\theta) = \sum_{n=-\infty}^{n=\infty} A_nr^n \cos n \theta + B_n r^{n+ \frac{1}{2}} \sin \left ( \frac{1}{2}+n \right ) \theta\)
The stresses are now readily available by taking the appropriate drivatives :
As before, we demand that the strain energy will yiled a finite number. it is easy to show that for the limit of \(r \to 0\) , i.e. as we approach the crack tip, the strain energy
follow \(r^{2 \lambda}\) and as before we require that \(2 \lambda \geq 0\) leading to \(n \geq 0 \)
Taking a small shortcut we will define
and after substitution:
mode III stress
Summary - stress field#
So far, we have found the asymptotic solutions of the displacement and stress fields for the threee modes of fracture under linear elastic conditions: