Class FieldNumericalPropagator<T extends org.hipparchus.RealFieldElement<T>>

    • Constructor Detail

      • FieldNumericalPropagator

        public FieldNumericalPropagator​(org.hipparchus.Field<T> field,
                                        org.hipparchus.ode.FieldODEIntegrator<T> 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.
        field - Field used by default
    • Method Detail

      • addForceModel

        public void addForceModel​(ForceModel model)
        Add a force model to the global perturbation model.

        If this method is not called at all, the integrated orbit will follow a Keplerian evolution only.

        Parameters:
        model - perturbing ForceModel to add
        See Also:
        removeForceModels(), setMu(double)
      • removeForceModels

        public void removeForceModels()
        Remove all perturbing force models from the global perturbation model.

        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
        Since:
        9.1
        See Also:
        addForceModel(ForceModel), setMu(double)
      • getForceModels

        @Deprecated
        public List<ForceModel> getForceModels()
        Deprecated.
        as of 9.1, this method is deprecated, the perturbing force models are retrieved together with the Newtonian attraction by calling getAllForceModels()
        Get perturbing force models list.
        Returns:
        list of perturbing force models
      • getNewtonianAttractionForceModel

        @Deprecated
        public NewtonianAttraction getNewtonianAttractionForceModel()
        Deprecated.
        as of 9.1, this method is deprecated, the Newtonian attraction force model (if any) is the last in the getAllForceModels()
        Get the Newtonian attraction from the central body force model.
        Returns:
        Newtonian attraction force model
      • setInitialState

        public void setInitialState​(FieldSpacecraftState<T> initialState)
        Set the initial state.
        Parameters:
        initialState - initial state
      • createMapper

        protected FieldStateMapper<T> createMapper​(FieldAbsoluteDate<T> 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 FieldAbstractIntegratedPropagator<T extends org.hipparchus.RealFieldElement<T>>
        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 <T extends org.hipparchus.RealFieldElement<T>> double[][] tolerances​(T dP,
                                                                                           FieldOrbit<T> 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.

        Type Parameters:
        T - elements type
        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