Skip to main content

Module nutation

Module nutation 

Source
Expand description

IAU 2000B nutation and the full TEME→GCRS/J2000 inertial reduction.

crate::precession supplies the IAU 2006 bias-precession (GCRS→mean-of-date). This module adds the second and third pieces of a true inertial reduction:

  • IAU 2000A nutation (nutation_iau2000a) — the full MHB2000 series, 678 luni-solar + 687 planetary terms, accurate to < 0.1 mas. The tables are machine-generated from the IAU SOFA / ERFA nut00a reference by tools/gen_nut00a.py into nutation_iau2000a_data.rs, and the whole series (both the IERS-2003 and MHB2000 fundamental-argument sets) is validated bit-for-bit against the published eraNut00a test vector.
  • IAU 2000B nutation (nutation_iau2000b) — the 77-term luni-solar MHB2000 series of McCarthy & Luzum (2003), the standard truncation of the full IAU 2000A series that agrees with it to better than 1 mas over 1995–2050, plus the two fixed planetary offsets that stand in for the omitted planetary terms. The series, the Delaunay fundamental arguments (Simon et al. 1994), and the unit constants are transcribed from the IAU SOFA / ERFA nut00b reference and validated bit-for-bit against the published eraNut00b test vector. The default of-date reduction below uses 2000B; nutation_matrix_2000a gives the < 0.1 mas 2000A path.
  • The full TEME→GCRS chain (teme_to_gcrs) following Vallado AIAA-2006-6980: TEME→TOD (equation of the equinoxes), TOD→MOD (nutation), MOD→GCRS (bias-precession). This upgrades the GMST-only TEME↔ECEF reduction in crate::frames to a genuine inertial-frame output.

Scope (honest): the full 2000A series is available (nutation_iau2000a / nutation_matrix_2000a, < 0.1 mas), while the default TEME→GCRS chain uses the 2000B truncation (~1 mas) — below the velocity-frame-rotation simplification it already makes; the equation of the equinoxes carries the two leading IAU 1994 complementary terms only; the TEME→GCRS rotation is applied to velocity as well as position, neglecting the ~7e-12 rad/s precession-nutation frame rotation (a < 1e-4 m/s error at orbital speeds). An ANISE/SPICE numerical cross-check to the < 10 m level is a follow-on (see ROADMAP.md).

Structs§

Nutation
Nutation in longitude and obliquity (radians), referred to the ecliptic of date.

Functions§

delaunay_args
The five Delaunay fundamental arguments [l, l′, F, D, Ω] (radians) at TT epoch jd_tt, in the linear IAU 2000B form (Simon et al. 1994) used by SOFA eraNut00b.
equation_of_equinoxes
Equation of the equinoxes (radians): Δψ·cos(ε̄_A) plus the two leading IAU 1994 complementary terms. This is the small angle between the TEME (mean-equinox) frame and TOD (true equinox of date) about the of-date pole.
gcrs_to_teme
Inverse of teme_to_gcrs: rotate a GCRS position and velocity back to TEME.
mean_obliquity
Mean obliquity of the ecliptic of date (radians), the IAU 2006 value (obl06, identical to the ε̄_A carried by crate::precession::fw_angles).
nutation_iau2000a
IAU 2000A nutation (Δψ, Δε) at TT epoch jd_tt — the full MHB2000 series (678 luni-solar + 687 planetary terms), transcribed from the IAU SOFA / ERFA nut00a reference and validated bit-for-bit against the published eraNut00a test vector. This is the < 0.1 mas reference series that the 2000B truncation in nutation_iau2000b approximates to ~1 mas.
nutation_iau2000b
IAU 2000B nutation (Δψ, Δε) at TT epoch jd_tt.
nutation_matrix
The nutation rotation matrix (SOFA iauNumat): rotates a mean-of-date (MOD) vector into the true equator and equinox of date (TOD), r_TOD = N · r_MOD. Uses the IAU 2000B nutation (~1 mas).
nutation_matrix_2000a
As nutation_matrix but driven by the full IAU 2000A series (nutation_iau2000a), i.e. the IAU 2000A/2006 of-date nutation matrix accurate to < 0.1 mas.
teme_to_gcrs
Rotate a TEME position and velocity into the GCRS/J2000 inertial frame at TT epoch jd_tt. The same rotation is applied to both (the of-date frame’s rotation relative to GCRS is negligible at orbital speeds — see the module note).
teme_to_gcrs_matrix
The composite TEME→GCRS rotation matrix at TT epoch jd_tt: R = Pᵀ · Nᵀ · R3(−EE).