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

Solar-system ephemeris lookup via the CALCEPH C library. More...

Functions

int novas_calceph_use_ids (enum novas_id_type idtype)
 Sets the type of Solar-system body IDs to use as object.number with NOVAS_EPHEM_OBJECT types.
 
int novas_use_calceph (t_calcephbin *eph)
 Sets a ephemeris provider for Solar-system objects using the CALCEPH C library and the specified set of ephemeris files.
 
int novas_use_calceph_planets (t_calcephbin *eph)
 Sets the CALCEPH C library and the specified ephemeris data as the ephemeris provider for the major planets (and Sun, Moon, SSB...).
 

Detailed Description

Solar-system ephemeris lookup via the CALCEPH C library.

This is an optional component of SuperNOVAS, which interfaces to the CALCEPH C library. As such, you may need the CALCEPH runtime libraries in an accessible location (such as in /usr/lib) to use, and you will need development files (C headers and unversioned libraries) to build. Thus, this module is compiled only if CALCEPH_SUPPORT is set to 1 prior to the build.

To use, simply include novas-calceph.h in your application source, configure a t_calcephbin object with the requisite ephemeris data, and then call novas_use_calceph() with it to activate. E.g.:

#include <novas.h>
#include <novas-calceph.h>
// You can open a set of JPL/INPOP ephemeris files with CALCEPH...
t_calcephbin *eph = calceph_open_array(...);
// Then use them as your generic SuperNOVAS ephemeris provider
int status = novas_use_calceph(eph);
if(status < 0) {
// Oops something went wrong...
}
SuperNOVAS functions interfacing with the CALCEPH C library.
SuperNOVAS types, definitions, and function prototypes.
int novas_use_calceph(t_calcephbin *eph)
Sets a ephemeris provider for Solar-system objects using the CALCEPH C library and the specified set ...
Definition solsys-calceph.c:402

Optionally, you may use a separate ephemeris dataset for major planets (or if planet ephemeris was included in 'eph' above, you don't have to):

t_calcephbin *pleph = calceph_open(...);
status = novas_use_calceph_planets(pleph);
if(status < 0) {
// Oops something went wrong...
}
int novas_use_calceph_planets(t_calcephbin *eph)
Sets the CALCEPH C library and the specified ephemeris data as the ephemeris provider for the major p...
Definition solsys-calceph.c:441

By default the CALCEPH plugin will use NAIF ID numbers for the lookup (for planets the NOVAS IDs will be mapped to NAIF IDs automatically). You can enable name-based lookup by setting the object number to -1 (e.g. in make_ephem_object()), or else switch to using CALCEPH IDs by calling novas_calceph_use_ids(NOVAS_ID_CALCEPH).

REFERENCES:

  1. CALCEPH is at https://calceph.imcce.fr
  2. CALCEPH source code is at https://gitlab.obspm.fr/imcce_calceph/calceph
Author
Attila Kovacs
Since
1.2
See also
solsys-cspice.c, ephemeris.c, orbital.c

Function Documentation

◆ novas_calceph_use_ids()

int novas_calceph_use_ids ( enum novas_id_type idtype)

Sets the type of Solar-system body IDs to use as object.number with NOVAS_EPHEM_OBJECT types.

CALCEPH supports the use of both NAIF and its own numbering system to identify Solar-system bodies. So, this function gives you the choice on which numbering system you want to use in object data structures. The choice does not affect major planets (which always use the NOVAS numbering scheme), or catalog objects.

Parameters
idtypeNOVAS_ID_NAIF to use NAIF IDs (default) or else NOVAS_ID_CALCEPH to use the CALCEPH body numbering convention for object.
Returns
0 if successful or else -1 (errno set to EINVAL) if the input value is invalid.
See also
make_planet(), make_ephem_object(), NOVAS_EPHEM_OBJECT

References NOVAS_ID_CALCEPH, and NOVAS_ID_NAIF.

◆ novas_use_calceph()

int novas_use_calceph ( t_calcephbin * eph)

Sets a ephemeris provider for Solar-system objects using the CALCEPH C library and the specified set of ephemeris files.

If the supplied ephemeris files contain data for major planets also, they can be used by planet_calceph() / planet_calceph_hp() also, unless a separate CALCEPH ephemeris data is set via novas_use_calceph_planets().

The call also make CALCEPH the default ephemeris provider for all types of Solar-system objects. If you want to use another provider for major planets, you need to call set_planet_provider() / set_planet_provider_hp() afterwards to specify a different provider for the major planets (and Sun, Moon, SSB...).

Parameters
ephPointer to the CALCEPH ephemeris data that have been opened.
Returns
0 if successful, or else -1 (errno will indicate the type of error).
See also
novas_calceph_use_ids(), novas_use_calceph_planets(), set_ephem_provider()
Author
Attila Kovacs
Since
1.2

References novas_use_calceph_planets(), and set_ephem_provider().

◆ novas_use_calceph_planets()

int novas_use_calceph_planets ( t_calcephbin * eph)

Sets the CALCEPH C library and the specified ephemeris data as the ephemeris provider for the major planets (and Sun, Moon, SSB...).

Parameters
ephPointer to the CALCEPH ephemeris data for the major planets (including Sun, Moon, SSB...) that have been opened.
Returns
0 if successful, or else -1 (errno will indicate the type of error).
Author
Attila Kovacs
Since
1.2
See also
novas_use_calceph(), set_planet_provider(), set_planet_provider_hp()

References set_planet_provider(), and set_planet_provider_hp().