.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "api/gallery/materials/fatigue/plot_04_coffin_manson.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_fatigue_plot_04_coffin_manson.py: Coffin and Manson: low-cycle fatigue (1954) =========================================== Nuclear plant and jet-engine parts heated and cooled a few thousand times fail by cycles of plastic strain, where Basquin's stress-life law is useless because the stress hardly changes. Louis Coffin (1954) and Samson Manson (1953-1954) independently found that the plastic strain amplitude follows its own power law, :math:`\Delta\varepsilon_p/2 = \varepsilon_f'(2N)^c` (:func:`~engineeringkit.materials.coffin_manson_cycles`). Added to Basquin's elastic line it gives the strain-life curve (:func:`~engineeringkit.materials.strain_life_amplitude`) used for notched parts today. .. GENERATED FROM PYTHON SOURCE LINES 17-23 .. code-block:: Python import matplotlib.pyplot as plt import numpy as np from scipy.optimize import brentq from engineeringkit.materials import basquin_cycles, coffin_manson_cycles, strain_life_amplitude .. GENERATED FROM PYTHON SOURCE LINES 24-30 The strain-life curve --------------------- For a quenched and tempered steel, :math:`\sigma_f' = 1100` MPa, :math:`b = -0.09`, :math:`\varepsilon_f' = 0.6`, :math:`c = -0.6`. Below the transition life plastic strain dominates; above it, elastic. .. GENERATED FROM PYTHON SOURCE LINES 30-39 .. code-block:: Python E, sf, b, ef, c = 200e9, 1100e6, -0.09, 0.6, -0.6 N = np.geomspace(10, 1e7, 300) total, elastic, plastic = strain_life_amplitude(N, E, sf, b, ef, c) Nt = 0.5 * (ef * E / sf) ** (1 / (b - c)) _, e_t, p_t = strain_life_amplitude(Nt, E, sf, b, ef, c) print(f"transition life {Nt:.0f} cycles, where both strains are {e_t:.5f}") assert np.isclose(e_t, p_t) .. rst-class:: sphx-glr-script-out .. code-block:: none transition life 4950 cycles, where both strains are 0.00240 .. GENERATED FROM PYTHON SOURCE LINES 40-46 Life at a given strain ---------------------- A part strained to :math:`\pm 0.8\%` fails in about 1300 cycles. Its plastic part alone, put through Coffin-Manson, and its elastic part, put through Basquin, give the same life. .. GENERATED FROM PYTHON SOURCE LINES 46-64 .. code-block:: Python target = 0.008 life = brentq(lambda n: strain_life_amplitude(n, E, sf, b, ef, c)[0] - target, 1, 1e8) _, e_life, p_life = strain_life_amplitude(life, E, sf, b, ef, c) print(f"strain amplitude {target}: {life:.0f} cycles (plastic {p_life:.5f}, elastic {e_life:.5f})") assert np.isclose(coffin_manson_cycles(p_life, ef, c), life) and np.isclose(basquin_cycles(e_life * E, sf, b), life) fig, ax = plt.subplots(figsize=(6, 3.8)) ax.loglog(2 * N, total, label="total") ax.loglog(2 * N, elastic, "--", label="elastic (Basquin)") ax.loglog(2 * N, plastic, "--", label="plastic (Coffin-Manson)") ax.axvline(2 * Nt, color="0.6", ls=":", label="transition") ax.plot(2 * life, target, "ko") ax.set(xlabel="reversals to failure 2N", ylabel="strain amplitude", title="Strain-life curve") ax.legend() fig.tight_layout() plt.show() .. image-sg:: /api/gallery/materials/fatigue/images/sphx_glr_plot_04_coffin_manson_001.png :alt: Strain-life curve :srcset: /api/gallery/materials/fatigue/images/sphx_glr_plot_04_coffin_manson_001.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none strain amplitude 0.008: 1327 cycles (plastic 0.00529, elastic 0.00271) .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 0.085 seconds) .. _sphx_glr_download_api_gallery_materials_fatigue_plot_04_coffin_manson.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/fatigue/plot_04_coffin_manson.ipynb :alt: Launch JupyterLite :width: 150 px .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_04_coffin_manson.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_04_coffin_manson.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: plot_04_coffin_manson.zip ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_