ckmp06 |
Table of contents
ProcedureCKMP06 ( C-kernel, get mini-segment parameters, type 06 ) SUBROUTINE CKMP06 ( HANDLE, DESCR, MSNO, RATE, . SUBTYP, WINSIZ, NREC, IVLBDS, LSTEPC ) AbstractReturn the mini-segment control parameters, mini-segment interval bounds, and last epoch for a specified mini-segment in a type 6 CK segment. Required_ReadingCK DAF KeywordsPOINTING DeclarationsIMPLICIT 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/OVARIABLE 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_InputHANDLE 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_OutputRATE 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. ParametersSee the include file ck06.inc for a description of CK type 6 subtypes. Exceptions1) 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. FilesThe 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. ParticularsFor 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. ExamplesThe 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. RestrictionsNone. Literature_ReferencesNone. Author_and_InstitutionN.J. Bachman (JPL) J. Diaz del Rio (ODC Space) J.M. Lynch (JPL) B.V. Semenov (JPL) VersionSPICELIB 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