Propagation Speed With Events

Hi all,

I am experiencing very slow propagation speeds when doing propagations involving ground station networks. I create an elevation event detector for each ground station to add to the propagator and logger. Without the global ground station network I can do a 30 day numerical propagation in a few minutes, but with around 30 ground stations it can take > 20-30 minutes. I have also tried DSST for cases like this, but it almost seems to do worse. One other thing that may be noteworthy is that the timesteps seem to be quicker to start, but then slow down. I’m wondering if there are any tips and tricks to speed up the propagation especially around scenarios like this with multiple event detectors.

We often use propagation with a lot of events detectors (sometimes counting in tens or hundred). What is the configuration of maxCheckInterval for your detectors? For station visibilities, a typical value is to use 60s for this (and 1.0e-3s or 1.0e-6s for convergence threshold).

Hi Luc,

I’m not sure what the default maxCheckInterval is set to, but I set it to 60 s manually and am still getting around 30 minutes for the propagation. The convergence threshold is 1.0e-6 s.

Hi,

Are you implementing event detectors (own) in Python or using the default elevation detector (assumed and recommended).

Custom eventdetectors in Python involves a lot of calls between java and python which is relatively slow compared to running it all in java (which happens if one uses the default ones).

Hi there,

What version of Orekit are you using? ElevationDetector is faster with >=12.0

Anyway, if you’re only interested in events having no influence on the propagation itself, you want to perform the detection on the IntegratedEphemerisPropagator, not the NumericalPropagator.

Cheers,
Romain.

Hi @petrus.hyvonen @Serrof,

I am using the default elevation detector and I am using Orekit v12. I’d like to take actions based on the events in the future, so unfortunately I don’t think I can use the IntegratedEphemerisPropagator.

I see. What are your integration settings then?

@Serrof my settings are below. I also implement a custom stephandler in python in which I do some calculations and logging of data which I know slows things down significantly, however even without the stephandler, there is still about an order of magnitude difference in the time with the elevation detectors vs. without.

minStep = 1e-3
maxStep = 900.0
initStep = 60.0
positionTolerance = 0.001 

orbitType = OrbitType.EQUINOCTIAL

tol = NumericalPropagator.tolerances(positionTolerance, initialOrbit, orbitType)

integrator = DormandPrince853Integrator(minStep, maxStep, 
JArray_double.cast_(tol[0]), 
JArray_double.cast_(tol[1]))