SuperNOVAS v1.2
The NOVAS C library, made better
Loading...
Searching...
No Matches
solsys-ephem.c File Reference

Functions

short planet_ephem_provider (double jd_tdb, enum novas_planet body, enum novas_origin origin, double *position, double *velocity)
 
short planet_ephem_provider_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)
 

Detailed Description

SuperNOVAS major planet ephemeris handler via the same generic ephemeris reader that is configured by set_ephem_provider() prior to calling this routine.

Date
Created on Jan 29, 2024
Author
Attila Kovacs
See also
solarsystem.h
solsys-calceph.c
solsys-cspice.c

Function Documentation

◆ planet_ephem_provider()

short planet_ephem_provider ( double  jd_tdb,
enum novas_planet  body,
enum novas_origin  origin,
double *  position,
double *  velocity 
)

Major planet ephemeris data via the same generic ephemeris provider that is configured by set_ephem_provider() prior to calling this routine. This is the regular (reduced) precision version.

Parameters
jd_tdb[day] Barycentric Dynamical Time (TDB) based Julian date.
bodyMajor planet number (or that for Sun, Moon, SSB...)
originNOVAS_BARYCENTER (0) or NOVAS_HELIOCENTER (1) 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.
Returns
0 if successful, or else an error code of solarsystem().
See also
planet_ephem_provider_hp()
set_ephem_provider()
solarsystem()
Since
1.0
Author
Attila Kovacs

References planet_ephem_provider_hp().

◆ planet_ephem_provider_hp()

short planet_ephem_provider_hp ( const double  jd_tdb[2],
enum novas_planet  body,
enum novas_origin  origin,
double *  position,
double *  velocity 
)

Major planet ephemeris data via the same generic ephemeris provider that is configured by set_ephem_provider() prior to calling this routine. This is the highest precision version.

Parameters
jd_tdb[day] Barycentric Dynamical Time (TDB) based Julian date, split into high and low order components (e.g. integer and fractional parts) for high-precision calculations.
bodyMajor planet number (or that for Sun, Moon, SSB...)
originNOVAS_BARYCENTER (0) or NOVAS_HELIOCENTER (1) 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.
Returns
0 if successful, or else an error code of solarsystem_hp().
See also
planet_ephem_provider()
set_ephem_provider()
solarsystem_hp()
Since
1.0
Author
Attila Kovacs

References get_ephem_provider(), NOVAS_BARYCENTER, NOVAS_HELIOCENTER, NOVAS_PLANET_NAMES_INIT, NOVAS_PLANETS, NOVAS_SSB, and NOVAS_SUN.

◆ solarsystem()

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).

Parameters
jd_tdb[day] Barycentric Dynamical Time (TDB) based Julian date
bodyMajor 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).
originNOVAS_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.
Returns
0 if successful, -1 if there is a required function is not provided (errno set to ENOSYS), 1 if the input Julian date ('tjd') is out of range, 2 if 'body' is invalid, or 3 if the ephemeris data cannot be produced for other reasons.
See also
novas_planet
solarsystem_hp()
set_planet_provider()
place()
ephemeris()

References planet_ephem_provider().

◆ solarsystem_hp()

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).

Parameters
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.
bodyMajor 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).
originNOVAS_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.
Returns
0 if successful, -1 if there is a required function is not provided (errno set to ENOSYS), or some other error code (NOVAS C was not very consistent here...)
See also
solarsystem()
set_planet_provider_hp()
place()
ephemeris()

References planet_ephem_provider_hp().