I am looking into the different types of SPK kernels.

Type 1 are the so-called Modified Difference Arrays (MDA).

The linked document mentions that its reference 163 contains a description of the coefficients provided in SPK kernels for such MDAs. However, reference 163 is literally a "JPL Internal Memorandum on Modified Difference Array polynomials", of which I have been unable to find a copy online.

This answer mentions a Python module to read them, which is indeed useful. It seems each MDA record contains 71 coefficients, of which:

  • Coefficient 1 is the final epoch up to which the corresponding set of coefficients (the remaining 70) are valid
  • Coefficients 2 to 16 seem to be "Stepsize function vector" coefficients, referred to as "G coefficients"
  • Coefficients 17 to 22 are the "reference position and velocity", I guess some sort of position and velocity vectors computed at the epoch indicated by number 1
  • Coefficients 23 to 67 are "Modified divided difference arrays". I am really lost as to what exactly they are, but they seem to be organised in 3 sets of 15, so I guess some sort of coefficients to perform some integration/interpolation of the X, Y and Z components of position and velocity.
  • Coefficient 68 is the "Maximum integration order plus 1", referred to as KQMAX1. I guess something to do with the integration that must be performed to obtain actual position and velocity values at a given time.
  • Coefficients 69 to 71 are the "Integration order array". Again, no clues about what these exactly are, but since they are 3 numbers, I guess it will be somehow related to X, Y and Z components. A comment from my side, I have read an SPK kernel for GRAIL-A, which is of type 1 (MDAs), and coefficients 69 to 71 are (2, 2, 2). Which I guess makes sense, since it would be mean X, Y and Z components are treated equally. Also, coefficient 68 is 3, so I guess coefficient 68 is indeed the maximum of 69, 70 and 71 plus 1. But this is based on my very limited experimentation with SPK kernels.

In spite of the very helpful comments of the mentioned Python module, and the fact that it provides a way to compute positions and velocities, I still find it does not provide a complete explanation of what each of the coefficients is and why it should be used the way they are. I guess SPICE's routines will perform the same operations.

But I would like to ask the actual meaning of these coefficients and why they should be used as performed in the Python module, or alternatively, maybe someone has a copy of the mentioned internal JPL report describing how to handle MDAs?



Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.