.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "api/gallery/materials/fracture/plot_01_griffith_fracture.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code or to run this example in your browser via JupyterLite. .. rst-class:: sphx-glr-example-title .. _sphx_glr_api_gallery_materials_fracture_plot_01_griffith_fracture.py: Griffith's theory of brittle fracture (1920) ============================================ Glass should be as strong as its atomic bonds, about :math:`E/10`, yet it breaks at a few hundredths of that. Alan Arnold Griffith (paper read in 1920, published 1921) blamed small cracks. A crack of half-length :math:`a` in a plate under stress :math:`\sigma` releases elastic energy :math:`\pi\sigma^2a^2/E` per unit thickness and costs surface energy :math:`4a\gamma_s`. It grows when the release outpaces the cost, at :math:`\sigma_f = \sqrt{2E\gamma_s/\pi a}` (:func:`~engineeringkit.materials.griffith_fracture_stress`). Griffith confirmed it on glass bulbs and tubes with scratches of known size, and drawing fresh glass fibres showed strengths approaching the theoretical value. .. GENERATED FROM PYTHON SOURCE LINES 19-24 .. code-block:: Python import matplotlib.pyplot as plt import numpy as np from engineeringkit.materials import griffith_fracture_stress .. GENERATED FROM PYTHON SOURCE LINES 25-32 The energy balance ------------------ At fixed stress the total energy :math:`U(a) = 4a\gamma_s - \pi\sigma^2a^2/E` has a maximum. A crack shorter than the maximum would need energy to grow; a longer one runs. The maximum lies exactly where Griffith's stress equals the applied stress. .. GENERATED FROM PYTHON SOURCE LINES 32-41 .. code-block:: Python E, gamma = 70e9, 1.0 sigma = 100e6 a = np.linspace(1e-7, 2e-5, 4001) U = 4 * a * gamma - np.pi * sigma**2 * a**2 / E a_peak = a[np.argmax(U)] print(f"at {sigma / 1e6:.0f} MPa the energy peaks at a = {1e6 * a_peak:.2f} um") assert np.isclose(griffith_fracture_stress(E, gamma, a_peak), sigma, rtol=1e-3) .. rst-class:: sphx-glr-script-out .. code-block:: none at 100 MPa the energy peaks at a = 4.46 um .. GENERATED FROM PYTHON SOURCE LINES 42-48 Strength against flaw size -------------------------- Strength falls as :math:`1/\sqrt a`. A flaw of a few nanometres is needed to reach the ideal strength; scratches of a few micrometres bring glass down to the 100 MPa range measured in practice. .. GENERATED FROM PYTHON SOURCE LINES 48-66 .. code-block:: Python flaws = np.geomspace(1e-9, 1e-3, 200) strength = griffith_fracture_stress(E, gamma, flaws) ideal = E / 10 print(f"1 um flaw: {griffith_fracture_stress(E, gamma, 1e-6) / 1e6:.0f} MPa; ideal strength {ideal / 1e9:.0f} GPa") assert np.allclose(strength * np.sqrt(flaws), strength[0] * np.sqrt(flaws[0])) fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(9.5, 3.8)) ax1.plot(1e6 * a, U * 1e6) ax1.axvline(1e6 * a_peak, color="0.6", ls=":") ax1.set(xlabel="crack half-length [um]", ylabel="energy [uJ/m]", title=f"Energy balance at {sigma / 1e6:.0f} MPa") ax2.loglog(1e6 * flaws, strength / 1e6, label="Griffith") ax2.axhline(ideal / 1e6, color="k", ls="--", label="ideal, E/10") ax2.set(xlabel="crack half-length [um]", ylabel="fracture stress [MPa]", title="Glass") ax2.legend() fig.tight_layout() plt.show() .. image-sg:: /api/gallery/materials/fracture/images/sphx_glr_plot_01_griffith_fracture_001.png :alt: Energy balance at 100 MPa, Glass :srcset: /api/gallery/materials/fracture/images/sphx_glr_plot_01_griffith_fracture_001.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none 1 um flaw: 211 MPa; ideal strength 7 GPa .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 0.097 seconds) .. _sphx_glr_download_api_gallery_materials_fracture_plot_01_griffith_fracture.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: lite-badge .. image:: images/jupyterlite_badge_logo.svg :target: ../../../../lite/lab/index.html?path=api/gallery/materials/fracture/plot_01_griffith_fracture.ipynb :alt: Launch JupyterLite :width: 150 px .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_01_griffith_fracture.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_01_griffith_fracture.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: plot_01_griffith_fracture.zip ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_