At present there are 192 "astronomy" functions; 59 of these are canonical, realizing (and indeed in some cases defining) IAU standards; there are also 55 utility functions that deal with vectors, matrices, and angles, making a total of 247 functions. These are all building blocks rather than fully-fledged applications, and a typical application will call many of them in order to achieve the desired result. There is no "context" for the application to set up, and calls to SOFA functions can be mingled with calls to other libraries without any side effects.
In the TPOINT context, although SOFA does not include telescope control or pointing analysis tools per se, it does provide a wealth of low-level components for such applications, covering for example the prediction of the apparent directions of celestial sources, computations involving timescales, and basic vector/matrix operations. A high degree of computational efficiency is available, and all of SOFA's C functions are reentrant and thread safe.
Three example SOFA-based applications
Three TPOINT-relevant applications that use SOFA functions are presented here. They are not merely demonstrations: each is offered as a useful tool in its own right, with SOFA in merely a supporting role: versions based on other fundamental astronomy and vector/matrix/angle libraries would be equally effective.
Their value to a potential SOFA user is as illustrations of how the library can be brought to bear on real-world problems. It must of course be stressed that they are not themselves part of the SOFA software collection, nor in any way endorsed by SOFA; support is available directly from the original author (P.T.Wallace) only.
All three applications are written in ANSI C, and each comprises (i) a comprehensive user guide in the form of a PDF and (ii) a Zip archive containing all the required (non-SOFA) source code and other files. Apart from SOFA and the C runtime library they are completely self-contained, and in particular use only standard input/output. In each case the individual files contained in the Zip archive are listed in the final section of the PDF.
All of the software and documentation is BSD-licensed.
COCO, a coordinate
COCO is a modern implementation of a tool developed by the UK Starlink project in the 1990s. It is an interactive program that accepts a celestial position in one reference system and transforms it into another reference system. Eight reference systems are supported, including two historical mean place systems, the latest (IAU 2006) mean place system, ICRS, two sorts of apparent place, ecliptic coordinates and Galactic coordinates. Depending which transformation is being carried out, accuracy is milliarcsecond or better.
The user guide is coco.pdf and the files are in coco.zip
EPH, some solar-system
EPH is a library of functions that implements the ELP/MPP02 and VSOP2010 lunar and planetary ephemerides (from l'Observatoire de Paris). Two example applications are provided, one of which predicts the occultation of a planet by the Moon (to fraction of a second accuracy) and the other lists the topocentric apparent places of Sun, Moon and planets (to milliarcsecond accuracies) at a specified site and time.
The user guide is eph.pdf and the files are in eph.zip
SPK, a simple
SPK is a library of functions that provide basic telescope pointing capabilities, plus demonstrations for the equatorial and altazimuth cases. Efficiency is good enough for real-time use, and astrometric accuracy is uncompromised.
It is an implementation of the algorithms set out in Wallace P.T., 2002, A rigorous algorithm for telescope pointing, Advanced Telescope and Instrumentation Control Software II. Edited by Lewis, Hilton. Proceedings of the SPIE, 4848, 125.
Important: although SPK takes into account a basic set of instrumental effects (index errors, nonperpendicularities, tilts and vertical flexure—see the above paper), it does not include any pointing-analysis capabilities. Software developers designing a telescope control system that will use TPOINT (or a similar modeling tool) must themselves bridge the gap between the chosen pointing-analysis package and the relevant SPK interfaces.
The user guide is spk.pdf and the files are in spk.zip