Skip to main content

Crate astrodyn_time

Crate astrodyn_time 

Source
Expand description

Time scales, leap seconds, calendar dates, and the time manager.

Pure-Rust port of JEOD’s models/environment/time/. The crate models the standard astronomical and engineering time scales (TAI, UTC, UT1, TT, TDB, GPS, GMST), the leap-second table that ties UTC to TAI, and the per-simulation user-defined epoch (UDE) and mission-elapsed time (MET) that mission code typically logs against.

§Public surface

JEOD source: models/environment/time/ (and the models/environment/time/data/ subdirectory for Leap_Second.dat). Pure Rust, zero Bevy dependency.

§Example

Build a calendar date and round-trip it through the truncated Julian representation that the per-scale converters consume internally:

use astrodyn_time::time_utc::{calendar_to_tjt, tjt_to_calendar, CalendarDate};

let cal = CalendarDate::new(2025, 1, 1, 0, 0, 0.0);
let tjt = calendar_to_tjt(&cal);
let back = tjt_to_calendar(tjt);
assert_eq!(back.year, cal.year);
assert_eq!(back.month, cal.month);
assert_eq!(back.day, cal.day);

Re-exports§

pub use leap_second::LeapSecondTable;
pub use simulation_time::SimulationTime;
pub use simulation_time::TimeScaleId;
pub use time_converter_tai_ut1::default_eop_table;
pub use time_converter_tai_ut1::EopLoadError;
pub use time_converter_tai_ut1::EopTable;
pub use time_dyn::DynamicTime;
pub use time_gps::GpsTimeComponents;
pub use time_gps::TAI_GPS_OFFSET;
pub use time_met::MissionElapsedTime;
pub use time_ude::UserDefinedEpoch;
pub use time_utc::CalendarDate;
pub use time_utc::UTC_EPOCH_TAI_TJT;
pub use epoch::*;

Modules§

epoch
Standard astronomical epochs and JD ↔ MJD ↔ TJT conversions.
leap_second
LeapSecondTable — TAI ↔ UTC leap-second lookup.
simulation_time
SimulationTime — the per-step time-state resource that the integration loop advances each step and that downstream consumers (gravity, ephemeris, atmosphere) read from.
time_converter_tai_tdb
TAI ↔ TDB time-scale conversion.
time_converter_tai_tt
TAI ↔ TT time-scale conversion (constant 32.184 s offset).
time_converter_tai_ut1
EopTable — IERS EOP-driven UT1-TAI lookup with daily linear interpolation.
time_converter_ut1_gmst
UT1 → GMST conversion (Greenwich Mean Sidereal Time).
time_dyn
DYN — Dynamic Time scale.
time_gps
GPS time scale — constant offset from TAI plus GPS week/day decomposition.
time_met
MET — Mission Elapsed Time.
time_ude
UDE — User-Defined Epoch time scale.
time_utc
UTC time scale — calendar representation and TAI↔UTC conversion.

Structs§

