Index of Functions: A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X 
Index Page
ckgr06

Table of contents
Procedure
Abstract
Required_Reading
Keywords
Declarations
Brief_I/O
Detailed_Input
Detailed_Output
Parameters
Exceptions
Files
Particulars
Examples
Restrictions
Literature_References
Author_and_Institution
Version

Procedure

     CKGR06 ( C-kernel, get record, type 06 )

     SUBROUTINE CKGR06 ( HANDLE, DESCR, MSNO, RECNO, RECORD )

Abstract

     Return a specified pointing record from a type 6 CK segment, given
     the CK file's handle and the segment's descriptor.

Required_Reading

     CK
     DAF

Keywords

     POINTING

Declarations

     IMPLICIT NONE

     INCLUDE 'ck06.inc'

     INTEGER               HANDLE
     DOUBLE PRECISION      DESCR  ( * )
     INTEGER               MSNO
     INTEGER               RECNO
     DOUBLE PRECISION      RECORD ( * )

Brief_I/O

     VARIABLE  I/O  DESCRIPTION
     --------  ---  --------------------------------------------------
     HANDLE     I   The handle of the file containing the segment.
     DESCR      I   The segment descriptor.
     MSNO       I   Index of the mini-segment containing the record.
     RECNO      I   Index of the pointing record to be returned.
     RECORD     O   The pointing record.

Detailed_Input

     HANDLE   is the handle of the binary CK file containing the
              segment. Normally the CK file should be open for read
              access. See the $Files section below for details.

     DESCR    is the DAF descriptor of the type 6 segment.

     RECNO    is the number of the discrete pointing instance to be
              returned from the specified type 6 segment.

Detailed_Output

     RECORD   is the pointing record indexed by RECNO in the
              segment. The contents are as follows:

                 RECORD( 1 ) = CLKOUT

              CLKOUT is the encoded spacecraft clock time associated
              with the returned pointing values.

                 RECORD( 2 ) = SUBTYP

              SUBTYP is the CK type 6 subtype code. This code
              identifies the structure and meaning of the rest
              of the record. However, all subtypes have a
              quaternion stored in elements 4-7.

                 RECORD( 3 ) = RATE

              RATE is the nominal SCLK rate expressed in units of
              seconds per tick. This rate is required to convert
              quaternion or angular velocity derivatives from units
              of radians/tick to radians/s.

                 RECORD( 4 ) = q0
                 RECORD( 5 ) = q1
                 RECORD( 6 ) = q2
                 RECORD( 7 ) = q3

              Subtype 1 ends here; there are no angular velocity
              data. Angular velocity is derived by differentiating
              Lagrange interpolating polynomials.

                 RECORD(  8 ) =  ]
                 RECORD(  9 ) =  ] --- For subtypes 0 and 2, these
                 RECORD( 10 ) =  ]     elements contain a quaternion
                 RECORD( 11 ) =  ]     derivative. For subtype 3,
                                       elements 8-10 contain an
                                       angular velocity vector;
                                       element 11 is unassigned.

                                       All subtypes except subtype
                                       2 stop here.

                 RECORD( 12 ) =  ]
                 RECORD( 13 ) =  ] --- For subtype 2, these
                 RECORD( 14 ) =  ]     elements contain an angular
                                       velocity vector.


                 RECORD( 15 ) =  ]
                 RECORD( 16 ) =  ] --- For subtype 2, these
                 RECORD( 17 ) =  ]     elements contain the
                                       derivative of an angular
                                       velocity vector.

              The quantities q0 - q3 are the components of the
              quaternion that represents the C-matrix that transforms
              vectors from the inertial reference frame of the
              segment to the instrument frame at time CLKOUT.

              Quaternion derivatives, angular velocity, or the
              derivative of angular velocity are valid only if
              these are supported by the segment subtype and
              if the segment descriptor indicates that angular
              velocity is present.

              The components of the angular velocity vector are
              specified relative to the inertial reference frame of
              the segment.

              Units of angular velocity and of quaternion
              derivatives are radians/second and 1/second
              respectively.

Parameters

     None.

