SuperNOVAS v1.2
The NOVAS C library, made better
|
Functions | |
short | planet_eph_manager (double jd_tdb, enum novas_planet body, enum novas_origin origin, double *position, double *velocity) |
short | planet_eph_manager_hp (const double jd_tdb[2], enum novas_planet body, enum novas_origin origin, double *position, double *velocity) |
short | solarsystem (double jd_tdb, short body, short origin, double *position, double *velocity) |
short | solarsystem_hp (const double jd_tdb[2], short body, short origin, double *position, double *velocity) |
SuperNOVAS major planet ephemeris lookup implementation using JPL 1997 ephemeris data, to be used together with eph_manager.c. This is a legacy API, maiunly for supporting older code written for NOVAS C.
A more generic solution is to implement a novas_ephem_provider (e.g. relying on the current version of the CSPICE library) and set it as the default ephemeris handler via set_ephem_provider(), and then use solsys-ephem.c instead to use the same implementation for major planets.
Based on the NOVAS C Edition, Version 3.1:
U. S. Naval Observatory
Astronomical Applications Dept.
Washington, DC
http://www.usno.navy.mil/USNO/astronomical-applications
short planet_eph_manager | ( | double | jd_tdb, |
enum novas_planet | body, | ||
enum novas_origin | origin, | ||
double * | position, | ||
double * | velocity | ||
) |
Provides an interface between the JPL direct-access solar system ephemerides and NOVAS-C for regular (reduced) precision applications.
This function and planet_eph_manager_hp() were designed to work with the 1997 version of the JPL ephemerides, as noted in the references.
The user must create the binary ephemeris files using software from JPL, and open the file using function ephem_open(), prior to calling this function.
REFERENCES:
jd_tdb | [day] Two-element array containing the Julian date, which may be split any way (although the first element is usually the "integer" part, and the second element is the "fractional" part). Julian date is on the TDB or "T_eph" time scale. | |
body | Major planet number (or that for Sun, Moon, SSB...) | |
origin | NOVAS_BARYCENTER (0) or NOVAS_HELIOCENTER (1), or 2 for Earth geocenter – relative to which to report positions and velocities. | |
[out] | position | [AU] Position vector of 'body' at jd_tdb; equatorial rectangular coordinates in AU referred to the ICRS. |
[out] | velocity | [AU/day] Velocity vector of 'body' at jd_tdb; equatorial rectangular system referred to the ICRS, in AU/day. |
References planet_eph_manager_hp().
short planet_eph_manager_hp | ( | const double | jd_tdb[2], |
enum novas_planet | body, | ||
enum novas_origin | origin, | ||
double * | position, | ||
double * | velocity | ||
) |
Provides an interface between the JPL direct-access solar system ephemerides and NOVAS-C for highest precision applications.
This function and planet_eph_manager() were designed to work with the 1997 version of the JPL ephemerides, as noted in the references.
The user must create the binary ephemeris files using software from JPL, and open the file using function ephem_open(), prior to calling this function.
REFERENCES:
jd_tdb | [day] Two-element array containing the Julian date, which may be split any way (although the first element is usually the "integer" part, and the second element is the "fractional" part). Julian date is on the TDB or "T_eph" time scale. | |
body | Major planet number (or that for Sun, Moon, SSB...) | |
origin | NOVAS_BARYCENTER (0) or NOVAS_HELIOCENTER (1), or 2 for Earth geocenter – relative to which to report positions and velocities. | |
[out] | position | [AU] Position vector of 'body' at jd_tdb; equatorial rectangular coordinates in AU referred to the ICRS. |
[out] | velocity | [AU/day] Velocity vector of 'body' at jd_tdb; equatorial rectangular system referred to the ICRS, in AU/day. |
References NOVAS_BARYCENTER, NOVAS_HELIOCENTER, NOVAS_MOON, NOVAS_PLANETS, NOVAS_SUN, and planet_ephemeris().
short solarsystem | ( | double | jd_tdb, |
short | body, | ||
short | origin, | ||
double * | position, | ||
double * | velocity | ||
) |
A default implementation for regular (reduced) precision handling of major planets, Sun, Moon and the Solar-system barycenter. See DEFAULT_SOLSYS in Makefile to choose the implementation that is built into with the library as a default. Applications can define their own preferred implementations at runtime via set_planet_provider().
Since this is a function that may be provided by existing custom user implementations, we keep the original argument types for compatibility, hence 'short' instead of the more informative enums).
jd_tdb | [day] Barycentric Dynamical Time (TDB) based Julian date | |
body | Major planet number (or that for the Sun, Moon, or an appropriate barycenter), as defined by enum novas_planet, e.g. NOVAS_MARS (4), NOVAS_SUN (10) or NOVAS_SSB (0). (For compatibility with existing NOVAS C compatible user implementations, we keep the original NOVAS C argument type here). | |
origin | NOVAS_BARYCENTER (0) or NOVAS_HELIOCENTER (1) relative to which to return positions and velocities. (For compatibility with existing NOVAS C compatible user implementations, we keep the original NOVAS C argument type here). | |
[out] | position | [AU] Position vector of 'body' at 'tjd'; equatorial rectangular coordinates in AU referred to the mean equator and equinox of J2000.0. |
[out] | velocity | [AU/day] Velocity vector of 'body' at 'tjd'; equatorial rectangular system referred to the mean equator and equinox of J2000.0, in AU/Day. |
References planet_eph_manager().
short solarsystem_hp | ( | const double | jd_tdb[2], |
short | body, | ||
short | origin, | ||
double * | position, | ||
double * | velocity | ||
) |
A default implementation for high precision handling of major planets, Sun, Moon and the Solar-system barycenter (and other barycenters). See DEFAULT_SOLSYS in Makefile to choose the implementation that is built into the library as a default. Applications can define their own preferred implementations at runtime via set_planet_provider_hp().
Since this is a function that may be provided by existing custom user implementations, we keep the original argument types for compatibility, hence 'short' instead of the more informative enums).
jd_tdb | [day] Barycentric Dynamical Time (TDB) based Julian date, broken into high and low order components, respectively. Typically, as the integer and fractional parts for the highest precision. | |
body | Major planet number (or that for the Sun, Moon, or an appropriate barycenter), as defined by enum novas_planet, e.g. NOVAS_MARS (4), NOVAS_SUN (10) or NOVAS_SSB (0). (For compatibility with existing NOVAS C compatible user implementations, we keep the original NOVAS C argument type here). | |
origin | NOVAS_BARYCENTER (0) or NOVAS_HELIOCENTER (1) relative to which to return positions and velocities. (For compatibility with existing NOVAS C compatible user implementations, we keep the original NOVAS C argument type here). | |
[out] | position | [AU] Position vector of 'body' at 'tjd'; equatorial rectangular coordinates in AU referred to the mean equator and equinox of J2000.0. |
[out] | velocity | [AU/day] Velocity vector of 'body' at 'tjd'; equatorial rectangular system referred to the mean equator and equinox of J2000.0, in AU/Day. |
References planet_eph_manager_hp().