kinavis-wmm 0.1.0

The World Magnetic Model as a magnetic model port for the KINAVIS navigation crates, without an allocator.
Documentation
//! WMM-2025 coefficients (NOAA/NCEI, British Geological Survey).
//!
//! Generated from `WMM.COF` (header `2025.0  WMM-2025  11/13/2024`); the file
//! is authoritative. Row: degree `n`, order `m`, Gauss coefficients `g`, `h` in
//! nT at the epoch, secular variation in nT/year.

use crate::Coefficient;

/// Model epoch, decimal year.
pub(crate) const EPOCH: f64 = 2025.0;

/// Model name from the coefficient file header.
pub(crate) const NAME: &str = "WMM-2025";

/// Main field and secular variation, degrees 1 to 12.
pub(crate) const COEFFICIENTS: [Coefficient; 90] = [
    Coefficient::new(1, 0, -29351.8, 0.0, 12.0, 0.0),
    Coefficient::new(1, 1, -1410.8, 4545.4, 9.7, -21.5),
    Coefficient::new(2, 0, -2556.6, 0.0, -11.6, 0.0),
    Coefficient::new(2, 1, 2951.1, -3133.6, -5.2, -27.7),
    Coefficient::new(2, 2, 1649.3, -815.1, -8.0, -12.1),
    Coefficient::new(3, 0, 1361.0, 0.0, -1.3, 0.0),
    Coefficient::new(3, 1, -2404.1, -56.6, -4.2, 4.0),
    Coefficient::new(3, 2, 1243.8, 237.5, 0.4, -0.3),
    Coefficient::new(3, 3, 453.6, -549.5, -15.6, -4.1),
    Coefficient::new(4, 0, 895.0, 0.0, -1.6, 0.0),
    Coefficient::new(4, 1, 799.5, 278.6, -2.4, -1.1),
    Coefficient::new(4, 2, 55.7, -133.9, -6.0, 4.1),
    Coefficient::new(4, 3, -281.1, 212.0, 5.6, 1.6),
    Coefficient::new(4, 4, 12.1, -375.6, -7.0, -4.4),
    Coefficient::new(5, 0, -233.2, 0.0, 0.6, 0.0),
    Coefficient::new(5, 1, 368.9, 45.4, 1.4, -0.5),
    Coefficient::new(5, 2, 187.2, 220.2, 0.0, 2.2),
    Coefficient::new(5, 3, -138.7, -122.9, 0.6, 0.4),
    Coefficient::new(5, 4, -142.0, 43.0, 2.2, 1.7),
    Coefficient::new(5, 5, 20.9, 106.1, 0.9, 1.9),
    Coefficient::new(6, 0, 64.4, 0.0, -0.2, 0.0),
    Coefficient::new(6, 1, 63.8, -18.4, -0.4, 0.3),
    Coefficient::new(6, 2, 76.9, 16.8, 0.9, -1.6),
    Coefficient::new(6, 3, -115.7, 48.8, 1.2, -0.4),
    Coefficient::new(6, 4, -40.9, -59.8, -0.9, 0.9),
    Coefficient::new(6, 5, 14.9, 10.9, 0.3, 0.7),
    Coefficient::new(6, 6, -60.7, 72.7, 0.9, 0.9),
    Coefficient::new(7, 0, 79.5, 0.0, -0.0, 0.0),
    Coefficient::new(7, 1, -77.0, -48.9, -0.1, 0.6),
    Coefficient::new(7, 2, -8.8, -14.4, -0.1, 0.5),
    Coefficient::new(7, 3, 59.3, -1.0, 0.5, -0.8),
    Coefficient::new(7, 4, 15.8, 23.4, -0.1, 0.0),
    Coefficient::new(7, 5, 2.5, -7.4, -0.8, -1.0),
    Coefficient::new(7, 6, -11.1, -25.1, -0.8, 0.6),
    Coefficient::new(7, 7, 14.2, -2.3, 0.8, -0.2),
    Coefficient::new(8, 0, 23.2, 0.0, -0.1, 0.0),
    Coefficient::new(8, 1, 10.8, 7.1, 0.2, -0.2),
    Coefficient::new(8, 2, -17.5, -12.6, 0.0, 0.5),
    Coefficient::new(8, 3, 2.0, 11.4, 0.5, -0.4),
    Coefficient::new(8, 4, -21.7, -9.7, -0.1, 0.4),
    Coefficient::new(8, 5, 16.9, 12.7, 0.3, -0.5),
    Coefficient::new(8, 6, 15.0, 0.7, 0.2, -0.6),
    Coefficient::new(8, 7, -16.8, -5.2, -0.0, 0.3),
    Coefficient::new(8, 8, 0.9, 3.9, 0.2, 0.2),
    Coefficient::new(9, 0, 4.6, 0.0, -0.0, 0.0),
    Coefficient::new(9, 1, 7.8, -24.8, -0.1, -0.3),
    Coefficient::new(9, 2, 3.0, 12.2, 0.1, 0.3),
    Coefficient::new(9, 3, -0.2, 8.3, 0.3, -0.3),
    Coefficient::new(9, 4, -2.5, -3.3, -0.3, 0.3),
    Coefficient::new(9, 5, -13.1, -5.2, 0.0, 0.2),
    Coefficient::new(9, 6, 2.4, 7.2, 0.3, -0.1),
    Coefficient::new(9, 7, 8.6, -0.6, -0.1, -0.2),
    Coefficient::new(9, 8, -8.7, 0.8, 0.1, 0.4),
    Coefficient::new(9, 9, -12.9, 10.0, -0.1, 0.1),
    Coefficient::new(10, 0, -1.3, 0.0, 0.1, 0.0),
    Coefficient::new(10, 1, -6.4, 3.3, 0.0, 0.0),
    Coefficient::new(10, 2, 0.2, 0.0, 0.1, -0.0),
    Coefficient::new(10, 3, 2.0, 2.4, 0.1, -0.2),
    Coefficient::new(10, 4, -1.0, 5.3, -0.0, 0.1),
    Coefficient::new(10, 5, -0.6, -9.1, -0.3, -0.1),
    Coefficient::new(10, 6, -0.9, 0.4, 0.0, 0.1),
    Coefficient::new(10, 7, 1.5, -4.2, -0.1, 0.0),
    Coefficient::new(10, 8, 0.9, -3.8, -0.1, -0.1),
    Coefficient::new(10, 9, -2.7, 0.9, -0.0, 0.2),
    Coefficient::new(10, 10, -3.9, -9.1, -0.0, -0.0),
    Coefficient::new(11, 0, 2.9, 0.0, 0.0, 0.0),
    Coefficient::new(11, 1, -1.5, 0.0, -0.0, -0.0),
    Coefficient::new(11, 2, -2.5, 2.9, 0.0, 0.1),
    Coefficient::new(11, 3, 2.4, -0.6, 0.0, -0.0),
    Coefficient::new(11, 4, -0.6, 0.2, 0.0, 0.1),
    Coefficient::new(11, 5, -0.1, 0.5, -0.1, -0.0),
    Coefficient::new(11, 6, -0.6, -0.3, 0.0, -0.0),
    Coefficient::new(11, 7, -0.1, -1.2, -0.0, 0.1),
    Coefficient::new(11, 8, 1.1, -1.7, -0.1, -0.0),
    Coefficient::new(11, 9, -1.0, -2.9, -0.1, 0.0),
    Coefficient::new(11, 10, -0.2, -1.8, -0.1, 0.0),
    Coefficient::new(11, 11, 2.6, -2.3, -0.1, 0.0),
    Coefficient::new(12, 0, -2.0, 0.0, 0.0, 0.0),
    Coefficient::new(12, 1, -0.2, -1.3, 0.0, -0.0),
    Coefficient::new(12, 2, 0.3, 0.7, -0.0, 0.0),
    Coefficient::new(12, 3, 1.2, 1.0, -0.0, -0.1),
    Coefficient::new(12, 4, -1.3, -1.4, -0.0, 0.1),
    Coefficient::new(12, 5, 0.6, -0.0, -0.0, -0.0),
    Coefficient::new(12, 6, 0.6, 0.6, 0.1, -0.0),
    Coefficient::new(12, 7, 0.5, -0.1, -0.0, -0.0),
    Coefficient::new(12, 8, -0.1, 0.8, 0.0, 0.0),
    Coefficient::new(12, 9, -0.4, 0.1, 0.0, -0.0),
    Coefficient::new(12, 10, -0.2, -1.0, -0.1, -0.0),
    Coefficient::new(12, 11, -1.3, 0.1, -0.0, 0.0),
    Coefficient::new(12, 12, -0.7, 0.2, -0.1, -0.1),
];