Skip to content

EopTable

Defined in: table.rs:21

Available on crate feature alloc only.

pub struct EopTable

Interpolated EOP lookup table.

Stores sorted EOP entries and provides interpolated parameter lookups at arbitrary MJD values through the fallible *_checked accessors, which report EopLookupError::OutOfRange outside the covered MJD span.

The table does not implement the EOP capability traits (Ut1Offset, PolarMotion, NutationCorrections, LengthOfDay) itself: those are infallible, and a table covering a finite span has no correct infallible answer for an epoch it does not cover. Call EopTable::clamped (or EopTable::into_clamped) to get a provider with a stated out-of-range policy — see ClampedEop.

fn new(entries: [Vec<EopEntry>](https://doc.rust-lang.org/std/vec/struct.Vec.html)) -> [Result<Self, EopLookupError>](https://doc.rust-lang.org/std/result/enum.Result.html)

Create an EOP table from a sorted vector of entries.

Entries must be sorted by MJD and non-empty.


fn from_finals2000a(text: &str) -> [Result<Self, super::error::EopParseError>](https://doc.rust-lang.org/std/result/enum.Result.html)

Convenience: parse finals2000A text and build a table.


fn mjd_range(&self) -> (f64, f64)

MJD range covered by this table.


fn len(&self) -> usize

Number of entries.


fn is_empty(&self) -> bool

Whether the table is empty.


fn dut1_checked(&self, utc_mjd: f64) -> [Result<f64, EopLookupError>](https://doc.rust-lang.org/std/result/enum.Result.html)

Checked UT1-UTC lookup with linear interpolation.

dUT1 is not the quantity interpolated here. It jumps by a full second across a leap second (finals2000A rows are daily, so the pair bracketing 2017-01-01 reads −0.5928 s and +0.4068 s), and interpolating it directly smears half of that step over the preceding day — a ~0.5 s UT1 error, i.e. 3.7e-5 rad of ERA and ~230 m of equatorial ITRS displacement.

UT1 − TAI = dUT1 − (TAI − UTC) is continuous by construction, so that is what gets interpolated, using arika’s compiled-in leap-second table (crate::epoch) for each bracketing row; the query instant’s own TAI − UTC is then added back. Inside a single leap-second regime this is algebraically identical to interpolating dUT1.


fn xp_checked(&self, utc_mjd: f64) -> [Result<f64, EopLookupError>](https://doc.rust-lang.org/std/result/enum.Result.html)

Checked x-pole lookup.


fn yp_checked(&self, utc_mjd: f64) -> [Result<f64, EopLookupError>](https://doc.rust-lang.org/std/result/enum.Result.html)

Checked y-pole lookup.


fn dx_checked(&self, utc_mjd: f64) -> [Result<f64, EopLookupError>](https://doc.rust-lang.org/std/result/enum.Result.html)

Checked dX nutation correction lookup.


fn dy_checked(&self, utc_mjd: f64) -> [Result<f64, EopLookupError>](https://doc.rust-lang.org/std/result/enum.Result.html)

Checked dY nutation correction lookup.


fn lod_checked(&self, utc_mjd: f64) -> [Result<f64, EopLookupError>](https://doc.rust-lang.org/std/result/enum.Result.html)

Checked LOD lookup.


fn clamped(&self) -> [ClampedEop<&EopTable>](../clampedeop/)

Borrow this table as an endpoint-clamping EOP provider.

See ClampedEop for what the policy means.


fn into_clamped(self) -> [ClampedEop<EopTable>](../clampedeop/)

Consume this table into an owned endpoint-clamping EOP provider.

See ClampedEop for what the policy means.