![]() |
SuperNOVAS C++ API v1.8
High-precision C/C++ astrometry library
|
Macros | |
| #define | IERS_DATACENTER "datacenter.iers.org" |
| IERS EOP server name. | |
Functions | |
| int | novas_fetch_eop (double jd, long timeout_millis, novas_eop *eop) |
| Obtains interpolated Earth Orientation Parameter data from the International Earth Rotation and Reference Systems Service (IERS). | |
| int | novas_fetch_eop_unix (time_t t, long timeout_millis, novas_eop *eop) |
Obtains interpolated Earth Orientation Parameter data from the International Earth Rotation and Reference Systems Service (IERS) around the current system time, using the rapid service data (finals.all). | |
| int | novas_get_eop_itrf_year (enum novas_eop_series series) |
| Returns the ITRF realization year for a given IERS Earth Orientation Parameter (EOP) series. | |
| const char * | novas_get_eop_url (enum novas_eop_series series) |
| Returns the URL currently configured for a given IERS Earth Orientation Parameter (EOP) series. | |
| int | novas_is_auto_fetch_eop () |
| Checks if automatic fetching of Earth Orientation Parameter values from IERS is allowed. | |
| int | novas_leap_for_jd (double jd_utc) |
| Returns the leap seconds for the given (UTC-based) Julian date. | |
| int | novas_lookup_leap (time_t t) |
| Returns the leap seconds for the given UNIX timestamp. | |
| void | novas_reset_eop () |
| Releases resources used by URL handles used for obtaining Earth Orientation Parameter (EOP) data from the International Earth Rotation and Reference Systems Service (IERS), including the leap seconds list supplied earlier or obtained from IERS. | |
| int | novas_set_auto_fetch_eop (int enabled) |
| Disable or Re-enabled the automatic fetching of Earth Orientation Parameter values from IERS, when these are left undefined (NAN) when initializing astrometric time or observing frame instances. | |
| int | novas_set_eop_url (enum novas_eop_series series, int itrf_year, const char *url) |
| Specify a URL to use for a given IERS Earth Orientation Parameter (EOP) series. | |
| int | novas_set_leap_list (const char *filename) |
| Obsoleted function to specify a file containing the leap seconds list. | |
Functions to obtain and manage Earth Orientation data from the International Earth Rotation and Reference Systems Service (IERS) via HTTPS, or using other (remote or local) URLs.
The functions in this module are generally thread-safe. That is, you may call all functions from concurrent threads without data corruption. However, note that the EOP resources (URLs and/or local files), and the setting that enables/disables automatic fetching, are global settings. Thus, changing these in one thread will affect subsequent EOP fetch calls in other threads also.
| #define IERS_DATACENTER "datacenter.iers.org" |
IERS EOP server name.
| int novas_fetch_eop | ( | double | jd, |
| long | timeout_millis, | ||
| novas_eop * | eop ) |
Obtains interpolated Earth Orientation Parameter data from the International Earth Rotation and Reference Systems Service (IERS).
For dates since 1972 or for prediction for up to a year ahead, the rapid service data is used (finals.all), otherwise for dates after 1962 the C04 series is used, and for dates all the way back to 1846, the C01 series is used. All of the mentioned data are retrieved relative to the IAU2000 precession-nutation model.
You should always check the return status when using this function, since the fetching of EOP values may fail for a host of different reasons.
NOTES:
errno set to ENOSYS.novas_set_eop_url()).novas_set_eop_url()).dut1 and lod (and their uncertainties) set to NAN. (However, the polar the offsets xp and yp can be provided all the way back to 1846, with some precision.)WITHOUT_CURL or WITHOUT_LIBC build configuration options), then this function will return an error (errno set to ENOSYS).| jd | Julian Date (in any timescale, with a preference for UTC) | |
| timeout_millis | [ms] HTTP connection timeout, or <=0 to leave unchanged. | |
| [out] | eop | Output EOP data structure to populate |
References novas_eop::jd, novas_eop::leap, NOVAS_EOP_INVALID, and novas_leap_for_jd().
Referenced by supernovas::GeodeticObserver::eop_at(), supernovas::EOP::fetch_for_jd(), novas_fetch_eop_unix(), and novas_make_frame().
| int novas_fetch_eop_unix | ( | time_t | t, |
| long | timeout_millis, | ||
| novas_eop * | eop ) |
Obtains interpolated Earth Orientation Parameter data from the International Earth Rotation and Reference Systems Service (IERS) around the current system time, using the rapid service data (finals.all).
You should always check the return status when using this function, since the fetching of EOP values may fail for a host of different reasons.
NOTES:
curl library and built SuperNOVAS with CURL support. Otherwise this function will return -1, with errno set to ENOSYS.WITHOUT_CURL or WITHOUT_LIBC build configuration options), then this function will return an error (errno set to ENOSYS).| t | [s] UNIX time (seconds since 0 UTC 1 Jan 1970). | |
| timeout_millis | [ms] HTTP connection timeout, or <=0 to leave unchanged. | |
| [out] | eop | Output EOP data structure to populate |
References novas_fetch_eop(), NOVAS_JD_J2000, and UNIX_SECONDS_0UTC_1JAN2000.
| int novas_leap_for_jd | ( | double | jd_utc | ) |
Returns the leap seconds for the given (UTC-based) Julian date.
The UTC-based dates matter only in the immediate vicinity of the leap seconds changes, since leap seconds are introduced on specific UTC dates. If a minute-level fuzz around the times when leap seconds were introduced can be tolerated then the choice of timescale is not relevant.
Leap seconds were first introduced on 1 Jan 1972. Thus for date preceding the introduction, 0 is returned. The last leap of 27 seconds was introduced on 1 January 2017, and the decision has been made to not introduce further leap seconds as of 20 May 2027, leaving 37 seconds for the foreseeable future.
REFERENCES:
| jd_utc | [day] Julian date (preferably UTC-based) |
References NOVAS_DAY, NOVAS_JD_J2000, and novas_lookup_leap().
Referenced by novas_fetch_eop(), novas_set_split_time(), and novas_time_leap().
| void novas_reset_eop | ( | ) |
Releases resources used by URL handles used for obtaining Earth Orientation Parameter (EOP) data from the International Earth Rotation and Reference Systems Service (IERS), including the leap seconds list supplied earlier or obtained from IERS.
It also discards any custom URLs that may have been set previously, and restores the default IERS URLs for obtaining leap seconds and EOP from IERS. The cleanup performed by this function is automatic at normal program exit, but users may call it explicitly restore the initial state at any point.
NOTES:
novas_fetch_eop() may continue to return EOP using the previously cached values, if the requested date falls within the same data bracket as the last call.| int novas_set_leap_list | ( | const char * | filename | ) |
Obsoleted function to specify a file containing the leap seconds list.
There will be no more leap seconds as of 20 May 2027, so the final list of leap seconds is now hardcoded into SuperNOVAS as of v1.8. There will be leap hours instead, perhaps, in the distant future, but not for some millenia. If someone still uses SuperNOVAS then, well, they must make some modifications to handle it then...
REFERENCES:
| filename | unused |
novas_debug() was called with NOVAS_DEBUG_EXTRA. In both cases errno will be set to ENOSYS.errno to ENOSYS to indicate that the function is no longer meaningful. References NOVAS_DEBUG_EXTRA, and novas_get_debug_mode().
Referenced by novas_set_eop_url().