This package provides tools to propagate orbital states with different methods.

Propagation is the prediction of the evolution of an initial state. The initial state and the propagated states are represented in OREKIT by a {@link org.orekit.propagation.SpacecraftState}, which is a simple container for all needed information at a specific date : mass, {@link org.orekit.utils.PVCoordinates kinematics}, {@link org.orekit.attitudes.Attitude attitude}, {@link org.orekit.time.AbsoluteDate date}, {@link org.orekit.frames.Frame frame}. The state provides basic interpolation features allowing to shift it slightly to close dates. For more accurate and farthest dates, several full-featured propagators are available to propagate the state.

Keplerian propagation
The {@link org.orekit.propagation.analytical.KeplerianPropagator} implements the {@link org.orekit.propagation.Propagator} interface, which ensures that we can obtain a propagated SpacecraftState at any time once the instance is initialized with an initial state. This extrapolation is not a problem with a simple {@link org.orekit.orbits.EquinoctialOrbit} representation: only the mean anomaly value changes.

Eckstein-Hechler propagation
This analytical model is suited for near circular orbits and inclination neither equatorial nor critical. It considers J2 to J6 potential coefficients correctors, and uses mean parameters to compute the new position. As the keplerian propagator, it implements the {@link org.orekit.propagation.Propagator} interface.

Numerical propagation
It is the most important part of the OREKIT project. Based on commons-math integrators, the {@link org.orekit.propagation.numerical.NumericalPropagator} class realizes the interface between space mechanics and mathematical resolutions. If its utilization seems difficult on first sight, it is in fact quite clear and intuitive.

The mathematical problem to integrate is a seven dimension time derivative equations system. The six first equations are given by the Gauss equations (expressed in {@link org.orekit.orbits.EquinoctialOrbit}) and the seventh is simply the flow rate and mass equation. This first order system is computed by the {@link org.orekit.propagation.numerical.TimeDerivativesEquations} class. It will be instanced by the propagator and then be modified at each step (a fixed t value) by all the needed {@link org.orekit.forces.ForceModel force models} which will add their contribution, the perturbing acceleration.

The {@link org.apache.commons.math.ode.FirstOrderIntegrator integrators} provided by commons-math need the state vector at t0, the state vector first time derivate at t0, and then calculates the next step state vector, and ask for the next first time derivative, etc. until it reaches the final asked date.

The {@link org.orekit.propagation.numerical.NumericalPropagatorWithJacobians} is a specialized class which enables to compute jacobians with respect to orbital parameters and force models parameters while propagating.

@author Luc Maisonobe @author Fabien Maussion @author Pascal Parraud