Naval Observatory Vector Astrometry Software
C Edition C3.1 (31 Mar 11)
NOVAS is an integrated package of functions for computing various commonly needed quantities in positional astronomy. The package can supply, in one or two function calls, the instantaneous coordinates of any star or planet in a variety of coordinate systems. At a lower level, NOVAS also provides astrometric utility transformations, such as those for precession, nutation, aberration, parallax, and gravitational deflection of light. The computations are accurate to better than one milliarcsecond. The NOVAS library is an easy-to-use facility that can be incorporated into data reduction programs, telescope control systems, and simulations. The U.S. parts of The Astronomical Almanac are prepared using NOVAS. Fortran and Python editions of NOVAS are also available. See the NOVAS overview for more general information.
The NOVAS source code contains sufficient comment statements in the prolog of each function to make the usage clear. Expanded explanations of the most frequently called functions are provided in the User's Guide, which contains hypertext cross-references. Additional information about computation of nutation in NOVAS is available in USNO Circular 181.
For most high-level calculations, NOVAS requires access to the position and velocity vectors of solar system objects as a function of time. NOVAS function ephemeris provides these data. For major solar system bodies, ephemeris calls a user-selected version of the function solarsystem. Users can choose from the three versions of solarsystem that are supplied in the standard NOVAS distribution, or supply their own version. At the very least (for the computation of the apparent positions of stars), the function ephemeris must access ephemeris data for the Earth and Sun. For the highest-accuracy requirements and most flexibility in usage, ephemeris can call solarsystem versions 1 or 2, which provide a direct interface to the planetary and lunar ephemerides produced by the Jet Propulsion Laboratory (JPL). The JPL ephemerides and the software to access them can be downloaded from the JPL web site. More information on the use of ephemeris, the available versions of solarsystem, the specifications of the calls to ephemeris and solarsystem, and how to obtain and install the JPL ephemerides is provided in the User's Guide.
Key Changes Between Versions C3.0 and C3.1
NOVAS C3.1 fixes several minor problems in C3.0 and includes a few new features. Appendix B of the User's Guide provides a complete list of changes since version C2.0.1. The main differences between NOVAS C3.0 and C3.1 are as follows:
- New function cel2ter transforms a vector from the celestial system (GCRS) to the terrestrial system (ITRS). It complements function ter2cel.
- Function wobble has a new direction input parameter.
- The ephemeris manager (eph_manager.c and eph_manager.h) now supports JPL's DE421 lunar and planetary ephemerides. Function ephem_open also has an additional output argument, de_number, which provides the DE number (e.g., 405, 421) of the opened ephemeris file. The function names Ephem_Open, Ephem_Close, Planet_Ephemeris, State, Interpolate, and Split were all changed to lower case (i.e., ephem_open, ephem_close, planet_ephemeris, state, interpolate, and split) to conform to internal coding standards.
- To prevent possible string overflows, two new preprocessor constants, SIZE_OF_OBJ_NAME and SIZE_OF_CAT_NAME have been defined in novas.h. SIZE_OF_OBJ_NAME defines the length of the starname character array in the cat_entry structure and the length of the name character array in the object structure. SIZE_OF_CAT_NAME defines the length of the catalog character array in the cat_entry structure. Although the actual lengths of the arrays are unchanged, the make_cat_entry and make_object function prototypes and definitions now use these new preprocessor constants in their argument lists. Other NOVAS functions also make use of the new preprocessor constants.
- Updated function precession fixes a bug that occurs when the input and output Julian dates are both 2451545.0 on the first call to the function.
- The nutation models in nutation.c—iau2000a, iau2000b, and nu2000k—now use static storage class for the large const arrays.
For known issues with the code, see NOVAS User Updates and FAQ.
The twenty-five NOVAS files are listed below. The files are contained in a Unix tar archive, novasc3.1.tar; two compressed versions of which are provided. The same files are also contained in a PC zip file. The tar and zip files are
| novasc3.1.tar.Z | 3.1M | from standard Unix compress utility | ||
| novasc3.1.tar.gz | 2.7M | from Unix gzip utility | ||
| novasc3.1.zip | 2.7M | from PC zip utility |
The twenty-five individual files are
| NOVAS_C3.1_Guide.pdf | 740k | User's Guide to NOVAS C3.1 (pdf) | ||
| README | 6k | README, brief introduction to NOVAS C3.1 (ASCII) | ||
| novas.c | 274k | NOVAS C source code, all supervisory and utility functions plus most basic functions (ASCII) | ||
| novas.h | 17k | NOVAS C source code, header file for novas.c (ASCII) | ||
| novascon.c |
2k | NOVAS C source code, mathematical and physical constants used (ASCII) | ||
| novascon.h |
2k | NOVAS C source code, header file for novascon.c (ASCII) | ||
| nutation.c |
242k | NOVAS C source code, nutation functions (ASCII) | ||
| nutation.h | 1k | NOVAS C source code, header file for nutation.c (ASCII) | ||
| solsys1.c | 9k | NOVAS C source code, version of solarsystem used with eph_manager.c to provide "all C" interface to JPL ephemerides (ASCII) | ||
| solsys2.c | 10k | NOVAS C source code, version of solarsystem used with jplint.f to provide interface between NOVAS C and JPL Fortran ephemerides-access software (ASCII) | ||
| solsys3.c | 20k | NOVAS C source code, version of solarsystem that provides minimum required ephemeris data without reference to an external data file (ASCII) | ||
| solarsystem.h | 1k | NOVAS C source code, header file for solsys1.c, solsys2.c, and solsys3.c (ASCII) | ||
| eph_manager.c | 26k | NOVAS C source code, used with solsys1.c to provide "all C" interface to JPL ephemerides (ASCII) | ||
| eph_manager.h | 1k | NOVAS C source code, header file for eph_manager.c (ASCII) | ||
| readeph0.c | 3k | NOVAS C source code, dummy version of function readeph — highest-level call to the USNO/AE98 minor planet ephemerides (ASCII) | ||
| jplint.f | 8k | NOVAS Fortran source code, used with solsys2.c to provide interface to JPL Fortran ephemerides-access software (ASCII) | ||
| checkout-stars.c | 2k | NOVAS C source code, main function to validate basic installation of NOVAS (ASCII) | ||
| checkout-stars-usno.txt | 1k | NOVAS C output, results obtained at USNO from checkout-stars.c (ASCII) | ||
| checkout-stars-full.c | 3k | NOVAS C source code, main function to validate installation of NOVAS with JPL ephemerides (ASCII) | ||
| checkout-stars-full-usno.txt | 1k | NOVAS C output, results obtained at USNO from checkout-stars-full.c (ASCII) | ||
| checkout-mp.c | 4k | NOVAS C source code, main function to validate installation of NOVAS with USNO/AE98 minor planet ephemerides (ASCII) | ||
| checkout-mp-usno.txt | 1k | NOVAS C output, results obtained at USNO from checkout-mp.c (ASCII) | ||
| example.c | 9k | NOVAS C source code, main function that makes sample calls discussed in Chapter 3 of User's Guide (ASCII) | ||
| example-usno.txt | 1k | NOVAS C output, results obtained at USNO from example.c (ASCII) | ||
| CIO_RA.TXT | 7.7M | optional NOVAS data file, right ascension of CIO in GCRS from 1700 to 2300 (ASCII) | ||
| cio_file.c | 5k | NOVAS C source code, main function to convert CIO_RA.TXT to binary, direct-access file (ASCII) |
Direct questions, comments, and problem reports to our help desk.