Skip to main content

Crate astrodyn

Crate astrodyn 

Source
Expand description

ECS-agnostic orchestration layer for JEOD physics.

This crate is the single dependency for ECS adapters and mission crates. It re-exports the types from the astrodyn_* physics crates that such consumers need, plus orchestration functions that compose them into pipeline stages.

§Per-body functions (primary API for ECS integration)

Composable, borrow-based functions that any ECS adapter can call from its system functions. The ECS world remains the single source of truth.

§Standalone runner

For batch propagation and Tier 3 tests, see the astrodyn_runner crate which provides a standalone Simulation struct that owns all state and drives the pipeline. ECS adapters should not use astrodyn_runner — use the per-body functions from this crate instead. astrodyn_runner is a parallel non-Bevy consumer that, like astrodyn_bevy and mission code, depends on astrodyn and only astrodyn for physics.

§Re-export discipline

Every pub use astrodyn_*::... re-export is justified by an active mission- crate, astrodyn_bevy adapter, or astrodyn_runner consumer — every non-verification consumer of the pipeline routes through this crate. The contract is intentionally tight: a rename in one of the underlying physics crates only ripples to mission code if the affected type is one the mission API genuinely owns. The criteria are spelled out at the head of the re-export block in lib.rs.

§Pipeline ordering

See PipelineStage and PIPELINE_ORDER for the canonical stage execution order that any adapter must respect.

§Quick start

Compose a vehicle through the typestate VehicleBuilder using only gateway re-exports — mission code never reaches into the physics crates directly:

use astrodyn::{
    recipes::{earth, orbital_elements, vehicle},
    F64Ext, GravityControl, GravityGradient, VehicleBuilder,
};

let mu = earth::point_mass().source.mu.m3_per_s2();
let cfg = VehicleBuilder::new()
    .from_orbital_elements(orbital_elements::iss(), mu)
    .three_dof_point_mass(vehicle::iss_mass())
    .rk4()
    .gravity(GravityControl::new_spherical(0_usize, GravityGradient::Skip))
    .build();

cfg (a VehicleConfig) is then handed to either astrodyn_bevy::VehicleConfigBevyExt::spawn_bevy or astrodyn_runner::Simulation::add_vehicle — both consumers share the same configuration shape so a mission can swap between them without reauthoring its setup code.

Re-exports§

