Introduction =========================================================================== This document describes new and extended capabilities of the latest version of the SPICE Toolkit. It also notes bug fixes. Each new version of the Toolkit is documented in a separate chapter that is titled with the version of the Toolkit. The most recent version of the Toolkit is documented first. The next most recent version is documented next, and so on. The versions of the Toolkit changes described in this document are Version 57 Version 56 Version 55 Version 54 Version 53 Version 52 Version 51 Version 50 Version 49 Version 48 Version 47 Version 46 Version 45 Version 44 Version 43 Version 42 Version 41 Version 57 --- March 2004 =========================================================================== Environments -------------------------------------------------------- The N0057 version of the SPICE Toolkit is supported on the same environments as version N0056. Icy -------------------------------------------------------- The N0057 version offers the first official release of Icy, the interface to the CSPICE library from Interactive Data Language (IDL), a product of Research Systems, Inc. (RSI, http://www.rsi.com). If Icy was provided with this package, refer to ``icy.req'' document and to the Icy HTML documentation pointed to by ``doc/html/index.html'' for more details. SPICELIB/CSPICE -------------------------------------------------------- SRFXPT This new routine computes the surface intercept point of a specified ray on a target body at a specified epoch, optionally corrected for light time and stellar aberration. Its purpose is the same as for the SPICE routine SURFPT but unlike SURFPT is provides a much more flexible interface and computes geometry adjusted for light time and stellar aberration to the surface point rather than to the center of the target body. Therefore for most cases this routine makes SURFPT obsolete. Currently SRFXPT supports only the ellipsoid shape for target bodies but in the future it may be extended to support digital terrain models. Support for Satellite IDs in the Range 10000-99999 NAIF PCK data access routines have been modified to recognize satellites with IDs in the 10000-99999 range. Detection of Non-native Text Files The SPICE data loading mechanism was extended to detect and prohibit loading text kernel files containing lines terminated with EOF character(s) non-native to the platform on which the Toolkit was compiled. If a non-native EOL terminator is detected in the first 132 characters of a text kernel, the execution is stopped and an error message is displayed. This feature does not work with files that are smaller that 132 bytes or have the first line longer that 132 characters. Documentation The Toolkit may now optionally include documentation in HTML format. It is provided in the ``doc/html'' subdirectory and is pointed to by the top level index file doc/html/index.html The headers of a few additional most often used routines have been revised to correct technical errors and grammar and/or spelling, improve clarity, and improve examples. Built-in NAIF ID Code/Name Definitions The following new built-in NAIF ID code/name definitions have been added to the Toolkit: Spacecraft: -79 SPITZER Asteroids: 2000216 KLEOPATRA INSPEKT -------------------------------------------------------- INSPEKT was updated to generate comma-delimited reports. This output format can be set using the ``SET FORMAT DELIMITED ...'' command. See INSPEKT on-line help for more details. TOBIN -------------------------------------------------------- TOBIN was modified to detect and prohibit processing input transfer files containing lines terminated with EOF character(s) non-native to the platform on which the Toolkit was compiled. Version 56 --- August 2003 =========================================================================== Environments -------------------------------------------------------- The N0056 version of the SPICE Toolkit is supported on the same environments as version N0055 except the following ``Classic'' Mac environments: Macintosh MacOS9 Absoft FORTRAN Macintosh MacOS9 Metrowerks Codewarrior C Contact NAIF if you wish to obtain the Toolkit for these two deprecated environments. SPICELIB/CSPICE -------------------------------------------------------- Documentation The headers of 20+ of the most often used routines have been revised for one or more of the following reasons: -- to correct technical errors, -- to add pertinent new information, -- to improve clarity, -- to correct grammar and/or spelling, -- to improve examples. Built-in NAIF ID Code/Name Definitions The following new built-in NAIF ID code/name definitions have been added to the Toolkit: Spacecraft: -74 MRO -74 MARS RECON ORBITER -130 MUSES-C -142 TERRA -154 AQUA -159 EUROPA ORBITER -172 SPACETECH-3 COMBINER -188 MUSES-B -190 SIM -198 INTEGRAL -205 SPACETECH-3 COLLECTOR -234 STEREO AHEAD -235 STEREO BEHIND -253 OPPORTUNITY -254 SPIRIT Tracking Stations: 398990 NEW NORCIA Jovian satellites: 528 AUTONOE 529 THYONE 530 HERMIPPE 531 AITNE 532 EURYDOME 533 EUANTHE 534 EUPORIE 535 ORTHOSIE 536 SPONDE 537 KALE 538 PASITHEE Saturnian satellites: 619 YMIR 620 PAALIAQ 621 TARVOS 622 IJIRAQ 623 SUTTUNG 624 KIVIUQ 625 MUNDILFARI 626 ALBIORIX 627 SKADI 628 ERRIAPO 629 SIARNAQ 630 THRYM Uranian satellites: 718 PROSPERO 719 SETEBOS 720 STEPHANO 721 TRINCULO CHRONOS -------------------------------------------------------- CHRONOS utility program has been modified to allow loading kernel files using FURNSH kernel pool keywords and to accept all setup information from the command line. Bug Fixes -------------------------------------------------------- Reading Files with MAC-OSX Absoft FORTRAN Toolkit Low level read routines were fixed to make sure that the OSX Absoft FORTRAN SPICE toolkit can read files not owned by the user. DAS Scratch Files DASCLS routine has been modified to call the routine flushing DAS buffers before closing scratch DAS files. Failing to free the buffers caused write errors on HP/FORTRAN systems. Argument Checking in CSPICE Error Handling Functions The errprt_c, errdev_c, and erract_c functions were updated to diagnose invalid operation keyword input. Version 55 --- March 2003 =========================================================================== Environments -------------------------------------------------------- The N0055 version of the SPICE Toolkit is supported on the same environments as version N0054. SPICELIB -------------------------------------------------------- SPKW01 SPK type 1 writer routine has been added. DASCLS Scratch files no longer have their buffered portions flushed and are no longer segregated before before being closed. This change speeds up the close operation. SPKBSR Segment buffer size was increased from 2000 to 10000 to improve efficiency when handling SPK files with large number of segments. Kernel POOL The buffer that stores distinct numeric data items from the text kernel files was increased. The new buffer size is 20000, which is the maximum total number of values for all numeric scalar and array pool variables together. Type 1 SCLK The buffer that stores Type 1 SCLK coefficients was increased. The new buffer size is 10000. CSPICE -------------------------------------------------------- New CSPICE wrappers Wrappers dasac_c and dasec_c have been added to CSPICE. These support DAS file comment area access. Bug Fixes -------------------------------------------------------- Built-in NAIF ID Code/Name Definitions The following built-in NAIF ID code/name definitions have been corrected to match official MER name-ID mapping: -253 was MER-A, now MER-1 -254 was MER-B, now MER-2 MER-A and MER-B names are no longer supported by the Toolkit. DASCUD DASCUD has been fixed so that it writes a new, empty cluster directory record at the correct location. This corrects an error introduced by a bug fix in N0054. OSCELT OSCELT has been fixed so that it computes the argument of periapse correctly when the inclination is zero or 180 degrees. The mean anomaly computation has been corrected so that it works for circular and near-circular orbits. The computation of inclination has been changed to use ATAN2 for improved accuracy. Code that could generate arithmetic exceptions was corrected. Several new error checks have been added. CKE05 Angular velocity computations for subtypes 0 and 1 have been changed to make them compatible with those used by the MEX/Rosetta attitude file interpolation algorithms. CKBRIEF CKBRIEF has been updated to retrieve and display interpolation interval information from Type 2 CK files correctly in all cases. Version 54 --- December 2002 =========================================================================== Mailing Lists -------------------------------------------------------- NAIF has created 2 mailing lists, ``Spice_announce'' http://naif.jpl.nasa.gov/mailman/listinfo/spice_announce and ``Spice_discussion'' http://naif.jpl.nasa.gov/mailman/listinfo/spice_discussion ``Spice_announce'' is intended to provide notification of important developments such as a new toolkit release. Posting will generally be limited to members of the NAIF team. If you feel you have an important announcement that would be suitable for this list, you may send email to the list, but it will be reviewed by the NAIF team before dissemination. ``Spice_discussion'' is meant to provide a forum for discussion among SPICE users. Posting on this list is encouraged, however we also encourage you to limit mail traffic to the entire list. Extended discussions are often best carried out with a limited distribution list. Both lists require registration, allow access to an archive of prior postings and allow the user to choose whether to receive individual postings or a daily digest. Environments -------------------------------------------------------- The N0054 version of the SPICE Toolkit is supported on the same environments as version N0053. COOKBOOK Programs -------------------------------------------------------- FORTRAN and C versions of the COOKBOOK programs have been made more consistent in implementation and behavior. User's Guide documents for COOKBOOK programs have been updated and are now delivered with both FORTRAN and C toolkits. The FSTSPK COOKBOOK program has been deprecated and is no longer delivered. New Built-in NAIF ID Code/Name Definitions -------------------------------------------------------- The following new built-in NAIF ID code/name definitions have been added to the toolkit: Spacecraft: -226 ROSETTA Jovian satellites: 517 CALLIRRHOE 518 THEMISTO 519 MAGACLITE 520 TAYGETE 521 CHALDENE 522 HARPALYKE 523 KALYKE 524 IOCASTE 525 ERINOME 526 ISONOE 527 PRAXIDIKE Documentation -------------------------------------------------------- User's Guide documents for TOBIN, TOXFR and VERSION utility programs have been added to the toolkit documentation. Bug Fixes -------------------------------------------------------- Built-in Body-Fixed Frame for Pan Definition of the built-in body-fixed frame for PAN (IAU_PAN) has been updated to point to the correct PCK values used to compute its rotation. In the previous version of the toolkit it was pointing to PANDORA's rotation constants. Surface Intercept Routine The surface intercept routine SURFPT/surfpt_c has been re-implemented to reduce loss of precision. DAS Writer Routines DAS utility routine DASCUD has been fixed to ensure that DAS file structure is correct when files are closed without data segregation. Previously it was possible for unsegregated files to have an invalid final forward directory pointer. Note: this problem could not occur in E-kernels created by SPICE utility programs or using the SPICE EK API routines. CSPICE Cell Implementation The CELLINIT macro has been updated so that it doesn't modify data added to character cells prior to cell initialization. This enables population of uninitialized character cells via macro calls. Body Name to Associated Frame Conversion Routine The routine CNMFRM retrieving the reference frame name for a specified body name has been fixed so a TK frame specified by name and designated as an object's preferred frame via kernel pool assignments is found, and so that the correct name of this frame is returned. CHRONOS CHRONOS has been updated to make sure that the iterative search for the nearest local midnight converges in all cases. It has also been updated to use the maximum system allowed file name length on VAX and DEC Alpha environments. Version 53 --- September 2002 =========================================================================== Environments -------------------------------------------------------- The N0053 version of the SPICE Toolkit is supported in the following environments: PC Linux g77 PC Windows Compaq Visual (Digital) FORTRAN PC Windows Lahey FORTRAN 95 PC Linux gCC PC Windows Microsoft Visual C++ Sun Solaris FORTRAN Sun Solaris Native C Sun Solaris gCC HP UX HP FORTRAN HP UX HP C Macintosh MacOS Absoft FORTRAN Macintosh MacOS Metrowerks Codewarrior C Macintosh OS-X g77 Macintosh OS-X Absoft FORTRAN Macintosh OS-X Apple C SGI IRIX N32/O32 FORTRAN SGI IRIX MIPS C (N32/O32 ABIs) DEC Alpha Digital Unix Digital FORTRAN DEC Alpha Digital Unix Digital C Vax VMS Digital FORTRAN The PC/Linux/g77 version previously supported the alternative ``fort77'' compiler. This is no longer the case. Contact NAIF if you need support for this compiler. The Macintosh OS-X environments are new. CSPICE -------------------------------------------------------- New CSPICE wrappers for cell, set, and windows routines The complete set of C wrappers duplicating cell, sets, and windows capabilities existing in FORTRAN SPICE has been added to CSPICE. New CSPICE wrappers for sorting and searching routines The following new CSPICE wrappers implementing sorting and searching capabilities have been added: bscho*_c.c bsrch*_c.c esrchc_c.c isordv_c.c isrch*_c.c lstle*_c.c lstlt*_c.c order*_c.c reord*_c.c shell*_c.c New CSPICE wrappers for string manipulation and parsing routines The following new CSPICE wrappers for string manipulation and parsing capabilities have been added: cpos*_c.c pos*_c.c ncpos*_c.c kxtrct_c.c lpars*_c.c lx4*_c.c lxqstr_c.c repm*_c.c SPICELIB -------------------------------------------------------- SPK Type 18 A new SPK type (Type 18) has been added. This incorporates ESA/ESOC model for a spacecraft ephemeris. CK Type 5 A new CK type (Type 5) has been added. This incorporates ESA/ESOC model for a spacecraft attitude data. BRIEF -------------------------------------------------------- BRIEF utility has been updated to allow summarizing SPKs containing ephemerides for up to 20,000 distinct bodies. COOKBOOK -------------------------------------------------------- COOKBOOK programs have been updated to use the highest level routines currently available in SPICE -- FURNSH, SUBPT, etc. Bug Fixes -------------------------------------------------------- ID-to-name Translation SPICE's ID-to-name mapping subsystem has been updated to provide consistent behavior across all of its interfaces. It now correctly processes duplicate ID-to-name mapping assignments provided via text kernel files. Refer to the NAIF_IDS Required Reading for more details. Built-in Body-Fixed Frames Missing body-fixed frames -- IAU_PAN, IAU_GASPRA, IAU_IDA, and IAU_EROS -- have been added to the built-in frame set. Binary architecture consistency check at run-time Binary file format consistency check has been implemented at run time to verify that the toolkit prepared specifically for a platform with one binary file format has not been compiled/used on a platform with another binary file format. Long/truncated lines in text kernel files The text kernel file reader has been modified to correctly process truncated string value assignments. VMS Read-Only Access File Open Failure A bug in the DAF system preventing users on VMS systems from loading SPK, CK and binary PCK files with the read-only attribute(*) has been fixed. Version 52 --- January 2002 =========================================================================== Environments -------------------------------------------------------- The N0052 version of the SPICE Toolkit is supported on the following environments: PC Linux G77 PC Windows Compaq Visual (Digital) Fortran PC Windows Lahey Fortran 95 PC Linux GCC PC Windows Microsoft Visual C++ Sun Solaris Fortran Sun Solaris Native C Sun Solaris GCC HP UX HP Fortran HP UX HP C Macintosh MacOS Absoft Fortran Macintosh MacOS Metrowerks Codewarrior C SGI IRIX N32/O32 Fortran SGI IRIX MIPS C (N32/O32 ABIs) DEC Alpha Digital Unix Digital Fortran DEC Alpha Digital Unix Digital C Vax VMS Digital Fortran The N0052 version of the SPICE Toolkit is no longer supported on the following environments: PC Windows Lahey F77L3 PC Windows Microsoft Powerstation Fortran 1.x PC Windows Microsoft Powerstation Fortran 4.x Sun SunOS Fortran Macintosh MacOS Language Systems Fortran Next Nextstep Absoft Fortran Next Nextstep GCC Contact NAIF if you wish to obtain the Toolkit for one or more of these deprecated environments. SPICELIB -------------------------------------------------------- Run-Time Binary File Format Translation The most popular supported systems (including Macintosh, PC, and UNIX platforms) are now capable of accessing data in binary SPICE kernel files from other platforms directly without using transfer format. But note that binary files from other platforms are only available for read access. See the Convert User's Guide for specifics and details. Open File Limit Increase The sum of loaded SPK, CK, and binary PCK files, all of which are implemented using the DAF file architecture, may now reach 1000. Previous versions of the toolkit restricted the number of loaded DAFs to 20. But caution: loading large numbers of files may impact system performance. SPK aberration corrections SPK readers can now perform aberration corrections for transmitted, as well as received, radiation. This feature makes it simple to compute the direction in which radiation must be emitted in order to reach a specified target. The headers of the SPK readers have been expanded to explain aberration corrections in greater detail. Instrument Kernel Support GETFOV was extended to compute boundary corners from FOV definitions in the kernel pool utilizing the new ANGLES specification. See GETFOV's or getfov_c's header for details. Kernel POOL The buffers that store text kernel data were increased. The new maximums are: Maximum Number of Variables 5003 Maximum Number of Distinct Numeric Data Items 10000 (*) Maximum Number of Character Strings 4000 (**) (*) This is the maximum total number of values for all numeric scalar and array pool variables together. (**) This is the maximum total number of values for all character scalar and array pool variables together. These changes allow the kernel pool to hold substantially more data than previous versions of the SPICE toolkit, which became necessary due to the increasing use of such SPICE components as IK and FK utilizing the POOL as the data repository and access mechanism. Jacobian routines Routines have been added for computing the Jacobians of the transformations between rectangular and the following coordinate systems: cylindrical geodetic latitudinal spherical The Jacobian routines support transformation of velocities between these coordinate systems. See the headers of the following SPICELIB routines/CSPICE functions for more information: DCYLDR/dcyldr_c DGEODR/dgeodr_c DLATDR/dlatdr_c DSPHDR/dsphdr_c DRDCYL/drdcyl_c DRDGEO/drdgeo_c DRDLAT/drdlat_c DRDSPH/drdsph_c NAIF ID to Object Name Mapping The NAIF IDs for the following missions has been added to the set of IDs built into SPICE: CONTOUR LUNAR-A DRTS-WC MARS EXPRESS DEEP IMPACT STARLIGHT MER Documentation DAS and EK Required Reading documents have been added to the SPICE Toolkit. The CONVERT User's Guide has been updated to reflect new run-time binary file format translation capability. The FRAMES Required Reading has been updated to include inertial frame information formerly contained in the NAIF_IDS Required Reading. The NAIF_IDS Required Reading has been updated to reflect new Toolkit capability, through which the NAIF ID to name mappings can be defined using text kernel files. The MKSPK User's Guide has been updated to add clarity throughout. The ERROR, PCK, ROTATIONS, SPK, and TIME Required Reading documents have all been improved. CSPICE -------------------------------------------------------- New CSPICE wrappers for EK routines CSPICE wrappers have been added to support record-oriented EK manipulation, including record-oriented writing, updating, and reading. CSPICE wrappers have been added to provide summary capabilities for loaded EK tables. Miscellaneous new CSPICE wrappers Some new CSPICE wrappers have been added: frmnam_c inelpl_c namfrm_c CKBRIEF -------------------------------------------------------- A capability to display a separate record for each interpolation interval in each segment of a Type 2 or Type 3 CK file has been added to the program. This capability is implemented using the ``-dump'' command line option. COMMNT -------------------------------------------------------- An inconsistency between the program's functionality in interactive and command line modes has been fixed. The maximum length of a comment line that can be added to and extracted from the comments in either mode is now the same and is equal to 1000 characters. MKSPK -------------------------------------------------------- The program was modified to allow appending new data segments to an existing SPK file. VERSION -------------------------------------------------------- The interface of this utility program has been extended: a command line parameter causing the program to display additional library information has been added. See ``version -help'' for details. Bug Fixes -------------------------------------------------------- CK, PCK, and SPK segment buffering and selection Several bugs have been corrected in the modules CKBSR, PCKBSR, and SPKBSR. These bug fixes enable users to load more segments than can be buffered at once by these modules. However, the best run-time speed is still obtained when all segments of a given kernel type can be buffered. The current segment buffer sizes are: CK: 4000 segments SPK: 2000 segments PCK: 100 segments Const-qualification for various CSPICE interfaces A number of CSPICE function interfaces have been updated to add const-qualification of input arrays. This fix enhances compatibility with C++ applications. CSPICE function gcpool_c fixed This routine did not properly trim trailing blanks from values in its output array. MOVED fix for Fortran PC Linux platform In some cases the routine MOVED incorrectly copied double precision numbers whose values were assigned via EQUIVALENCE statements with pairs of integers. This could happen when the integer bit patterns did not correspond to valid double precision numbers. This problem prevented correct manipulation of some DAF segment descriptors. EK query processing using LIKE operator and null values Null values could be returned in some rare circumstances when a query employed the LIKE operator to compare scalar string column entries against a specified string value, and a null column entry was compared. EK time conversion The EK time parsing code handled SCLK values incorrectly when the string ``SCLK'' appeared in the name of the clock. EK documentation Various headers have been updated to indicate that query-and-fetch operations and EK fast writer operations may not be interleaved. Source code clean-up Miscellaneous problems triggering annoying but insignificant compilation warnings have been fixed. Various files have had TAB characters removed. Others have had final newline characters added. Version 51 --- April 2000 =========================================================================== SPICELIB -------------------------------------------------------- Instrument Kernel Support The routine GETFOV was added to the Toolkit. It returns information describing the shape, size, boresight, and orientation of the field of view for traditional remote sensing instruments. Binary Kernel Recognition The routine GETFAT was upgraded to use a more robust algorithm for identifying the type (SPK or CK) of inadequately labeled binary kernels. This modification is critical for Mars project SPICE customers who wish to use the SPICELIB utility FURNSH when loading binary kernels. CK A new representation for the orientation of spacecraft structures has been added to the C-kernel system. C-kernel data type 04 provides a flexible and compact method for representing the attitude of structures by using Chebyshev polynomials to fit orientation data or models. SPK Two new representations for position and velocity of objects have been added to the SPK system. Types 12 and 13 provide for the Hermite interpolation of states from series of state vectors. See the SPK Required Reading for further details. Miscellaneous The list of names recognized by BODTRN was enhanced to support the identification of the "Cluster" spacecraft (1,2,3 and 4) as well as the Pluto-Kuiper Express spacecraft and simulation. MKSPK -------------------------------------------------------- The utility program MKSPK has been added to the general release of the SPICE Toolkit. This allows SPICE customers to more easily generate SPK files from tabular ephemeris information. See the User's Guide (mkspk.ug) for details on the use of MKSPK. SPKMERGE -------------------------------------------------------- The program was upgraded to correct an "infinite loop" that existed in rare cases on some platforms. Bug Fixes Although it is unlikely that most users will notice any difference, a number of minor bug corrections have been incorporated: -- The kernel pool software was modified to detect and handle string specifications that are too long to be stored in the kernel pool. -- The time parsing software (used by STR2ET) was enhanced so that erroneous long strings will be diagnosed as erroneous and no longer cause a run-time error. Version 50 --- October 1999 =========================================================================== CSPICE -------------------------------------------------------- Version 50 of the SPICE Toolkit includes a C language edition of the Toolkit. This provides a C language interface to the Toolkit and duplicates the FORTRAN capabilities. SPICE users interested in a C version of the Toolkit should specifically request the CSPICE version. Moreover, C users should read the document "CSPICE User's Guide" which addresses issues regarding the translation of the FORTRAN Toolkit to C. Additions and Extensions to SPICE routines -------------------------------------------------------- Loading Kernels The new routine FURNSH provides a single uniform interface for loading all SPICE kernels. In addition, the new interface allows you create a "meta-kernel" listing which SPICE kernels should be loaded. When this "meta-kernel" is supplied to FURNSH, all listed kernels will be loaded into the appropriate SPICE subsystems. It is anticipated that this new interface will substantially ease the problem of managing and loading SPICE kernels. In addition to the routine FURNSH several related routines are provided to assist with the run-time management of kernels loaded through the FURNSH interface. KTOTAL returns the number of kernels that are currently available to your program as a result of previous calls to FURNSH and UNLOAD. KDATA provides an interface for retrieving (in order of their specification through FURNSH) kernels that are active in your application. KINFO allows you to retrieve information about a loaded kernel using the name of that kernel. UNLOAD provides an interface for unloading kernels that have been loaded via the routine FURNSH. FORTRAN users should consult the header for the routine KEEPER for details on the use of these routines. C users should see the specific files furnsh_c.c, ktotal_c.c, kdata_c.c, kinfo_c.c and unload_c.c Position Only Interface. The Frames and SPK subsystems have been extended to provide a "position only" interface. The user level routines in the extension are: SPKPOS returns the 3-vector giving the location of one object as seen from another corrected for light time and stellar aberration (if requested by the user) in the user specified reference frame. PXFORM returns the 3x3 matrix that transforms positions from one reference frame to another as a function of time. These routines run slightly faster than their position and velocity counter parts: SPKEZR and SXFORM. In addition they allow you to use C-kernel based frames when the C-kernel does not contain angular velocity data. See the routines PXFORM and SPKPOS for details on their use. ID-codes The name/ID-code translation routines (BODN2C and BODC2N) have been extended so that users may add missing name/ID-code mappings to SPICE text kernels. Using this new capability, users can extend the built-in name/ID-code mapping by simply loading an appropriate SPICE text kernel with the interface FURNSH. Kernel Pool Enhancements Several new kernel pool interfaces have been provided STPOOL Allows storage of long string valued variables through use of a continuation character. PCPOOL Allows the insertion of a character variable directly into the kernel pool without supplying a text kernel. PDPOOL Allows the insertion of a double precision variable directly into the kernel pool without supplying a text kernel. PIPOOL Allows the insertion of an integer variable directly into the kernel pool without supplying a text kernel. LMPOOL Similar to LDPOOL, but the text kernel is stored in an array of strings instead of an external file. SZPOOL allows run time retrieval of kernel pool memory parameters. DVPOOL allows deletion of a specific variable from the kernel pool. GNPOOL assists in determining which variables are defined in the kernel pool via variable name template matching. Continuous Spacecraft Clocks The Spacecraft Clock system has been extended so that "ticks" can be modeled continuously instead of discretely. See the SCLK required reading for more details. Bad FTP File Transfer Detection SPICE binary kernels have been enhanced so that Toolkit software can detect whether a binary kernel has been transferred using ASCII instead of BINARY transfer mode. Note that only SPICE binary kernels produced with the N0050 (or later) version of the SPICE Toolkit will have features required for this diagnosis. CK Writer Enhancements The SPICE C-kernel writers have been enhanced to check that quaternions supplied to the writer are indeed nearly unit length. This check allows detection of programming errors earlier in the kernel production process. Bugs No bugs were identified between version N0049 and N0050 of the Toolkit. However, users may notice that several routines have minor changes. The main reasons for code changes are: 1. Extending the range of inputs that can be handled by SPICE routines. 2. Balancing the use of the SPICE error handling Check-in/Check-out tracing mechanism. 3. Removal of unused variables. 4. Corrections in grammar, spelling and other typographic errors in the headers of SPICE routines. SPICE Utility Programs -------------------------------------------------------- TOBIN The utility program TOBIN which converts transfer format kernels to binary form, can now process transfer format kernels that have been wrapped with SFDUs. COMMNT COMMNT now accepts command line arguments making it usable from user scripts. CKBRIEF CKBRIEF is a new utility that allows you to quickly summarize a C-kernel in a manner similar to the summary capabilities provided by the SPK summary tool, BRIEF. MKSPK MKSPK is a utility program that allows users to generate SPK files from appropriate and suitably tabularized position and velocity information. Documentation -------------------------------------------------------- Many SPICE documents were edited and brought up to date. Most notable of these is the document KERNEL.REQ which discusses SPICE text kernels and the use of the kernel pool. In addition a new document called "Common Problems" (problems.req) has been included with the standard SPICE documentation. This document is intended to help you in trouble shooting problems that may arise with programming with the SPICE Toolkit. Version 49 --- September 1998 =========================================================================== Version 49 of the SPICE Toolkit exists only to fix errors that were identified in version 48 of the Toolkit. The routines in SPICELIB that were corrected are: DELTET --- obsolete routine maintained only for backwards compatibility. A bug was introduced in Version 48 that could lead to 0.003 seconds of error in outputs. DPFMT --- documentation corrections. EKQMRT --- a boundary bug was corrected. SPKW02 --- documentation correction TIMDEF --- a bug was fixed that can only be manifested when the default exception handling is modified. TIMOUT --- correction of grammatical errors in header. Version 48 --- May 1998 =========================================================================== Version 48 of the SPICE Toolkit extends the set of supported platforms to include PCs running the LINUX operating system. The time system was modified so that two digit years are interpreted as belonging to the years 1969-2068 inclusive. In addition a number of minor bugs have been fixed. The intended functionality of the Toolkit has not changed. The most significant bug fixes are listed here. conics.for was updated. There was a coding error in the computation of the mean anomaly in the parabolic case. This problem has been corrected. et2lst.for was updated. The integer variable SUN was never initialized in the previous version of the routine. Now it is set to the proper value of 10. str2et.for was updated. The previous versions of this routine did not correctly convert day-of-year strings in the TDB or TDT systems. They treated the day of year as year, month, day giving spectacularly wrong answers. In addition, comments concerning the default century for abbreviated years were updated to reflect changes to TEXPYR timout.for was updated. The previous version of this routine did not output fractional components for epochs prior to 1 A.D. In addition, the default time system, calendar and time zone are obtained from TIMDEF. Version 47 --- July 1997 =========================================================================== This chapter describes the significant changes to version 47 of the SPICE Toolkit. Documentation -------------------------------------------------------- There are two significant documentation changes to version 47 of the Toolkit. 1. The Required Reading for SPK (SPK.REQ) has been re-written to address the use of non-inertial frames within the SPK system. 2. The Frames subsystem has been documented in the required reading file FRAMES.REQ. This document describes the various reference systems that are currently supported by the Toolkit as well as naming and numbering conventions that will be adhered to by NAIF. These two documents together with the extensions to the frame system that have been added in version 47 allows one to easily model the dynamics of structures on spacecraft or surface rovers. In addition to these major modifications to the base SPICE documentation, the document TIME.REQ has been updated to reflect a slight broadening of recognized time strings and to document the routine ET2LST that allows the user to convert to ephemeris time to local solar time for any natural ephemeris object. Software -------------------------------------------------------- SPK The SPK ephemeris system has been expanded to support Space Command Two Line Elements (formally known as NORAD Two Line Elements) and equinoctial elements. To assist SPICE users who need to create SPK files that contain two line element sets, NAIF has a preliminary utility that allows the creation of SPK files from two line element data. This tool is available from NAIF on an as-needed basis. This utility is still a bit rough around the edges and has not yet been made an official Toolkit product. Frames The frame system has been extended to support reference frames that can be described as a constant rotation from another frame (such as a bodyfixed, inertial or C-kernel frame). These frames are easily described using text based kernels. This new frame type is well suited for describing instrument, lander and topocentric frames. Time The time parsing software was enhanced so that a slightly broader set of time formats are recognized. In addition the routine ET2LST was added to the Toolkit. This routine allows you to convert ET (ephemeris time TDB) to local solar time for a planet, satellite comet or asteroid. Local solar time is a "clock" measure of the angle between a local meridian and the meridian of the sun. See the TIME required reading for further details. Bug Fixes The routines CKGPAV and CKFXFM in versions prior to version 47 of the Toolkit dealt with angular velocity in non-inertial frames incorrectly. This error did not affect C-kernels that were described relative to inertial frames. In those rare instances in which a C-kernel was described relative to a non-inertial frame, the mistreatment of angular velocity could lead to errors in the computation of velocities relative to the C-kernel frame. The computation of positions were not affected by this error. The routine TIMOUT in version 46 did not reliably produce an abbreviated two-digit year. This error has been corrected. All other errors were of a technical nature such as improper use of the SPICE exception handling subsystem and are unlikely to have affected most SPICE users. Version 46 --- January 1997 =========================================================================== This chapter describes the significant changes to version 46 of the SPICE Toolkit. Documentation NAIF now has available two overview documents that provide users with a higher level view of Toolkit. The two documents are called Introduction to SPICE Most Useful SPICELIB Subroutines These documents are available in the ``doc'' subdirectory of the Toolkit in the postscript files intro.ps mostused.ps respectively. The first of these documents, ``Introduction to SPICE'', provides a broad overview of the SPICE system and attempts to lay out a map of where you can find more specific information about the various components of the SPICE system. The second document ``Most Useful SPICELIB Routines'' categorizes 120 or so of the most frequently used SPICELIB routines and provides a synopsis for each of these. Time The time software has undergone significant enhancement. The Toolkit now supports a wider set of time formats and time systems. The most important new routines are: STR2ET TIMOUT TTRANS TPARTV The new time software is outlined in the ``recommended reading'' file --- TIME.REQ which appears in the ``doc'' subdirectory of the Toolkit. A number of convenience routines have been added to the Toolkit. Those likely to be of most interest to users are: DPFMT The routine DPFMT allows you to create a string representing a number by supplying a ``picture'' that should be followed in formatting the string. TOSTDO The routine TOSTDO is a portable means of writing strings to ``standard output.'' The particulars of formatting on various platforms are handled transparently. Using this routine, you can isolate yourself from formatting considerations that arise when using the intrinsic FORTRAN WRITE statement. The remainder of the modifications to the Toolkit are primarily to ease problems associated with maintenance of the Toolkit. Version 45 --- October 1996 =========================================================================== Version 45 is a quick update to correct an oversight in versions 43 and 44. Although the reference frames DE-143 was added to the collection of non-inertial reference frames in version 43, it was not available to all of the SPICE subsystems. Version 45 corrects this deficiency. In addition to this correction to the reference frame subsystem, a number of minor corrections were made to the DAS subsystem and to error messages returned by EK software. Version 44 --- August 1996 =========================================================================== This chapter describes the significant changes to version 44 of the SPICE Toolkit. SPK Subsystem The main workhorse routine of the SPK subsystem, SPKGEO, was modified to remove potentially redundant computations. As a result, some applications may see a performance improvement on the order of 60 percent. Inspekt Inspekt was upgraded to support the DEC Alpha OSF/1 environment. All functional aspects of Inspekt are now fully supported in the DEC Alpha OSF/1 environment. Bug Fixes Several errors in the EK and supporting DAS subsystem were corrected. These fixes will be visible to only a small number of SPICE users. (Primarily those users who create E-kernels or access the EK files directly through the subroutine interface.) Users whose primary use of E-kernels is via the program Inspekt will see no visible changes in the SPICE system. The generic segment subsystem was corrected. The errors were discovered by the NAIF staff while developing new SPK data types. These new data types are not yet incorporated into SPICELIB. Consequently users of the SPICE system are unlikely to have used any of the code in which these errors were found. The frames subsystem was corrected. In NAIF's experiments in converting the library to C, an error was found in the routine FRMCHG. This error is of a pedantic nature and has not surfaced in any of the supported native FORTRAN environments. Version 43 --- May 1996 =========================================================================== This chapter describes the new capabilities available in version 43 of the SPICE Toolkit. Brief The SPICE utility program BRIEF has been added to the generic SPICE Toolkit. This program allows you to easily summarize the contents of an SPK file. The summary can be tuned depending upon the level of detail you are interested in seeing. See the BRIEF User's Guide (brief.ug) for an explanation of features. Star Catalogs. In version 43 of the SPICE Toolkit, an introductory level star catalog capability has been introduced. The routines used for manipulating star catalogs are: STCF01 STCG01 STCL01 CHGIRF Support for the inertial reference frame DE143 has been added to SPICELIB. BODTRN The routine BODTRN has been added to the Toolkit. This routine allows you to easily translate between the names of ephemeris objects to their NAIF ID codes. Performance Improvements A number of performance enhancements have been included. Most notable in this list is the SPICE exception handling subsystem. By relinking your programs you may see an improvement in performance from 20 to 30 percent (depending upon how heavily your program makes use of the SPICE exception handling capability). Version 42 --- December 1995 =========================================================================== This chapter describes new capabilities available in version 42 of the SPICE Toolkit and includes examples of how to make use of these new capabilities. The major new capability of Version 42 of the Toolkit is the official release of the SPICE Events Kernel Software. This software includes all the interface level routines for reading and writing events kernels. It also includes the event kernel browser program Inspekt. Inspekt has an extensive on-line help facility that for now must serve as a user's guide to the program. Full documentation for the new capabilities will be available in version 43 of the Toolkit. Version 41 --- October 1995 =========================================================================== This chapter describes new capabilities available in version 41 of the SPICE Toolkit and includes examples of how to make use of these new capabilities. There are two major new capabilities provided in version 41 of the Toolkit. First is the ability to retrieve the states of objects by using the names of the objects instead of SPICE integer id-codes for those objects. Second is the ability to store and retrieve states of objects relative to non-inertial reference frames. -------------------------------------------------------- Until now, the primary mechanism for retrieving state information from the SPICE ephemeris (SPK) files has been the subroutine SPKEZ (pronounced: ess pee kay eee' zee). This routine requires that you know the integer id-codes associated with the objects of interest. Beginning with version 41 of the SPICE Toolkit the routine SPKEZR (pronounced: ess pee kay eee' zee er ) will be the primary mechanism for retrieving states. The calling sequence for this new routine is CALL SPKEZR ( TARG, ET, REF, ABCORR, OBS, STARG, LT ) where Inputs: TARG is a character string that is the name of the object whose state is of interest. Examples are: 'JUPITER', 'EARTH', 'SUN', 'GOLDSTONE'. ET is the epoch at which the state is desired. ET is a double precision number giving the epoch measure in ephemeris seconds past the epoch of the J2000 reference frame. REF is a character string giving the name of the reference frame in which the output state should be represented. Examples are: 'J2000', 'IAU_EARTH'. ABCORR is a string indicating what forms of aberration corrections should be applied to the retrieved state. OBS is a string that is the name of the object to which the returned state will be relative. Examples are: 'EARTH', 'GOLSTONE'. Outputs: STARG is the state of the target body relative to the observer represented in the specified reference frame with the specified aberration corrections accounted for. LT is the light time in seconds from the target to the observer. To illustrate the use of this routine, suppose that you wanted to get the B1950 state of Mars relative to Earth corrected for light-time and stellar aberration at the epoch that occurs 10 million seconds prior to the J2000 epoch. The code fragment below shows how you would call SPKEZR to obtain this state. (Note that this assumes that you have already loaded ephemerides for Mars and the Earth.) DOUBLE PRECISION STATE ( 6 ) DOUBLE PRECISION LT CALL SPKEZR ( 'MARS', 1.0D+07, 'B1950', 'LT+S', . 'EARTH', STATE, LT ) Non-inertial Reference Frames -------------------------------------------------------- Prior to version 41 of the Toolkit, storing or obtaining states relative to a body-fixed frame required conversion to or from states relative to inertial frames such as J2000. With version 41 of the SPICE Toolkit, this restriction has been removed. It is now possible to store states relative to a non-inertial frame. Moreover, you may now retrieve states relative to non-inertial frames. For example suppose you want to determine whether or not Jupiter is above the local horizon at the Goldstone tracking site. The following code fragment allows you to make this determination at an epoch ET. Note we've hard-coded the radii for the spheroid that approximates the surface of the earth. C Look up the bodyfixed state of Jupiter relative to C the Goldstone tracking site and the state of C Goldstone relative to the center of the earth. C CALL SPKEZR ( 'JUPITER', ET, 'IAU_EARTH', 'LT+S', . 'GOLDSTONE', JSTATE, LT ) CALL SPKEZR ( 'GOLDSTONE', ET, 'IAU_EARTH', 'NONE', . 'EARTH', GSTATE, LT ) C C Compute the local surface normal at the Goldstone site. C EQRAD1 = 6378.140 EQRAD2 = 6378.140 POLRAD = 6356.75 CALL SURFNM ( EQRAD1, EQRAD2, POLRAD, GSTATE, LNORML ) C C Next compute the angle between the local normal and the C vector to Jupiter. If the angle is less than pi/2 then C Jupiter is above the local horizon. Otherwise it's not C visible. C ANGLE = VSEP ( JSTATE, LNORML ) IF ( ANGLE .LT. HALFPI() ) THEN WRITE (*,*) 'Jupiter is above the horizon.' ELSE WRITE (*,*) 'Jupiter is not visible from Goldstone.' END IF Below is a list of the non-inertial frames that are currently supported. Frames that begin with the letters IAU are frames whose orientation is specified in the report: "Report of the IAU/IAG/COSPAR Working Group on Cartographic Coordinates and Rotational Elements of the Planets and Satellites" IAU_ADRASTEA IAU_AMALTHEA IAU_ANANKE IAU_ARIEL IAU_ATLAS IAU_BELINDA IAU_BIANCA IAU_CALLISTO IAU_CALYPSO IAU_CARME IAU_CHARON IAU_CORDELIA IAU_CRESSIDA IAU_DEIMOS IAU_DESDEMONA IAU_DESPINA IAU_DIONE IAU_EARTH IAU_EARTH_BARYCENTER IAU_ELARA IAU_ENCELADUS IAU_EPIMETHEUS IAU_EUROPA IAU_GALATEA IAU_GANYMEDE IAU_HELENE IAU_HIMALIA IAU_HYPERION IAU_IAPETUS IAU_IO IAU_JANUS IAU_JULIET IAU_JUPITER IAU_JUPITER_BARYCENTER IAU_LARISSA IAU_LEDA IAU_LYSITHEA IAU_MARS IAU_MARS_BARYCENTER IAU_MERCURY IAU_MERCURY_BARYCENTER IAU_METIS IAU_MIMAS IAU_MIRANDA IAU_MOON IAU_NAIAD IAU_NEPTUNE IAU_NEPTUNE_BARYCENTER IAU_NEREID IAU_OBERON IAU_OPHELIA IAU_PANDORA IAU_PASIPHAE IAU_PHOBOS IAU_PHOEBE IAU_PLUTO IAU_PLUTO_BARYCENTER IAU_PORTIA IAU_PROMETHEUS IAU_PROTEUS IAU_PUCK IAU_RHEA IAU_ROSALIND IAU_SATURN IAU_SATURN_BARYCENTER IAU_SINOPE IAU_SUN IAU_TELESTO IAU_TETHYS IAU_THALASSA IAU_THEBE IAU_TITAN IAU_TITANIA IAU_TRITON IAU_UMBRIEL IAU_URANUS IAU_URANUS_BARYCENTER IAU_VENUS IAU_VENUS_BARYCENTER