I’ve questions regarding OrbitBlender. I see that it can be used for any AbstractAnalyticalPropagator . However, from my understanding, this is something applicable for ephemeris based models (e.g., Ephemeris, etc.). So, I’ve some questions:

Can I use it with a Brouwer-Lyddane?

If no, do you think it could be useful to introduce a new interface for ephemeris propagation model in order to use OrbitBlender only with ephemeris.

If yes, why only limiting this object to AbstractAnalyticalPropagator and not using something more generic (e.g. Propagator)?

@Vincent will probably answer better, but from what I can tell the analytical propagator is used to propagate the state before and the state after to the blending (i.e. interpolation) date.
So it is indeed intended to be used with an ephemeris or a list of spacecraft states (at least two).
The difference with interpolation is that, instead of using a mathematical model (like a polynomial function) to interpolate the state, you use a physical model (an analytical propagator) to perform the interpolation.
Once you have propagated the state before and the state after to interpolation date, then you “blend” the two propagated states to get the final interpolated/blended state.
You will find more explanation in Vincent’s technical note on Orekit website.
If I remember well, he found out that for large time steps in ephemeris (say 15 to 40min) the blending has really good accuracy compared to a polynomial interpolation.

So, given that:

Yes!

The idea was to have a very fast propagator (so analytical) to perform interpolation.
Although it’s true that we could imagine some cases where a numerical propagator, for example, could be useful.
Say you receive an ephemeris with very large time steps and want to produce an accurate ephemeris with smaller time steps. Then you would use a fully configured accurate numerical propagator and the OrbitBlender. Because polynomial interpolation will fail, and blending with analytical models will likely give bad results if orbital perturbations are high.

On another note, we could also propose a default analytical propagator (Keplerian) to avoid confusing users on the usage of this analyticalPropagator used to perform the blending.

To my mind, it could be very useful to have the more generic API. The propagator choice is a user responsability. Orekit has to well document that analytical propagator are faster for orbit blending, but it can be useful to have a high level API.

I first limited it to AbstractAnalyticalPropagator because the first purpose was to fill the gap between tabulated data generated from a NumericalPropagator. Hence it did not make sense to me to allow the use of a NumericalPropagator.

However with more perspective, i agree that it would make sense to use a more generic api like Propagator for this instead. It would then be up to the user to to choose the right propagator as @bcazabonne explained.

Thank you for your detailed answer @MaximeJ, i do not think that mine would have been more detailed .