#![forbid(unsafe_code)]
#![deny(missing_docs)]
pub mod atmosphere;
pub mod attach;
pub mod body_action;
pub mod derived;
pub mod forces;
pub mod frame_orchestration;
pub mod gravity;
pub mod integrable;
pub mod integration;
pub mod integrator;
pub mod interactions;
pub mod kinematic_propagation;
pub mod pipeline;
pub mod planet_config;
pub mod recipes;
pub mod rotation_model;
pub mod simulation_builder;
pub mod source_frames;
pub mod source_handle;
pub mod source_state;
pub mod sources;
#[doc(hidden)] pub mod typed_bridge;
pub mod validation;
pub mod vehicle_builder;
pub mod vehicle_config;
pub mod wrench;
pub use astrodyn_dynamics::kinematic_joint::{
evaluate as evaluate_joint_kinematics, evaluate_closure as evaluate_closure_kinematics,
evaluate_multi_dof as evaluate_multi_dof_kinematics,
evaluate_sinusoidal as evaluate_sinusoidal_kinematics, ClosureJointKinematicsSpec,
JointKinematicsModel, JointKinematicsSpec, MultiDofJointKinematicsSpec, SingleDofKinematics,
SinusoidalJointKinematicsSpec, AXIS_NORM_TOL, MAX_MULTI_DOF_AXES,
};
pub use atmosphere::{
evaluate_atmosphere, evaluate_atmosphere_typed, evaluate_body_atmosphere_typed,
run_atmosphere_stage, AtmosphereBodyInputs, AtmosphereConfig, AtmosphereModel,
};
pub use attach::{
stage_attach_combine, stage_detach_capture, CrossIntegFrameStateShift, StageAttachInputs,
StageAttachOutputs,
};
pub use body_action::{BodyAction, LvlhAngularVelocityFrame, OrbitalElementSet};
pub use derived::{
compute_body_euler_angles, compute_body_euler_angles_typed, compute_body_geodetic,
compute_body_geodetic_typed, compute_body_lvlh_frame, compute_body_lvlh_frame_typed,
compute_body_solar_beta, compute_body_solar_beta_typed, compute_lvlh_relative_state,
compute_lvlh_relative_state_typed, compute_orbital_elements, compute_orbital_elements_typed,
compute_relative_state, LvlhRelativeState, RelativeState, RelativeTranslation,
};
pub use forces::{collect_and_resolve_forces, collect_and_resolve_forces_typed};
pub use frame_orchestration::{
compute_relative_state_typed, evaluate_and_apply_frame_switch, frame_origin,
frame_origin_typed, sync_pfix_rotation, FrameSwitchTargetMissing,
};
pub use gravity::{
accumulate_gravity, accumulate_gravity_typed, accumulate_relativistic_corrections,
accumulate_relativistic_corrections_typed, evaluate_body_gravity_typed, run_gravity_stage,
GravityBodyInputs, ResolvedRelativisticSource, ResolvedSource,
};
pub use integrable::IntegrableObject;
pub use integration::{
integrate_bodies_contact_coupled, integrate_bodies_contact_coupled_typed, integrate_body,
integrate_body_coupled, integrate_body_coupled_typed, integrate_body_typed, reset_integrators,
CoupledBodyInput, CoupledBodyInputTyped, CoupledIntegScratch, CoupledStageEval,
};
pub use integrator::{Abm4State, GaussJacksonConfig, GaussJacksonState, IntegratorType};
pub use interactions::{
evaluate_contact_pair, evaluate_ground_contact_pair, ContactPairEval, FlatPlateStageInputs,
FlatPlateState, GroundContactPairEval, ThermalIntegrationOrder,
};
pub use kinematic_propagation::{propagate_state_via_storage, KinematicEdge, KinematicNodeState};
pub use pipeline::{PipelineStage, PIPELINE_ORDER};
pub use planet_config::{PlanetConfig, EARTH, MARS, MOON, SUN};
pub use rotation_model::RotationModel;
pub use simulation_builder::{MassTreeAttachment, SimulationBuilder};
pub use source_frames::SourceFrameIds;
pub use source_handle::SourceHandle;
pub use source_state::{
set_source_position, set_source_state, source_frame_id, source_pfix_rotation, source_position,
};
pub use sources::GravitySourceEntry;
pub use validation::{validate_body, ValidationError};
pub use vehicle_builder::{
BuildState, HasIntegrator, NeedsMass, NeedsState, Ready, VehicleBuilder,
};
pub use vehicle_config::{
DerivedStateConfig, EarthLightingConfig, FrameSwitchConfig, GeodeticConfig, ShadowBody,
SrpModel, SwitchSense, VehicleConfig,
};
pub use wrench::{aggregate_wrenches_via_storage, edge_geometry_from_composites, EdgeGeometry};
pub use astrodyn_dynamics::{
abm4_translational_step, combine_states_at_attach, compute_frame_derivatives,
compute_kinematic_child_state, compute_t_inertial_struct, compute_translational_derivatives,
derive_frame_attached_state, propagate_forward, recompute_composites_via_storage,
shift_wrench_to_parent, AttachCombineInputs, DetachedSubtreeState, DynamicsConfig,
FrameAttachInputs, FrameDerivatives, GravityAcceleration, MassBodyId, MassNodeOutputs,
MassNodeView, MassPointState, MassProperties, MassStorage, MassTree, RotationalState,
SixDofState, SixDofStateTyped, TotalForce, TranslationalState, Wrench,
};
pub use astrodyn_dynamics::body_init::{
init_from_mean_anomaly, init_from_orbital_elements_typed, init_rot_from_lvlh,
};
pub use astrodyn_dynamics::kinematic_propagation::KinematicChildInputs;
pub use astrodyn_dynamics::forces::{
FrameDerivativesTyped, GravityAccelerationTyped, TotalForceTyped,
};
pub use astrodyn_dynamics::mass::MassPropertiesTyped;
pub use astrodyn_dynamics::rotational::RotationalStateTyped;
pub use astrodyn_dynamics::state::TranslationalStateTyped;
pub use astrodyn_gravity::tides::{
compute_delta_c20, compute_delta_c20_typed, TidalBody, TidalConfig, TidalConfigTyped, EARTH_K2,
};
pub use astrodyn_gravity::fixtures as gravity_fixtures;
pub use astrodyn_gravity::{
GravityControl, GravityControls, GravityGradient, GravityModel, GravitySource,
};
pub use astrodyn_atmosphere::exponential::ExponentialAtmosphere;
pub use astrodyn_atmosphere::met::{GeoIndexType, MetAtmosphere};
pub use astrodyn_atmosphere::AtmosphereState;
pub use astrodyn_interactions::{
compute_ballistic_drag, compute_ballistic_drag_typed, compute_cannonball_srp,
compute_cannonball_srp_typed, compute_earth_lighting, compute_earth_lighting_typed,
compute_flat_plate_srp_thermal, compute_gravity_torque, compute_gravity_torque_typed,
compute_shadow_fraction, solar_flux_at_distance, AerodynamicForce, ContactFacet,
ContactMaterial, DragConfig, DragConfigTyped, EarthLightingState, FlatPlate, FlatPlateParams,
FlatPlateSrpResult, FlatPlateThermal, GroundFacet, LightingBody, LightingParams, Phase,
RadiationForce, SphericalTerrain, Terrain, SOLAR_RADIUS,
};
pub use astrodyn_frames::{
compute_relative_state as frame_compute_relative_state_via_storage, FrameId, FrameStorage,
FrameTree, RefFrameKind, RefFrameRot, RefFrameState, RefFrameTrans,
};
pub use astrodyn_time::{
epoch::{J2000_TAI_TJT, J2000_TT_JD, J2000_TT_TJT, SECONDS_PER_DAY, TAI_TT_OFFSET},
leap_second::default_leap_second_table,
time_converter_ut1_gmst::ut1_to_gmst_seconds,
time_utc::{calendar_to_tjt, tjt_to_calendar, CalendarDate},
SimulationTime, TimeManager, TimeScaleId,
};
pub use astrodyn_frames::rotation_j2000::{
compute_t_parent_this_from_tjt, compute_t_parent_this_from_tjt_with_polar,
compute_t_parent_this_from_tjt_with_polar_typed,
};
pub use astrodyn_frames::{
nutation_j2000, precession_j2000, rotation_j2000, rotation_mars, rotation_moon,
};
pub use astrodyn_ephemeris::{
assets as ephemeris_assets, Ephemeris, EphemerisBody, EphemerisError,
};
pub use astrodyn_gravity::relativistic;
pub use astrodyn_planet::PlanetShape;
pub use astrodyn_quantities::aliases::{
Acceleration, AngularAcceleration, AngularVelocity, Force, InertiaTensor, Position, Torque,
Velocity,
};
pub use astrodyn_quantities::diagnostics::CompatibleVehiclePair;
pub use astrodyn_quantities::dims::GravParam;
pub use astrodyn_quantities::ext::{Array3Ext, F64Ext, Vec3Ext};
pub use astrodyn_quantities::frame::{
BodyFrame, Earth, Ecef, Frame, IntegrationFrame, Lvlh, Mars, MassNode, Moon, Ned, Planet,
PlanetFixed, PlanetInertial, RootInertial, SelfPlanet, SelfRef, StructuralFrame, Sun, Vehicle,
};
pub use astrodyn_quantities::integ_origin::IntegOrigin;
pub use astrodyn_quantities::body_attitude::BodyAttitude;
pub use astrodyn_quantities::frame_transform::FrameTransform;
pub use astrodyn_quantities::qty3::Qty3;
pub use astrodyn_quantities::{define_planet, define_vehicle};
pub use uom::si::f64::{Angle, Mass, Ratio};
pub use uom::si::mass::kilogram;
#[inline]
pub fn radians(value: f64) -> Angle {
Angle::new::<uom::si::angle::radian>(value)
}
#[inline]
pub fn dimensionless(value: f64) -> Ratio {
Ratio::new::<uom::si::ratio::ratio>(value)
}
pub use astrodyn_math::JeodQuat;
pub use astrodyn_math::{EulerSequence, GeodeticState, LvlhFrame, OrbitalElements};
pub use astrodyn_math::euler_angles::{
compute_euler_angles_from_matrix_typed, compute_matrix_from_euler_angles_typed,
compute_quaternion_from_euler_angles_typed,
};