/src/cknr04.c
C | 433 lines | 33 code | 123 blank | 277 comment | 4 complexity | 7c450626f41f43dab8ec561eddd58915 MD5 | raw file
- /* cknr04.f -- translated by f2c (version 19980913).
- You must link the resulting object file with the libraries:
- -lf2c -lm (in that order)
- */
- #include "f2c.h"
- /* Table of constant values */
- static integer c__2 = 2;
- static integer c__6 = 6;
- static integer c__12 = 12;
- /* $Procedure CKNR04 ( C-kernel, number of records, data type 4 ) */
- /* Subroutine */ int cknr04_(integer *handle, doublereal *descr, integer *
- nrec)
- {
- extern /* Subroutine */ int chkin_(char *, ftnlen), dafus_(doublereal *,
- integer *, integer *, doublereal *, integer *), sgmeta_(integer *,
- doublereal *, integer *, integer *), sigerr_(char *, ftnlen),
- chkout_(char *, ftnlen), setmsg_(char *, ftnlen), errint_(char *,
- integer *, ftnlen);
- extern logical return_(void);
- doublereal dcd[2];
- integer icd[6];
- /* $ Abstract */
- /* Given the handle of a CK file and the descriptor of a type 4 */
- /* segment in that file, return the number of pointing instances */
- /* in that segment. */
- /* $ Disclaimer */
- /* THIS SOFTWARE AND ANY RELATED MATERIALS WERE CREATED BY THE */
- /* CALIFORNIA INSTITUTE OF TECHNOLOGY (CALTECH) UNDER A U.S. */
- /* GOVERNMENT CONTRACT WITH THE NATIONAL AERONAUTICS AND SPACE */
- /* ADMINISTRATION (NASA). THE SOFTWARE IS TECHNOLOGY AND SOFTWARE */
- /* PUBLICLY AVAILABLE UNDER U.S. EXPORT LAWS AND IS PROVIDED "AS-IS" */
- /* TO THE RECIPIENT WITHOUT WARRANTY OF ANY KIND, INCLUDING ANY */
- /* WARRANTIES OF PERFORMANCE OR MERCHANTABILITY OR FITNESS FOR A */
- /* PARTICULAR USE OR PURPOSE (AS SET FORTH IN UNITED STATES UCC */
- /* SECTIONS 2312-2313) OR FOR ANY PURPOSE WHATSOEVER, FOR THE */
- /* SOFTWARE AND RELATED MATERIALS, HOWEVER USED. */
- /* IN NO EVENT SHALL CALTECH, ITS JET PROPULSION LABORATORY, OR NASA */
- /* BE LIABLE FOR ANY DAMAGES AND/OR COSTS, INCLUDING, BUT NOT */
- /* LIMITED TO, INCIDENTAL OR CONSEQUENTIAL DAMAGES OF ANY KIND, */
- /* INCLUDING ECONOMIC DAMAGE OR INJURY TO PROPERTY AND LOST PROFITS, */
- /* REGARDLESS OF WHETHER CALTECH, JPL, OR NASA BE ADVISED, HAVE */
- /* REASON TO KNOW, OR, IN FACT, SHALL KNOW OF THE POSSIBILITY. */
- /* RECIPIENT BEARS ALL RISK RELATING TO QUALITY AND PERFORMANCE OF */
- /* THE SOFTWARE AND ANY RELATED MATERIALS, AND AGREES TO INDEMNIFY */
- /* CALTECH AND NASA FOR ALL THIRD-PARTY CLAIMS RESULTING FROM THE */
- /* ACTIONS OF RECIPIENT IN THE USE OF THE SOFTWARE. */
- /* $ Required_Reading */
- /* CK.REQ */
- /* DAF.REQ */
- /* GS.REQ */
- /* $ Keywords */
- /* POINTING */
- /* $ Declarations */
- /* $ Abstract */
- /* Declarations of the CK data type specific and general CK low */
- /* level routine parameters. */
- /* $ Disclaimer */
- /* THIS SOFTWARE AND ANY RELATED MATERIALS WERE CREATED BY THE */
- /* CALIFORNIA INSTITUTE OF TECHNOLOGY (CALTECH) UNDER A U.S. */
- /* GOVERNMENT CONTRACT WITH THE NATIONAL AERONAUTICS AND SPACE */
- /* ADMINISTRATION (NASA). THE SOFTWARE IS TECHNOLOGY AND SOFTWARE */
- /* PUBLICLY AVAILABLE UNDER U.S. EXPORT LAWS AND IS PROVIDED "AS-IS" */
- /* TO THE RECIPIENT WITHOUT WARRANTY OF ANY KIND, INCLUDING ANY */
- /* WARRANTIES OF PERFORMANCE OR MERCHANTABILITY OR FITNESS FOR A */
- /* PARTICULAR USE OR PURPOSE (AS SET FORTH IN UNITED STATES UCC */
- /* SECTIONS 2312-2313) OR FOR ANY PURPOSE WHATSOEVER, FOR THE */
- /* SOFTWARE AND RELATED MATERIALS, HOWEVER USED. */
- /* IN NO EVENT SHALL CALTECH, ITS JET PROPULSION LABORATORY, OR NASA */
- /* BE LIABLE FOR ANY DAMAGES AND/OR COSTS, INCLUDING, BUT NOT */
- /* LIMITED TO, INCIDENTAL OR CONSEQUENTIAL DAMAGES OF ANY KIND, */
- /* INCLUDING ECONOMIC DAMAGE OR INJURY TO PROPERTY AND LOST PROFITS, */
- /* REGARDLESS OF WHETHER CALTECH, JPL, OR NASA BE ADVISED, HAVE */
- /* REASON TO KNOW, OR, IN FACT, SHALL KNOW OF THE POSSIBILITY. */
- /* RECIPIENT BEARS ALL RISK RELATING TO QUALITY AND PERFORMANCE OF */
- /* THE SOFTWARE AND ANY RELATED MATERIALS, AND AGREES TO INDEMNIFY */
- /* CALTECH AND NASA FOR ALL THIRD-PARTY CLAIMS RESULTING FROM THE */
- /* ACTIONS OF RECIPIENT IN THE USE OF THE SOFTWARE. */
- /* $ Required_Reading */
- /* CK.REQ */
- /* $ Keywords */
- /* CK */
- /* $ Restrictions */
- /* 1) If new CK types are added, the size of the record passed */
- /* between CKRxx and CKExx must be registered as separate */
- /* parameter. If this size will be greater than current value */
- /* of the CKMRSZ parameter (which specifies the maximum record */
- /* size for the record buffer used inside CKPFS) then it should */
- /* be assigned to CKMRSZ as a new value. */
- /* $ Author_and_Institution */
- /* N.J. Bachman (JPL) */
- /* B.V. Semenov (JPL) */
- /* $ Literature_References */
- /* CK Required Reading. */
- /* $ Version */
- /* - SPICELIB Version 2.0.0, 19-AUG-2002 (NJB) */
- /* Updated to support CK type 5. */
- /* - SPICELIB Version 1.0.0, 05-APR-1999 (BVS) */
- /* -& */
- /* Number of quaternion components and number of quaternion and */
- /* angular rate components together. */
- /* CK Type 1 parameters: */
- /* CK1DTP CK data type 1 ID; */
- /* CK1RSZ maximum size of a record passed between CKR01 */
- /* and CKE01. */
- /* CK Type 2 parameters: */
- /* CK2DTP CK data type 2 ID; */
- /* CK2RSZ maximum size of a record passed between CKR02 */
- /* and CKE02. */
- /* CK Type 3 parameters: */
- /* CK3DTP CK data type 3 ID; */
- /* CK3RSZ maximum size of a record passed between CKR03 */
- /* and CKE03. */
- /* CK Type 4 parameters: */
- /* CK4DTP CK data type 4 ID; */
- /* CK4PCD parameter defining integer to DP packing schema that */
- /* is applied when seven number integer array containing */
- /* polynomial degrees for quaternion and angular rate */
- /* components packed into a single DP number stored in */
- /* actual CK records in a file; the value of must not be */
- /* changed or compatibility with existing type 4 CK files */
- /* will be lost. */
- /* CK4MXD maximum Chebychev polynomial degree allowed in type 4 */
- /* records; the value of this parameter must never exceed */
- /* value of the CK4PCD; */
- /* CK4SFT number of additional DPs, which are not polynomial */
- /* coefficients, located at the beginning of a type 4 */
- /* CK record that passed between routines CKR04 and CKE04; */
- /* CK4RSZ maximum size of type 4 CK record passed between CKR04 */
- /* and CKE04; CK4RSZ is computed as follows: */
- /* CK4RSZ = ( CK4MXD + 1 ) * QAVSIZ + CK4SFT */
- /* CK Type 5 parameters: */
- /* CK5DTP CK data type 5 ID; */
- /* CK5MXD maximum polynomial degree allowed in type 5 */
- /* records. */
- /* CK5MET number of additional DPs, which are not polynomial */
- /* coefficients, located at the beginning of a type 5 */
- /* CK record that passed between routines CKR05 and CKE05; */
- /* CK5MXP maximum packet size for any subtype. Subtype 2 */
- /* has the greatest packet size, since these packets */
- /* contain a quaternion, its derivative, an angular */
- /* velocity vector, and its derivative. See ck05.inc */
- /* for a description of the subtypes. */
- /* CK5RSZ maximum size of type 5 CK record passed between CKR05 */
- /* and CKE05; CK5RSZ is computed as follows: */
- /* CK5RSZ = ( CK5MXD + 1 ) * CK5MXP + CK5MET */
- /* Maximum record size that can be handled by CKPFS. This value */
- /* must be set to the maximum of all CKxRSZ parameters (currently */
- /* CK4RSZ.) */
- /* $ Brief_I/O */
- /* Variable I/O Description */
- /* -------- --- -------------------------------------------------- */
- /* HANDLE I The handle of the file containing the segment. */
- /* DESCR I The descriptor of the type 4 segment. */
- /* NREC O The number of pointing records in the segment. */
- /* $ Detailed_Input */
- /* HANDLE is the handle of the binary CK file containing the */
- /* segment. The file should have been opened for read */
- /* or write access, either by CKLPF, DAFOPR, or DAFOPW. */
- /* DESCR The packed descriptor of a data type 4 segment. */
- /* $ Detailed_Output */
- /* NREC The number of pointing records in the type 4 */
- /* segment. */
- /* $ Parameters */
- /* See 'ckparam.inc'. */
- /* $ Files */
- /* The file specified by HANDLE should be open for read or */
- /* write access. */
- /* $ Exceptions */
- /* 1) If the segment indicated by DESCR is not a type 4 segment, */
- /* the error 'SPICE(CKWRONGDATATYPE)' is signalled. */
- /* 2) If the specified handle does not belong to any DAF file that */
- /* is currently known to be open, an error is diagnosed by a */
- /* routine that this routine calls. */
- /* 3) If DESCR is not a valid descriptor of a segment in the CK */
- /* file specified by HANDLE, the results of this routine are */
- /* unpredictable. */
- /* $ Particulars */
- /* For a complete description of the internal structure of a type 4 */
- /* segment, see the CK required reading. */
- /* This routine returns the number of pointing records contained */
- /* in the specified segment. It is normally used in conjunction */
- /* with CKGR04 which returns the Ith pointing record in the */
- /* segment. */
- /* $ Examples */
- /* Suppose that DATA.BC is a CK file that contains segments of */
- /* data type 4. Then the following code fragment extracts the */
- /* data packets contained in the segment. */
- /* C */
- /* C CK parameters include file. */
- /* C */
- /* INCLUDE 'ckparam.inc' */
- /* C */
- /* C Declarations. */
- /* C */
- /* DOUBLE PRECISION DCD ( 2 ) */
- /* DOUBLE PRECISION DESCR ( 5 ) */
- /* DOUBLE PRECISION PKTDAT ( CK4RSZ ) */
- /* INTEGER AVFLAG */
- /* INTEGER HANDLE */
- /* INTEGER I */
- /* INTEGER ICD ( 6 ) */
- /* INTEGER K */
- /* INTEGER LASTAD */
- /* INTEGER NCOEF ( QAVSIZ ) */
- /* INTEGER NREC */
- /* LOGICAL FOUND */
- /* C */
- /* C First load the file. (The file may also be opened by using */
- /* C CKLPF.) */
- /* C */
- /* CALL DAFOPR ( 'DATA.BC', HANDLE ) */
- /* C */
- /* C Begin forward search. Find the first array. */
- /* C */
- /* CALL DAFBFS ( HANDLE ) */
- /* CALL DAFFNA ( FOUND ) */
- /* C */
- /* C Get segment descriptor. */
- /* C */
- /* CALL DAFGS ( DESCR ) */
- /* C */
- /* C Unpack the segment descriptor into its double precision */
- /* C and integer components. */
- /* C */
- /* CALL DAFUS ( DESCR, 2, 6, DCD, ICD ) */
- /* IF ( ICD( 3 ) .EQ. 4 ) THEN */
- /* C */
- /* C How many records does this segment contain? */
- /* C */
- /* CALL CKNR04 ( HANDLE, DESCR, NREC ) */
- /* DO I = 1, NREC */
- /* C */
- /* C Get the data records stored in the segment. */
- /* C */
- /* CALL CKGR04 ( HANDLE, DESCR, I, PKTDAT ) */
- /* C */
- /* C Print data packet contents. Print coverage interval */
- /* C midpoint & radii first. */
- /* C */
- /* WRITE (2,*) PKTDAT (1) */
- /* WRITE (2,*) PKTDAT (2) */
- /* C */
- /* C Decode numbers of coefficients. */
- /* C */
- /* CALL ZZCK4D2I ( PKTDAT(3), QAVSIZ, CK4PCD, NCOEF ) */
- /* C */
- /* C Print number of coefficients for Q0, Q1, Q2 and Q3. */
- /* C */
- /* WRITE (2,FMT='(I2,6X,I2)') NCOEF( 1 ), NCOEF( 2 ) */
- /* WRITE (2,FMT='(I2,6X,I2)') NCOEF( 3 ), NCOEF( 4 ) */
- /* C */
- /* C Print number coefficients for AV1, AV2 and AV3. */
- /* C */
- /* WRITE (2,FMT='(I2,6X,I2)') NCOEF( 5 ), NCOEF( 6 ) */
- /* WRITE (2,FMT='(I2,6X,I2)') NCOEF( 7 ) */
- /* C */
- /* C Print Cheby coefficients. */
- /* C */
- /* LASTAD = 0 */
- /* DO K = 1, QAVSIZ */
- /* LASTAD = LASTAD + NCOEF( K ) */
- /* END DO */
- /* DO K = 4, LASTAD + 4 */
- /* WRITE (2,*) PKTDAT (K) */
- /* END DO */
- /* END DO */
- /* END IF */
- /* $ Restrictions */
- /* 1) The binary CK file containing the segment whose descriptor */
- /* was passed to this routine must be opened for read or write */
- /* access by either CKLPF, DAFOPR, or DAFOPW. */
- /* $ Literature_References */
- /* None. */
- /* $ Author_and_Institution */
- /* Y.K. Zaiko (JPL) */
- /* B.V. Semenov (JPL) */
- /* $ Version */
- /* - SPICELIB Version 1.0.0, 05-MAY-1999 (YKZ) (BVS) */
- /* -& */
- /* $ Index_Entries */
- /* number of CK type_4 records */
- /* -& */
- /* SPICELIB functions */
- /* Local parameters */
- /* Local variables */
- /* Standard SPICE error handling. */
- if (return_()) {
- return 0;
- } else {
- chkin_("CKNR04", (ftnlen)6);
- }
- /* Check whether our segment is of the type 4 by unpacking */
- /* descriptor and checking value of its third integer component. */
- dafus_(descr, &c__2, &c__6, dcd, icd);
- if (icd[2] != 4) {
- setmsg_("Data type of the segment should be 4: Passed descriptor sho"
- "ws type = #.", (ftnlen)71);
- errint_("#", &icd[2], (ftnlen)1);
- sigerr_("SPICE(CKWRONGDATATYPE)", (ftnlen)22);
- chkout_("CKNR04", (ftnlen)6);
- return 0;
- }
- /* The number of records (packets) can be obtained by a call to */
- /* SGMETA. This number is a meta item 12 (see sgparam.inc for */
- /* details.) */
- sgmeta_(handle, descr, &c__12, nrec);
- /* All done. */
- chkout_("CKNR04", (ftnlen)6);
- return 0;
- } /* cknr04_ */