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.1-py3-none-win_arm64.whl (665.1 kB view details)

Uploaded Python 3Windows ARM64

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

Uploaded Python 3Windows x86-64

geopack_2008-2.3.1-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.1-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.1-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.1-py3-none-win_arm64.whl.

File metadata

  • Download URL: geopack_2008-2.3.1-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.1-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 c8bfcf16314f6f347ae3028fc938cd4f6f3be44a383a1c2403346490238d456a
MD5 d10977c83bc8b91b1d9f424e279e21e1
BLAKE2b-256 04d8d35607bb8ac9779d6dea22db38f0f36ab041885c594e2c315dc21bc340d4

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: geopack_2008-2.3.1-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.1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 9188494aefc451d2bce10e3d8a0af89892d7b7c0ecdf84cd8a044c2ab7faf153
MD5 a69d46cf8b77489d5891f0f70426945d
BLAKE2b-256 cd3d681eaeec2cc324c467a068121e1d5337ee80928df9494be401430fba7164

See more details on using hashes here.

Provenance

The following attestation bundles were made for geopack_2008-2.3.1-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.1-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.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9670e56e467b1a8bf1310482e1e629b4a0d2bd3706e670d149e2de8e0926a9ad
MD5 9839011f935cb638c7209c5ba3d09802
BLAKE2b-256 f22eb3a64523f94869c98725e8c570885ef315c2dfd391235bfd8811dd3c0066

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for geopack_2008-2.3.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6c600e7bcba9edac7c9cb0e11b518d54bb775460c4159f64a80fdc7fd200426a
MD5 8d8195e7c494d7ed104aebe7bab221bc
BLAKE2b-256 b58bbb4df38b1b436a46aa30d23395763a358eb387bf6087ad149cddf0e9150d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for geopack_2008-2.3.1-py3-none-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 68cc2efd2172f1fd5bd3328320b69ac7bf00a2416f9d6b6e81a851de6bf17772
MD5 838d665ca5990a6cb9366fbfecb76c4a
BLAKE2b-256 2dc4ead221756610282a529a11dacf7026da177a3a2289873ccf36ca214396af

See more details on using hashes here.

Provenance

The following attestation bundles were made for geopack_2008-2.3.1-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

This release

2.3.1 This release

5 files

2.3.0

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