.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "api/gallery/materials/creep/plot_01_norton_creep.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_creep_plot_01_norton_creep.py: Norton's power-law creep (1929) =============================== Steam turbines of the 1920s ran hot enough for their steel to stretch slowly under constant load. Frederick Norton's *The Creep of Steel at High Temperatures* (1929) found that the steady creep rate rises as a power of stress, :math:`\dot\varepsilon = A\sigma^n`, with :math:`n` around 5. Its temperature dependence is thermally activated, :math:`e^{-Q/RT}`, with an activation energy close to that of self-diffusion (Dorn, 1950s) (:func:`~engineeringkit.materials.arrhenius_creep_rate`). The example recovers :math:`n` and :math:`Q` from simulated creep tests. .. GENERATED FROM PYTHON SOURCE LINES 17-23 .. code-block:: Python import matplotlib.pyplot as plt import numpy as np from engineeringkit.materials import arrhenius_creep_rate from engineeringkit.materials.utils import power_law_fit .. GENERATED FROM PYTHON SOURCE LINES 24-30 Creep tests at three temperatures --------------------------------- Minimum creep rates of a ferritic steel with :math:`n = 5` and :math:`Q = 280` kJ/mol, measured with 15% scatter at five stresses and three temperatures. .. GENERATED FROM PYTHON SOURCE LINES 30-37 .. code-block:: Python A, Q, R, n = 1.8e-32, 280e3, 8.314, 5.0 stresses = np.geomspace(60e6, 200e6, 5) temperatures = np.array([850.0, 900.0, 950.0]) rng = np.random.default_rng(11) rates = arrhenius_creep_rate(A, Q, R, temperatures[:, None], stresses[None, :], n) * rng.lognormal(0, 0.15, (3, 5)) .. GENERATED FROM PYTHON SOURCE LINES 38-44 The stress exponent and the activation energy --------------------------------------------- At each temperature the slope of :math:`\log\dot\varepsilon` against :math:`\log\sigma` is :math:`n`. At fixed stress the slope of :math:`\ln\dot\varepsilon` against :math:`1/T` is :math:`-Q/R`. .. GENERATED FROM PYTHON SOURCE LINES 44-62 .. code-block:: Python exponents = [power_law_fit(stresses, row)[1] for row in rates] slope = np.polyfit(1 / temperatures, np.log(rates).mean(axis=1), 1)[0] print(f"stress exponents {np.round(exponents, 2).tolist()}; activation energy {-slope * R / 1e3:.0f} kJ/mol") assert np.allclose(exponents, n, atol=0.4) and abs(-slope * R / Q - 1) < 0.05 life = 0.01 / arrhenius_creep_rate(A, Q, R, 850.0, 100e6, n) print(f"time to 1% creep strain at 850 K and 100 MPa: {life / 3600:.0f} h") fig, ax = plt.subplots(figsize=(6, 3.8)) for T, row in zip(temperatures, rates): ax.loglog(stresses / 1e6, row, "o", label=f"{T:.0f} K") ax.loglog(stresses / 1e6, arrhenius_creep_rate(A, Q, R, T, stresses, n), "k-", lw=0.8) ax.set(xlabel="stress [MPa]", ylabel="minimum creep rate [1/s]", title="Norton's law") ax.legend() fig.tight_layout() plt.show() .. image-sg:: /api/gallery/materials/creep/images/sphx_glr_plot_01_norton_creep_001.png :alt: Norton's law :srcset: /api/gallery/materials/creep/images/sphx_glr_plot_01_norton_creep_001.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none stress exponents [4.87, 4.88, 4.8]; activation energy 279 kJ/mol time to 1% creep strain at 850 K and 100 MPa: 2487 h .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 0.061 seconds) .. _sphx_glr_download_api_gallery_materials_creep_plot_01_norton_creep.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/creep/plot_01_norton_creep.ipynb :alt: Launch JupyterLite :width: 150 px .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_01_norton_creep.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_01_norton_creep.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: plot_01_norton_creep.zip ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_