Exceptions

     1)  If the segment is not of data type 6, the error
         SPICE(CKWRONGDATATYPE) is signaled.

     2)  If MSNO is less than one or greater than the number of
         mini-segments in the specified segment, the error
         SPICE(INDEXOUTOFRANGE) is signaled.

     3)  If RECNO is less than one or greater than the number of
         records in the specified segment, the error
         SPICE(CKNONEXISTREC) is signaled.

     4)  If the specified handle does not belong to any DAF file that
         is currently known to be open, an error is signaled by a
         routine in the call tree of this routine.

     5)  If DESCR is not a valid descriptor of a valid segment in the
         CK file specified by HANDLE, the results of this routine are
         unpredictable.

     6)  If the segment subtype is not recognized, the error
         SPICE(NOTSUPPORTED) is signaled.

Files

     The CK file specified by HANDLE may be open for read or write
     access. Normally, the file should have been opened for read
     access. If the file is open for write access, the calling
     application must ensure integrity of the CK segment being read.
     If the structure of the segment is invalid---for example, if the
     segment has been partially written---this routine will either
     return invalid results, or it will cause a system-level runtime
     error.

Particulars

     Note that the mini-segment interpolation window size is not
     returned in the pointing record; this parameter is not required
     in order to interpret the record. Call CKMP06 to obtain the
     window size.

     For a complete description of the internal structure of a type 6
     segment, see the CK Required Reading.

     This routine is normally used in conjunction with CKNM06 and
     CKGM06 to obtain time tags and packet data from a specified type
     6 CK segment.

