Skip to content

v1.2.0-rc5

Pre-release
Pre-release
Compare
Choose a tag to compare
@attipaci attipaci released this 01 Jan 14:08
· 2 commits to main since this release
08d70ce

Fixed

  • Fixes to GCC version checking for macros.

  • Fixed dummy readeph() implementation in readeph0.c, and the use of DEFAULT_READEPH in config.mk. readeph0.c is not linked by default, and was not linked in prior releases either.

Added

  • #57: New generic redshift-handling functions novas_v2z(), novas_z2v().

  • #57, #102: New make_redshifted_cat_entry() and make_redshifted_object() to simplify the creation of distant catalog sources that are characterized with a redshift measure rather than a radial velocity value.

  • #58: New functions to calculate and apply additional gravitational redshift corrections for light that originates near massive gravitating bodies (other than major planets, or Sun or Moon), or for observers located near massive gravitating bodies (other than the Sun and Earth). The added functions are grav_redshift(), redhift_vrad(), unredshift_vrad(), novas_z_add(), and novas_z_inv().

  • #83: CALCEPH integration: novas_use_calceph() and/or novas_use_calceph_planets() to specify and use ephemeris data via CALCEPH for Solar-system sources in general, and for major planets specifically; and novas_calceph_use_ids() to specify whether object.number in NOVAS_EPHEM_OBJECT type objects is a NAIF ID (default) or else a CALCEPH ID number of the Solar-system body. These functions are provided by the libsolsys-calceph.so[.1] and/or .a plugin libraries, which are built contingent on the CALCEPH_SUPPORT variable being set to 1 prior to the build. The build of the plugin module requires an accessible installation of the CALCEPH development files (C headers and unversioned static or shared libraries depending on the needs of the build).

  • #86: NAIF CSPICE integration: novas_use_cspice(), novas_use_cspice_planets(), novas_use_cspice_ephem() to use the NAIF CSPICE library for all Solar-system sources, major planets only, or for other bodies only. NOVAS_EPHEM_OBJECTS should use NAIF IDs with CSPICE (or else -1 for name-based lookup). Also provides cspice_add_kernel() and cspice_remove_kernel() functions for convenience to manage the set of active kernels (#89). These functions are provided by the libsolsys-cspice.so[.1] and/or .a plugin libraries, which are built contingent on the CSPICE_SUPPORT variable being set to 1 prior to the build. The build of the plugin module requires an accessible installation of the CSPICE development files (C headers and unversioned static or shared libraries depending on the needs of the build).

  • #87: Added novas_planet_for_name() function to return the NOVAS planet ID for a given (case insensitive) name.

  • NOVAS-NAIF conversions for major planets (and Sun, Moon, SSB): novas_to_naif_planet() (planet centers), novas_to_dexxx_planet() (mixed planet center/barycenter for DExxx ephemeris files), and the inverse naif_to_novas_planet().

  • Added get_planet_provider() and get_planet_provider_hp() functions for convenience to return the solarsystem() / solarsystem_hp() type custom planet ephemeris provider functions currently configured, so they may be used directly, outside of ephemeris() calls.

  • #93: Now supporting make install with prefix and DESTDIR support (e.g. make prefix="/opt" install to install under /opt, and/or make DESTDIR="/tmp/stage" install to stage install under /tmp/stage). You can also set other standard directory variables, as prescribed by the GNU standard to further customize the install locations.

  • #95, #98: Added support for using orbital elements. object.type can now be set to NOVAS_ORBITAL_OBJECT, whose orbit can be defined by the set of novas_orbital, relative to a novas_orbital_system. You can initialize an object with a set of orbital elements using make_orbital_object(), and for planetary satellite orbits you might use novas_set_orbsys_pole(). For orbital objects, ephemeris() will call on the new novas_orbit_posvel() to calculate positions. While orbital elements do not always yield precise positions, they can for shorter periods, provided that the orbital elements are up-to-date. For example, the Minor Planer Center (MPC) publishes accurate orbital elements for all known asteroids and comets regularly. For newly discovered objects, this may be the only and/or most accurate information available anywhere.

  • #97: Added NOVAS_EMB (Earth-Moon Barycenter) and NOVAS_PLUTO_BARYCENTER to enum novas_planets to distinguish from the planet center in calculations.

  • #98: Added gcrs_to_tod() / tod_to_gcrs() and gcrs_to_mod() / mod_to_gcrs() vector conversion functions for convenience.

  • Added various object initializer macros in novas.h for the major planets, Sun, Moon, and barycenters, e.g. NOVAS_EARTH_INIT or NOVAS_SSB_INIT. These wrap the parametric NOVAS_PLANET_INIT(num, name) macro, and can be used to simplify the initialization of NOVAS objects.

  • Added more physical unit constants to novas.h and a corresponding section in the README on how these may be used to convert to/from NOVAS conventional quantities.

  • SuperNOVAS headers now include each other as system-headers, not local headers. This is unlikely to affect anything really but it is more proper for an installation of the library, and works with our own Makefile too.

  • Added 'Coordinate Systems and Conversions' flowchart to README.

  • Added a GNU standard documentation targets to Makefile.

  • Added infer make target for running Facebook's infer static analysis tool.

  • Added missing error tracing in nutation().

  • Added README.md Figure 1, to clarify relation of coordinate systems and (Super)NOVAS function to convert vectors among them.

Changed

  • #96: Changed object structure to include novas_orbital for NOVAS_ORBITAL_OBJECT types. To keep ABI compatibility to earlier SuperNOVAS releases, make_object() will not initialize the new .orbit field unless type is set to NOVAS_ORBITAL_OBJECT (which was not available before).

  • #97: Updated NOVAS_PLANETS, NOVAS_PLANET_NAMES_INIT, and NOVAS_RMASS_INIT macros to include the added planet constants.

  • make check now runs both static analysis by cppcheck (new analysis target) and regression tests (test target), in closer conformance to GNU Makefile standards.

  • Added -g to default CFLAGS as a matter of GNU best practice.

  • Static library is now named ibsupernovas.a, which is symlinked to libnovas.a for back compatibility.

  • readeph0.c moved to examples/. It's a dummy legacy NOVAS C implementation that is not really needed in SuperNOVAS.

  • Various small tweaks to Makefiles.

  • Updated README.md documentation.