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.
accumulate_gravity— gravity accumulation across sourcesevaluate_atmosphere— atmosphere evaluation pipelinecompute_ballistic_drag— aerodynamic drag with frame transformcompute_gravity_torque— gravity gradient torque with quaternion conversioncollect_and_resolve_forces— force/torque collection with frame transformsintegrate_body— RK4 integration with 6-DOF/3-DOF routingvalidate_body— JEOD invariant checkingcompute_orbital_elements— orbital elements from translational statecompute_body_euler_angles— Euler angles from body attitudecompute_body_lvlh_frame— LVLH frame from translational statecompute_body_geodetic— geodetic coordinates from inertial positioncompute_body_solar_beta— solar beta angle
§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_typedorchestration 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
IntegrableObjecttrait — 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
MassStoragetree 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→pfixupdate (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+SourceFrameIdsslice. - 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_bodybefore stepping; misconfigurations surface asValidationErrorvariants 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
MassStoragetree 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
Planetmarker type. - define_
vehicle - Define a new compile-time
Vehiclemarker type.
Structs§
- Aerodynamic
Force - Aerodynamic force and torque on a vehicle.
- Atmosphere
State - Atmospheric state at a given position.
- Attach
Combine Inputs - Inputs to
combine_states_at_attach. - Body
Attitude - RootInertial → body attitude of vehicle
V, witnessed unit-norm and scalar-first / left-transformation (JEOD canonical). - Body
Frame - Body (CoM-centered) frame of vehicle
V. Rotates with the vehicle. - Calendar
Date - Gregorian calendar date+time representation.
- Closure
Joint Kinematics Spec - 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.
- Contact
Facet - A single contact geometry + material combination.
- Contact
Material - Spring-damper plus Coulomb-friction contact material.
- Detached
Subtree State - 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.
- Drag
Config - Vehicle drag configuration for the ballistic (default) model.
- Drag
Config Typed - Typed sibling of
DragConfig. - Dynamics
Config - Per-body dynamics-mode toggles consumed by the integrator.
- Earth
- Planet marker for Earth.
- Earth
Lighting State - 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).
- Exponential
Atmosphere - Exponential atmosphere model parameters.
- Flat
Plate - A single flat plate on a vehicle surface.
- Flat
Plate Params - Optical properties shared by one or more flat plates.
- Flat
Plate SrpResult - Result of flat-plate SRP computation with thermal emission.
- Flat
Plate Thermal - Thermal properties for a flat plate facet.
- Frame
Attach Inputs - Inputs to
derive_frame_attached_state. - Frame
Derivatives - Frame-state derivatives: translational and rotational acceleration. The integrator’s per-step output.
- Frame
Derivatives Typed - Typed sibling of
FrameDerivatives. - Frame
Transform - Proper rotation taking vectors expressed in
Fromto the same vectors expressed inTo. - Frame
Tree - Arena-based frame tree. Portable (no ECS dependency).
- Geodetic
State - Geodetic coordinates on a reference ellipsoid.
- Grav
Param - Gravitational parameter μ = GM tagged with the source planet
P. - Gravity
Acceleration - Gravitational acceleration, gradient tensor, and potential for a body.
- Gravity
Acceleration Typed - Typed sibling of
GravityAcceleration. - Gravity
Body Inputs - Per-body inputs the gravity stage driver consumes.
- Gravity
Control - Per-source gravity selector — point-mass vs. spherical harmonics, degree / order, gradient flags, and third-body / Battin / relativistic toggles.
- Gravity
Controls - Ordered list of
GravityControlentries — 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. - Gravity
Source - Per-body gravity payload: gravitational parameter
muplus theGravityModelthat selects between point-mass and spherical-harmonics evaluation. - Ground
Facet - Infinite-surface “ground” facet anchored to a planet via a
Terrainmodel. - Inertia
Tensor - Mass moment of inertia tensor (
kg·m²) expressed in frameF. - Integ
Origin - The integration-frame origin: position and velocity of the integration-frame origin expressed in root-inertial coordinates.
- Integration
Frame - A body’s integration frame — a non-rotating quasi-inertial frame whose origin generally differs from the root inertial origin.
- Joint
Kinematics Spec - Declarative specification for a kinematically driven single-axis joint.
- Kinematic
Child Inputs - Inputs to
compute_kinematic_child_state. - Lighting
Body - Apparent parameters of a celestial body as seen from the observer.
- Lighting
Params - 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). - Lvlh
Frame - LVLH frame state: rotation matrix, angular velocity, and origin position/velocity.
- Mars
- Planet marker for Mars.
- Mass
Node - Mass-tree wildcard inertial-flavor frame for kinematic-propagation scratch state.
- Mass
Node Outputs - Output of a single-node composition step.
- Mass
Node View - Read-only view of one node in a mass tree, as needed by the composition kernel.
- Mass
Point State - Position and orientation of a mass point relative to a parent frame.
- Mass
Properties - Rigid-body mass / inertia / CoM-offset block.
- Mass
Properties Typed - Typed sibling of
MassPropertiesparameterized by a vehicle markerV. Mass becomes auom::si::f64::Mass, inertia is wrapped inInertiaTensor<BodyFrame<V>>, and the center-of-mass position carries theStructuralFrame<V>phantom tag. - Mass
Tree - Arena-based mass tree. Portable, no ECS dependency.
- MetAtmosphere
- MET (Marshall Engineering Thermosphere) atmosphere model configuration.
- Moon
- Planet marker for Moon.
- Multi
DofJoint Kinematics Spec - Declarative specification for a multi-DOF kinematic joint.
- Ned
- North-East-Down topocentric frame relative to chief vehicle
Chief. - Orbital
Elements - Classical orbital elements computed from Cartesian state vectors.
- Planet
Fixed - Planet-fixed frame for any planet
P. Rotates with that planet. - Planet
Inertial - A particular planet’s inertial (non-rotating, J2000-aligned) frame, centered at the planet’s CoM.
- Planet
Shape - Planetary shape parameters (reference ellipsoid).
- Qty3
- Componentwise 3-vector: each of
x,y,zcarries the dimensionD, and the whole vector carries the frame tagF. - Radiation
Force - Radiation pressure force and torque on a vehicle.
- RefFrame
Rot - Rotational state of a frame relative to its parent.
- RefFrame
State - Combined translational + rotational state of a frame relative to its
parent. The untyped storage form used by
crate::FrameTree. - RefFrame
Trans - Translational state of a frame relative to its parent.
- Resolved
Relativistic Source - Resolved source for relativistic correction computation.
- Resolved
Source - Information about a gravity source resolved from a source identifier.
- Root
Inertial - The simulation’s root inertial frame — the unique inertial node at the top of the frame tree.
- Rotational
State - Rotational state of a rigid body.
- Rotational
State Typed - Typed sibling of
RotationalStateparameterized by a vehicle markerV. The attitude is aBodyAttitude<V>— the wrapper owns the JEOD left-multiply convention so callers cannot integrate via rawmultiplyand accidentally swap operand order (issue #252). Angular velocity carries theBodyFrame<V>phantom tag. - Self
Planet - 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.
- Simulation
Time - Complete simulation time state across all time scales.
- Sinusoidal
Joint Kinematics Spec - Declarative specification for a single-axis joint whose angle is a sinusoidal function of time:
- SixDof
State - Combined translational + rotational state for 6-DOF integration.
- SixDof
State Typed - Typed sibling of
SixDofStatecarrying a vehicle phantomVon the rotational half and a frame phantomFon the translational half. ComposesTranslationalStateTyped<F>andRotationalStateTyped<V>without introducing new arithmetic — both halves carry their ownto_untyped/from_untyped_uncheckedboundaries already. - Spherical
Terrain - Spherical-Earth terrain — ground at a fixed planet radius.
- Structural
Frame - Structural (geometric-origin) frame of vehicle
V. Rotates with vehicle. - Sun
- Planet marker for Sun.
- Tidal
Body - A body that raises tides on the primary (e.g., Moon, Sun).
- Tidal
Config - Configuration for solid body tidal effects on a gravity source.
- Tidal
Config Typed - Typed sibling of
TidalConfig. - Time
Manager - Time manager: maintains all time scale values and propagates updates.
- Total
Force - Net body force / torque, the integrator’s input each step.
- Total
Force Typed - Typed sibling of
TotalForce. - Translational
State - Translational state in the integration frame.
- Translational
State Typed - Typed sibling of
TranslationalStatecarrying 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 aWrenchcrosses module boundaries, the orchestration layer (astrodyn::wrench) tags it with the owning entity’s structural frame. - kilogram
- Re-export of
uom::si::mass::kilogramfor 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§
- Ephemeris
Body - Solar system body identifiers for ephemeris queries.
- Ephemeris
Error - Ephemeris errors.
- Euler
Sequence - The 12 possible Euler rotation sequences.
- GeoIndex
Type - Type of geomagnetic index provided.
- Gravity
Gradient - Self-documenting selector for the gravity-gradient tensor flag at
the
GravityControlconstructor seam. Replaces the bareboolthe spherical / non-spherical constructors used to accept, so a call site reads asGravityControl::new_spherical(earth, GravityGradient::Skip)rather than the bare-boolform, and the reader does not need to remember which boolean polarity meant what. - Gravity
Model - Gravity-model selector — point-mass (μ/r²) vs. spherical-harmonics
(Gottlieb-recursion
Cnm/Snmevaluation). - Joint
Kinematics Model - 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). - Lvlh
Angular Velocity Frame - 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.
- RefFrame
Kind - Runtime kind of a reference-frame tree node. Mirrors the runtime tags JEOD uses to distinguish inertial, planet-fixed, and body frames.
- Single
DofKinematics - Per-DOF kinematic style for a single axis inside a
MultiDofJointKinematicsSpecchain. - Time
Scale Id - Identifies a time scale in the converter graph.
Constants§
- AXIS_
NORM_ TOL - Tolerance on
axis_in_parent.length_squared() - 1accepted byevaluate. - 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
MultiDofJointKinematicsSpeccan 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§
- Array3
Ext - Extension trait on
[f64; 3](raw component arrays from CSVs or JEOD initial conditions) producing frame-tagged 3-vectors. - Compatible
Vehicle Pair - 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.
- Frame
Storage - Read-only access to a frame tree, abstracting over the underlying
storage. Implementors:
FrameTree(arena), and Bevy adapters such asastrodyn_bevy’sRelativeFrameStateSystemParam. - Mass
Storage - 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::DVec3producing 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
RadiationDefaultSurfaceformula. - 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_implkernel. - 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_implkernel. - compute_
quaternion_ from_ euler_ angles_ typed - Typed sibling for the file-private
compute_quaternion_from_euler_angles_implkernel. - compute_
relative_ state_ typed - Typed sibling of
FrameTree::compute_relative_statereturning aRefFrameStateTyped<From, To>. The caller asserts the supplied frame IDs correspond to frames whose markers areFromandTo— the arena is heterogeneous and stores untypedRefFrameStateper node, so this is afrom_untyped_uncheckedboundary 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_polarreturning the rotation already wrapped as a typedFrameTransform<RootInertial, PlanetFixed<P>>. Generic over the planet phantomPso 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’sinitial_angle_radreference). - evaluate_
multi_ dof_ kinematics - Evaluate a
MultiDofJointKinematicsSpecat elapsed timet. - evaluate_
sinusoidal_ kinematics - Evaluate a
SinusoidalJointKinematicsSpecat elapsed timet(seconds since the joint’s reference epoch). - frame_
compute_ relative_ state_ via_ storage - Compute the state of
torelative tofrom. Generic counterpart toFrameTree::compute_relative_state. - frame_
origin - Get the position and velocity of a frame relative to the root inertial
frame. Mirrors
astrodyn_runner::Simulation::frame_originso consumers that don’t own aSimulation(the Bevy adapter) can compute frame origins using only the frame tree. - frame_
origin_ typed - Typed sibling of
frame_originreturning the frame’s position and velocity already wrapped asPosition<F>/Velocity<F>. The frame markerFis the root frame’s marker (the result expresses the query frame’s origin in root-relative coordinates) — caller asserts the root isF. For the Bevy adapter andastrodyn_runnertoday, the root is by construction inertial, so callers passF = 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_compositein 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
Quantitytype alias using the default base units.- Angular
Acceleration - Angular acceleration in frame
F. Base SI unit: rad/s². - Angular
Velocity - Angular velocity in frame
F. Base SI unit: rad/s. - Force
- Force in frame
F. Base SI unit: newtons. - FrameId
- Handle into the
FrameTreearena. - Jeod
Quat - The JEOD canonical quaternion type: scalar-first, left-transformation.
- Mass
Quantitytype alias using the default base units.- Mass
Body Id - Handle into the
MassTreearena. - Position
- Position in frame
F(default:RootInertial). Base SI unit: meters. - Ratio
Quantitytype 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.