Skip to main content

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

Python Python Package License: GPL v3+ GitHub Stars

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

Build the wheel for your platform (requires .NET SDK 10 + a C toolchain) and pip install it. On macOS/Linux:

./python/build_wheel.sh
pip install python/dist/geopack_2008-*.whl

On Windows (cmd):

.\python\build_wheel.bat
pip install python\dist\geopack_2008-*.whl

The scripts build the native library for the host platform only; for another OS/arch, build the wheel on that machine (NativeAOT does not cross-compile).

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

Uploaded Python 3Windows ARM64

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

Uploaded Python 3Windows x86-64

geopack_2008-2.2.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.2.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.2.1-py3-none-macosx_12_0_universal2.whl (678.9 kB view details)

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

File details

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

File metadata

  • Download URL: geopack_2008-2.2.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.2.1-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 3546fbd3b79e695c0973236e8bdf8215ee4fec1bf42d3295b7b9f007e480850e
MD5 a703836ca30f7e032ccd2381930e6ec2
BLAKE2b-256 e6f198068c1efc1a2c04f7cc9b647aaf8e95b5944527ae2730452eb4908444ff

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: geopack_2008-2.2.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.2.1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 b76bc43288ddfcb6c66718e15a189d6ab18bce8523814f79fc5d14f6e429e518
MD5 3ea7acc55732894e9cad6c9eee27067a
BLAKE2b-256 acfbfa3292996409b21ab1a97a7bb2e35388b03fb6de7da4067a592a8c7a2703

See more details on using hashes here.

Provenance

The following attestation bundles were made for geopack_2008-2.2.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.2.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.2.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 734d7f019e23f4acaaa499337d3f66404e6a31c1f25e80b3070279ec62aa98b0
MD5 80104d6f76718a64a5280e240d10a76c
BLAKE2b-256 64806024942802caede5d218dc2b2791fcb0e133976a5864ad80d5b169d71673

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for geopack_2008-2.2.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ebfd0c710d99735e5ce1dbeea8bbf4a15cd66dcc0adb3fef6f390e95e0ad25d6
MD5 251856d073f9aef62abb296b6da435d6
BLAKE2b-256 d6bfe216d71fa723fe8a19fb85d01c7fe9a79f63983736423ecf7b720288c52d

See more details on using hashes here.

Provenance

The following attestation bundles were made for geopack_2008-2.2.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.2.1-py3-none-macosx_12_0_universal2.whl.

File metadata

File hashes

Hashes for geopack_2008-2.2.1-py3-none-macosx_12_0_universal2.whl
Algorithm Hash digest
SHA256 c1619234f3850832d80c3c77b5d8e9a3e7a774450fdb468259286d80f19dd89b
MD5 867a75539392ac9c024ad979d7124813
BLAKE2b-256 271f8d5c828dcc3399a0ebed83e1f222c6ad02b18ba3637db7e494e30f3532e1

See more details on using hashes here.

Provenance

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

2.2.2

5 files

This release

2.2.1 This release

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