Jacobian parameters computation model


I am looking for the computation logic of the jacobian parameters during a numerical propagation scenario with an implemented SRP force model. My goal is to understand how the SRP drag coefficient (e.g Orekit REFLECTION_COEFFICIENT) selected as a parameter driver affects the computation of the jacobian parameters throughout the numerical propagation.

The overhaul process leads a bit into a rabbit hole down to the Hipparchus integrator processes.
Is there by any chance a reference paper the jacobian parameters computational model is based on?

Thanks in advance for your assistance.

Best regards,

The two basic engines involved in this computation are:

  • variational equations (see for example “Solving Ordinary Differential Equations - I : Nonstiff problems” by Hairer, Nørsett and Wanner)
  • algorithmic differentiation (see for example “Evaluating Derivatives - Principal and Techniques of Algorithmic Differentiation” by Griewank and Walther)


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.



Thanks for the thorough explanation, Romain! Mine was really terse :woozy_face:

Hi @luc @Serrof,

Thank you for the detailed feedbacks and sorry for this late response.
@Serrof is there a presentation video record available of the mentionned Orekit talk?

If I understand well, the solutions of the variational equations are products of the secondary variables and the cartesian coordinates. Also the acceleration method of the SolarRadiationPressure class would output the same derivatives expected within the extracted Jacobian parameters.

Best regards,

Hello @Gueorguy! Here’s the link to the thread with the video as well as other resources!

1 Like