Ephemeris and KeplerianPropagator
Hi,
I am encountering a problem, which might be related to issue #223. It seems that the Ephemeris mode is not working properly when using a KeplerianPropagator.
I want to perform a propagation, which features an impulsive shot, with a KeplerianPropagator and then recover the generated ephemeris thanks to the getGeneratedEphemeris() function. However, I face the following issues:
- The impulsive burn seems to modify the spacecraft states anterior to it. For instance, if I start with an orbit with 6 deg of inclination, then I set an ImpulsiveManeuver (thanks to a DateDetector) to occur in the middle of the propagation, here is what I get when I propagate the obtained ephemeris:
step 1
time : 2004-01-01T23:30:00.000
i = 7.023029230326552
step 2
time : 2004-01-01T23:31:40.000
i = 7.023029230326552
step 3
time : 2004-01-01T23:33:20.000
i = 7.023029230326552
step 4
time : 2004-01-01T23:35:00.000
i = 7.023029230326552
step 5
time : 2004-01-01T23:36:40.000
i = 7.023029230326552
Instead of (which is what I get with a NumericalPropagator):
step 1
time : 2004-01-01T23:30:00.000
i = 6.0
step 2
time : 2004-01-01T23:31:40.000
i = 6.0
step 3
time : 2004-01-01T23:33:20.000
i = 7.024943769470886
step 4
time : 2004-01-01T23:35:00.000
i = 7.024943769470886
step 5
time : 2004-01-01T23:36:40.000
i = 7.024943769470886
-
No error is raised if I use getGeneratedEphemeris() on a KeplerianPropagatpor that is not set in EphemerisMode.
-
No error is raised if the propagation of an ephemeris generated by a KeplerianPropagator goes beyong its boundaries.
-
Any propagation performed after the ephemeris is recovered will modify it. For instance, in the two following pieces of code the content of ephemeris is different at the end of the execution (provided that at least one ImpulsiveManeuver is triggered during each propagation):
`propagator.propagate(initialState.getDate().shiftedBy(dt));
BoundedPropagator ephemeris = propagator.getGeneratedEphemeris();`
and
`propagator.propagate(initialState.getDate().shiftedBy(dt));
BoundedPropagator ephemeris = propagator.getGeneratedEphemeris();
propagator.propagate(initialState.getDate().shiftedBy(2*dt));`
Interestingly, none of these issues shows up with a NumericalPropagator.
The file attached reproduces the aforementioned behaviors.
(from redmine: issue id 224, created on 2015-11-26, closed on 2016-02-10)
- Uploads: