Orekit is the best space mechanics tool I know. Developed in Java (cross-platform), Orekit is a space dynamics open source library, based on Common Apache Math.
Despite the fact it has no visualisation tool so far, the different force model it contains make it a really good choice if your plan is to solve accurate flight dynamics problem.
Orekit includes all available IERS convention for frame definition. It includes orbit propagators of 3 types :
- Analytical (Kepler, Eckstein-Heschler, SDP4/SGP4 with 2006 corrections)
- Numerical (with customizable force models)
- semi-analytical propagation based on Draper Semianalytic Satellite Theory (DSST) with customizable force models.
For information, you'll find on the same address above the Rugged add-on. Rugged is a sensor-to-terrain mapping tool which takes into account Digital Elevation Models (DEM) in its line of sight computation. It is a free software intermediate-level library written in Java and implemented as an add-on for Orekit.
Here are some of the features Orekit provides :
Time
high accuracy absolute dates
time scales (TAI, UTC, UT1, GPS, TT, TCG, TDB, TCB, GMST, GST ...)
transparent handling of leap seconds
Geometry
frames hierarchy supporting fixed and time-dependent (or telemetry-dependent) frames
predefined frames (EME2000/J2000, ICRF, GCRF, ITRF93, ITRF97, ITRF2000, ITRF2005, ITRF2008 and intermediate frames, TOD, MOD, GTOD and TOD frames, Veis, topocentric, tnw and qsw local orbital frames, spacecraft body, Moon, Sun, planets, solar system barycenter, Earth-Moon barycenter)
user extensible (used operationally in real time with a set of about 60 frames on several spacecraft)
transparent handling of IERS Earth Orientation Parameters (for both new CIO-based frames following IERS 2010 conventions and old equinox-based frames)
transparent handling of JPL DE 4xx (405, 406 and more recent) and INPOP ephemerides
transforms including kinematic combination effects
composite transforms reduction and caching for efficiency
extensible central body shapes models (with predefined spherical and ellipsoidic shapes)
cartesian and geodesic coordinates, kinematics
Spacecraft state
Cartesian, Keplerian (including hyperbolic), circular and equinoctial parameters
Two-Line Elements
transparent conversion between all parameters
automatic binding with frames
attitude state and derivative
Jacobians
mass management
user-defined associated state (for example battery status, or higher order derivatives, or anything else)
Propagation
analytical propagation models:
Kepler
Eckstein-Heschler
SDP4/SGP4 with 2006 corrections
numerical propagation with:
customizable force models:
central attraction
gravity models (automatic reading of ICGEM (new Eigen models), SHM (old Eigen models), EGM and GRGS gravity field files formats, even compressed)
atmospheric drag (DTM2000, Jacchia-Bowman 2006, Harris-Priester and simple exponential models) and Marshall solar Activity Future Estimation
third body attraction (with data for Sun, Moon and all solar systems planets)
radiation pressure with eclipses
solid tides, with or without solid pole tide
ocean tides, with or without ocean pole tide
general relativity
multiple maneuvers
state of the art ODE integrators (adaptive stepsize with error control, continuous output, switching functions, G-stop, step normalization ...)
computation of Jacobians with respect to orbital parameters and selected force models parameters
serialization mechanism to store complete results on persistent storage for later use
semi-analytical propagation based on Draper Semianalytic Satellite Theory (DSST) with customizable force models:
central body with full gravity model
third body attraction
atmospheric drag
radiation pressure with eclipses
tabulated ephemerides:
file based
memory based
integration based
unified interface above analytical/numerical/semianalytical/tabulated propagators for easy switch from coarse analysis to fine simulation with one line change
all propagators can be used in several different modes:
slave mode: propagator is driven by calling application
master mode: propagator drives application callback functions
ephemeris generation mode: all intermediate results are stored during propagation and provided back to the application which can navigate at will through them, effectively using the propagated orbit as if it was an analytical model, even if it really is a numerically propagated one, which is ideal for search and iterative algorithms
handling of discrete events during integration (models changes, G-stop, simple notifications ...)
predefined discrete events:
eclipse (both umbra and penumbra)
ascending and descending node crossing
apogee and perigee crossing
alignment with some body in the orbital plane (with customizable threshold angle)
raising/setting with respect to a ground location (with customizable triggering elevation)
date
altitude crossing
target detection in sensor field of view (circular or dihedral)
complex geographic zones traversal
impulse maneuvers occurrence
possibility of slightly shifting events in time (for example to switch from solar pointing mode to something else a few minutes before eclipse entry and reverting to solar pointing mode a few minutes after eclipse exit)
Attitude
extensible attitude evolution models
predefined laws:
central body related attitude (nadir pointing, center pointing, target pointing, yaw compensation, yaw-steering)
orbit referenced attitudes (LOF aligned, offset on all axes)
space referenced attitudes (inertial, celestial body-pointed, spin-stabilized)
tabulated attitudes
Orbit file handling
loading of SP3-a and SP3-c orbit files
loading of CCSDS orbit data messages
Atmosphere models
tropospheric delay (modified Saastamoinen)
geomagnetic field (WMM, IGRF)
Customizable data loading
loading from local disk
loading from classpath
loading from network (even through internet proxies)
support for zip archives
support from gzip compressed files
plugin mechanism to delegate loading to user defined database or data access library
Localized in several languages
English
French
Galician
German
Greek
Italian
Norwegian
Romanian
Spanish