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 high-performance, 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).

  • High performance: native compiled code with SIMD vectorization and other optimized mathematical operations
  • 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.3.0-py3-none-win_arm64.whl (665.1 kB view details)

Uploaded Python 3Windows ARM64

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

Uploaded Python 3Windows x86-64

geopack_2008-2.3.0-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.3.0-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.3.0-py3-none-macosx_12_0_arm64.whl (678.9 kB view details)

Uploaded Python 3macOS 12.0+ ARM64

File details

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

File metadata

  • Download URL: geopack_2008-2.3.0-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.3.0-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 7147eaa27faa2251fd7af4c6fd2ae002a611d0c836d29b208818e5e1166a0b65
MD5 af1f886e9ab14bcbe974b30207946ea1
BLAKE2b-256 1231cd319e251b2bbee0eea5036618f3a2f5ad36943aa6bd3fe815e899c3806e

See more details on using hashes here.

Provenance

The following attestation bundles were made for geopack_2008-2.3.0-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.3.0-py3-none-win_amd64.whl.

File metadata

  • Download URL: geopack_2008-2.3.0-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.3.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 58eb7af9861f75589d04532e2a27f156fed6a418c98535c21db71b999972694c
MD5 cdeb19fa75abd95c1328e5400a7edae3
BLAKE2b-256 86fb59fd66154d22a2ad277fd09446e3584eb3ebe9183bf12950edebe0c8c801

See more details on using hashes here.

Provenance

The following attestation bundles were made for geopack_2008-2.3.0-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.3.0-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.3.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4f16b5e86d6553f94919750002e4d19a7769454141b4b6bf1bf247b29d49d1d1
MD5 b32ada07abb819b82fe06dc83441972d
BLAKE2b-256 ddb2965544a4d1c322fee1e7491ead4fdd37ea927498a97061af98667a3de77e

See more details on using hashes here.

Provenance

The following attestation bundles were made for geopack_2008-2.3.0-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.3.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for geopack_2008-2.3.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9f0222a0431aa1196d3fa232d909573e3cfab3eb4964486bca29c46f14e37975
MD5 ecda3b7ce3da467ae0187d5c6b0b8d9b
BLAKE2b-256 94cf8d93cda65456fe540469e8079a1786877ecae3efc38d66d89d7be07366f0

See more details on using hashes here.

Provenance

The following attestation bundles were made for geopack_2008-2.3.0-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.3.0-py3-none-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for geopack_2008-2.3.0-py3-none-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 2bae073ce2128803d5a8dfbe636ef67224edbee981d87ebd49eea6fe9762166d
MD5 559af0ac8b57d65a69d2ff5b806616b3
BLAKE2b-256 a790b0e0d00217863dba2f9b95310721ee24c200d849c667bace1e7aef5917bf

See more details on using hashes here.

Provenance

The following attestation bundles were made for geopack_2008-2.3.0-py3-none-macosx_12_0_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.

Release history Release notifications | RSS feed

2.3.1

5 files

This release

2.3.0 This release

5 files

2.2.5

5 files

2.2.3

5 files

2.2.2

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