import org.hipparchus.ode.nonstiff.DormandPrince54Integrator; import org.junit.jupiter.api.Test; import org.orekit.frames.FramesFactory; import org.orekit.orbits.KeplerianOrbit; import org.orekit.orbits.PositionAngle; import org.orekit.propagation.SpacecraftState; import org.orekit.propagation.events.ApsideDetector; import org.orekit.propagation.events.handlers.ContinueOnEvent; import org.orekit.propagation.numerical.NumericalPropagator; import org.orekit.time.AbsoluteDate; import org.orekit.time.TimeScalesFactory; public class BugOrekitTest { @Test public void test() { KeplerianOrbit orbit = new KeplerianOrbit(6371e3 + 1200, 0.0012, 3.14, 0, 0, 0, PositionAngle.TRUE, FramesFactory.getTOD(false), new AbsoluteDate(2020, 07, 11, 22, 53, 48.056, TimeScalesFactory.getUTC()), 3.986004415E14); double[][] tolerance = NumericalPropagator.tolerances(0.002, orbit, orbit.getType()); DormandPrince54Integrator integrator = new DormandPrince54Integrator(0.001, 300, tolerance[0], tolerance[1]); integrator.setInitialStepSize(60); NumericalPropagator propagator = new NumericalPropagator(integrator); propagator.addEventDetector(new ApsideDetector(orbit).withHandler(new ContinueOnEvent<>())); propagator.addEventDetector(new ApsideDetector(orbit).withHandler(new ContinueOnEvent<>())); double[] apsidesCounters = new double[2]; apsidesCounters[0] = 0; apsidesCounters[1] = 0; propagator.resetInitialState(new SpacecraftState(orbit, 1000).addAdditionalState("ApsideNumber", apsidesCounters)); propagator.addEventDetector(new ApsideDetector(orbit).withHandler(new ApsideCounterOrekit())); propagator.propagate(orbit.getDate().shiftedBy(86400 * 360)); } }