Skip to main content

Geopack-2008 — GEOPACK-2008 geomagnetic field model for Python

Python Python Package License: GPL v3+ GitHub Stars PyPI

Geopack-2008 (imported as geopack) is a self-contained, zero-dependency Python package for the GEOPACK-2008 geomagnetic field model: the International Geomagnetic Reference Field (IGRF), the dipole field, the Tsyganenko (1989) external field model (T89), the Shue et al. (1998) and Tsyganenko (1996) magnetopause models, the Sun position computation, and the standard solar-terrestrial coordinate transforms (GEO, GSW, GSE, SM, MAG, GEI, GSM).

It is a Python binding over a C# port of GEOPACK-2008 compiled ahead-of-time with NativeAOT into a shared library (geopack.dylib / geopack.so / geopack.dll), loaded through ctypes from the Python standard library. No .NET runtime is required at runtime, and there are no Python dependencies (no NumPy/SciPy).

  • Double precision: accuracy matches the original Fortran code to 12–13 decimal digits
  • Standard library only — no third-party runtime dependencies
  • Thread-safe immutable computation contexts
  • Platform wheels for Linux (x64/arm64), Windows (x64/arm64) and macOS (arm64)

Install

pip install geopack-2008

Pre-built wheels are published to PyPI for Linux (x64/arm64, manylinux), Windows (x64/arm64) and macOS (arm64) — no .NET SDK or C toolchain required.

To build the wheel from source (e.g. for another platform or during development), see BUILDING.md.

Usage

import geopack

ctx = geopack.recalc(1997, 12, 16, 21, 0, 0, vx=-304, vy=13.78, vz=4)
b = ctx.igrf_gsw(1, 1, 1)     # (bx, by, bz) nT in GSW
r = ctx.gsw_to_geo(1, 1, 1)   # (x, y, z) Earth radii in GEO
ctx.close()

# A datetime works too, and contexts are context managers:
with geopack.recalc(datetime(1997, 12, 16, 21, 0), vx=-304, vy=13.78, vz=4) as ctx:
    b = ctx.igrf_gsw(1, 1, 1)

s = geopack.sun(1997, 12, 16, 21, 0, 0)   # (gst, slong, srasn, sdec), radians

mp = geopack.shu_mgnp(xn_pd=2.0, vel=400.0, bz_imf=0.0, x=10, y=0, z=0)
print(mp.boundary, mp.dist, mp.position)  # Vector3, float, MagnetopausePosition

# Tsyganenko (1989) external field — input GSW, output GSM (nT):
b = geopack.t89(iopt=3, psi=ctx.psi, x=-6.6, y=0, z=0)
b = ctx.t89(iopt=3, x=-6.6, y=0, z=0)     # psi defaults to ctx.psi

A runnable example with all of the above (sun position, IGRF/dipole fields, coordinate transforms, magnetopause models) is in python/example.py:

python3 python/example.py

Implemented models and coordinate systems

Category Model Python API
Internal field IGRF (geomagnetic main field) Context.igrf_gsw, Context.igrf_geo
Internal field Dipole Context.dip
External field Tsyganenko (1989) — T89 Context.t89, geopack.t89
Magnetopause Shue et al. (1998) geopack.shu_mgnp
Magnetopause Tsyganenko (1996) geopack.t96_mgnp
Sun position Greenwich sidereal time, solar ephemeris geopack.sun

Supported coordinate systems (see CoordinateSystem): GEO (geographic), GSW (geocentric solar wind), GSE (geocentric solar ecliptic), SM (solar magnetic), MAG (geomagnetic), GEI (geocentric solar equatorial inertial) and GSM (geocentric solar magnetospheric).

API

All coordinates are in Earth radii; magnetic fields are in nT; angles are in radians; solar wind velocity is in km/s.

  • recalc(date_or_year, month=None, day=None, hour=0, minute=0, second=0, vx=-400, vy=0, vz=0) -> Context
  • Context methods:
    • fields: igrf_gsw(x,y,z), dip(x,y,z), igrf_geo(r,theta,phi), t89(iopt,x,y,z, psi=None), property psi (dipole tilt, radians)
    • transforms: gsw_to_gse, gse_to_gsw, geo_to_mag, mag_to_geo, gei_to_geo, geo_to_gei, mag_to_sm, sm_to_mag, sm_to_gsw, gsw_to_sm, geo_to_gsw, gsw_to_geo — each (x,y,z) -> (x,y,z)
    • lifecycle: close(), context manager
  • sun(...) -> Sun(gst, slong, srasn, sdec) — no context needed
  • shu_mgnp(xn_pd, vel, bz_imf, x, y, z) and t96_mgnp(xn_pd, vel, x, y, z) return MagnetopauseResult(boundary, dist, position) — no context needed
  • t89(iopt, psi, x, y, z, parmod=None) -> Vector3 — Tsyganenko (1989) external field, input GSW, output GSM (nT); parmod is a dummy accepted for parity with the .NET IT89.Calculate contract (unused) — no context needed

GEOPACK_LIBRARY environment variable points the loader at a specific library path if the packaged one is not present.

How to Cite

If you use this software in your research, please cite it — see the How to Cite section of the main repository README (APA and BibTeX entries with a Zenodo DOI).

References

