Loading...
Searching...
No Matches
iers.c File Reference

## Macros

#define | IERS_DATACENTER "datacenter.iers.org"
| IERS EOP server name.
#define | IERS_LEAP_SERVER "hpiers.obspm.fr"
| IERS leap-seconds.list 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_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 and Kiran Shila

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.

See also
  Earth orientation

## Macro Definition Documentation

## IERS_DATACENTER

#define IERS_DATACENTER "datacenter.iers.org"

IERS EOP server name.

## IERS_LEAP_SERVER

#define IERS_LEAP_SERVER "hpiers.obspm.fr"

IERS leap-seconds.list server name.

## 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.)
8. If SuperNOVAS was built without cURL support (WITHOUT_CURL or WITHOUT_LIBC build configuration options), then this function will return an error (errno set to ENOSYS).

Parameters

  | 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

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.
8. If SuperNOVAS was built without cURL support (WITHOUT_CURL or WITHOUT_LIBC build configuration options), then this function will return an error (errno set to ENOSYS).

Parameters

  | 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

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.
- This call is not thread-safe. You should avoid calling it from concurrent threads if you want it to have predictable behavior.

Since
  1.7

Author
  Attila Kovacs

See also
  novas_set_leap_list(), novas_fetch_eop()