.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "api/gallery/seismology/plot_05_reid_elastic_rebound.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_seismology_plot_05_reid_elastic_rebound.py: Reid's elastic rebound (1910) ============================= From survey lines across the San Andreas fault before and after 1906, Harry Fielding Reid argued that the crust bends elastically while the fault is locked and springs back when it slips. Here a fault locked for 100 years stores the far-field motion as strain. At failure the stored offset is released in seconds, modelled as a damped oscillator returning to equilibrium. .. GENERATED FROM PYTHON SOURCE LINES 11-40 .. image-sg:: /api/gallery/seismology/images/sphx_glr_plot_05_reid_elastic_rebound_001.png :alt: Strain builds while the fault is locked, Elastic rebound in seconds :srcset: /api/gallery/seismology/images/sphx_glr_plot_05_reid_elastic_rebound_001.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none slip released per event: 3.50 m | .. code-block:: Python import matplotlib.pyplot as plt import numpy as np from earthsciencekit.seismology import simulate_oscillator from earthsciencekit.units import convert rate = convert(3.5, "cm/year", "m/s") recurrence = convert(100, "year", "s") years = np.linspace(0, 300, 3001) loading = convert(years, "year", "s") slip_deficit = rate * np.mod(loading, recurrence) stored = rate * recurrence print(f"slip released per event: {stored:.2f} m") # Coseismic rebound: the stored offset relaxes about the new equilibrium. time = np.linspace(0, 10, 1001) rebound = simulate_oscillator(0.5, 1.0, time, displacement=stored) assert abs(rebound.values[-1, 0]) < 1e-3 * stored assert np.isclose(rebound.values[0, 0], stored) fig, axes = plt.subplots(1, 2, figsize=(10, 3.5)) axes[0].plot(years, slip_deficit) axes[0].set(xlabel="time [year]", ylabel="elastic offset stored [m]", title="Strain builds while the fault is locked") axes[1].plot(time, rebound.values[:, 0]) axes[1].set(xlabel="time after rupture [s]", ylabel="offset still to release [m]", title="Elastic rebound in seconds") fig.tight_layout() plt.show() .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 0.260 seconds) .. _sphx_glr_download_api_gallery_seismology_plot_05_reid_elastic_rebound.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/seismology/plot_05_reid_elastic_rebound.ipynb :alt: Launch JupyterLite :width: 150 px .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_05_reid_elastic_rebound.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_05_reid_elastic_rebound.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: plot_05_reid_elastic_rebound.zip ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_