The International Astronomical Union's SOFA service has the task of establishing and maintaining an accessible and authoritative set of algorithms and procedures that implement standard models used in fundamental astronomy. The service is managed by an international panel, the SOFA Board, appointed through IAU Division A — Fundamental Astronomy. SOFA also works closely with the International Earth Rotation and Reference Systems Service (IERS).
This web site provides access to the SOFA Software Collection which is currently available for both Fortran 77 and ANSI C. Information on how to obtain it and instructions for its use are available by following the link to Current Software.
Using SOFA software is free of charge under the terms and conditions of the SOFA licence.
Registration is encouraged as it helps to demonstrate the use being made of the SOFA Libraries and also provides users with e-mail notification of bugs and updates.
This notice is to inform users of the 18th release of the SOFA software library on 2021 May 12 @ 14:00 UTC. This major release implements three new support routines. Two deal with calculating astrometric places, while the third provides the approximate lunar position and velocity. The validation program has also been updated. A rearrangement of the ANSI C header files sofam.h and sofa.h has been implemented. The consequence of this is that an explicit #include "sofam.h" has been added to many of the SOFA functions. Thus developers of applications that use constants from sofa.h will now need to include an explicit #include. Further explanation is given in the changes.pdf files included in the distributions. The year of validity for the leap second (dat) routine has been extended and typographical and other minor corrections have been made to the documentation. Cosmetic changes have also been made to a number of ANSI C routines.
This notice is to inform users that the SOFA Board is issuing a Minor Release (17a) to both the Fortran and ANSI C versions of Release 17 of the SOFA software library on 2021 February 24 at 12:00 UTC. The change relates to dealing with leap seconds during the period 1960 and 1971. Between the introduction of UTC at the start of 1960 and the first leap second at the end of 1971 there were a series of small offsets and rate changes with respect to TAI. The SOFA routine D2DTF takes these into account, but a shortcoming in the algorithm meant that under certain conditions a leap second could be flagged even though none had occurred. Such cases were extremely rare, and moreover depended to some extent on compiler behaviour, affecting rounding.
This notice is to inform users of the 17th release of the SOFA software library on 2021 January 25 @ 14:00 UTC. This major release implements extra defensive precautions when computing atmospheric refraction at low altitudes and the application of polar motion handling has been changed to rigorous. Documentation has been expanded, including a new cookbook for the SOFA Vector Matrix Library, and typographical and other minor corrections have also been applied. Changes have also been made to the test programs.
please note: Due to an oversight, preliminary versions of the Fortran and C variants of the routine JD2CAL were included in the 16th SOFA release made on 2020 July 21. Rather than issue a minor release to correct this, the codes have been re-incorporated into the 16th SOFA release. If you have downloaded this release before 2020 July 24 at 22:00 UTC you are requested to download the release again. Our apologies for any inconvenience.
This notice is to inform users of the 16th release of the SOFA software library on 2020 July 21 @ 16:00 UTC. This release implements a correction of a sign in routine P06E (after the discovery of a typographical error in the source paper) and a correction in the ANSI C macro function dnint in the include file sofam.h to improve rounding. Improvements have also been made in precision and rounding in routines JD2CAL and JDCALF and in the method of decomposing the rotation matrix by ensuring that angles near zero are preferred in PB06. Miscellaneous typographical corrections and improvements to various other documents have been made. The release has been delayed by approximately 42 hours due to delays in preparing the web site material.
Server problems meant that the 15th release of the SOFA software library has been postponed by almost 24 hours. Our apologies for this delay. This has also prevented the e-mail announcement of the release.
This notice is to inform users of the 15th release of the SOFA software library on 2019 July 22 @ 16:00 UTC. This is a major release which implements four new routines, corrects another and enhances seventeen others. An incorrect sign in the ANSI C function iauTdbtcb has been corrected. The DAT routines have been updated to the release year. Four new routines have been added to the Star Catalog Conversions section dealing with the transformation between the FK4 and the FK5 reference systems. These routines have have been included partly for completeness but mainly so that positions in publications pre-1984 can be properly handled. They cover conversions between B1950.0 FK4 and J2000.0 FK5, with and without proper motion. Seventeen routines that compare the two components of given date/time arguments to minimize rounding errors, have been enhanced so that optimum results are achieved even when one of the arguments is negative. (SOFA is grateful to the Astropy group for drawing attention to the deficiency), Due to the introduction of the new routines, the Astrometry Tools Cookbook, the test program and other supporting files have been updated. Miscellaneous typographical corrections and improvements to various other documents have been made.
This notice is to inform users of the 14th release of the SOFA software library on 2018 January 30 @ 16:00 UTC. This is a major release which implements two new sections entitled Horizon/Equatorial Coordinates and Gnomonic (tangent plane) Projections. Three routines have been added to the former covering transformations from azimuth and altitude to hour angle and declination and vice versa and the determination of the parallactic angle. Six routines have been added to the latter covering the determination of the tangent point and transformations of the position of the star to and from celestial and tangent plane coordinates. The Astrometry Tools Cookbook, the test programs and other supporting files have also been updated. Other minor documentation/typographical corrections have also been made.
Leap seconds present particular difficulties to users of the SOFA software as applications must be relinked periodically with the latest versions in order to keep up to date with leap second announcements from the International Earth Rotation and Reference Systems Service (IERS). The SOFA Board has decided that in the next software release the affected routines, namely iau_DAT in Fortran and iauDat in C, will have special and unique licensing conditions that allow a local solution to be implemented.
Unlike other SOFA software, which is strictly "read only" to ensure standards integrity, users will be permitted to replace the Fortran and/or C source code for the DAT routine with code that is different but uses the same name.
This will allow use of locally supported mechanisms for keeping track of leap seconds, perhaps file or network based. Not only will the user application be able to call the replacement DAT routine, but so will other SOFA routines. The new arrangements avoid any need for applications to be relinked periodically in order merely to pick up leap second related updates. Note that such SOFA updates do, however, provide an opportunity for the local arrangements to be revalidated.
Please note that the C# implementation of SOFA produced by Attila Abrudán has moved from https://wwa.codeplex.com to https://github.com/abrudana/wwa.
This notice is to inform users of the 13th release of the SOFA software library on 2017 April 20 @ 12:00 UTC. This is a major release which implements the IAU 2012 value of the astronomical unit, replacing the IAU 1976 value used up to now. Although this version inevitably changes returned values, it will only be at the microarcsecond level. Also, the routine PVSTAR has been changed to harmonize with algorithmic improvements made to STARPV in the previous release, eliminating discrepancies seen in round-trip test cases.
For technical reasons the minor release (12b) to both the Fortran and ANSI C versions of Release 12 of the SOFA software library on 2016 December 21 at 15:00 UTC has been withdrawn. It has been replaced by a new minor release (12c) containing updated Fortran and ANSI C test-bed software including those updates made available in the release (12b) of two days ago (see the news item for 2016 December 21 below). The new minor release was made available on 2016 December 23 at 14:30 UTC. Our apologies for any inconvenience this may have caused to anyone who downloaded the 2016 December 21 minor release. It should be noted, however, that minor releases 12b and 12c differ only in terms of the updates to the two test-bed routines.
This notice is to inform users that the SOFA Board is issuing a minor release to both the Fortran and ANSI C versions of Release 12 of the SOFA software library on 2016 December 21 at 15:00 UTC. This minor release (12b) contains code changes to the ANSI C routines iauJd2cal and iauJdcalf to remove the possibility of inconsistent results on certain processors and compilers. A change has been made to iau_STARPV and iauStarpv (Fortran and ANSI C respectively) to deliver better precision. A change has also been made to iau_REFCO (Fortran only) which affects cases when the input temperature is "outlandish", i.e. outside the range of -15° to +200° Celsius. There are also some minor updates to the ANSI C version of the SOFA Time Scale and Calendar Tools cookbook.
This notice is to inform users that the SOFA Board is issuing a minor release to both the Fortran and ANSI C versions of Release 12 of the SOFA software library on 2016 July 29 at 15:30 UTC. This minor release (12a) contains updates to the routines iau_DAT (dat.for) and iauDat (dat.c) to include the leap second to be applied on 2016 December 31. The test-bed routines t_sofa_f.for and t_sofa_c.c are updated to test this change. The routines iau_LDSUN (ldsun.for) and iauLdsun (ldsun.c) that calculate the deflection of starlight by the Sun have changed without affecting the results for normal use. The Astrometry cookbooks have been modified to take account of the updated routines. The version number of the SOFA Time Scale and Calendar Tools cookbook has also been corrected.
This notice is to inform users of the 12th release of the SOFA software library. This is a major release as it contains a model for long-term precession and a new section entitled Ecliptic Coordinates. Four routines have been added to the section on Precession/Nutation/Polar motion to deliver long-term (+/-200,000 years) precession using the model of Vondrak, Capitaine and Wallace (2011, 2012). Six routines have been provided dealing with the transformation between equatorial and ecliptic coordinates using either the IAU 2006 precession model or the long-term precession of Vondrak et al. Test programs t_sofa_f.for and t_sofa_c.c have been updated as has the header file sofa.h to reflect these changes. Versions of the SOFA Earth Attitude Cookbook are now available for both Fortran and ANSI C. The list of called routines have been corrected in both the Fortran and ANSI C versions of ATCO13 and ATIO13.
Due to an oversight in the creation of the distribution files for SOFA Release 11a (2015 April 02), the directory into which the files are extracted was set to sofa/20150209/... rather than sofa/20150209_a/...; this has been corrected with new tar and zip distribution files as of 2015 April 09 at 09:00 UTC. Our apologies for any inconvenience caused.
This notice is to inform users that the SOFA Board is issuing a minor release to both the Fortran and ANSI C versions of Release 11 of the SOFA software library on 2015 April 2 at 15:30 UTC. This minor release (11a) contains a change to suppress a warning message given by one C compiler for the routine iauDat. The change does not affect the behaviour of the routine and it is not essential that you update your libraries (particularly if you are a Fortran user). The change had been already made in the 2014 September 9 (10c) release, but due to an oversight was not present in the initial version 11 release. The Fortran code has also been modified for harmony.
This notice is to inform users of the 11th release of the SOFA software library. This is a major release, as it contains a new section "Galactic Coordinates" consisting of 2 routines, G2ICRS and ICRS2G, for transforming between ICRS and 1958 IAU galactic coordinates. Updates to the iau_DAT (dat.for) and iauDat (dat.c) routines have been made to allow for the leap second at the end of June 2015. A few minor changes have been made to a few routines to remove some compiler warnings, namely, in the test for zero in C2IXYZ, GC2GDE, RM2V, RV2M, and the multithread precaution in CAL2JD in the Fortran version only. Test programs t_sofa_f.for and t_sofa_c.c have been updated as has the include header file sofa.h. A documentation revision has been made moving the routines STARPV and PVSTAR (formerly in Star Space Motion) and PMSAFE and STARPM (formerly in Star Catalog Conversions) into Astrometry. This has resulted in the removal of the category Star Space Motion.
This is to inform users that the SOFA Board has issued a minor release to both the Fortran and ANSI C versions of Release 10 of the SOFA software library on 2014 October 7 at 15:00 UTC. The new version is designated issue 2013-12-02_d. It corrects an error in the Astrometry Cookbooks.
This notice is to inform users that the SOFA Board will issue a minor release shortly to correct an error in the Astrometry Cookbooks. In the Table of Contents on page iv:
This notice is to inform users that the SOFA Board is issuing a minor release to both the Fortran and ANSI C versions of Release 10 of the SOFA software library on 2014 September 8 at 12:00 UTC. The new version is designated issue 2013-12-02_c. Corrections have been made to ldsun.for, ldsun.c, dat.c, pmsafe.c and sofa.h as well as small documentation corrections to the cookbooks sofa_pn.pdf, sofa_ast_f.pdf and sofa_ast_c.pdf.
The example in the cookbook SOFA Tools for Earth Attitude has been updated due to a typographical error in the comment above the last function call on page 23 calculating Greenwich apparent sidereal time. For "(IAU 1982/1994)" read "(IAU 2000)".
The example in the cookbook SOFA Tools for Astrometry has been updated due to an error. In the code the coordinates for longitude and latitude were reversed. The intended location was Gemini South, in Chile, but the reversal placed the observer above the Weddell Sea, off Antarctica, with the test star below the horizon. A location in St. Helena has been substituted. There was also a typographical error in one of the comments: the second "CIRS to topocentric" has been changed to "CIRS to observed".
An error in the routine D2DTF present in both the Fortran and ANSI C libraries has been corrected in a new minor release to the tenth release of the SOFA software library. Documentation errors in routines apco13 and atioq have also been addressed and the corrected versions of sofa_ts_f.pdf and sofa_ts_c.pdf have been included in this minor release.
The D2DTF routine truncated rather than rounded in the (uncommon) case of a time in the second half of a leap second and a precision of 1 second. In addition, the rounding behaviour during leap seconds has been changed so that for precision of 10 seconds or coarser the beginning of the next day is used in preference to the start of the leap second. We expect to make a minor release at the end of this week to correct this problem.
This notice is to inform users that we are making a minor change to the Fortran Release 10 made on 2013 December 2 at 12:00 UTC. The new version is numbered issue 2013-12-02_a.
The motivation for the minor release is to harmonize the Fortran and C versions of the ATIOQ routine. A recent change was to return azimuth in the range 0 to 2pi radians rather than +/- pi radians, and though the new C version was released, the Fortran version was inadvertently not released. At the same time we have taken the opportunity to tidy up a few recently noticed non-critical, issues; (1) some unused constants have been removed from routines EECT00, TAIUTC and XY06, and (2) in routines AF2A, TF2A and TF2D the declaration CHARACTER*1 S has been changed to CHARACTER S.
A new release (Issue 2013-12-02) of the SOFA Fortran 77 and ANSI C libraries was made on 2013 December 2nd at 12:00:00 UTC.
This notice is to inform users of the upcoming 10th release of the SOFA software library, which is currently being finalised.
This is a major release, as it contains the new section "Astrometry" consisting of 32 routines and an accompanying document.
In the existing routines, two changes of behaviour have occurred:
There are many other minor documentation corrections and cosmetic changes. Some of these were reported by our users, and we are very grateful to all those who have contacted us.
It has come to our attention that emails may have gone unanswered due to having been mistakenly blocked by the UK Hydrographic Office spam filtering systems (based on MailMarshal Secure Email Gateway). This is most regrettable, and appropriate measures have been taken. If you have emailed SOFA recently and not received a prompt reply please resend the message and accept our apologies.
In general, if any email to SOFA fails to elicit a response, by all means try emailing other Board members to see where the problem lies. In common with other UK Government establishments, the UKHO has to operate very strict IT security policies, and future "false positives" cannot be ruled out.
UKHO and the Chair of the SOFA Board is sorry that these problems occurred.
Updated distribution files for Issue 2012-03-01 will be made available on 2012 July 10th at 16:00:00 UTC. A correction has been made to dat.for and dat.c to ensure proper operation when the fraction of the day is very close to 1. Explicit set up of arrays in ir.for, ir.c, rx.for, rx.c, ry.for, ry.c, rz.for, rz.c, zr.for and zr.c has been implemented to improve efficiency and a documentation correction to plan94.c has been made.
It has been pointed out that there is an error in the comments in plan94.c. The dimensions of the PV-vector are the wrong way round. For "pv double planet p,v (heliocentric, J2000.0, AU,AU/d)", read "pv double planet p,v (heliocentric, J2000.0, AU,AU/d)".
Due to a server configuration problem, the new release of the SOFA Fortran 77 and ANSI C libraries (2012-03-01) was delayed until 15:10:00 UTC. Our apologies for any inconvenience caused.
A new release (Issue 2012-03-01) of the SOFA Fortran 77 and ANSI C libraries will be made on 2012 March 1st at 12:00:00 UTC.
This release includes an update to reflect the leap second that will be applied on 2012 June 30th. The release also includes several updates to some declarations in the ANSI C code to minimize possible compiler warnings. A small number of errata in the documentation of the ANSI C routines as well as some cosmetic changes to the documentation have been included. A bug in the function Dsign (A,B) in sofam.h has also been fixed.
Please note that the numbering of this SOFA release has been kept in step with the Fortran release number while the ANSI C release number has been re-aligned with that of the Fortran release.
A revised list of documentation corrections has been made available for the latest Fortran and ANSI C releases. These corrections to p06e.for and p06e.c do not affect the operation of the code.
A revised list of documentation corrections has been made available for the latest Fortran and ANSI C releases. These corrections do not affect the operation of the code.
A small correction to the comment in the routine tf2a.c should be noted. In the "Returned:" section replace the variable "days" by the variable "rad". Small corrections have also been noted in the routines ut1tt.for and ut1tt.c. In both routines in the "Returned:" section, in the description replace "TAI as a 2-part Julian Date", by "TT as a 2-part Julian Date".
Small corrections to a comment and a note in the routines dtf2d.for and dtf2d.c are brought to the attention of users of the SOFA software. In the comments for Fortran code the "Returned:" items JD1,JD2 should be D1,D2. Similarly, in the 2nd line of Note 7, JD1+JD2 should read D1+D2. The same issues exist in the C code except the variables are lower case.
A correction to the wording of Note 3 in the routines nut06a.for and nut06a.c is brought to the attention of users of SOFA software. It is necessary to replace the words "dynamical flattening" by "dynamical form factor J2", so that the last line reads "...secular variation in the Earth's dynamical form factor J2."
Catherine Hohenkerk has written an article for Scholarpedia on SOFA. It provides an overview of SOFA, its history, the SOFA Center and the libraries and test software it provides, as well as the relevant documentation and references.
Two small typographical errors have been reported in issue 2010-12-01, neither of which affect the serviceability of the issue. In the files changes.pdf and changes.lis within the ANSI C release, the issue date in the first line of the files is given as 2012-12-01. The correct issue date is 2010-12-01. In the SOFA Time Scale and Calendar Tools documents sofa_ts_c.pdf and sofa_ts_f.pdf, a function called DTF is listed in Section 1.3 on page 1. The correct name of the function is D2TF.
A new release of SOFA Fortran 77 and ANSI C libraries was made available. This includes eighteen new routines in the Time Scales section of the Astronomy Library and three new routines in the Operations on Angles section of the Vector Matrix Library for both the Fortran 77 and ANSI C releases. A new cookbook on Time Scale and Calendar Tools was also released. A bug in jdcalf.c has been corrected, enhancements have been made to the makefiles, header files and test programs and cosmetic changes have also been made to some of the routines.
A new release (Issue 2010-12-01) of the SOFA Fortran 77 and ANSI C libraries will be made on 2010 December 1st at 12:00:00 UTC.
It is with great sadness that the SOFA board was informed of the passing of Anne-Marie Gontier on September 24th 2010. Anne-Marie had been a member of the board almost from the beginning, which provided a strong link with the Observatoire de Paris that has been to SOFA's great benefit. Our condolences go to her family, colleagues and friends at this difficult time.
The old SOFA web sites http://www.iau-sofa.rl.ac.uk and http://iau-sofa.hmnao.com are now automatically forwarding requests to our new site http://www.iausofa.org introduced in January 2010. It is our intention to shut down the old sites at the time of the next SOFA release. Consequently, users who have bookmarks pointing to specific material on the old sites should now update them to point to the new site.
George Hobbs, representing Commission 31 (Time), from the Australia Telescope National Facility has been co-opted onto the SOFA Board to assist in the provision of authoritative time transformation software.
Patrick Wallace steps down as Chair after 14 years; he is welcomed as a member of the Board. The new SOFA Board Chair is Catherine Hohenkerk who may be contacted at Catherine.Hohenkerk@gmail.com.
Please note that the e-mail link at the foot of each web page now points to the new SOFA mailbox at email@example.com. This replaces the old address, firstname.lastname@example.org, at the Rutherford Appleton Laboratory. This new contact address will be updated in the source code and documentation at the next release of the SOFA libraries.
Downloads of Issue 2009-12-31 have been resumed. Updates to the validation software have been implemented.
Downloads of Issue 2009-12-31 have been temporarily suspended pending checks on the validation software.
The new SOFA web site www.iausofa.org has now gone live. Requests to the old site addresses iau-sofa.hmnao.com and www.iau-sofa.rl.ac.uk will be automatically forwarded to the new site. Please change any bookmarks you might have to the new address.
An additional reference ellipsoid, WGS72, has been included in EFORM. A code change to GD2GC and GD2GC using ZP to zeroize a vector has been made. Corrections to comments in GC2GD and GC2GD have been made concerning routine names for inverse transformations. Comments involving references have been made to BP00, BPN2XY, C2I00A, C2I00B, C2IBPN, PN00A, PN00B, PN00, S00A, S00B, S00 and S06A. Validation software has been updated.
A new web site for the SOFA initiative has been registered called www.iausofa.org. The material on the site has been revised and updated to improve access to the software releases and their associated explanatory material.
A new release of SOFA Fortran 77 and ANSI C libraries was generated. This includes five new Astronomy routines for performing geographic/geodetic transformations as well as a number of small cosmetic changes and code improvements. The five new routines are EFORM, GC2GD, GC2GDE, GD2GC and GD2GCE.
An error in the description of the coordinates of the Celestial Intermediate Pole with respect to the International Terrestrial Reference System in the routines C2T00A, C2T00B, C2T06A, C2TPE, C2TXY and POM00 has been corrected in both the Fortran and ANSI C libraries. These revisions have no effect on the results produced by these routines.
The routines FK52H and H2FK5 (both Fortran and ANSI C) have been found to return incorrect proper motions. The fault is being rectified.
The ANSI C version of the DAT routine, iauDat, released on 2009-02-01 contained a bug that caused erroneous answers (platform dependent) for certain dates in 1972. The problem was corrected in the 2009-03-03 update. The Fortran version, iau_DAT, was not affected.
A new release of SOFA Fortran 77 and ANSI C libraries was generated. This includes the initial release of the ANSI C library. Cosmetic changes were made to a number of Fortran routines and a test program has been added.