Eckstein Hechler propagator Initial orbit behavior


When I use the Eckstein Hechler propagator, I have a strange behavior. When I input a given orbit and I propagate to the date of this given orbit (so with no propagation time), the propagated orbit is different form the input orbit.

You can find below a sample of the code that shows the issue:

import org.hipparchus.util.FastMath;
import org.junit.jupiter.api.Test;
import org.orekit.orbits.CircularOrbit;
import org.orekit.orbits.PositionAngle;
import org.orekit.propagation.analytical.EcksteinHechlerPropagator;
import org.orekit.time.AbsoluteDate;
import org.orekit.utils.Constants;

class EcksteinHechlerPropagatorTest {

    public void testPropagation() {
        CircularOrbit orbit = new CircularOrbit(7000.0e3, 0.0, 0.0, FastMath.toRadians(97.0), 0.0, FastMath.PI / 8, PositionAngle.MEAN,
                                                new AbsoluteDate(2020, 1, 1, 0, 0, 0.0, DataContext.getDefault().getTimeScales().getUTC()), Constants.WGS84_EARTH_MU);
        EcksteinHechlerPropagator propagator = new EcksteinHechlerPropagator(orbit, DataContext.getDefault().getGravityFields().getUnnormalizedProvider(6, 0));
        CircularOrbit outputsOrbit = new CircularOrbit(propagator.propagateOrbit(orbit.getDate()));
        System.out.println(outputsOrbit.getA() - orbit.getA());

From what I saw in the debugger, in EcksteinHechlerPropagator.propagateOrbit, current.propagateParameters(date) seems to produce the correct orbit (with the good semi-major axis). However the function toCartesian seems to change this semi major axis. Maybe the issue come from here?

Thank you for your time,


1 Like

Hi @dorian

I think part of the answer is in the Javadoc of the class. Unfortunately, it looks like an expected side effect.

Best regards,