Examples

     The numerical results shown for this example may differ across
     platforms. The results depend on the SPICE kernels used as
     input, the compiler and supporting libraries, and the machine
     specific arithmetic implementation.


     1) The following program dumps records from a CK file that
        contains only type 6 segments.

        Example code begins here.


              PROGRAM CKGR06_EX1
              IMPLICIT NONE

        C
        C     Dump all records from a CK that
        C     contains only segments of type 6.
        C
              INCLUDE 'ck06.inc'

        C
        C     Local parameters
        C
              INTEGER               ND
              PARAMETER           ( ND     = 2 )

              INTEGER               NI
              PARAMETER           ( NI     = 6 )

              INTEGER               DSCSIZ
              PARAMETER           ( DSCSIZ = 5 )

              INTEGER               FILSIZ
              PARAMETER           ( FILSIZ = 255 )

        C
        C     RECSIZ is the size of the largest pointing
        C     record, which corresponds to subtype 2.
        C
              INTEGER               RECSIZ
              PARAMETER           ( RECSIZ = C06PS2 + 3 )

        C
        C     Local variables
        C
              CHARACTER*(FILSIZ)    CK

              DOUBLE PRECISION      DC     ( ND )
              DOUBLE PRECISION      DESCR  ( DSCSIZ )
              DOUBLE PRECISION      IVLBDS ( 2 )
              DOUBLE PRECISION      LSTEPC
              DOUBLE PRECISION      RATE
              DOUBLE PRECISION      RECORD ( RECSIZ )

              INTEGER               DTYPE
              INTEGER               HANDLE
              INTEGER               IC     ( NI )
              INTEGER               RECNO
              INTEGER               MSNO
              INTEGER               NMINI
              INTEGER               NREC
              INTEGER               SEGNO
              INTEGER               SUBTYP
              INTEGER               WINSIZ

              LOGICAL               FOUND


              CALL PROMPT ( 'Enter name of CK to dump > ', CK )

              CALL DAFOPR ( CK, HANDLE )

        C
        C     Dump data from each CK segment.
        C
              SEGNO = 0

              CALL DAFBFS ( HANDLE )
              CALL DAFFNA ( FOUND  )

              DO WHILE ( FOUND )

                 SEGNO = SEGNO + 1

                 WRITE (*,*) ' '
                 WRITE (*,*) ' '
                 WRITE (*,*) 'Segment number: ', SEGNO

        C
        C        Fetch and unpack the descriptor of the
        C        current segment; check the data type.
        C
                 CALL DAFGS ( DESCR )
                 CALL DAFUS ( DESCR, ND, NI, DC, IC )

                 DTYPE = IC(3)

                 IF ( DTYPE .NE. 6 ) THEN

                    CALL SETMSG ( 'Data type must be 6 but was #.' )
                    CALL ERRINT ( '#',  DTYPE                      )
                    CALL SIGERR ( 'SPICE(NOTSUPPORTED)'            )

                 END IF

        C
        C        Get the mini-segment count for this
        C        segment.
        C
                 CALL CKNM06 ( HANDLE, DESCR, NMINI )

        C
        C        Dump data from each mini-segment.
        C
                 DO MSNO = 1, NMINI

        C
        C           Get the mini-segment's record count
        C           and time bounds.
        C
                    CALL CKMP06 ( HANDLE, DESCR,  MSNO,
             .                    RATE,   SUBTYP, WINSIZ,
             .                    NREC,   IVLBDS, LSTEPC )

                    WRITE (*,*) ' '
                    WRITE (*,*) '   Mini-segment number: ', MSNO
                    WRITE (*,*) '      Rate:           ',   RATE
                    WRITE (*,*) '      Subtype:        ',   SUBTYP
                    WRITE (*,*) '      Window size:    ',   WINSIZ
                    WRITE (*,*) '      Interval start: ',   IVLBDS(1)
                    WRITE (*,*) '      Interval stop:  ',   IVLBDS(2)
                    WRITE (*,*) '      Last epoch:     ',   LSTEPC
                    WRITE (*,*) ' '

                    DO RECNO = 1, NREC

                       CALL CKGR06 ( HANDLE, DESCR,
             .                       MSNO,   RECNO,  RECORD )

                       WRITE (*,*) '      Record number: ', RECNO
                       WRITE (*,*) '         SCLKDP:     ', RECORD(1)
                       WRITE (*,*) '         Clock rate: ', RECORD(3)

                       IF ( SUBTYP .EQ. C06TP0 ) THEN

                          WRITE (*,*) '         Q(0): ', RECORD(4)
                          WRITE (*,*) '         Q(1): ', RECORD(5)
                          WRITE (*,*) '         Q(2): ', RECORD(6)
                          WRITE (*,*) '         Q(3): ', RECORD(7)
                          WRITE (*,*) '    d Q(0)/dt: ', RECORD(8)
                          WRITE (*,*) '    d Q(1)/dt: ', RECORD(9)
                          WRITE (*,*) '    d Q(2)/dt: ', RECORD(10)
                          WRITE (*,*) '    d Q(3)/dt: ', RECORD(11)

                       ELSE IF ( SUBTYP .EQ. C06TP1 ) THEN

                          WRITE (*,*) '         Q(0): ', RECORD(4)
                          WRITE (*,*) '         Q(1): ', RECORD(5)
                          WRITE (*,*) '         Q(2): ', RECORD(6)
                          WRITE (*,*) '         Q(3): ', RECORD(7)

                       ELSE IF ( SUBTYP .EQ. C06TP2 ) THEN

                          WRITE (*,*) '         Q(0): ', RECORD(4)
                          WRITE (*,*) '         Q(1): ', RECORD(5)
                          WRITE (*,*) '         Q(2): ', RECORD(6)
                          WRITE (*,*) '         Q(3): ', RECORD(7)
                          WRITE (*,*) '    d Q(0)/dt: ', RECORD(8)
                          WRITE (*,*) '    d Q(1)/dt: ', RECORD(9)
                          WRITE (*,*) '    d Q(2)/dt: ', RECORD(10)
                          WRITE (*,*) '    d Q(3)/dt: ', RECORD(11)
                          WRITE (*,*) '        AV(1): ', RECORD(12)
                          WRITE (*,*) '        AV(2): ', RECORD(13)
                          WRITE (*,*) '        AV(3): ', RECORD(14)
                          WRITE (*,*) '   d AV(1)/dt: ', RECORD(15)
                          WRITE (*,*) '   d AV(2)/dt: ', RECORD(16)
                          WRITE (*,*) '   d AV(3)/dt: ', RECORD(17)

                       ELSE IF ( SUBTYP .EQ. C06TP3 ) THEN

                          WRITE (*,*) '         Q(0): ', RECORD(4)
                          WRITE (*,*) '         Q(1): ', RECORD(5)
                          WRITE (*,*) '         Q(2): ', RECORD(6)
                          WRITE (*,*) '         Q(3): ', RECORD(7)
                          WRITE (*,*) '        AV(1): ', RECORD(8)
                          WRITE (*,*) '        AV(2): ', RECORD(9)
                          WRITE (*,*) '        AV(3): ', RECORD(10)

                       ELSE
                          CALL SETMSG ( 'Subtype # is not '
             .            //            'recognized.'         )
                          CALL ERRINT ( '#', SUBTYP           )
                          CALL SIGERR ( 'SPICE(NOTSUPPORTED)' )
                       END IF

                       WRITE (*,*) ' '

                   END DO

                 END DO

                 CALL DAFFNA ( FOUND )

              END DO

              END


        When this program was executed on a Mac/Intel/gfortran/64-bit
        platform, using the Rosetta CK file named
        RATT_DV_257_02_01_T6_00344.BC, the output was:


        Enter name of CK to dump > RATT_DV_257_02_01_T6_00344.BC


         Segment number:            1

            Mini-segment number:            1
               Rate:              1.5258789062500000E-005
               Subtype:                   1
               Window size:              10
               Interval start:    24471796593941.691
               Interval stop:     24472844252095.523
               Last epoch:        24472844252095.523

               Record number:            1
                  SCLKDP:        24471796593941.691
                  Clock rate:    1.5258789062500000E-005
                  Q(0):  -0.95514652599900884
                  Q(1):   0.16277660709912350
                  Q(2):   0.11688592199582469
                  Q(3):  -0.21802883133317097

               Record number:            2
                  SCLKDP:        24472234538651.801
                  Clock rate:    1.5258789062500000E-005
                  Q(0):  -0.95746293340938016
                  Q(1):   0.14880147654385018
                  Q(2):   0.12021705739210503
                  Q(3):  -0.21603405018065600

               Record number:            3
                  SCLKDP:        24472676416997.039
                  Clock rate:    1.5258789062500000E-005
                  Q(0):  -0.95956954083287593
                  Q(1):   0.13478976855182764
                  Q(2):   0.12355113537344563
                  Q(3):  -0.21399329790313779

               Record number:            4
                  SCLKDP:        24472844252095.523
                  Clock rate:    1.5258789062500000E-005
                  Q(0):  -0.96030932381589129
                  Q(1):   0.12949634043544370
                  Q(2):   0.12480922302154081
                  Q(3):  -0.21321200307405938


            Mini-segment number:            2
               Rate:              1.5258789062500000E-005
               Subtype:                   1
               Window size:              10
               Interval start:    24472844252095.523
               Interval stop:     24472863912889.105
               Last epoch:        24472863912889.105

               Record number:            1
                  SCLKDP:        24472844252095.523
                  Clock rate:    1.5258789062500000E-005
                  Q(0):  -0.96030932403888680
                  Q(1):   0.12949633879120778
                  Q(2):   0.12480922338599261
                  Q(3):  -0.21321200285498659

               Record number:            2
                  SCLKDP:        24472851309816.297
                  Clock rate:    1.5258789062500000E-005
                  Q(0):  -0.96035266600496283
                  Q(1):   0.12922730685291675
                  Q(2):   0.12480259688433022
                  Q(3):  -0.21318389214860939

               Record number:            3
                  SCLKDP:        24472859879905.805
                  Clock rate:    1.5258789062500000E-005
                  Q(0):  -0.96041575813224878
                  Q(1):   0.12886248165419970
                  Q(2):   0.12474605317805663
                  Q(3):  -0.21315359384649502

               Record number:            4
                  SCLKDP:        24472863912889.105
                  Clock rate:    1.5258789062500000E-005
                  Q(0):  -0.96043784177251290
                  Q(1):   0.12871819083493355
                  Q(2):   0.12475418449192528
                  Q(3):  -0.21313651233726627


            Mini-segment number:            3
               Rate:              1.5258789062500000E-005
               Subtype:                   1
               Window size:              10
               Interval start:    24472863912889.105
               Interval stop:     24473139163999.207
               Last epoch:        24473139163999.207

               Record number:            1
                  SCLKDP:        24472863912889.105
                  Clock rate:    1.5258789062500000E-005
                  Q(0):  -0.96043784177455394
                  Q(1):   0.12871819083614683

        [...]


        Warning: incomplete output. Only 100 out of 2378824 lines have
        been provided.

Restrictions

     None.

Literature_References

     None.

Author_and_Institution

     N.J. Bachman       (JPL)
     J. Diaz del Rio    (ODC Space)
     J.M. Lynch         (JPL)
     B.V. Semenov       (JPL)

Version

    SPICELIB Version 1.0.1, 06-JUL-2021 (JDR)

        Edited the header to comply with NAIF standard.

    SPICELIB Version 1.0.0, 14-MAR-2014 (NJB) (JML) (BVS)
Fri Dec 31 18:36:02 2021