Fundamental Technologies

Galileo Spacecraft Pages

Investigation of the Magnetosphere of Ganymede with Galileo's Energetic Particle Detector
Ph.D. dissertation by Shawn M. Stone, University of Kansas, 1999.

Appendix A. The SPICE Kernel System

One of the most important concepts within this work is that of geometry. The location of Galileo and the look direction of the EPD instrument are paramount to solving for the magnetic field geometry and tracing particles back in time placing the absorption signatures. Without an accurate determination of the charged particle initial conditions, this problem could not be done. To this end a suite of software and data called the SPICE kernel system, provided by NAIF (Navigation and Ancillary Information Facility), for the Galileo mission is utilized. SPICE stands for Spacecraft ephemeris Planet Instrument Ckernel Events, and is a software suite of Fortran or C subroutines that can calculate the state of a body in the solar system relative to any other body in one of many coordinate systems. The information necessary to do this is maintained in a data file called the SPICE kernel, which contains the right ascension and declination angles in J1950 as well as specific information about the physical properties of the planets and moons and of spacecraft. NAIF maintains the SPICE kernel system, and updates the kernels whenever new data or instrument improvements come along.

A.1 Calculation of the Position of Galileo in GSII Coordinates

The first step in calculating the position of Galileo relative to Ganymede and the look direction of the EPD instrument in GSII coordinates begins with the gathering of the appropriate SPICE kernels. The kernels needed are the SPK kernel (Spacecraft and Planetary Kernel), PCK kernel (Planetary Constants Kernel), and the leap seconds kernel. These kernels must cover the desired range of the encounter. The leap seconds kernel contains the information necessary to convert time strings such as spacecraft clock times into seconds past epoch J2000. The PCK kernel contains the information about the planet physical constants such as Jupiter’s rotation axis in J1950 coordinates and its rotation rate. The SPK kernel contains the position and velocity information for planets, moons, and spacecraft for a given interval of time. Once the appropriate kernels have been located, the position of Galileo in GSII coordinates can take place rather simply. Below is a piece of Fortran code that performs the calculations and will be explained in the next paragraph.

     CALL LDPOOL('gllnaifdata:sclk.ker')

    call ldpool('gllnaifdata:gll00006.tpc')
    call spklef('gllnaifdata:s970922a.bsp',handle)

    ref= J2000 (the inertial reference frame)

    et= Desired time of position and velocity in seconds past epoch J2000
    lt= light time correction

    call spkez(503,et,ref,'lt',-77,state,lt)


    call bodmat(503,et,j2gcc)

    Call mxv(j2gcc,state,galRgan)

This piece of Fortran code begins by loading the data that will be used in the calculation of the state of the Galileo spacecraft relative to Ganymede. This is done with the subroutines LDPOOL and spklef. Once this data is loaded into memory, it can be utilized by the SPICE subroutines. The state of Galileo relative to Ganymede is desired at a specific ephemeris time, et. This time is provided by the user and is entered into the subroutine spkez. Spkez is a subroutine that will calculate the state of one body relative to another in an inertial coordinates system that is convenient such as J2000 -- in this case Galileo (body code -77) relative to Ganymede body centered coordinates (body code 503). The state of Galileo relative to Ganymede is then contained in the state vector state in J2000 coordinates. The routine BODMAT provides the transformation matrix from J2000 to GSII coordinates at the ephemeris time et. The subroutine mxv multiplies the transformation matrix J2gcc onto the state vector, transforming it into the desired state vector giving position of Galileo relative to Ganymede in GSII coordinates.

A.2 Calculation of the Look Direction of the EPD Instrument in GSII Coordinates

By far the most complicated calculation in this work is that of determining in which direction, in GSII coordinates, the EPD Instrument is pointing. This process begins with the right ascension (a) and declination (d) angles of the spin axis of Galileo provided in EME50 coordinates by APL (Applied Physics Laboratory) within the rate files used to plot the rate profiles in this work. With these angles it is possible to calculate the twist angle (phase angle t) of the Galileo spacecraft relative to the ecliptic plane in EME50 coordinates. In the following snippet of Fortran code, this process is illustrated and will be explained in the next paragraph.


C    define the ecliptic in eme50 coordinates (Steve Joy)





        CALL LDPOOL('gllnaifdata:sclk.ker')
        call spklef('gllnaifdata:s970922a.bsp',handle)
        call ldpool('gllnaifdata:gll00006.tpc')



        call vcrss(s,e,p)
 C      the twist angle
        if ( then



        call sceme(r,d,dtw,sc2eme)

        call irftrn('fk4','j2000',eme2j)

        call mxm(eme2j,sc2eme,sc2j)

        call mxv(sc2j,look,look)

        call mxv(j2gcc,look,look)

Once the right ascension and declination angles of the spacecraft spin axis in EME50 coordinates have been calculated its unit vector can be calculated. Its twist angle dtw is then calculated in the EME50 system. These three angles r, d, and dtw are passed to subroutine sceme which calculates the transformation matrix from EME50 coordinates to spacecraft coordinates (SC) sc2eme. Using the subroutine irftrn, the transformation from EME50 to J200 can be calculated eme2j. From this point it is a simple matter to transform the look direction initially calculated in SC to GSII by first transforming from SC to EME50, then from EME50 to J2000, then from J2000 to GSII.

Next: Appendix B

Return to dissertation table of contents page.
Return to main Galileo Table of Contents Page.
Return to Fundamental Technologies Home Page.

Updated 10/18/02, T. Hunt-Ward