Class GLONASSNumericalPropagator

All Implemented Interfaces:
Propagator, PVCoordinatesProvider

public class GLONASSNumericalPropagator extends AbstractIntegratedPropagator
This class propagates GLONASS orbits using numerical integration.

As recommended by the GLONASS Interface Control Document (ICD), a 4th order Runge-Kutta technique shall be used to integrate the equations.

Classical used of this orbit propagator is to compute GLONASS satellite coordinates from the navigation message.

If the projections of luni-solar accelerations to axes of Greenwich geocentric coordinates X''(tb), Y''(tb) and Z''(tb) are available in the navigation message; a transformation is performed to convert these accelerations into the correct coordinate system. In the case where they are not available into the navigation message, these accelerations are computed.

Caution: The Glonass numerical propagator can only be used with GLONASSFdmaNavigationMessage. Using this propagator with a GLONASSAlmanac is prone to error.

Author:
Bryan Cazabonne
See Also:
  • Constructor Details

    • GLONASSNumericalPropagator

      public GLONASSNumericalPropagator(ClassicalRungeKuttaIntegrator integrator, GLONASSOrbitalElements glonassOrbit, Frame eci, AttitudeProvider provider, double mass, DataContext context, boolean isAccAvailable)
      Private constructor.
      Parameters:
      integrator - Runge-Kutta integrator
      glonassOrbit - Glonass orbital elements
      eci - Earth Centered Inertial frame
      provider - Attitude provider
      mass - Satellite mass (kg)
      context - Data context
      isAccAvailable - true if the acceleration is transmitted within the navigation message
  • Method Details

    • getGLONASSOrbitalElements

      public GLONASSOrbitalElements getGLONASSOrbitalElements()
      Gets the underlying GLONASS orbital elements.
      Returns:
      the underlying GLONASS orbital elements
    • propagate

      public SpacecraftState propagate(AbsoluteDate date)
      Propagate towards a target date.

      Simple propagators use only the target date as the specification for computing the propagated state. More feature rich propagators can consider other information and provide different operating modes or G-stop facilities to stop at pinpointed events occurrences. In these cases, the target date is only a hint, not a mandatory objective.

      Specified by:
      propagate in interface Propagator
      Overrides:
      propagate in class AbstractIntegratedPropagator
      Parameters:
      date - target date towards which orbit state should be propagated
      Returns:
      propagated state
    • createMapper

      protected StateMapper createMapper(AbsoluteDate referenceDate, double mu, OrbitType orbitType, PositionAngleType positionAngleType, AttitudeProvider attitudeProvider, Frame frame)
      Description copied from class: AbstractIntegratedPropagator
      Create a mapper between raw double components and spacecraft state. /** Simple constructor.

      The position parameter type is meaningful only if propagation orbit type support it. As an example, it is not meaningful for propagation in Cartesian parameters.

      Specified by:
      createMapper in class AbstractIntegratedPropagator
      Parameters:
      referenceDate - reference date
      mu - central attraction coefficient (m³/s²)
      orbitType - orbit type to use for mapping
      positionAngleType - angle type to use for propagation
      attitudeProvider - attitude provider
      frame - inertial frame
      Returns:
      new mapper
    • getMainStateEquations

      protected AbstractIntegratedPropagator.MainStateEquations getMainStateEquations(ODEIntegrator integ)
      Description copied from class: AbstractIntegratedPropagator
      Get the differential equations to integrate (for main state only).
      Specified by:
      getMainStateEquations in class AbstractIntegratedPropagator
      Parameters:
      integ - numerical integrator to use for propagation.
      Returns:
      differential equations for main state