| frinfo |
|
Table of contents
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