spacelab-eop 0.3.0

IERS Earth-orientation parameters: parsing, provenance, interpolation
Documentation
//! IERS 2010 sub-daily EOP coefficient tables — GENERATED, do not edit by hand.
//!
//! Emitted by `derivations/eop_subdaily.py`, which transcribes the tables from the IERS
//! Conventions software (ORTHO_EOP/CNMTX, PMSDNUT2, UTLIBR) and certifies the whole model
//! against each routine's official test case before writing this file. Regenerate with
//! `./derivations/eop_subdaily.py --emit`. See `subdaily.rs` for the model and provenance.
#![allow(
    clippy::unreadable_literal,
    clippy::excessive_precision,
    clippy::approx_constant,
    clippy::doc_markdown
)]

/// PMSDNUT2 (Table 5.1a): (multipliers, xs, xc, ys, yc) in microarcseconds.
pub(crate) const PMSDNUT2: [([i8; 6], f64, f64, f64, f64); 10] = [
    ([1, -1, 0, -2, 0, -1], -0.4, 0.3, -0.3, -0.4),
    ([1, -1, 0, -2, 0, -2], -2.3, 1.3, -1.3, -2.3),
    ([1, 1, 0, -2, -2, -2], -0.4, 0.3, -0.3, -0.4),
    ([1, 0, 0, -2, 0, -1], -2.1, 1.2, -1.2, -2.1),
    ([1, 0, 0, -2, 0, -2], -11.4, 6.5, -6.5, -11.4),
    ([1, -1, 0, 0, 0, 0], 0.8, -0.5, 0.5, 0.8),
    ([1, 0, 0, -2, 2, -2], -4.8, 2.7, -2.7, -4.8),
    ([1, 0, 0, 0, 0, 0], 14.3, -8.2, 8.2, 14.3),
    ([1, 0, 0, 0, 0, -1], 1.9, -1.1, 1.1, 1.9),
    ([1, 1, 0, 0, 0, 0], 0.8, -0.4, 0.4, 0.8),
];

/// UTLIBR (Table 5.1b): (multipliers, dut1s, dut1c, dlods, dlodc), us and us/day.
pub(crate) const UTLIBR: [([i8; 6], f64, f64, f64, f64); 11] = [
    ([2, -2, 0, -2, 0, -2], 0.05, -0.03, -0.3, -0.6),
    ([2, 0, 0, -2, -2, -2], 0.06, -0.03, -0.4, -0.7),
    ([2, -1, 0, -2, 0, -2], 0.35, -0.2, -2.4, -4.1),
    ([2, 1, 0, -2, -2, -2], 0.07, -0.04, -0.5, -0.8),
    ([2, 0, 0, -2, 0, -1], -0.07, 0.04, 0.5, 0.8),
    ([2, 0, 0, -2, 0, -2], 1.75, -1.01, -12.2, -21.3),
    ([2, 1, 0, -2, 0, -2], -0.05, 0.03, 0.3, 0.6),
    ([2, 0, -1, -2, 2, -2], 0.04, -0.03, -0.3, -0.6),
    ([2, 0, 0, -2, 2, -2], 0.76, -0.44, -5.5, -9.6),
    ([2, 0, 0, 0, 0, 0], 0.21, -0.12, -1.5, -2.6),
    ([2, 0, 0, 0, 0, -1], 0.06, -0.04, -0.4, -0.8),
];

