![]() |
SuperNOVAS C++ API v1.6
High-precision C/C++ astrometry library
|
Earth Orientation Parameters (EOP), for defining the unmodelled (via the IAU 2000 / 2006 precession-nutation models) polar motion and rotational variations of the physical Earth. More...
Classes | |
| class | supernovas::EOP |
| IERS Earth Orientation Parameters (EOP). More... | |
Typedefs | |
| typedef int(* | novas_nutation_provider) (double jd_tt_high, double jd_tt_low, double *restrict dpsi, double *restrict deps) |
| Function type definition for the IAU 2000 nutation series calculation. | |
Functions | |
| novas_nutation_provider | get_nutation_lp_provider () |
| Returns the function configured for low-precision IAU 2000 nutation calculations instead of the default nu2000k(). | |
| 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). | |
| 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. | |
| int | set_nutation_lp_provider (novas_nutation_provider func) |
| Set the function to use for low-precision IAU 2000 nutation calculations instead of the default nu2000k(). | |
Earth Orientation Parameters (EOP), for defining the unmodelled (via the IAU 2000 / 2006 precession-nutation models) polar motion and rotational variations of the physical Earth.
EOP are necessary to transform between pseudo Earth-fixed (e.g. the Terrestrial Intermediate Reference System [TIRS]) and the Earth-fixed International Terrestrial Reference System (ITRS). They are essential for precise calculations for Earth-based observers.
IERS publishes daily Earth orientation data, in various ITRF realizations. For the utmost accuracy (below the mas-level), these must be further corrected for diurnal variations caused by librarion and the oceans tides, which is something that SuperNOVAS does automatically when defining astrometric time or an observing frame with the interpolated published EOP values.
| typedef int(* novas_nutation_provider) (double jd_tt_high, double jd_tt_low, double *restrict dpsi, double *restrict deps) |
Function type definition for the IAU 2000 nutation series calculation.
| jd_tt_high | [day] High-order part of the Terrestrial Time (TT) based Julian date. Typically it may be the integer part of a split date for the highest precision, or the full date for normal (reduced) precision. | |
| jd_tt_low | [day] Low-order part of the Terrestrial Time (TT) based Julian date. Typically it may be the fractional part of a split date for the highest precision, or 0.0 for normal (reduced) precision. | |
| [out] | dpsi | [rad] δψ Nutation (luni-solar + planetary) in longitude, in radians. |
| [out] | deps | [rad] δε Nutation (luni-solar + planetary) in obliquity, in radians. |
| novas_nutation_provider get_nutation_lp_provider | ( | ) |
Returns the function configured for low-precision IAU 2000 nutation calculations instead of the default nu2000k().
Referenced by nutation_angles().
| 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.
| series | The EOP series identifier constant. |
References NOVAS_NUM_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.
| series | The EOP series identifier constant. |
References NOVAS_NUM_EOP_SERIES.
| int novas_is_auto_fetch_eop | ( | ) |
Checks if automatic fetching of Earth Orientation Parameter values from IERS is allowed.
Referenced by supernovas::GeodeticObserver::GeodeticObserver(), supernovas::GeodeticObserver::GeodeticObserver(), supernovas::GeodeticObserver::eop_at(), supernovas::GeodeticObserver::mean_eop(), novas_lookup_leap(), novas_make_frame(), and novas_set_split_time().
| 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).
In case of errors -1 is returned, with errno set as appropriate.
Leap seconds were first introduced on 1 Jan 1972. Thus for date preceding the introduction, 0 is returned. Leap seconds prognosis into the future is available only up to the expiration date of the leap-seconds.list file (as supplied or updated from IERS).
| t | [s] UNIX time (seconds since 0 UTC, 1 Jan 1970) |
References NOVAS_INVALID_LEAP, and novas_is_auto_fetch_eop().
Referenced by novas_set_eop_url().
| 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.
If set to TRUE (non-zero) then when an astrometric time is initialized with an undefined EOP, whose dUT1 value is NAN, it will automatically fetch appropriate leap second and dUT1 values from IERS, if possible. Similarly, if an observing frame is configured with a xp or yp values are NAN, the frame will fetch appropriate polar offsets from IERS for the time of observation.
The default value of this global setting is TRUE (1), hence the automatic fetching of EOP values from IERS is enabled by default, and will override NAN EOP values with the fetched interpolated data, whenever possible.
If you do not want this behavior, e.g. because of the associated arbitrary latencies involved with getting data from IERS, or because you are using SuperNOVAS offline, then simply call this function with FALSE (0) to disable the automatic fetching of EOP values.
| enabled | TRUE (non-zero) to enabled automatic fetching of EOP values from IERS, or else FALSE (0) to disable. By default EOP fetching is enabled. |
| 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.
By default, novas_fetch_eop() will use the standard IERS data center URLs to obtain EOP, but users may want to use a local file, or a local mirror instead for faster, more reliable source(s) for the IERS data. This function allows you to do just that.
This call will check out the specified URL, to ensure it points to a suitable file for the series, and will return an error if the file is not appropriate. As such, the call may be delayed for a long time, while cURL fetches a few kilobytes from the file, needed for validation.
NOTES:
| series | The EOP series identifier constant. |
| itrf_year | [yr] ITRF realization year. Needed only for precision at the few μas level, otherwise, you can set it to something recent, like 2020. It is unused if the URL is NULL, or if the series if the leap seconds list. For years prior to the first ITRF realization (in 1988), 1988 will be used. |
| url | The new URL to use for the given data series, or NULL to use the default IERS data center URL. |
References EOP_C01_IAU2000, EOP_C04_IAU2000_0UTC, EOP_LEAP_LIST, EOP_RAPID_IAU2000, novas_lookup_leap(), and novas_set_leap_list().
| int novas_set_leap_list | ( | const char * | filename | ) |
Specifies a local file containing the official leap seconds list, i.e.
leap-seconds.list, to use, at least until its expiry. (If the local leap file expires, a new one will be fetched from IERS as needed).
It is similar to novas_set_eop_url() for the EOP_LEAP_LIST series, with a file:// type URL, except that this one does not need cURL support, and can work with relative paths also.
| filename | Path to a local leap-seconds.list file (as obtained from IERS or a mirror). It is typically included in the tzdata package on Linux, where it may be found as /usr/share/zoneinfo/leap-seconds.list typically. Or, NULL to clean up any prior leap seconds resources. |
Referenced by novas_set_eop_url().
| int set_nutation_lp_provider | ( | novas_nutation_provider | func | ) |
Set the function to use for low-precision IAU 2000 nutation calculations instead of the default nu2000k().
| func | the new function to use for low-precision IAU 2000 nutation calculations |