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
cknm06

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

     CKNM06 ( C-kernel, number of mini-segments, type 06 )

     SUBROUTINE CKNM06 ( HANDLE, DESCR, NMINI )

Abstract

     Return the number of mini-segments in a type 6 CK segment, given
     the handle of the type 6 CK file and the segment's descriptor.

Required_Reading

     CK
     DAF

Keywords

     POINTING

Declarations

     IMPLICIT NONE

     INTEGER               HANDLE
     DOUBLE PRECISION      DESCR   ( * )
     INTEGER               NMINI

Brief_I/O

     VARIABLE  I/O  DESCRIPTION
     --------  ---  --------------------------------------------------
     HANDLE     I   The handle of the file containing the segment.
     DESCR      I   The descriptor of the type 6 segment.
     NMINI      O   The number of pointing instances in the segment.

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 a CK data type 6 segment.

Detailed_Output

     NMINI    is the number of mini-segments in the CK segment
              identified by HANDLE and DESCR.

Parameters

     None.

Exceptions

     1)  If the segment indicated by DESCR is not a type 6 segment,
         the error SPICE(CKWRONGDATATYPE) is signaled.

     2)  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.

     3)  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.

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

     For a complete description of the internal structure of a type 6
     segment, see the CK required reading.

     This routine returns the number of discrete pointing instances
     contained in the specified segment. It is normally used in
     conjunction with CKMN06, which returns mini-segment parameters,
     and with CKGR06, which returns a specified pointing instance
     from a mini-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 CKNM06_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, 12-AUG-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:03 2021