.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "api/gallery/geophysics/plot_14_king_hele_satellite_flattening.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_geophysics_plot_14_king_hele_satellite_flattening.py: King-Hele's flattening from satellite orbits (1958) =================================================== The equatorial bulge pulls on an inclined orbit and makes its node drift westward. Desmond King-Hele and Robert Merson timed the drift of Sputnik 2's orbit and found a J2 that gave a flattening of 1/298.3, not the 1/297 of the International Ellipsoid that surveyors had used since 1924. A few months of tracking one satellite had improved on two centuries of arc measurements. .. GENERATED FROM PYTHON SOURCE LINES 11-42 .. image-sg:: /api/gallery/geophysics/images/sphx_glr_plot_14_king_hele_satellite_flattening_001.png :alt: The bulge turns the orbit :srcset: /api/gallery/geophysics/images/sphx_glr_plot_14_king_hele_satellite_flattening_001.png :class: sphx-glr-single-img .. code-block:: Python import matplotlib.pyplot as plt import numpy as np from earthsciencekit.constants import OMEGA_EARTH from earthsciencekit.geophysics import centrifugal_ratio, flattening_from_j2, nodal_precession_rate from earthsciencekit.units import convert gm, a, b, j2 = 3.986004418e14, 6378137.0, 6356752.3, 1.08263e-3 perigee, apogee, inclination = 6378137.0 + 212e3, 6378137.0 + 1660e3, np.radians(65.33) # Sputnik 2 axis, eccentricity = (perigee + apogee) / 2, (apogee - perigee) / (apogee + perigee) observed = nodal_precession_rate(axis, eccentricity, inclination, j2, a, gm) recovered = observed / nodal_precession_rate(axis, eccentricity, inclination, 1, a, gm) flattening = flattening_from_j2(recovered, centrifugal_ratio(OMEGA_EARTH, a, gm / (a * b))) assert np.isclose(1 / flattening, 298.257, rtol=2e-3) and 1 / flattening - 297 > 1 per_day = convert(observed, "rad", "degree") * convert(1, "day", "s") assert -3.5 < per_day < -2 angle = np.linspace(0, np.pi, 181) fig, ax = plt.subplots() for height in [300e3, 1000e3, 3000e3]: rate = nodal_precession_rate(a + height, 0, angle, j2, a, gm) ax.plot( convert(angle, "rad", "degree"), convert(rate, "rad", "degree") * convert(1, "day", "s"), label=f"circular, {height / 1e3:.0f} km" ) ax.plot(convert(inclination, "rad", "degree"), per_day, "ko", label=f"Sputnik 2: f = 1/{1 / flattening:.1f}") ax.axhline(0, color="k", lw=0.5) ax.set(xlabel="inclination [degrees]", ylabel="nodal drift [degrees/day]", title="The bulge turns the orbit") ax.legend() plt.show() .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 0.098 seconds) .. _sphx_glr_download_api_gallery_geophysics_plot_14_king_hele_satellite_flattening.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/geophysics/plot_14_king_hele_satellite_flattening.ipynb :alt: Launch JupyterLite :width: 150 px .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_14_king_hele_satellite_flattening.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_14_king_hele_satellite_flattening.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: plot_14_king_hele_satellite_flattening.zip ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_