Class NumericalPropagator

    • Field Detail

      • DEFAULT_ORBIT_TYPE

        public static final OrbitType DEFAULT_ORBIT_TYPE
        Default orbit type.
      • DEFAULT_POSITION_ANGLE_TYPE

        public static final PositionAngleType DEFAULT_POSITION_ANGLE_TYPE
        Default position angle type.
    • Method Detail

      • setIgnoreCentralAttraction

        public void setIgnoreCentralAttraction​(boolean ignoreCentralAttraction)
        Set the flag to ignore or not the creation of a NewtonianAttraction.
        Parameters:
        ignoreCentralAttraction - if true, NewtonianAttraction is not added automatically if missing
      • 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
      • createHarvester

        protected AbstractMatricesHarvester createHarvester​(String stmName,
                                                            RealMatrix initialStm,
                                                            DoubleArrayDictionary initialJacobianColumns)
        Create the harvester suitable for propagator.
        Overrides:
        createHarvester in class AbstractPropagator
        Parameters:
        stmName - State Transition Matrix state name
        initialStm - initial State Transition Matrix ∂Y/∂Y₀, if null (which is the most frequent case), assumed to be 6x6 identity
        initialJacobianColumns - initial columns of the Jacobians matrix with respect to parameters, if null or if some selected parameters are missing from the dictionary, the corresponding initial column is assumed to be 0
        Returns:
        harvester to retrieve computed matrices during and after propagation
      • createMapper

        protected StateMapper createMapper​(AbsoluteDate referenceDate,
                                           double mu,
                                           OrbitType orbitType,
                                           PositionAngleType 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

        @Deprecated
        public static double[][] tolerances​(double dP,
                                            AbsolutePVCoordinates absPva)
        Deprecated.
        since 13.0. Use ToleranceProvider for default and custom tolerances.
        Estimate tolerance vectors for integrators when propagating in absolute position-velocity-acceleration.
        Parameters:
        dP - user specified position error
        absPva - reference absolute position-velocity-acceleration
        Returns:
        a two rows array, row 0 being the absolute tolerance error and row 1 being the relative tolerance error
      • tolerances

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

        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
      • tolerances

        @Deprecated
        public static double[][] tolerances​(double dP,
                                            double dV,
                                            Orbit orbit,
                                            OrbitType type)
        Deprecated.
        since 13.0. Use ToleranceProvider for default and custom tolerances.
        Estimate tolerance vectors for integrators when propagating in orbits.

        The errors are estimated from partial derivatives properties of orbits, starting from scalar position and velocity errors specified by the user.

        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
        dV - user specified velocity 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
        Since:
        10.3
      • beforeIntegration

        protected void beforeIntegration​(SpacecraftState initialState,
                                         AbsoluteDate tEnd)
        Method called just before integration.

        The default implementation does nothing, it may be specialized in subclasses.

        Overrides:
        beforeIntegration in class AbstractIntegratedPropagator
        Parameters:
        initialState - initial state
        tEnd - target date at which state should be propagated