Hi all,
I’m running into a severe performance drop when numerical propagation time exceeds the 150 days mark or so, if the dynamics uses JPL ephemerides.
Here is a code snippet to reproduce.
@Test
void test() {
Utils.setDataRoot("regular-data");
final Orbit initialOrbit = new EquinoctialOrbit(42000e3, 0., 0., 0., 0., 0., PositionAngleType.ECCENTRIC, FramesFactory.getGCRF(),
AbsoluteDate.ARBITRARY_EPOCH, Constants.EGM96_EARTH_MU);
final SpacecraftState initialState = new SpacecraftState(initialOrbit);
final DormandPrince54IntegratorBuilder integratorBuilder = new DormandPrince54IntegratorBuilder(1e-3, 1e3, 1e-3);
final OrbitType orbitType = initialOrbit.getType();
final AbstractIntegrator integrator = integratorBuilder.buildIntegrator(initialOrbit, orbitType);
final NumericalPropagator propagator = new NumericalPropagator(integrator);
propagator.setOrbitType(orbitType);
propagator.setInitialState(initialState);
propagator.addForceModel(new ThirdBodyAttraction(CelestialBodyFactory.getSun()));
propagator.propagate(initialOrbit.getDate().shiftedBy(Constants.JULIAN_DAY * 150));
}
With 100 days, execution time on my computer is less than one second. Make it 150 days, and it jumps to about 15 seconds. Profiling shows that circa 60% is spent in the feed
method of the DIrectoryCrawler
in that latter case.
So I guess the problem comes from the cache system? And it does look similar to this.
Cheers,
Romain.