| ckmp06 |
|
Table of contents
Procedure
CKMP06 ( C-kernel, get mini-segment parameters, type 06 )
SUBROUTINE CKMP06 ( HANDLE, DESCR, MSNO, RATE,
. SUBTYP, WINSIZ, NREC, IVLBDS, LSTEPC )
Abstract
Return the mini-segment control parameters, mini-segment interval
bounds, and last epoch for a specified mini-segment in a type 6
CK segment.
Required_Reading
CK
DAF
Keywords
POINTING
Declarations
IMPLICIT NONE
INTEGER HANDLE
DOUBLE PRECISION DESCR ( * )
INTEGER MSNO
DOUBLE PRECISION RATE
INTEGER SUBTYP
INTEGER WINSIZ
INTEGER NREC
DOUBLE PRECISION IVLBDS ( 2 )
DOUBLE PRECISION LSTEPC
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.
MSNO I Mini-segment index.
RATE O SCLK rate in seconds/tick.
SUBTYP O Subtype code.
WINSIZ O Interpolation window size.
NREC O Number of records in mini-segment.
IVLBDS O Mini-segment interval bounds of mini-segment.
LSTEPC O Last epoch of mini-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.
MSNO is the index of a mini-segment within the segment
identified by HANDLE and DESCR.
Detailed_Output
RATE is the spacecraft clock rate for the specified
mini-segment. RATE has units of seconds/tick.
SUBTYP is the subtype code of the specified mini-segment.
WINSIZ is the interpolation window size for the specified
mini-segment. The window size is
( DEGREE + 1 ) / 2 for subtypes 0 and 2
DEGREE + 1 for subtypes 1 and 3
where DEGREE is the interpolation degree of the
mini-segment.
NREC is the number of data records in the CK mini-segment
identified by HANDLE, DESCR, and MSNO
IVLBDS is a two-element array containing, in order, the
encoded SCLK start and stop times of the coverage
interval of the specified mini-segment. The
mini-segment provides data for times within this
interval.
LSTEPC is the last epoch in the sequence of time tags
belonging to the specified mini-segment. LSTEPC is
an encoded SCLK time.
If LSTEPC precedes IVLBDS(2), the mini-segment has
a coverage gap between those two epochs.
Parameters
See the include file ck06.inc for a description of CK type 6
subtypes.
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.
4) If N is less than 1 or greater than the number of
mini-segments in the specified segment, the error
SPICE(INDEXOUTOFRANGE) 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
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
CKGR06 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 CKMP06_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:03 2021