Ephemeris with PropagatorsParallelizer

Hello everyone,

We have been working on a new use case with a constellation of satellites.

I have found that I could propagate several satellites with the PropagatorsParallelizer class. It worked well… until I want to cal the getGeneratedEphemeris() to write some ephemeris files.

While searching in the code, I have seen that the master mode is forced.
At the end of parallelizer propagation, the getGeneratedEphemeris() of each propagator returns null.

Do you confirm this behavior ?
Then, how could I execute several propagations and getting some interpolator for each ?
I am thinking about using basic java threads, each with its standard propagation, but maybe there is some smart way with Orekit ?

Best regards,

Anne-Laure

Hi @Anne-Laure

What version of Orekit do you use? Do you use a recent 11.0-SNAPSHOT version?
I ask this question because propagation modes (i.e. slave, master, and ephemeris) were recently (i.e., a month ago) removed (see #809). This change impacted the PropagatorsParallelizer class.

As said before, this change is currently available in the development version. It will be officially included in the 11.0 release.
If you encountered this issue with an Orekit version including the change in propagation mode, could you provide a kind of JUnit test in order to reproduce your problem?

Best regards,
Bryan

Hello,

Thank you a lot for your reply. I was not up to date about the modes upgrade and that is such a news!! Thank you, we are going to anticipate seriously the 11.0 upgrade.

So I have upgrade part of our code with this new architecture for simple propagation, it works well!

Still for the use case with several satellite and the use of ParallelizerPropagator, I am encountering a problem while generating ephemeris.
I write a unit test to demonstrate my problem.
I pushed it on a branch so maybe it could be useful.

The problem is that the first generator have ephemeris but the others not.
The test is silly by propagating exactly the samething but in my case I have different spacecraft/propagator and the nulls occur too.

What do you think ? Is there something I missed ?

Best regards,

Anne-Laure

Thank you for the unit test. It will be very helpful.

In my opinion, something is wrong. Indeed, as a user, one would expect to have the ephemeris for each satellite in the PropagatroParallelizer.

I’ll look for what’s wrong.

Best regards,
Bryan

Hello,

Thank you for your reply. Good the unit test could help, I have spent some free time on it :blush: !

In the mean time, for others technical reasons, we had to change our strategy and we might use the standard Java thread mecanism.

As I know there is the 11.0 release coming, I would like to share that there is no rush for us (anymore).

Best regards,

Anne-Laure

I started looking your problem, and it is very interesting!

I tried using one numerical and one analytical propagator (i.e., List<Propagator> propagators = Arrays.asList(buildNumerical(), buildEcksteinHechler()) and the test works properly.

I tried using several analytical propagators (i.e., Arrays.asList(buildEcksteinHechler(), buildEcksteinHechler())) and the test also works properly.

Problems occur when having several numerical propagators. However, I don’t understand why. What I’m sure is that you found a bug. Could you open an issue ?

I will continue to work on it.

Bryan

Done :smiley: : Null ephemeris generators while propagating several numerical propagators with PropagatorsParallelizer (#826) · Issues · Orekit / Orekit · GitLab
Thank you for the confirmation!

1 Like