cheatah
Struct

space::irbem::DipoleCoefficients

cheatah-space v0.1.0-alpha — Biome Standard 0.6.5-alpha

The degree-1 IGRF Gauss coefficients — the centred geomagnetic dipole for one epoch.

The IGRF table itself is owned elsewhere; this is the three numbers the frame definitions actually need, in nanotesla, at the epoch of interest (interpolated or extrapolated by whoever owns the table).

Functions

fn double moment_nt() const #

The dipole moment magnitude B₀ = √(g₁⁰² + g₁¹² + h₁¹²), the field strength the centred dipole would produce at the magnetic equator on the reference sphere.

Returns

B₀ in nanotesla; ~30 000 nT for the present-day Earth.

Complexity

O(1).

Allocation

none.

fn fixarray::vec3d axis_geo() const #

The dipole axis in GEO, as a unit vector pointing toward the NORTH geomagnetic pole — the +Z axis of both Frame::MAG and Frame::SM.

Derivation, so the sign is checkable rather than folklore. The geomagnetic scalar potential's degree-1 part is V = a·(a/r)²·[ g₁⁰·cos θ + (g₁¹·cos φ + h₁¹·sin φ)·sin θ ]

and substituting cos θ = z/r, sin θ cos φ = x/r, sin θ sin φ = y/r collapses it to V = a³ (m⃗ · r⃗)/r³ with m⃗ = (g₁¹, h₁¹, g₁⁰). That m⃗ is the physical dipole moment, and because g₁⁰ is negative it points into the southern hemisphere — which is exactly why the Earth's "north magnetic pole" is a magnetic south pole. The geomagnetic frames orient their +Z along the pole in the NORTHERN hemisphere, so the axis is −m⃗, normalized.

Returns

the unit vector (−g₁¹, −h₁¹, −g₁⁰)/B₀ in geographic Cartesian coordinates.

Complexity

O(1).

Allocation

none.

fn double north_pole_latitude_deg() const #

The GEOCENTRIC geographic latitude of the north geomagnetic pole.

Note

Published pole positions are usually GEODETIC. At these latitudes the two differ by about 0.066°, which is exactly the gap between the value returned here and the commonly quoted one (80.589° geocentric against 80.65° geodetic for IGRF-13 2020, 80.313° against 80.37° for DGRF 2015). Nothing in this header wants a geodetic angle — the frames are geocentric — so no conversion is done, but the difference is real and must not be mistaken for an error in the coefficients.

Returns

degrees, north positive; 80.589° for the IGRF-13 2020 epoch.

Complexity

O(1).

Allocation

none.

fn double north_pole_longitude_deg() const #

The geographic east longitude of the north geomagnetic pole.

Note

Undefined for an exactly axial dipole (g₁¹ = h₁¹ = 0), where the pole sits on the rotation axis and has no longitude at all; atan2 of two signed zeros then returns −180°. No IGRF epoch has both coefficients exactly zero, so no branch is spent on it.

Returns

degrees in (-180, 180], east positive; −72.680° for the IGRF-13 2020 epoch.

Complexity

O(1).

Allocation

none.

Constants & variables

var double g10 #

The axial dipole coefficient g₁⁰, in nT. Negative for the present-day Earth.

var double g11 #

The equatorial dipole coefficient g₁¹, in nT.

var double h11 #

The equatorial dipole coefficient h₁¹, in nT.