SuperNOVAS C++ API v1.6
High-precision C/C++ astrometry library
Loading...
Searching...
No Matches
iers.c File Reference

Macros

#define _GNU_SOURCE
 fmemopen (before glibc 2.10)

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_lookup_leap (time_t t)
 Returns the leap seconds for the given UNIX timestamp, based either on a locally supplied leap seconds list (see novas_set_leap_list()), or else from data obtained as needed from IERS (provided that fetching it is allowed).
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)
 Specifies a local file containing the official leap seconds list, i.e.

Detailed Description

Date
Created on Apr 18, 2026
Author
Attila Kovacs

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 effect subsequent EOP fetch calls in other threads also.

See also
Earth orientation

Macro Definition Documentation

◆ _GNU_SOURCE

#define _GNU_SOURCE

fmemopen (before glibc 2.10)

Function Documentation

◆ novas_fetch_eop()

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:

  1. You must have built SuperNOVAS with cURL support. Otherwise, this function will return -1, with errno set to ENOSYS.
  2. You will need an internet connection and the IERS server must be online and accessible, unless you have changed the necessary URLs to use local copies instead (see novas_set_eop_url()).
  3. Obtaining values from IERS can have arbitrary latencies, and can impact the performance severely. For performance critical applications, you should consider specifying the EOP values more directly, or using local files instead (see also novas_set_eop_url()).
  4. This function assumes that the files served from IERS remain accessible and their format does not change over time. As such what works today, may not work the same in the future.
  5. This function caches EOP data from the last query. As such repeated calls within the same date bracket (typically the same MJD day) will return fast and will interpolate from the data last obtained from the IERS.
  6. This function uses cubic spline interpolation around the published data points. As such, it needs at least two data points at the same time or before, and two points after, the date for which interpolated values are requested.
  7. Prior to 1 Jan 1956, the UT1-UTC time difference, and length-of-day (LOD) are not provided by IERS, as they were not measured prior to the age of atomic clocks. Hence, for dates prior to 1956 the returned EOP will have 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.)
Parameters
jdJulian Date (in any timescale, with a preference for UTC)
timeout_millis[ms] HTTP connection timeout, or <=0 to leave unchanged.
[out]eopOutput EOP data structure to populate
Returns
0 if successful or else -1 (errno will indicate the type of error).
Since
1.7
Author
Attila Kovacs
See also
https://www.iers.org/IERS/EN/DataProducts/EarthOrientationData/eop
novas_fetch_current_eop(), novas_set_eop_url(), novas_reset_eop()
novas_make_frame(), novas_set_time(), novas_set_auto_fetch_eop(), Earth orientation

Referenced by supernovas::GeodeticObserver::eop_at(), supernovas::EOP::fetch_for_jd(), novas_fetch_eop_unix(), novas_make_frame(), and novas_set_split_time().

◆ novas_fetch_eop_unix()

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:

  1. You must have access to the curl library and built SuperNOVAS with CURL support. Otherwise this function will return -1, with errno set to ENOSYS.
  2. You will need an internet connection and the IERS server must be online and accessible (at least for the initial call).
  3. Obtaining values from IERS can have arbitrary latencies, and can impact performance severely. For performance critical applications, you should consider specifying the EOP values more directly, e.g. from a local file instead.
  4. This function assumes that the files served from IERS remain accessible and their format does not change over time.
  5. This function caches EOP data from the last online query. As such repeated calls within the same data bracket (typically the same MJD day) will return fast and will reuse the last data obtained from the IERS.
  6. This function uses cubic spline interpolation of the published data points.
  7. The returned EOP values are assumed to be ITRF 2020 values, which is appropriate at the time this SuperNOVAS module was written or last updated. If IERS later publishes data in some other future ITRF realization, this module may need to be updated, accordingly. However, the ITRF realization is unlikely to matter significantly.
Parameters
t[s] UNIX time (seconds since 0 UTC 1 Jan 1970).
timeout_millis[ms] HTTP connection timeout, or <=0 to leave unchanged.
[out]eopOutput EOP data structure to populate
Returns
0 if successful or else -1 (errno will indicate the type of error).
Since
1.7
Author
Attila Kovacs
See also
https://www.iers.org/IERS/EN/DataProducts/EarthOrientationData/eop
novas_set_eop_url()
novas_make_frame(), novas_set_time(), novas_set_auto_fetch_eop(), Earth orientation

References novas_fetch_eop(), NOVAS_JD_J2000, and UNIX_SECONDS_0UTC_1JAN2000.

◆ novas_reset_eop()

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:

  • This call does not affect or destroy any thread-local data currently cached. As such, 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.
Since
1.7
Author
Attila Kovacs
See also
novas_set_leap_list(), novas_fetch_eop()