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
frinfo

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

     FRINFO ( FRame INFOrmation )

     ENTRY FRINFO ( FRCODE, CENT, FRCLSS, CLSSID, FOUND )

Abstract

     Retrieve the minimal attributes associated with a frame
     needed for converting transformations to and from it.

Required_Reading

     FRAMES

Keywords

     FRAMES

Declarations

    IMPLICIT NONE

    INTEGER               FRCODE
    INTEGER               CENT
    INTEGER               FRCLSS
    INTEGER               CLSSID
    LOGICAL               FOUND

Brief_I/O

     VARIABLE  I/O  DESCRIPTION
     --------  ---  --------------------------------------------------
     FRCODE     I   the ID code for some frame
     CENT       O   the center of the frame
     FRCLSS     O   the class (type) of the frame
     CLSSID     O   the ID code for the frame within its class.
     FOUND      O   .TRUE. if the requested information is available.

Detailed_Input

     FRCODE   is the ID code for some reference frame.

Detailed_Output

     CENT     is the body ID code for the center of the reference
              frame (if such an ID code is appropriate).

     FRCLSS   is the class or type of the frame. This identifies
              which subsystem will be used to perform frame
              transformations.

     CLSSID   is the ID code used for the frame within its class.
              This may be different from the frame ID code.

     FOUND    is .TRUE. if CENT, FRCLSS and CCODE are available.
              Otherwise, FOUND is returned with the value .FALSE.

Parameters

     None.

Exceptions

     1)  If a frame definition is encountered that does not define a
         central body for the frame, an error is signaled by a routine
         in the call tree of this routine.

     2)  If a frame definition is encountered that does not define
         a class for the frame, an error is signaled by a routine
         in the call tree of this routine.

     3)  If a frame definition is encountered that does not define a
         class ID for the frame, an error is signaled by a routine in
         the call tree of this routine.

     4)  If a kernel variable defining a frame name is found, but
         that variable has dimension greater than 1, the error
         SPICE(INVALIDDIMENSION) is signaled.

Files

     None.

Particulars

     This is a low level routine needed by state transformation
     software to transform states and attitudes between different
     reference frames.

     The routine first examines local "hard-coded" information about
     reference frames to see if the requested frame belongs to this
     set. If it does that information is returned.

     If the requested information is not stored locally, the routine
     then examines the kernel pool to see if the requested information
     is stored there. If it is and has the expected format, the data
     is retrieved and returned.

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) Given a frame ID, retrieve the SPICE body ID associated with
        the frame's center, the frame class (or type of the frame),
        and the ID used for the frame within its class.

          Example code begins here.


                PROGRAM FRINFO_EX1
                IMPLICIT NONE

          C
          C     Local parameters.
          C
                INTEGER               FRCODE
                PARAMETER           ( FRCODE = 13000 )

          C
          C     Local variables.
          C
                INTEGER               CENTER
                INTEGER               CLSSID
                INTEGER               FRCLSS

                LOGICAL               FOUND

          C
          C     Retrieve the information for frame ID 13000.
          C
                CALL FRINFO ( FRCODE, CENTER, FRCLSS, CLSSID, FOUND )

                IF ( FOUND ) THEN

                   WRITE(*,'(A,I6)') 'Frame center  : ', CENTER
                   WRITE(*,'(A,I6)') 'Frame class   : ', FRCLSS
                   WRITE(*,'(A,I6)') 'Frame class ID: ', CLSSID

                ELSE

                   WRITE (*,'(A,I6)') 'There is insufficient data '
               .                   // 'for frame ', FRCODE

                END IF

                END


          When this program was executed on a Mac/Intel/gfortran/64-bit
          platform, the output was:


        Frame center  :    399
        Frame class   :      2
        Frame class ID:   3000

Restrictions

     None.

Literature_References

     None.

Author_and_Institution

     N.J. Bachman       (JPL)
     J. Diaz del Rio    (ODC Space)
     B.V. Semenov       (JPL)
     W.L. Taber         (JPL)

Version

    SPICELIB Version 4.2.0, 02-AUG-2021 (JDR)

        Edited the header to comply with NAIF standard.
        Added complete code example from existing fragments.

        Changed the output argument name CLASS to FRCLSS for
        consistency with other routines.

    SPICELIB Version 4.1.0, 08-AUG-2012 (BVS)

        The routine was updated to be more efficient by using hashes
        instead kernel POOL look-ups for kernel POOL frames and by
        using hashes instead of ordered array searches for built-in
        frames.

    SPICELIB Version 4.0.0, 12-SEP-2005 (NJB)

        Entry point FRINFO is no longer error-free. The following
        errors are now diagnosed:

           - Invalid dimension of frame name variable

           - If a valid frame name assignment is present:

              + Missing frame ID code assignment
              + Missing class assignment
              + Missing class ID assignment

        Specification of frame center by name or ID is now supported.
        Previously only ID codes could be used to identify frame
        centers. Various frame definition errors that were previously
        ignored are now diagnosed.

    SPICELIB Version 3.1.0, 20-DEC-2004 (BVS)

        Removed special handling of the frame IDs less than -999. If
        they cannot be ``resolved'' using kernel pool keywords, the
        frame is NOT declared CK-based with center ID derived by
        dividing frame ID by a 1000 and class ID assigned the frame ID
        anymore. In the current practice with multitude of TK frames
        with IDs set instrument IDs this default behavior is simply
        not valid.

    SPICELIB Version 3.0.1, 25-JUN-1999 (WLT)

        Extended documentation of entry point CNMFRM and
        corrected example for that entry point.

    SPICELIB Version 3.0.0, 03-JUN-1997 (WLT)

        The entry points CIDFRM and CNMFRM were added so that
        user's may determine the frame-id and name to associated
        with a planetary object.

    SPICELIB Version 2.0.0, 04-APR-1997 (WLT)

        The routine was upgraded to reflect that a block of
        frame ID codes have been reserved for use by the DSN.
        ID codes 13001 to 13999 have been set aside for DSN
        models for the orientation of the earth. These frames
        are all PCK frames. Moreover, the PCK ID code to
        use with these frames is simply the Frame-Code minus 10000.
        All of these frames are centered at the earth (body 399).

    SPICELIB Version 1.1.0, 14-OCT-1996 (WLT)

        The values NINERT and NNINRT are included instead of
        being declared locally.

    SPICELIB Version 1.0.0, 18-SEP-1995 (WLT)
Fri Dec 31 18:36:22 2021