C++ library implementing the IERS 2010 standards.
Table of Contents
- Introduction
- Prerequisites
- Compilation / Installation
- Data Files
- BLQ format files
- Status of the Library (or translated routines)
- Available functions/models not part of the IERS 2010 Conventions
- Test Cases & FORTRAN vs C++ implementations
- Test Programs (optional read)
- How to use the library
- Documentation & Library API (TODO)
- TODO
- Bugs & Maintanance
This project contains a number of functions implementing models defined in IERS Conventions (2010) as described in 1. The International Earth Rotation and Reference Systems Service (IERS) publishes the Conventions along with relevant documents, model implementations and respective test cases; the latter two are available in the FORTRAN programming language at the IERS website.
This repository is an effort to translate the algorithms in the C++ programming language with (as much as possible) minor modifications. Note that the software found at this website is routinely updated.
The C++ library ggdatetime is used in the library to handle datetime instances when needed. Hence, you should have ggdatetime on your system.
The C++ library ggeodesy is used to handle basic geodesy when needed. Again, you should have the library installed (on your system) to successefuly compile this library.
Vector/Matrix operations are implemented using the eigen3 library. Availability of this library is also mandatory.
January 2022: From now on, only the scons build will be supported; support for autotools is dropped.
The project is built via the scons built system:
$> git clone https://github.com/xanthospap/iers2010.git && cd iers2010
$> scons
$> sudo scons install
To compile the test utilities, use the make-test
switch (i.e. scons make-test=1
).
Note that the SOFA 2 library is needed to compile and run the tests.
This library makes use of ggdatetime for handling dates and datetime instances. By default, this means that we are (mostly) handling datetimes in the so-called Modified Julian Date format, instead of the Julian Date format used throughout most of the SOFA 2 functions.
The library contains a list of functions for basic astronomical computations, especially related to computations involved in transforming from/to the Geocentric Celestial Reference Frame (GCRF). Declerations can be found in the header files iau.hpp and fundarg.hpp.
There are a number of ways to transform between (geocentric) inertial and earth-fixed frames; in this library, we target the so called "CIO-based" transformation, based on the IAU 200/2006 model (see 2 and 1), as this is the recommended approach as described in the IERS2010 standards.
Once you have compiled the test-suite, you can use the script
run_sofa_checks.py
to check the compliance with respect to the IAU SOFA
library (e.g. run_sofa_checks.py --progs-dir test/sofa_unit_tests/
). This
will run a number of checks and provide discrepancies (w.r.t. SOFA) for all
functions/parameters common to both libraries. Explicit results can be found in
this table.
Descripancies for angular parameters are usually checked in units of arcseconds.
Descripancies for rotation matrices (.e.g.
-
Discrepancies between the SOFA implementation and
libiers2010
for one day of GRACE orbit are presented in ??. They ammount up to$\approx 1\times10^{-4} mm$ for the$X$ and$Y$ components and$\approx 2\times10^{-6} mm$ for$Z$ . See results here -
The accuracy of the transformation is presented in presented in ??. It is
$\approx 5\times10^{-6} mm$ for each of the$X$ ,$Y$ and$Z$ components.(Note that this is checked again using one day of GRACE orbit, and performing the circular transformationICRF->ITRF->ICRF
). See results here
Once you have compiled the test-suite, you can use the script
run_fortran_checks.py
to check the compliance of the current library against
the FORTRAN subroutines distributed by the IERS.
Example run:
$>./run_fortran_checks.py --for-dir fortran_impl/ \
--cpp-dir test/fortran_unit_tests/ \
--verbose
To run these unit tests however, you will need to have downloaded the IERS-distributed source code accompanying the standards. Explicit results can be found in this table.
In this implementation computation of GMST is performed using the IAU2006
model, i.e. using both UT1 and TT (see Sec. 5.5.7, ERA based expressions for
Greenwich Sidereal Time). Contrary to this, some IERS-distributed FORTRAN
subroutines use an older model for GMST (i.e. FCNNUT
, PMSDNUT2
).
Software Routines from the IAU SOFA Collection were used. Copyright © International Astronomical Union Standards of Fundamental Astronomy (http://www.iausofa.org)
subroutine/function | discrepancies |
---|---|
fcnnut | dX=+0.0e+00 dY=+0.0e+00 dsX=+0.0e+00 dsY=+8.1e+02 [μasec] |
Footnotes
-
Gérard Petit and Brian J. Luzum, editors. IERS Conventions (2010), volume 36 of IERS Technical Note, 2010. International Earth Rotation and Reference Systems Service (IERS), International Earth Rotation and Reference Systems Service (IERS). ↩ ↩2
-
International Astronomical Union, Standards of Fundamental Astronomy (SOFA) software tools collection, available at [https://www.iausofa.org/] ↩ ↩2 ↩3