/** * Estimate tolerance vectors for an AdaptativeStepsizeIntegrator. * * <p>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): * * <pre> * V² r |dV| = mu |dr| * </pre> * * 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. * * <p>The tolerances are only <em>orders of magnitude</em>, 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. * * @param dP user specified position error (m) * @param orbit reference orbit * @return a two rows array, row 0 being the absolute tolerance error and row 1 being the relative * tolerance error * @exception PropagationException if Jacobian is singular */ public static double[][] tolerances(final double dP, final Orbit orbit) throws PropagationException { return NumericalPropagator.tolerances(dP, orbit, OrbitType.EQUINOCTIAL); }