.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "api/gallery/reliability/acceleration/plot_02_eyring_activated_complex.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_reliability_acceleration_plot_02_eyring_activated_complex.py: Eyring's activated complex (1935) ================================= Henry Eyring (1935) derived reaction rates from statistical mechanics: reactants pass through an *activated complex*, and the rate is :math:`(k_B T/h)\,e^{-\Delta G^\ddagger/(k_B T)}`. The prefactor :math:`T` is absent from Arrhenius's empirical law. For life testing it means :math:`L \propto T^{-1}e^{E_a/(k_B T)}`, and an acceleration factor :math:`T_t/T_u` times the Arrhenius one (:func:`~engineeringkit.reliability.eyring_acceleration_factor`). The model extends naturally to non-thermal stresses such as voltage, here represented by the inverse power law (:func:`~engineeringkit.reliability.inverse_power_law_acceleration_factor`). .. GENERATED FROM PYTHON SOURCE LINES 18-29 .. code-block:: Python import matplotlib.pyplot as plt import numpy as np from scipy.constants import eV, k, zero_Celsius from engineeringkit.reliability import ( arrhenius_acceleration_factor, arrhenius_fit, eyring_acceleration_factor, inverse_power_law_acceleration_factor, ) .. GENERATED FROM PYTHON SOURCE LINES 30-36 Eyring versus Arrhenius on the same data ---------------------------------------- Lives that follow Eyring's law exactly with :math:`E_a` = 0.6 eV are fitted with Arrhenius's law. The fit absorbs the :math:`1/T` prefactor into a slightly larger activation energy, about :math:`k_B \bar T`. .. GENERATED FROM PYTHON SOURCE LINES 36-53 .. code-block:: Python energy = 0.6 * eV temperatures = zero_Celsius + np.array([85.0, 105.0, 125.0, 150.0]) lives = 1e-2 / temperatures * np.exp(energy / (k * temperatures)) arrhenius_energy, _ = arrhenius_fit(temperatures, lives) print(f"Eyring Ea = {energy / eV:.3f} eV; Arrhenius fit to the same lives: {arrhenius_energy / eV:.3f} eV") difference = (arrhenius_energy - energy) / eV * 1000 print(f"difference {difference:.1f} meV; k_B T at the mean test temperature {k * temperatures.mean() / eV * 1000:.1f} meV") use = zero_Celsius + 40.0 test = np.linspace(zero_Celsius + 60, zero_Celsius + 175, 100) fig, axes = plt.subplots(1, 2, figsize=(9, 3.5)) axes[0].semilogy(test - zero_Celsius, eyring_acceleration_factor(energy, use, test), label="Eyring, 0.6 eV") axes[0].semilogy(test - zero_Celsius, arrhenius_acceleration_factor(energy, use, test), "--", label="Arrhenius, 0.6 eV") axes[0].set(xlabel="test temperature [°C]", ylabel="acceleration factor (use 40 °C)") axes[0].legend() .. image-sg:: /api/gallery/reliability/acceleration/images/sphx_glr_plot_02_eyring_activated_complex_001.png :alt: plot 02 eyring activated complex :srcset: /api/gallery/reliability/acceleration/images/sphx_glr_plot_02_eyring_activated_complex_001.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none Eyring Ea = 0.600 eV; Arrhenius fit to the same lives: 0.634 eV difference 33.5 meV; k_B T at the mean test temperature 33.6 meV .. GENERATED FROM PYTHON SOURCE LINES 54-61 Combined temperature and voltage stress --------------------------------------- A generalised Eyring model multiplies a thermal factor by a stress factor. For a dielectric with life :math:`\propto V^{-n}`, :math:`n = 3`, testing at twice the rated voltage and 125 °C multiplies the thermal acceleration by :math:`2^3`. .. GENERATED FROM PYTHON SOURCE LINES 61-77 .. code-block:: Python voltage = np.linspace(1, 3, 50) for n in (2, 3, 5): axes[1].semilogy(voltage, inverse_power_law_acceleration_factor(1.0, voltage, n), label=f"n = {n}") axes[1].set(xlabel="test voltage / rated voltage", ylabel="voltage acceleration factor") axes[1].legend() fig.tight_layout() combined = eyring_acceleration_factor(energy, use, zero_Celsius + 125) * inverse_power_law_acceleration_factor(1.0, 2.0, 3) print(f"combined acceleration at 125 degC and twice rated voltage: {combined:.0f}") assert 0 < (arrhenius_energy - energy) / k < 1.2 * temperatures.mean() assert np.isclose(eyring_acceleration_factor(energy, use, test[-1]), arrhenius_acceleration_factor(energy, use, test[-1]) * test[-1] / use) assert np.isclose(inverse_power_law_acceleration_factor(1.0, 2.0, 3), 8.0) plt.show() .. rst-class:: sphx-glr-script-out .. code-block:: none combined acceleration at 125 degC and twice rated voltage: 1172 .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 0.126 seconds) .. _sphx_glr_download_api_gallery_reliability_acceleration_plot_02_eyring_activated_complex.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/reliability/acceleration/plot_02_eyring_activated_complex.ipynb :alt: Launch JupyterLite :width: 150 px .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_02_eyring_activated_complex.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_02_eyring_activated_complex.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: plot_02_eyring_activated_complex.zip ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_