.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "api/gallery/glaciology/plot_16_schoof_grounding_line_flux.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_glaciology_plot_16_schoof_grounding_line_flux.py: Schoof's grounding-line flux (2007) =================================== Christian Schoof resolved the boundary layer where a sliding ice sheet meets its shelf and found that the flux across the grounding line is a power of the flotation thickness, about 4.75 for Glen's n = 3 and a sliding exponent of 1/3. A grounding line is steady where this flux equals the snowfall upstream, and stable only where the bed rises inland. On an overdeepened bed the steady states come in pairs, and the inner one is unstable. .. GENERATED FROM PYTHON SOURCE LINES 12-43 .. image-sg:: /api/gallery/glaciology/images/sphx_glr_plot_16_schoof_grounding_line_flux_001.png :alt: An overdeepened marine bed, Schoof: filled stable, open unstable :srcset: /api/gallery/glaciology/images/sphx_glr_plot_16_schoof_grounding_line_flux_001.png :class: sphx-glr-single-img .. code-block:: Python import matplotlib.pyplot as plt import numpy as np from earthsciencekit.constants import GRAVITY, ICE_DENSITY, SECONDS_PER_YEAR from earthsciencekit.glaciology import flotation_thickness, schoof_grounding_line_flux parameters = (2.4e-25, 3, 7.6e6, 1 / 3, ICE_DENSITY, 1028, GRAVITY) x = np.linspace(100e3, 1400e3, 1301) bed_depth = 200 + 700 * np.exp(-(((x - 800e3) / 250e3) ** 2)) + 2e-4 * x # an overdeepening flux = schoof_grounding_line_flux(flotation_thickness(bed_depth, ICE_DENSITY, 1028), *parameters) supply = 0.2 / SECONDS_PER_YEAR * x ratio = schoof_grounding_line_flux(2000, *parameters) / schoof_grounding_line_flux(1000, *parameters) assert np.isclose(ratio, 2**4.75) imbalance = flux - supply crossings = np.flatnonzero(np.diff(np.sign(imbalance))) stable = np.gradient(imbalance, x)[crossings] > 0 assert crossings.size >= 2 and stable.any() and not stable.all() fig, (top, bottom) = plt.subplots(2, 1, figsize=(8, 7), sharex=True) top.plot(x / 1e3, -bed_depth, color="saddlebrown") top.set(ylabel="bed elevation [m]", title="An overdeepened marine bed") bottom.semilogy(x / 1e3, flux * SECONDS_PER_YEAR / 1e6, label="grounding-line flux") bottom.semilogy(x / 1e3, supply * SECONDS_PER_YEAR / 1e6, "k--", label="snowfall upstream") for index, ok in zip(crossings, stable): bottom.plot(x[index] / 1e3, supply[index] * SECONDS_PER_YEAR / 1e6, "o", color="k", mfc="k" if ok else "white") bottom.set(xlabel="grounding-line position [km]", ylabel="flux [km^2/year]", title="Schoof: filled stable, open unstable") bottom.legend() fig.tight_layout() plt.show() .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 0.264 seconds) .. _sphx_glr_download_api_gallery_glaciology_plot_16_schoof_grounding_line_flux.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/glaciology/plot_16_schoof_grounding_line_flux.ipynb :alt: Launch JupyterLite :width: 150 px .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_16_schoof_grounding_line_flux.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_16_schoof_grounding_line_flux.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: plot_16_schoof_grounding_line_flux.zip ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_