BodyAttitude
RootInertial → body attitude of vehicle V, witnessed unit-norm and scalar-first / left-transformation (JEOD canonical).
BodyFrame
Body (CoM-centered) frame of vehicle V. Rotates with the vehicle.
CartesianState
A Cartesian state sample: position, velocity, and the epoch they hold at, all in frame F.
Earth
Planet marker for Earth.
Ecef
Earth-centered Earth-fixed frame (ITRF-like). Rotates with Earth.
FrameTransform
Proper rotation taking vectors expressed in From to the same vectors expressed in To.
FrameUid
Owned, comparable, hashable runtime frame identity.
GMST
Greenwich Mean Sidereal Time (angle, but seconds-ized by convention).
GPS
GPS Time (TAI − 19 s).
GravParam
Gravitational parameter μ = GM tagged with the source planet P.
HarmonicDegree
Spherical-harmonic degree or order index. Unitless ordinal.
InertiaTensor
Mass moment of inertia tensor (kg·m²) expressed in frame F.
IntegOrigin
The integration-frame origin: position and velocity of the integration-frame origin expressed in root-inertial coordinates.
IntegrationFrame
A body’s integration frame — a non-rotating quasi-inertial frame whose origin generally differs from the root inertial origin.
Jupiter
Planet marker for Jupiter.
LeftTransform
r' = q r q⁻¹ — the JEOD convention.
Lvlh
Local Vertical / Local Horizontal frame relative to chief vehicle Chief. Z axis points planet-ward; Y opposes orbital angular momentum; X completes the right-handed triad (approximately along-track in near-circular orbits).
Mars
Planet marker for Mars.
MassNode
Mass-tree wildcard inertial-flavor frame for kinematic-propagation scratch state.
Moon
Planet marker for Moon.
Ned
North-East-Down topocentric frame relative to chief vehicle Chief.
NormalizedQuat
A quaternion witnessed to have unit norm at construction time.
PlanetFixed
Planet-fixed frame for any planet P. Rotates with that planet.
PlanetInertial
A particular planet’s inertial (non-rotating, J2000-aligned) frame, centered at the planet’s CoM.
Qty3
Componentwise 3-vector: each of x, y, z carries the dimension D, and the whole vector carries the frame tag F.
Quat
Quaternion tagged with its storage layout and transformation convention.
RightTransform
r' = q⁻¹ r q — the opposite of JEOD; common in many textbooks.
RootInertial
The simulation’s root inertial frame — the unique inertial node at the top of the frame tree.
Saturn
Planet marker for Saturn.
ScalarFirst
Storage layout [q0, q1, q2, q3] where q0 is the scalar part (JEOD).
ScalarLast
Storage layout [x, y, z, w] where w is the scalar part (glam).
SecondsSince
Seconds elapsed in the named time scale, measured from that scale’s epoch.
SelfPlanet
Phantom marker for “this entity’s own planet” — used by ECS adapters whose per-entity components carry PlanetFixed<P> phantoms but whose planet identity is determined at runtime by the entity itself.
SelfRef
Phantom marker for “this entity’s own vehicle frame” — used by ECS adapters whose per-entity components carry frame phantoms but whose vehicle identity is determined at runtime by the entity itself.
StructuralFrame
Structural (geometric-origin) frame of vehicle V. Rotates with vehicle.
Sun
Planet marker for Sun.
TAI
International Atomic Time.
TDB
Barycentric Dynamical Time (relativistic correction to TT).
TT
Terrestrial Time (TAI + 32.184 s).
TimeConverter
Explicit converter between two time scales.
Topocentric
Site-anchored topocentric (ENU) frame on planet P.
UT1
Universal Time 1 (Earth-rotation based).
UTC
Coordinated Universal Time (leap-second stepped).

Enums§

FrameClass
Coarse runtime taxonomy of frame kinds.

Traits§

Array3Ext
Extension trait on [f64; 3] (raw component arrays from CSVs or JEOD initial conditions) producing frame-tagged 3-vectors.
F64Ext
Unit-construction extension on f64.
Frame
Compile-time reference frame tag.
Layout
Compile-time quaternion storage layout marker.
Planet
Compile-time planet tag used to parameterize planet-fixed frames.
TimeScale
Compile-time time-scale tag.
Transform
Compile-time quaternion transformation convention marker.
Vec3Ext
Extension trait on glam::DVec3 producing frame-tagged 3-vectors.
Vehicle
Compile-time vehicle tag used to parameterize vehicle-relative frames.

Type Aliases§

Acceleration
Acceleration in frame F. Base SI unit: m/s².
AngularAcceleration
Angular acceleration in frame F. Base SI unit: rad/s².
AngularMomentum
Angular momentum in frame F. Base SI unit: kg·m²/s.
AngularVelocity
Angular velocity in frame F. Base SI unit: rad/s.
Force
Force in frame F. Base SI unit: newtons.
JeodQuat
The JEOD canonical quaternion type: scalar-first, left-transformation.
Jerk
Jerk (time derivative of acceleration) in frame F. Base SI unit: m/s³.
MassFlowRate
Scalar mass-flow rate.
Position
Position in frame F (default: RootInertial). Base SI unit: meters.
SpecificAngMom
Scalar specific angular momentum.
SpecificEnergy
Scalar specific energy.
Torque
Torque in frame F. Base SI unit: N·m.
Velocity
Velocity in frame F. Base SI unit: m/s.