The implementation is based on the GEOPACK-2008 library and the following scientific works:

  1. Tsyganenko, N. A. (1989). A magnetospheric magnetic field model with a warped tail current sheet. Planetary and Space Science, 37(1), 5–20. https://doi.org/10.1016/0032-0633(89)90066-4

  2. Tsyganenko, N. A. (1996). Effects of the solar wind conditions on the global magnetospheric configuration as deduced from data-based field models. ESA SP-389, 181–185.

  3. Shue, J.-H., et al. (1998). Magnetopause location under extreme solar wind conditions. Journal of Geophysical Research, 103(A8), 17691–17700. https://doi.org/10.1029/98JA01103

  4. Hapgood, M. A. (1992). Space physics coordinate transformations: A user guide. Planetary and Space Science, 40(5), 711–717. https://doi.org/10.1016/0032-0633(92)90012-D

  5. Tsyganenko, N. A. (2002). A model of the near magnetosphere with a dawn-dusk asymmetry 1. Mathematical structure. Journal of Geophysical Research, 107(A8). https://doi.org/10.1029/2001JA000219

  6. Tsyganenko, N. A., & Sitnov, M. I. (2005). Modeling the dynamics of the inner magnetosphere during strong geomagnetic storms. Journal of Geophysical Research: Space Physics, 110(A3), A03208. https://doi.org/10.1029/2004JA010798

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

geopack_2008-2.2.2-py3-none-win_arm64.whl (665.1 kB view details)

Uploaded Python 3Windows ARM64

geopack_2008-2.2.2-py3-none-win_amd64.whl (711.5 kB view details)

Uploaded Python 3Windows x86-64

geopack_2008-2.2.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl (737.8 kB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

geopack_2008-2.2.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl (698.7 kB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

geopack_2008-2.2.2-py3-none-macosx_12_0_universal2.whl (678.8 kB view details)

Uploaded Python 3macOS 12.0+ universal2 (ARM64, x86-64)

File details

Details for the file geopack_2008-2.2.2-py3-none-win_arm64.whl.

File metadata

  • Download URL: geopack_2008-2.2.2-py3-none-win_arm64.whl
  • Upload date:
  • Size: 665.1 kB
  • Tags: Python 3, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for geopack_2008-2.2.2-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 45f2932e5b53021cb4b585bb0bcd5e781e210647b310c7ff57745783bf8172a5
MD5 14066c26df2f3a57f1b1131138077e6e
BLAKE2b-256 fa78c93a511a3ab6a8044c88fbb1797c0bdfc404a2a7dbc708a4d6c222f31c21

See more details on using hashes here.

Provenance

The following attestation bundles were made for geopack_2008-2.2.2-py3-none-win_arm64.whl:

Publisher: python-package.yml on Aurora-Science-Hub/Geopack

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file geopack_2008-2.2.2-py3-none-win_amd64.whl.

File metadata

  • Download URL: geopack_2008-2.2.2-py3-none-win_amd64.whl
  • Upload date:
  • Size: 711.5 kB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for geopack_2008-2.2.2-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 2cb8a0b066e8f44675b99e48df7408ed0c2181585a5e038ddf8b3baebeb406f3
MD5 b900f96fc02825aaa91c409176820c4e
BLAKE2b-256 f78b67726bf954eb41a299719ff392707cd5b9c7e23ba75331380914fd16c5ce

See more details on using hashes here.

Provenance

The following attestation bundles were made for geopack_2008-2.2.2-py3-none-win_amd64.whl:

Publisher: python-package.yml on Aurora-Science-Hub/Geopack

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file geopack_2008-2.2.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for geopack_2008-2.2.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d0d9ed5880aa416ead3129de2a906eab31ca87b3a8afb4c9d885b8bfc58abf5e
MD5 5a7d17106cf2d1c4273503e4c3c6f2eb
BLAKE2b-256 0c28e1b8d4662f24b85aeb2efe7116d4001c446761759a305291b26902c20aa3

See more details on using hashes here.

Provenance

The following attestation bundles were made for geopack_2008-2.2.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl:

Publisher: python-package.yml on Aurora-Science-Hub/Geopack

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file geopack_2008-2.2.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for geopack_2008-2.2.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ea5a1ce552a7cbbcff9cacdf1aa11e06fc818dc22553f07e4fd503b18b85c6d0
MD5 ece39576558d4b807eeff1c7ea050736
BLAKE2b-256 6a282d7a3126c932492fe28ef09384aa96c6dbc4d1dab79de1f7313b1c0637c3

See more details on using hashes here.

Provenance

The following attestation bundles were made for geopack_2008-2.2.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl:

Publisher: python-package.yml on Aurora-Science-Hub/Geopack

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file geopack_2008-2.2.2-py3-none-macosx_12_0_universal2.whl.

File metadata

File hashes

Hashes for geopack_2008-2.2.2-py3-none-macosx_12_0_universal2.whl
Algorithm Hash digest
SHA256 083b30a3e3925df4988c550da0e2510ee1b80f71dce1ca305da2631b131f763e
MD5 c127babf52564aac6e24419209c4ae3b
BLAKE2b-256 41e7a971abe12c0eafca9946bb3ee016b09420eaf654d85120cc5659c24a3371

See more details on using hashes here.

Provenance

The following attestation bundles were made for geopack_2008-2.2.2-py3-none-macosx_12_0_universal2.whl:

Publisher: python-package.yml on Aurora-Science-Hub/Geopack

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

2.3.1

5 files

2.3.0

5 files

2.2.5

5 files

2.2.3

5 files

This release

2.2.2 This release

5 files

2.2.1

5 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page