pub use atmosphere::evaluate_atmosphere;
pub use atmosphere::evaluate_atmosphere_typed;
pub use atmosphere::evaluate_body_atmosphere_typed;
pub use atmosphere::run_atmosphere_stage;
pub use atmosphere::AtmosphereBodyInputs;
pub use atmosphere::AtmosphereConfig;
pub use atmosphere::AtmosphereModel;
pub use attach::stage_attach_combine;
pub use attach::stage_detach_capture;
pub use attach::CrossIntegFrameStateShift;
pub use attach::StageAttachInputs;
pub use attach::StageAttachOutputs;
pub use body_action::BodyAction;
pub use body_action::OrbitalElementSet;
pub use derived::compute_body_euler_angles;
pub use derived::compute_body_euler_angles_typed;
pub use derived::compute_body_lvlh_frame;
pub use derived::compute_body_lvlh_frame_typed;
pub use derived::compute_lvlh_relative_state;
pub use derived::compute_lvlh_relative_state_typed;
pub use derived::compute_orbital_elements;
pub use derived::compute_orbital_elements_typed;
pub use derived::compute_relative_state;
pub use derived::LvlhRelativeState;
pub use derived::RelativeState;
pub use derived::RelativeTranslation;
pub use frame_orchestration::evaluate_and_apply_frame_switch;
pub use frame_orchestration::FrameSwitchTargetMissing;
pub use integrable::IntegrableObject;
pub use integration::integrate_bodies_contact_coupled;
pub use integration::integrate_bodies_contact_coupled_typed;
pub use integration::integrate_body;
pub use integration::integrate_body_coupled;
pub use integration::integrate_body_coupled_typed;
pub use integration::integrate_body_typed;
pub use integration::reset_integrators;
pub use integration::CoupledBodyInput;
pub use integration::CoupledBodyInputTyped;
pub use integration::CoupledIntegScratch;
pub use integration::CoupledStageEval;
pub use integrator::Abm4State;
pub use integrator::GaussJacksonConfig;
pub use integrator::GaussJacksonState;
pub use integrator::IntegratorType;
pub use interactions::evaluate_contact_pair;
pub use interactions::evaluate_ground_contact_pair;
pub use interactions::ContactPairEval;
pub use interactions::FlatPlateStageInputs;
pub use interactions::FlatPlateState;
pub use interactions::GroundContactPairEval;
pub use interactions::ThermalIntegrationOrder;
pub use kinematic_propagation::propagate_state_via_storage;
pub use kinematic_propagation::KinematicEdge;
pub use kinematic_propagation::KinematicNodeState;
pub use pipeline::PipelineStage;
pub use pipeline::PIPELINE_ORDER;
pub use planet_config::PlanetConfig;
pub use planet_config::EARTH;
pub use planet_config::MARS;
pub use planet_config::MOON;
pub use planet_config::SUN;
pub use rotation_model::RotationModel;
pub use simulation_builder::MassTreeAttachment;
pub use simulation_builder::SimulationBuilder;
pub use source_frames::SourceFrameIds;
pub use source_handle::SourceHandle;
pub use source_state::set_source_position;
pub use source_state::set_source_state;
pub use source_state::source_frame_id;
pub use source_state::source_pfix_rotation;
pub use source_state::source_position;
pub use sources::GravitySourceEntry;
pub use validation::validate_body;
pub use validation::ValidationError;
pub use vehicle_builder::BuildState;
pub use vehicle_builder::HasIntegrator;
pub use vehicle_builder::NeedsMass;
pub use vehicle_builder::NeedsState;
pub use vehicle_builder::Ready;
pub use vehicle_builder::VehicleBuilder;
pub use vehicle_config::DerivedStateConfig;
pub use vehicle_config::EarthLightingConfig;
pub use vehicle_config::FrameSwitchConfig;
pub use vehicle_config::GeodeticConfig;
pub use vehicle_config::ShadowBody;
pub use vehicle_config::SrpModel;
pub use vehicle_config::SwitchSense;
pub use vehicle_config::VehicleConfig;
pub use wrench::aggregate_wrenches_via_storage;
pub use wrench::edge_geometry_from_composites;
pub use wrench::EdgeGeometry;

Modules§

atmosphere
Atmosphere stage: configuration and the per-body evaluate_atmosphere / evaluate_atmosphere_typed orchestration that converts inertial position to geodetic coordinates and queries the configured density / temperature / wind model.
attach
Orchestration: stage and apply a JEOD-faithful mass-tree attach / detach in an ECS-agnostic context.
body_action
ECS-agnostic body actions: queueable mutations to a vehicle’s translational state, rotational state, and mass properties.
derived
Per-body derived state functions.
ephemeris_assets
Path resolvers for the in-workspace kernel fixtures.
forces
Force-collection re-exports.
frame_orchestration
Frame-tree orchestration helpers shared by every consumer of astrodyn.
gravity
Gravity stage re-exports.
gravity_fixtures
Committed planetary gravity-coefficient fixtures.
integrable
IntegrableObject trait — port of JEOD’s multi-ODE RK4 scheduling.
integration
Integration stage: stepping per-body translational + rotational state by one timestep using the configured integrator (RK4, ABM4, or Gauss-Jackson). Includes the contact-coupled multi-body RK4 entry points used when contact pairs are registered.
integrator
astrodyn-owned vocabulary for integrator selection and state.
interactions
Interaction stage: the per-body force / torque computations between the gravity and force-collection stages — drag, flat-plate and cannonball SRP, gravity-gradient torque, and contact pairs.
kinematic_propagation
Kinematic state propagation: walks a MassStorage tree pre-order from each root and derives every kinematic child’s instantaneous composite-body state from its parent’s state composed with the per-link attach geometry.
nutation_j2000
J2000 Nutation matrix and equation of equinoxes computation.
pipeline
Canonical pipeline stage ordering shared by every JEOD adapter.
planet_config
Planet configuration presets — single source of truth for simulation setup.
precession_j2000
J2000 Precession matrix computation.
recipes
Named building blocks and pre-composed mission scenarios.
relativistic
Post-Newtonian (PPN) relativistic gravity correction.
rotation_j2000
J2000 GAST rotation and full RNP composition.
rotation_mars
Mars rotation model (IAU Pathfinder orientation).
rotation_model
Rotation-model selector that drives a planet’s per-step T_inertial→pfix update (Earth RNP, Mars principal-axis, lunar DE421 libration, or static identity).
rotation_moon
Moon rotation model (IAU 2009 simplified).
simulation_builder
Declarative scenario builder shared by the standalone runner and the Bevy adapter.
source_frames
Mapping from a gravity source to its frame-tree nodes.
source_handle
Typed wrapper around source-table indices used by crate::VehicleBuilder.
source_state
Source-state mutators that operate on a FrameTree + SourceFrameIds slice.
sources
Gravity source registry entries.
validation
Per-body and whole-scenario validation: cross-checks vehicle configuration, gravity / atmosphere / SRP wiring, integrator compatibility, and contact-pair consistency. Adapters call validate_body before stepping; misconfigurations surface as ValidationError variants instead of silently producing bad physics.
vehicle_builder
Typestate vehicle builder for the typed pipeline.
vehicle_config
Vehicle-level configuration types.
wrench
Composite-rigid-body wrench aggregation: walks a MassStorage tree leaves → root and accumulates each child’s (force, torque) into the root’s totals via the parallel-axis arm (shift_wrench_to_parent).

