Hi,
I can try to elaborate a bit. Hopefully I won’t say anything that is not true.
Basically when you select parameter drivers or the simple STM option, the propagator adds to the so-called primary variables (mass and PV-like coordinates) secondary ones to the integration. Those do not play any role with the adaptive stepsize if applicable. Those variables satisfy differential equations known as variational equations. They are computed using automatic differentiation for Cartesian coordinates (with some tricks to optimise performance), and converted in other type if necessary. That’s the acceleration
method in ForceModel
(the one with Field
). There is then a whole system in place to rearrange these variables in a matrix when the user asks for it. And because Hipparchus integrators all have dense output, there is also a layer so that everything can be interpolated if required. So yeah overall the integration system split between the two librairies is not trivial, but it has many features. I’ll actually be talking a bit about that in the Orekit talk next week.
Note that if you want, you can actually perform automatic differentiation on the propagation itself, using FieldNumericalPropagator
. This is usually less computationally effective because literally all calculations are done on non primitive types.
Cheers,
Romain.