/// CNMTX ocean-tide lines: (HS, PHASE, FREQ); [0,41) diurnal (m=1), [41,71) semidiurnal (m=2).
pub(crate) const CNMTX_LINES: [(f64, f64, f64); 71] = [
    (-1.94, 9.0899831, 5.1868805),
    (-1.25, 8.8234208, 5.38346657),
    (-6.64, 12.1189598, 5.38439079),
    (-1.51, 1.44257, 5.41398343),
    (-8.02, 4.738109, 5.41490765),
    (-9.47, 4.4715466, 5.61149372),
    (-50.2, 7.7670857, 5.61241794),
    (-1.8, -2.9093042, 5.64201057),
    (-9.54, 0.3862349, 5.64293479),
    (1.52, -3.1758666, 5.83859664),
    (-49.45, 0.1196725, 5.83952086),
    (-262.21, 3.4152116, 5.84044508),
    (1.7, 12.8946194, 5.84433381),
    (3.43, 5.5137686, 5.87485066),
    (1.94, 6.4441883, 6.03795537),
    (1.37, -4.2322016, 6.06754801),
    (7.41, -0.9366625, 6.06847223),
    (20.62, 8.5427453, 6.07236095),
    (4.14, 11.8382843, 6.07328517),
    (3.94, 1.1618945, 6.10287781),
    (-7.14, 5.9693878, 6.24878055),
    (1.37, -1.2032249, 6.2650583),
    (-122.03, 2.0923141, 6.26598252),
    (1.02, -1.7847596, 6.28318449),
    (2.89, 8.0679449, 6.28318613),
    (-7.3, 0.8953321, 6.29946388),
    (368.78, 4.1908712, 6.3003881),
    (50.01, 7.4864102, 6.30131232),
    (-1.08, 10.7819493, 6.30223654),
    (2.93, 0.3137975, 6.31759007),
    (5.25, 6.2894282, 6.33479368),
    (3.95, 7.2198478, 6.49789839),
    (20.62, -0.161003, 6.52841524),
    (4.09, 3.1345361, 6.52933946),
    (3.42, 2.8679737, 6.72592553),
    (1.69, -4.5128771, 6.75644239),
    (11.29, 4.9665307, 6.76033111),
    (7.23, 8.2620698, 6.76125533),
    (1.51, 11.5576089, 6.76217955),
    (2.16, 0.6146566, 6.98835826),
    (1.38, 3.9101957, 6.98928248),
    (1.8, 20.6617051, 11.45675174),
    (4.67, 13.2808543, 11.4872686),
    (16.01, 16.309831, 11.68477889),
    (19.32, 8.9289802, 11.71529575),
    (1.3, 5.0519065, 11.73249771),
    (-1.02, 15.8350306, 11.89560406),
    (-4.51, 8.6624178, 11.91188181),
    (120.99, 11.9579569, 11.91280603),
    (1.13, 8.0808832, 11.930008),
    (22.98, 4.5771061, 11.94332289),
    (1.06, 0.7000324, 11.96052486),
    (-1.9, 14.9869335, 12.11031632),
    (-2.18, 11.4831564, 12.12363121),
    (-23.58, 4.3105437, 12.13990896),
    (631.92, 7.6060827, 12.14083318),
    (1.92, 3.729009, 12.15803515),
    (-4.66, 10.6350594, 12.33834347),
    (-17.86, 3.2542086, 12.36886033),
    (4.47, 12.7336164, 12.37274905),
    (1.97, 16.0291555, 12.37367327),
    (17.2, 10.160259, 12.54916865),
    (294.0, 6.2831853, 12.56637061),
    (-2.46, 2.4061116, 12.58357258),
    (-1.02, 5.0862033, 12.59985198),
    (79.96, 8.3817423, 12.6007762),
    (23.83, 11.6772814, 12.60170041),
    (2.59, 14.9728205, 12.60262463),
    (4.47, 4.0298682, 12.82880334),
    (1.95, 7.3254073, 12.82972756),
    (1.17, 9.1574019, 13.06071921),
];

/// Orthotide weight factors SP(6, m), m = 0 diurnal, 1 semidiurnal.
pub(crate) const SP: [[f64; 6]; 2] = [
    [0.0298, 0.1408, 0.0805, 0.6002, 0.3025, 0.1517],
    [0.02, 0.0905, 0.0638, 0.3476, 0.1645, 0.0923],
];

/// ORTHOW(12, 3): orthoweight matrix, column j = EOP component (dx, dy, dUT1).
pub(crate) const ORTHOW: [[f64; 3]; 12] = [
    [-6.77832, 14.86283, -1.76335],
    [-14.86323, -6.77846, 1.03364],
    [0.47884, 1.45234, -0.27553],
    [-1.45303, 0.47888, 0.34569],
    [0.16406, -0.42056, -0.12343],
    [0.4203, 0.16469, -0.10146],
    [0.09398, 15.30276, -0.47119],
    [25.73054, -4.30615, 1.28997],
    [-4.77974, 0.07564, -0.19336],
    [0.2808, 2.28321, 0.02724],
    [1.94539, -0.45717, 0.08955],
    [-0.73089, -1.6201, 0.04726],
];