Class NumericalPropagator

    • Constructor Detail

      • NumericalPropagator

        public NumericalPropagator​(org.hipparchus.ode.ODEIntegrator integrator)
        Create a new instance of NumericalPropagator, based on orbit definition mu. After creation, the instance is empty, i.e. the attitude provider is set to an unspecified default law and there are no perturbing forces at all. This means that if addForceModel is not called after creation, the integrated orbit will follow a Keplerian evolution only. The defaults are OrbitType.EQUINOCTIAL for propagation orbit type and PositionAngle.TRUE for position angle type.
        Parameters:
        integrator - numerical integrator to use for propagation.
    • Method Detail

      • removeForceModels

        public void removeForceModels()
        Remove all force models (except central attraction).

        Once all perturbing forces have been removed (and as long as no new force model is added), the integrated orbit will follow a Keplerian evolution only.

        See Also:
        addForceModel(ForceModel)
      • getAllForceModels

        public List<ForceModel> getAllForceModels()
        Get all the force models, perturbing forces and Newtonian attraction included.
        Returns:
        list of perturbing force models, with Newtonian attraction being the last one
        See Also:
        addForceModel(ForceModel), setMu(double)
      • setInitialState

        public void setInitialState​(SpacecraftState initialState)
        Set the initial state.
        Parameters:
        initialState - initial state
      • createMapper

        protected StateMapper createMapper​(AbsoluteDate referenceDate,
                                           double mu,
                                           OrbitType orbitType,
                                           PositionAngle positionAngleType,
                                           AttitudeProvider attitudeProvider,
                                           Frame frame)
        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
      • tolerances

        public static double[][] tolerances​(double dP,
                                            Orbit orbit,
                                            OrbitType type)
        Estimate tolerance vectors for integrators.

        The errors are estimated from partial derivatives properties of orbits, starting from a scalar position error specified by the user. Considering the energy conservation equation V = sqrt(mu (2/r - 1/a)), we get at constant energy (i.e. on a Keplerian trajectory):

         V² r |dV| = mu |dr|
         

        So we deduce a scalar velocity error consistent with the position error. From here, we apply orbits Jacobians matrices to get consistent errors on orbital parameters.

        The tolerances are only orders of magnitude, and integrator tolerances are only local estimates, not global ones. So some care must be taken when using these tolerances. Setting 1mm as a position error does NOT mean the tolerances will guarantee a 1mm error position after several orbits integration.

        Parameters:
        dP - user specified position error
        orbit - reference orbit
        type - propagation type for the meaning of the tolerance vectors elements (it may be different from orbit.getType())
        Returns:
        a two rows array, row 0 being the absolute tolerance error and row 1 being the relative tolerance error