Standards of Fundamental Astronomy
SOFA, which stands for "Standards of Fundamental Astronomy", is an International Astronomical Union (IAU)  service that maintains an authoritative and accessible set of algorithms and procedures to implement standard models used in fundamental astronomy. Included are procedures for precession-nutation, Earth rotation, sidereal time, conversions between time scales, and the chain of astrometric transformations linking star data from a catalog and the observed direction of the incoming radiation; a more detailed list is given below.
The Board establishes, maintains and checks the material. Within the IAU, SOFA is a Standing Working Group of Division A - Fundamental Astronomy. The Board membership represents many of the groups within the IAU as well as the IERS.
The SOFA Center, the public face of SOFA, provides access to the SOFA Software Collection. Currently (10th release) there are two subroutine libraries, in Fortran 77 and ANSI C, providing building blocks for experienced users wishing to write their own applications using authoritative methods. For example, there are routines to transform a star catalog position (in the International Celestial Reference System (ICRS)) to a position in the International Terrestrial Reference System (ITRS) that includes, among other things, the conversion of time-scales, the WGS84 spheroid, precession-nutation and the Earth rotation angle, all of which are compliant with IAU Resolutions.
SOFA was set up by the IAU in 1994 under the Division I Working Group on Astronomical Standards. Patrick Wallace (Rutherford Appleton Laboratory, UK) was appointed as the first Chair of the SOFA Board in February 1996, a position he held for the first 15 years. The first Fortran 77 release was made in 2001 March, while the first ANSI C release was achieved in February 2009. The release numbers were unified for the 9th release (2012/03/01) and the 10th release was issued in December 2013, which included 32 new routines for the Astrometry category. The restructuring following the 2012 IAU General Assembly resulted in SOFA becoming a Standing Working Group of Division A – Fundamental Astrometry. The current Chair is Catherine Hohenkerk of Her Majesty’s Nautical Almanac Office (HMNAO), UK.
The SOFA Center
The SOFA Center provides access to the SOFA Software Collection.
The 'Quick start ...' section allows users to select the current release, either Fortran or ANSI C, and then navigate to each routine and view or copy its source code. The relevant Manual is also available for viewing or download. Alternatively, either of the current libraries, including all the documentation, may be downloaded. From this section there are also links to documentation corrections.
There is a Documentation page from where the individual cookbooks may be downloaded.
The SOFA Archive Section provides access to any previous version, either an individual routine or the whole release.
Users are encouraged to register their e-mail address so that they may receive news about updates and known problems
SOFA'S Terms & Conditions
SOFA software is free to use but as it is an "IAU standard" the code may only be changed if "iau" is removed from the names, making it impossible for user code to be inadvertently linked with so-modified versions. Please check out the Terms and Conditions for the details; including our request that you give a citation if your use of SOFA results in a publication, presentation or product.
Note that the Essential Routines for Fundamental Astronomy (ERFA) is a copy of the ANSI C version of the SOFA library but with "iau" removed from all function names and re-licensed to be compatible with typical Free/Open Source Software licenses (n.b. it is no longer read-only and therefore changes may be made by anyone). It has been produced by the AstroPy group (project page) and it may be downloaded from the GitHub repository.
SOFA's Current Software Collection
The routines are divided into two main groups; there are 164 astronomical routines and another 55 that provide support for vector/matrix operations and working with angles.
SOFA's Astronomical Library
This is the group of routines that implement astronomical algorithms. It is divided into two groups: those that are canonical and support IAU resolutions, and those that are designated support routines. The following nine categories summarize what is presently (the 10th release) available in this group.
|Category (No.)||Brief Description of Routines|
|Astrometry (32)|| These routines deal with the chain of astrometric transformations linking (in either direction) star data from a catalog and the observed direction of the incoming radiation; see SOFA Astrometry Tools cookbook.
This section includes the core routines for the effects of space motion, parallax, light deflection and aberration, and for terrestrial observers a routine for refraction (approximate). The star-independent parameters needed for the transformation, e.g. date-time, position and velocity of the Earth, bias-precession-nutation matrix, Earth rotation angle are provided by a context structure (see the “AP” routines). This context structure may either be supplied automatically by SOFA (IAU 2013 compliant) or populated by the user with their particular model choices. The main routines transform between the following reference systems:
Catalog (ICRS) or ICRS Astrometric to/from Celestial Intermediate Reference System
Catalog (ICRS) to/from Observed
Observed to/from Celestial Intermediate Reference System
SOFA Astrometry Tools at a Glance gives a 2-page summary of “The Astrometric Chain”, listing the abbreviations and routines.
|Calendars (7)|| Civil and Julian date conversions.
Besselian and Julian epoch conversions.
|Time scales (20)|| There are 16 routines that link the time scales TAI, UTC, UT1, TT, TCG, TDB, and TCB; see SOFA Time Scales and Calendar Tools. These routines require the user to provide supplementary quantities such as ΔT and UT1−UTC, which either cannot be predicted or for which there are choices of model to be made.
There are two routines that handle the conversion between civil date and time, i.e. year, month, day, hour, minute and seconds and SOFA’s two-part Julian date (or in the case of UTC, quasi-JD). In the case of UTC, this includes dealing with leap seconds and the rare but crucial cases when it is necessary to display a seconds field that begins with 60.
Difference between TAI and UTC.
An approximation to TDB−TT.
|Earth rotation and sidereal time (15)|| Greenwich mean sidereal time (IAU 1982, 2000, 2006).
Greenwich (apparent) sidereal time (IAU 1994, 2000A, 2000B, 2006/2000A).
Equation of the equinoxes (IAU 1994, 2000A, 2000B 2006/2000A).
Equation of the equinoxes "complementary terms" (IAU 2000).
Earth rotation angle (IAU 2000).
|Ephemerides (2)|| Barycentric and heliocentric position and velocity of the Earth (medium precision).
Approximate heliocentric position and velocity of planets.
|Fundamental arguments (14)||Fundamental arguments used in the IAU 2000A nutation and taken from the IERS Conventions (2003).|
|Geocentric / geodetic transformations (5)||Conversions between geocentric and geodetic systems. The three standard reference ellipsoids supported are WGS84, GRS80 and WGS72, as well as a user specified ellipsoid.|
|Precession / nutation / polar motion (60)|| Matrices for frame bias (IAU 2000), precession (IAU 1976, 2000, 2006), nutation (IAU 1980, 2000A, 2000B, 2006/2000A).
Frame bias components (IAU 2000).
Precession angles ζ, z, θ, (IAU 1976, 2000, 2006).
Precession angles ζ, z, θ, including frame bias (IAU 2006).
All equinox based precession angles (IAU 2006).
Fukushima-Williams precession angles, including frame bias (IAU 2006).
Mean obliquity (IAU 1980, 2006).
Nutation angles Δψ, Δε (IAU 1980, 2000A, 2000B).
CIP X,Y and CIO Locator s and s' (IAU 2000A, 2000B, 2006/2000A).
Equation of the origins.
Polar motion matrix given position of the pole.
Celestial to intermediate matrix (IAU 1976/1980, 2000A, 2000B, 2006/2000A).
Celestial to true equinox of date (NPB) matrix (IAU 1976/1980, 2000A, 2000B, 2006/2000A).
Celestial to terrestrial, classical (IAU 2000A, 2000B, 2006/2000A).
Celestial to terrestrial, CIO (IAU 2000A, 2000B, 2006/2000A).
Routines that use inputs from these routines to produce a range of quantities.
|Star catalog conversions and space motion (9)|| Conversions between the star catalog coordinates and the rectangular position and velocity vectors.
Conversion between FK5 and Hipparcos star catalog coordinates.
Update a star’s catalog position due to space motion.
SOFA's Vector/Matrix Support Library
This is a group of routines that support the astronomical algorithms. Vectors are either position vectors P(3) or p or position and velocity vectors PV(3,2) or pv, in Fortran 77 or ANSI C, respectively, while matrices are all 3x3.
|Category (No.)||Brief Description of Routines|
|Initialization (4), and copy / extend / extract (5)||Zeroize, initialize to identity, and manipulate a p-vector, pv-vector or matrix.|
|Build rotations (3)||Rotations about the x, y, or z-axis.|
|Spherical/Cartesian conversions (6)||Conversions between spherical and Cartesian coordinates.|
|Operations on vectors (17), matrices (2), and matrix-vector products (4)|| Vector algebra; plus, minus, dot (scalar) and cross (vector) products, modulus, normalize, scalar times vector.
Product of two matrices and transpose of a matrix.
Product of a matrix and vector.
|Rotation vectors (2)||Conversions between matrices and rotation vectors.|
|Separation and position angle (4)||Conversions between vectors and position angle and separation.|
|Operations on angles (8)||Conversions between radians and ° (degrees) ' (arc minutes) " (arc seconds), radians and h (hours) m (minutes) s (seconds), and days and h m s. Normalize radians between 0 and 2π and −π to +π.|
Documentation of SOFA's Routines
There are two types of documentation: the manual and the "cookbooks". The former is merely reference material; the latter (at present there are three) contain descriptive and tutorial material, and include examples, with code and numerical results.
Apart from SOFA Tools for Earth Attitude (the first cookbook), where the examples are given in Fortran code only, there are both Fortran and ANSI C versions; however, the texts are identical, but the numerical examples have different program code.
The Manual - The SOFA Software Libraries
The code to each routine contains introductory comments giving detailed information, such as what the routine does and how it is used, the input and output arguments, the accuracy of the algorithm, as well as the references that it is based on. These preambles are pulled together into the manual, one for each supported language. The manual is therefore terse, and although it fully specifies the routines, it is not aimed at the beginner.
SOFA Tools for Earth Attitude
This cookbook deals with both the equinox based and CIO based methods of transformations from the Geocentric Celestial Reference System to the International Terrestrial Reference System. Included is a complete Fortran program (there is no ANSI C version at present) that computes the transformation that demonstrates five methods, namely:
- IAU 1976/1980/1982/1994, equinox based,
- IAU 2000A, CIO based using classical angles,
- IAU 2000A, equinox based, using classical angles,
- IAU 2006/2000A, CIO based using classical angles, and
- IAU 2006/2000A, CIO based, using X,Y series.
SOFA Time Scale & Calendar Tools
This cookbook (Fortran version, C version) looks at those routines that deal with dates and times. It provides a tutorial introduction to timekeeping and the main time scales and calendars used by astronomers. Short examples demonstrate how to call the SOFA routines to perform the sorts of conversions and transformations that may be needed in applications where times and dates are involved.
The most complete example is for an observer at a given UTC and computes the equivalent time in all the other supported time scales.
SOFA Astrometry Tools
This cookbook (Fortran version, C version) looks at the selection of SOFA routines that deal with the chain of astrometric transformations linking (i) star data from a catalog and (ii) the observed direction of the incoming radiation. The document provides a tutorial introduction and describes the main astrometric reference systems used by astronomers. Short examples demonstrate how to call the SOFA routines to perform the sorts of transformations needed in applications that have to deal with the directions to celestial targets.
Tools for Validation of the SOFA Collection
SOFA provides a validation program for each of the supported languages:
- t_sofa_f.for (for Fortran 77) and
- t_sofa_c.c (for ANSI C).
Users are urged to build and run this program as part of the installation of the library concerned. It is not an exhaustive test, but the validation program does at least call all the routines and checks the calculated results against trusted values (produced using quadruple precision). Users who encounter a failure of the validation program are encouraged to contact the Board (email@example.com), noting details of the system (i.e. compiler, operating system, and hardware) upon which the failure took place.
Installation of the SOFA Library
The complete SOFA Library source set is available in a single download tarball for UNIX (UNIX line-terminators), or Zip archives for Windows and Macintosh systems (DOS line-terminators)
SOFA receives no direct funding, and its work is possible only through goodwill. Thanks are due to all the Board members, the webmaster, and all the host institutions.
The Board would like to record and acknowledge the leadership of Patrick Wallace over its first fifteen years during his chairmanship. The Board also acknowledges the huge contribution that he has made and is still making to SOFA and for the wider astronomical community.
The Board acknowledges the UK Hydrographic Office for hosting the SOFA web site.
Fukushima, T., 1995, “Report of the IAU WGAS Subgroup on Standard Procedures”, Highlights of Astronomy, 10.
Wallace, P.T., 1996, “The IAU SOFA Initiative”, Astronomical Society of the Pacific Conference Series, 101, pp 207-210.
Wallace, P. T., 1998, “SOFA: Standards of Fundamental Astronomy”, Highlights of Astronomy, 11, p 191.
Wallace, P., 2000, “SOFA Software Progress Report”, Proceedings of IAU Colloquium 180: Towards Models and Constants for Sub-Microarcsecond Astrometry, pp 353-362.
Wallace, P., 2000, SOFA, IAU Joint Discussion, 2.
Wallace, P., 2002, “Update to SOFA Report”, Highlights in Astronomy, 12, p 128.
Wallace, P.T., 2002, “Software for Implementing the IAU 2000 Resolutions”, IERS Technical Note, No. 29, pp 65-69.
Wallace, P.T., 2004, “SOFA software support for IAU 2000”, Bulletin of the American Astronomical Society, 36, p 694.
Wallace, P.T., 2009, “Recent SOFA Developments”, Proceedings of the Journées 2008 Systèmes de référence spatio-temporels, pp 50-53.
Hohenkerk, C.Y., 2011, “SOFA—A Status Report, Review and Look to the Future”, Proceedings of the Journées 2010 Systèmes de référence spatio-temporels, pp 16-19.
Hohenkerk, C.Y., 2012, “SOFA and the algorithms for transformations between scales & between systems”, Proceedings of the Journées 2011 Systèmes de référence spatio-temporels, Vienna, pp 21-24.
Hohenkerk, C.Y., “SOFA Authoritative Tools & Standard Models”, Poster in Session 5 of the 2013 Journées Systèmes de référence spatio-temporels 2013.
Hohenkerk, C.Y., Journées 2013 tutorial presentation with example programmes in Fortran and ANSI C — part of Nicole Capitaine's tutorial on “New concepts and models for Earth Orientation transformation”