Macros§

define_planet
Define a new compile-time Planet marker type.
define_vehicle
Define a new compile-time Vehicle marker type.

Structs§

AerodynamicForce
Aerodynamic force and torque on a vehicle.
AtmosphereState
Atmospheric state at a given position.
AttachCombineInputs
Inputs to combine_states_at_attach.
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.
CalendarDate
Gregorian calendar date+time representation.
ClosureJointKinematicsSpec
Declarative specification for a joint that pins a fixed rotation about a single axis with no time dependence — the kinematic-only degenerate case useful for closing kinematic loops.
ContactFacet
A single contact geometry + material combination.
ContactMaterial
Spring-damper plus Coulomb-friction contact material.
DetachedSubtreeState
Composite-body inertial state of a free-flying mass-tree subtree (i.e. a tree root that is not the integrated body). All fields are in the simulation’s root inertial frame.
DragConfig
Vehicle drag configuration for the ballistic (default) model.
DragConfigTyped
Typed sibling of DragConfig.
DynamicsConfig
Per-body dynamics-mode toggles consumed by the integrator.
Earth
Planet marker for Earth.
EarthLightingState
Complete earth lighting state computed for one observer position.
Ecef
Earth-centered Earth-fixed frame (ITRF-like). Rotates with Earth.
Ephemeris
Planetary ephemeris reader backed by ANISE (pure Rust SPICE).
ExponentialAtmosphere
Exponential atmosphere model parameters.
FlatPlate
A single flat plate on a vehicle surface.
FlatPlateParams
Optical properties shared by one or more flat plates.
FlatPlateSrpResult
Result of flat-plate SRP computation with thermal emission.
FlatPlateThermal
Thermal properties for a flat plate facet.
FrameAttachInputs
Inputs to derive_frame_attached_state.
FrameDerivatives
Frame-state derivatives: translational and rotational acceleration. The integrator’s per-step output.
FrameDerivativesTyped
Typed sibling of FrameDerivatives.
FrameTransform
Proper rotation taking vectors expressed in From to the same vectors expressed in To.
FrameTree
Arena-based frame tree. Portable (no ECS dependency).
GeodeticState
Geodetic coordinates on a reference ellipsoid.
GravParam
Gravitational parameter μ = GM tagged with the source planet P.
GravityAcceleration
Gravitational acceleration, gradient tensor, and potential for a body.
GravityAccelerationTyped
Typed sibling of GravityAcceleration.
GravityBodyInputs
Per-body inputs the gravity stage driver consumes.
GravityControl
Per-source gravity selector — point-mass vs. spherical harmonics, degree / order, gradient flags, and third-body / Battin / relativistic toggles.
GravityControls
Ordered list of GravityControl entries — one per gravity source active for the vehicle. The pipeline accumulates each source’s contribution into the vehicle’s net gravity acceleration in iteration order.
GravitySource
Per-body gravity payload: gravitational parameter mu plus the GravityModel that selects between point-mass and spherical-harmonics evaluation.
GroundFacet
Infinite-surface “ground” facet anchored to a planet via a Terrain model.
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.
JointKinematicsSpec
Declarative specification for a kinematically driven single-axis joint.
KinematicChildInputs
Inputs to compute_kinematic_child_state.
LightingBody
Apparent parameters of a celestial body as seen from the observer.
LightingParams
Lighting parameters for a body pair (light source occulted by another body).
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).
LvlhFrame
LVLH frame state: rotation matrix, angular velocity, and origin position/velocity.
Mars
Planet marker for Mars.
MassNode
Mass-tree wildcard inertial-flavor frame for kinematic-propagation scratch state.
MassNodeOutputs
Output of a single-node composition step.
MassNodeView
Read-only view of one node in a mass tree, as needed by the composition kernel.
MassPointState
Position and orientation of a mass point relative to a parent frame.
MassProperties
Rigid-body mass / inertia / CoM-offset block.
MassPropertiesTyped
Typed sibling of MassProperties parameterized by a vehicle marker V. Mass becomes a uom::si::f64::Mass, inertia is wrapped in InertiaTensor<BodyFrame<V>>, and the center-of-mass position carries the StructuralFrame<V> phantom tag.
MassTree
Arena-based mass tree. Portable, no ECS dependency.
MetAtmosphere
MET (Marshall Engineering Thermosphere) atmosphere model configuration.
Moon
Planet marker for Moon.
MultiDofJointKinematicsSpec
Declarative specification for a multi-DOF kinematic joint.
Ned
North-East-Down topocentric frame relative to chief vehicle Chief.
OrbitalElements
Classical orbital elements computed from Cartesian state vectors.
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.
PlanetShape
Planetary shape parameters (reference ellipsoid).
Qty3
Componentwise 3-vector: each of x, y, z carries the dimension D, and the whole vector carries the frame tag F.
RadiationForce
Radiation pressure force and torque on a vehicle.
RefFrameRot
Rotational state of a frame relative to its parent.
RefFrameState
Combined translational + rotational state of a frame relative to its parent. The untyped storage form used by crate::FrameTree.
RefFrameTrans
Translational state of a frame relative to its parent.
ResolvedRelativisticSource
Resolved source for relativistic correction computation.
ResolvedSource
Information about a gravity source resolved from a source identifier.
RootInertial
The simulation’s root inertial frame — the unique inertial node at the top of the frame tree.
RotationalState
Rotational state of a rigid body.
RotationalStateTyped
Typed sibling of RotationalState parameterized by a vehicle marker V. The attitude is a BodyAttitude<V> — the wrapper owns the JEOD left-multiply convention so callers cannot integrate via raw multiply and accidentally swap operand order (issue #252). Angular velocity carries the BodyFrame<V> phantom tag.
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.
SimulationTime
Complete simulation time state across all time scales.
SinusoidalJointKinematicsSpec
Declarative specification for a single-axis joint whose angle is a sinusoidal function of time:
SixDofState
Combined translational + rotational state for 6-DOF integration.
SixDofStateTyped
Typed sibling of SixDofState carrying a vehicle phantom V on the rotational half and a frame phantom F on the translational half. Composes TranslationalStateTyped<F> and RotationalStateTyped<V> without introducing new arithmetic — both halves carry their own to_untyped / from_untyped_unchecked boundaries already.
SphericalTerrain
Spherical-Earth terrain — ground at a fixed planet radius.
StructuralFrame
Structural (geometric-origin) frame of vehicle V. Rotates with vehicle.
Sun
Planet marker for Sun.
TidalBody
A body that raises tides on the primary (e.g., Moon, Sun).
TidalConfig
Configuration for solid body tidal effects on a gravity source.
TidalConfigTyped
Typed sibling of TidalConfig.
TimeManager
Time manager: maintains all time scale values and propagates updates.
TotalForce
Net body force / torque, the integrator’s input each step.
TotalForceTyped
Typed sibling of TotalForce.
TranslationalState
Translational state in the integration frame.
TranslationalStateTyped
Typed sibling of TranslationalState carrying a frame phantom on the position and velocity components. Defaults to the inertial frame to match the existing untyped storage convention; override with an explicit frame tag for non-inertial integrations.
Wrench
Plain (force, torque) pair in some implicit frame, used by the orchestration walk to stage the per-node accumulator before writing back into the storage layer. The frame discipline lives at the caller — by the time a Wrench crosses module boundaries, the orchestration layer (astrodyn::wrench) tags it with the owning entity’s structural frame.
kilogram
Re-export of uom::si::mass::kilogram for typed-quantity callers that need the unit token directly (Mass::new::<kilogram>(420_000.0), mass.get::<kilogram>()). Adapter crates that consume astrodyn but not uom (the production-path layer rule) reach through this alias. The kilogram is the SI unit of mass. It is defined by taking the fixed numerical value of the Planck constant h to be 6.626 070 15 × 10⁻³⁴ when expressed in the unit J s, which is equal to kg m² s⁻¹, where the meter and the second are defined in terms of c and ∆νCs.

Enums§

EphemerisBody
Solar system body identifiers for ephemeris queries.
EphemerisError
Ephemeris errors.
EulerSequence
The 12 possible Euler rotation sequences.
GeoIndexType
Type of geomagnetic index provided.
GravityGradient
Self-documenting selector for the gravity-gradient tensor flag at the GravityControl constructor seam. Replaces the bare bool the spherical / non-spherical constructors used to accept, so a call site reads as GravityControl::new_spherical(earth, GravityGradient::Skip) rather than the bare-bool form, and the reader does not need to remember which boolean polarity meant what.
GravityModel
Gravity-model selector — point-mass (μ/r²) vs. spherical-harmonics (Gottlieb-recursion Cnm/Snm evaluation).
JointKinematicsModel
Unifying enum over the kinematic-only joint specifications shipped today: constant-rate single-axis (JointKinematicsSpec), sinusoidal single-axis (SinusoidalJointKinematicsSpec), closure single-axis (ClosureJointKinematicsSpec), and multi-DOF chains (MultiDofJointKinematicsSpec).
LvlhAngularVelocityFrame
Frame in which the user-supplied LVLH-relative angular velocity is expressed.
Phase
Which phase of JEOD’s runtime is being mirrored when evaluating ground contact.
RefFrameKind
Runtime kind of a reference-frame tree node. Mirrors the runtime tags JEOD uses to distinguish inertial, planet-fixed, and body frames.
SingleDofKinematics
Per-DOF kinematic style for a single axis inside a MultiDofJointKinematicsSpec chain.
TimeScaleId
Identifies a time scale in the converter graph.

Constants§

AXIS_NORM_TOL
Tolerance on axis_in_parent.length_squared() - 1 accepted by evaluate.
EARTH_K2
Default Love number k2 for Earth solid body tides.
J2000_TAI_TJT
TAI TJT at J2000.0 TT epoch. TT = TAI + 32.184s, so TAI is 32.184s behind TT. 32.184s = 32.184/86400 days = 0.000372500 days TAI TJT = 11544.5 - 0.000372500 = 11544.499627500
J2000_TT_JD
J2000.0 epoch as Julian Date: 2000-01-01 12:00:00 TT.
J2000_TT_TJT
J2000.0 as TJT: MJD 51544.5 - 40000 = 11544.5
MAX_MULTI_DOF_AXES
Maximum number of DOFs a MultiDofJointKinematicsSpec can carry.
SECONDS_PER_DAY
Seconds per day.
SOLAR_RADIUS
Solar radius in m (matching JEOD radiation_source.hh).
TAI_TT_OFFSET
TT - TAI offset in seconds (exact by definition).

Traits§

Array3Ext
Extension trait on [f64; 3] (raw component arrays from CSVs or JEOD initial conditions) producing frame-tagged 3-vectors.
CompatibleVehiclePair
Paired-vehicle compatibility: fires when a (Subject, Reference) (or (Parent, Child)) pair on one value does not match the pair on the slot it’s being passed into.
F64Ext
Unit-construction extension on f64.
Frame
Compile-time reference frame tag.
FrameStorage
Read-only access to a frame tree, abstracting over the underlying storage. Implementors: FrameTree (arena), and Bevy adapters such as astrodyn_bevy’s RelativeFrameState SystemParam.
MassStorage
Storage-agnostic read view of a mass tree.
Planet
Compile-time planet tag used to parameterize planet-fixed frames.
Terrain
Planetary terrain model that maps a planet-fixed query position to a ground point and outward surface normal.
Vec3Ext
Extension trait on glam::DVec3 producing frame-tagged 3-vectors.
Vehicle
Compile-time vehicle tag used to parameterize vehicle-relative frames.

Functions§

abm4_translational_step
Advance translational state by one ABM4 step.
accumulate_gravity
Accumulate gravity from all sources for a single body.
accumulate_gravity_typed
Typed sibling of accumulate_gravity.
accumulate_relativistic_corrections
Compute post-Newtonian relativistic corrections for all gravity controls that have relativistic: true.
accumulate_relativistic_corrections_typed
Typed sibling of accumulate_relativistic_corrections.
calendar_to_tjt
Convert a Gregorian calendar date to truncated Julian time (TJT).
collect_and_resolve_forces
Collect all interaction forces and torques, resolve frame transforms, and compute frame derivatives.
collect_and_resolve_forces_typed
Typed sibling of collect_and_resolve_forces.
combine_states_at_attach
Combine two free-body states into one rigid body, conserving linear momentum (about the integration-frame origin) and angular momentum (about the new combined CoM). See module docs for the algorithm and JEOD source mapping.
compute_ballistic_drag
Compute ballistic aerodynamic drag force.
compute_ballistic_drag_typed
Typed sibling of compute_ballistic_drag.
compute_body_geodetic
Compute the geodetic state of a body in inertial coordinates.
compute_body_geodetic_typed
Typed sibling of compute_body_geodetic.
compute_body_solar_beta
Compute the solar beta angle from raw position / velocity / Sun position.
compute_body_solar_beta_typed
Typed sibling of compute_body_solar_beta.
compute_cannonball_srp
Compute cannonball SRP force using JEOD’s RadiationDefaultSurface formula.
compute_cannonball_srp_typed
Typed sibling of compute_cannonball_srp.
compute_delta_c20
Compute the first-order tidal delta coefficient ΔC20.
compute_delta_c20_typed
Typed sibling of compute_delta_c20.
compute_earth_lighting
Raw kernel: compute earth lighting conditions for an observer.
compute_earth_lighting_typed
Typed sibling of compute_earth_lighting.
compute_euler_angles_from_matrix_typed
Typed sibling for the file-private compute_euler_angles_from_matrix_impl kernel.
compute_flat_plate_srp_thermal
Compute SRP force, torque, and temperature derivatives from flat plates with thermal emission.
compute_frame_derivatives
Compute translational and rotational frame derivatives from collected forces.
compute_gravity_torque
Compute gravity gradient torque on a rigid body.
compute_gravity_torque_typed
Typed sibling of compute_gravity_torque.
compute_kinematic_child_state
Derive a kinematic child’s instantaneous composite-body state from the parent’s composite-body state and the per-link attach geometry.
compute_matrix_from_euler_angles_typed
Typed sibling for the file-private compute_matrix_from_euler_angles_impl kernel.
compute_quaternion_from_euler_angles_typed
Typed sibling for the file-private compute_quaternion_from_euler_angles_impl kernel.
compute_relative_state_typed
Typed sibling of FrameTree::compute_relative_state returning a RefFrameStateTyped<From, To>. The caller asserts the supplied frame IDs correspond to frames whose markers are From and To — the arena is heterogeneous and stores untyped RefFrameState per node, so this is a from_untyped_unchecked boundary lift.
compute_shadow_fraction
Compute the illumination fraction for a vehicle considering shadowing by a celestial body (conical shadow model).
compute_t_inertial_struct
Compute the inertial-to-structural rotation matrix from component transforms.
compute_t_parent_this_from_tjt
Convenience: compute T_parent_this from simulation time parameters.
compute_t_parent_this_from_tjt_with_polar
Convenience: compute T_parent_this from simulation time parameters with optional polar motion.
compute_t_parent_this_from_tjt_with_polar_typed
Typed sibling of compute_t_parent_this_from_tjt_with_polar returning the rotation already wrapped as a typed FrameTransform<RootInertial, PlanetFixed<P>>. Generic over the planet phantom P so consumers in different planet pipelines (Earth / Mars / Moon) share one entry shape.
compute_translational_derivatives
Compute translational-only frame derivatives (no rotational dynamics).
default_leap_second_table
Create the default leap second table from hardcoded JEOD data.
derive_frame_attached_state
Compute the attached body’s composite-body inertial state from the parent reference frame’s current state, the (frozen-at-attach) rigid-body parent→structure offset, and the body’s structure→composite CoM offset.
dimensionless
Convenience constructor — wrap a raw f64 (dimensionless) as a typed Ratio.
evaluate_body_gravity_typed
Per-body gravity composition: applies the RF.10 integ-origin shift, accumulates Newtonian gravity, and adds the post-Newtonian relativistic correction in a single call.
evaluate_closure_kinematics
Evaluate a ClosureJointKinematicsSpec.
evaluate_joint_kinematics
Evaluate the joint kinematics at elapsed time t (seconds since the joint’s initial_angle_rad reference).
evaluate_multi_dof_kinematics
Evaluate a MultiDofJointKinematicsSpec at elapsed time t.
evaluate_sinusoidal_kinematics
Evaluate a SinusoidalJointKinematicsSpec at elapsed time t (seconds since the joint’s reference epoch).
frame_compute_relative_state_via_storage
Compute the state of to relative to from. Generic counterpart to FrameTree::compute_relative_state.
frame_origin
Get the position and velocity of a frame relative to the root inertial frame. Mirrors astrodyn_runner::Simulation::frame_origin so consumers that don’t own a Simulation (the Bevy adapter) can compute frame origins using only the frame tree.
frame_origin_typed
Typed sibling of frame_origin returning the frame’s position and velocity already wrapped as Position<F> / Velocity<F>. The frame marker F is the root frame’s marker (the result expresses the query frame’s origin in root-relative coordinates) — caller asserts the root is F. For the Bevy adapter and astrodyn_runner today, the root is by construction inertial, so callers pass F = Inertial.
init_from_mean_anomaly
Initialize translational state from Keplerian orbital elements (mean anomaly).
init_from_orbital_elements_typed
Typed sibling of init_from_orbital_elements.
init_rot_from_lvlh
Initialize rotational state from an LVLH-relative attitude + angular velocity.
propagate_forward
Forward propagation: compute a derived frame state from a source frame state and a relative mass point offset.
radians
Convenience constructor — wrap a raw f64 (radians) as a typed Angle.
recompute_composites_via_storage
Drive compute_node_composite in post-order over every root in the storage and return the outputs keyed by node id.
run_gravity_stage
Drive the gravity stage across an adapter-supplied iterator of bodies.
shift_wrench_to_parent
Single-link parallel-axis wrench shift.
solar_flux_at_distance
Compute solar flux at a given distance from the Sun.
sync_pfix_rotation
Sync a planet-fixed frame node’s rotation state from a computed matrix.
tjt_to_calendar
Convert truncated Julian time (TJT) to a Gregorian calendar date.
ut1_to_gmst_seconds
Convert UT1 days since noon 2000-01-01 to GMST in sidereal seconds.

Type Aliases§

Acceleration
Acceleration in frame F. Base SI unit: m/s².
Angle
Quantity type alias using the default base units.
AngularAcceleration
Angular acceleration in frame F. Base SI unit: rad/s².
AngularVelocity
Angular velocity in frame F. Base SI unit: rad/s.
Force
Force in frame F. Base SI unit: newtons.
FrameId
Handle into the FrameTree arena.
JeodQuat
The JEOD canonical quaternion type: scalar-first, left-transformation.
Mass
Quantity type alias using the default base units.
MassBodyId
Handle into the MassTree arena.
Position
Position in frame F (default: RootInertial). Base SI unit: meters.
Ratio
Quantity type alias using the default base units.
Torque
Torque in frame F. Base SI unit: N·m.
Velocity
Velocity in frame F. Base SI unit: m/s.