frinfo |
Table of contents
ProcedureFRINFO ( FRame INFOrmation ) ENTRY FRINFO ( FRCODE, CENT, FRCLSS, CLSSID, FOUND ) AbstractRetrieve the minimal attributes associated with a frame needed for converting transformations to and from it. Required_ReadingFRAMES KeywordsFRAMES DeclarationsIMPLICIT NONE INTEGER FRCODE INTEGER CENT INTEGER FRCLSS INTEGER CLSSID LOGICAL FOUND Brief_I/OVARIABLE 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_InputFRCODE is the ID code for some reference frame. Detailed_OutputCENT 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. ParametersNone. Exceptions1) 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. FilesNone. ParticularsThis 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. 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) 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 RestrictionsNone. Literature_ReferencesNone. Author_and_InstitutionN.J. Bachman (JPL) J. Diaz del Rio (ODC Space) B.V. Semenov (JPL) W.L. Taber (JPL) VersionSPICELIB 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