Skip navigation links

Package org.jastronomy.jsofa

This software is a translation of the official C SOFA software package.

See: Description

Package org.jastronomy.jsofa Description

This software is a translation of the official C SOFA software package. http://www.iausofa.org/. The translation was done by hand with the intention of retaining the structure of the original software as far as possible. This means that the original JSOFA C functions are translated to static member functions of the main JSOFA class. The translation was originally made from the 2010-12-01 release of the JSOFA Library for ANSI C. Any updates to this software have been be made by incremental changes in the original source. The current software (version @value org.jastronomy.jsofa.JSOFA#JSOFA_RELEASE}) is based on SOFA version "2021-05-12" revision "18" This javadoc provides a detailed manual on how to use each function - there are also some cookbooks on the IAU SOFA site which can also be used to discover how to use the library bearing in mind the changes outlined below.

Notable API changes from the original include:

There are a number of features of the java translation

List of Routines Grouped by functionality

Calendars

JSOFA.jauCal2jd(int, int, int) Gregorian calendar to Julian Day number
JSOFA.jauEpb(double, double) Julian Date to Besselian Epoch
JSOFA.jauEpb2jd(double) Besselian Epoch to Julian Date
JSOFA.jauEpj(double, double) Julian Date to Julian Epoch
JSOFA.jauEpj2jd(double) Julian Epoch to Julian Date
JSOFA.jauJd2cal(double, double) Julian Date to Gregorian year, month, day, fraction
JSOFA.jauJdcalf(int, double, double, int[]) Julian Date to Gregorian date for formatted output

Astrometry

JSOFA.jauAb(double[], double[], double, double) Apply stellar aberration
JSOFA.jauApcg(double, double, double[][], double[], org.jastronomy.jsofa.JSOFA.Astrom) prepare for ICRS <-> GCRS, geocentric, special
JSOFA.jauApcg13(double, double, org.jastronomy.jsofa.JSOFA.Astrom) prepare for ICRS <-> GCRS, geocentric
JSOFA.jauApci(double, double, double[][], double[], double, double, double, org.jastronomy.jsofa.JSOFA.Astrom) prepare for ICRS <-> CIRS, terrestrial, special
JSOFA.jauApci13(double, double, org.jastronomy.jsofa.JSOFA.Astrom) prepare for ICRS <-> CIRS, terrestrial
JSOFA.jauApco(double, double, double[][], double[], double, double, double, double, double, double, double, double, double, double, double, double, org.jastronomy.jsofa.JSOFA.Astrom) prepare for ICRS <-> observed, terrestrial, special
JSOFA.jauApco13(double, double, double, double, double, double, double, double, double, double, double, double, org.jastronomy.jsofa.JSOFA.Astrom) prepare for ICRS <-> observed, terrestrial
JSOFA.jauApcs(double, double, double[][], double[][], double[], org.jastronomy.jsofa.JSOFA.Astrom) prepare for ICRS <-> CIRS, space, special
JSOFA.jauApcs13(double, double, double[][], org.jastronomy.jsofa.JSOFA.Astrom) prepare for ICRS <-> CIRS, space
JSOFA.jauAper(double, org.jastronomy.jsofa.JSOFA.Astrom) insert ERA into context
JSOFA.jauAper13(double, double, org.jastronomy.jsofa.JSOFA.Astrom) update context for Earth rotation
JSOFA.jauApio(double, double, double, double, double, double, double, double, double, org.jastronomy.jsofa.JSOFA.Astrom) prepare for CIRS <-> observed, terrestrial, special
JSOFA.jauApio13(double, double, double, double, double, double, double, double, double, double, double, double, org.jastronomy.jsofa.JSOFA.Astrom) prepare for CIRS <-> observed, terrestrial
JSOFA.jauAtcc13(double, double, double, double, double, double, double, double) catalog -> ICRS
JSOFA.jauAtccq(double, double, double, double, double, double, org.jastronomy.jsofa.JSOFA.Astrom) quick catalog -> ICRS
JSOFA.jauAtci13(double, double, double, double, double, double, double, double) catalog -> CIRS
JSOFA.jauAtciq(double, double, double, double, double, double, org.jastronomy.jsofa.JSOFA.Astrom) quick ICRS -> CIRS
JSOFA.jauAtciqn(double, double, double, double, double, double, org.jastronomy.jsofa.JSOFA.Astrom, int, org.jastronomy.jsofa.JSOFA.Ldbody[]) quick ICRS -> CIRS, multiple deflections
JSOFA.jauAtciqz(double, double, org.jastronomy.jsofa.JSOFA.Astrom) quick astrometric ICRS -> CIRS
JSOFA.jauAtco13(double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double) ICRS -> observed
JSOFA.jauAtic13(double, double, double, double) CIRS -> ICRS
JSOFA.jauAticq(double, double, org.jastronomy.jsofa.JSOFA.Astrom) quick CIRS -> ICRS
JSOFA.jauAtciqn(double, double, double, double, double, double, org.jastronomy.jsofa.JSOFA.Astrom, int, org.jastronomy.jsofa.JSOFA.Ldbody[]) quick CIRS -> ICRS, multiple deflections
JSOFA.jauAtio13(double, double, double, double, double, double, double, double, double, double, double, double, double, double) CIRS -> observed
JSOFA.jauAtioq(double, double, org.jastronomy.jsofa.JSOFA.Astrom) quick CIRS -> observed
JSOFA.jauAtoc13(java.lang.String, double, double, double, double, double, double, double, double, double, double, double, double, double, double) observed -> astrometric ICRS
JSOFA.jauAtoi13(java.lang.String, double, double, double, double, double, double, double, double, double, double, double, double, double, double) observed -> CIRS
JSOFA.jauAtoiq(java.lang.String, double, double, org.jastronomy.jsofa.JSOFA.Astrom) quick observed -> CIRS
JSOFA.jauLd(double, double[], double[], double[], double, double) light deflection by a single solar-system body
JSOFA.jauLdn(int, org.jastronomy.jsofa.JSOFA.Ldbody[], double[], double[]) light deflection by multiple solar-system bodies
JSOFA.jauLdsun(double[], double[], double) light deflection by the Sun
JSOFA.jauPmpx(double, double, double, double, double, double, double, double[]) apply proper motion and parallax
JSOFA.jauPvtob(double, double, double, double, double, double, double) observatory position and velocity
JSOFA.jauRefco(double, double, double, double) refraction constants
JSOFA.jauPvstar(double[][]) space motion pv-vector to star catalog data
JSOFA.jauStarpv(double, double, double, double, double, double, double[][]) star catalog data to space motion pv-vector

Galactic

JSOFA.jauG2icrs(double, double) Transformation from Galactic Coordinates to ICRS
JSOFA.jauIcrs2g(double, double) Transformation from ICRS to Galactic Coordinates

Ecliptic coordinates

JSOFA.jauEceq06(double, double, double, double) ecliptic to ICRS, IAU 2006
JSOFA.jauEcm06(double, double) rotation matrix, ICRS to ecliptic, IAU 2006
JSOFA.jauEqec06(double, double, double, double) ICRS to ecliptic, IAU 2006
JSOFA.jauLteceq(double, double, double) ecliptic to ICRS, long term
JSOFA.jauLtecm(double) rotation matrix, ICRS to ecliptic, long-term
JSOFA.jauLteqec(double, double, double) ICRS to ecliptic, long term

Time scales

JSOFA.jauD2dtf(java.lang.String, int, double, double) format 2-part JD for output
JSOFA.jauDat(int, int, int, double) Delta(AT) (=TAI-UTC) for a given UTC date
JSOFA.jauDtdb(double, double, double, double, double, double) TDB-TT
JSOFA.jauDtf2d(java.lang.String, int, int, int, int, int, double) encode time and date fields into 2-part JD
JSOFA.jauTaitt(double, double) TAI to TT
JSOFA.jauTaiut1(double, double, double) TAI to UT1
JSOFA.jauTaiutc(double, double) TAI to UTC
JSOFA.jauTcbtdb(double, double) TCB to TDB
JSOFA.jauTcgtt(double, double) TCG to TT
JSOFA.jauTdbtcb(double, double) TDB to TCB
JSOFA.jauTdbtt(double, double, double) TDB to TT
JSOFA.jauTttai(double, double) TT to TAI
JSOFA.jauTttcg(double, double) TT to TCG
JSOFA.jauTttdb(double, double, double) TT to TDB
JSOFA.jauTtut1(double, double, double) TT to UT1
JSOFA.jauUt1tai(double, double, double) UT1 to TAI
JSOFA.jauUt1tt(double, double, double) UT1 to TT
JSOFA.jauUt1utc(double, double, double) UT1 to UTC
JSOFA.jauUtctai(double, double) UTC to TAI
JSOFA.jauUtcut1(double, double, double) UTC to UT1

Earth rotation angle and sidereal time

JSOFA.jauEe00(double, double, double, double) equation of the equinoxes, IAU 2000
JSOFA.jauEe00a(double, double) equation of the equinoxes, IAU 2000A
JSOFA.jauEe00b(double, double) equation of the equinoxes, IAU 2000B
JSOFA.jauEe06a(double, double) equation of the equinoxes, IAU 2006/2000A
JSOFA.jauEect00(double, double) equation of the equinoxes complementary terms, IAU 2000
JSOFA.jauEqeq94(double, double) equation of the equinoxes, IAU 1994
JSOFA.jauEra00(double, double) Earth rotation angle, IAU 2000
JSOFA.jauGmst00(double, double, double, double) Greenwich mean sidereal time, IAU 2000
JSOFA.jauGmst06(double, double, double, double) Greenwich mean sidereal time, IAU 2006
JSOFA.jauGmst82(double, double) Greenwich mean sidereal time, IAU 1982
JSOFA.jauGst00a(double, double, double, double) Greenwich apparent sidereal time, IAU 2000A
JSOFA.jauGst00b(double, double) Greenwich apparent sidereal time, IAU 2000B
JSOFA.jauGst06(double, double, double, double, double[][]) Greenwich apparent ST, IAU 2006, given NPB matrix
JSOFA.jauGst06a(double, double, double, double) Greenwich apparent sidereal time, IAU 2006/2000A
JSOFA.jauGst94(double, double) Greenwich apparent sidereal time, IAU 1994

Ephemerides (limited precision)

JSOFA.jauEpv00(double, double, double[][], double[][]) Earth position and velocity
JSOFA.jauPlan94(double, double, int) major-planet position and velocity
JSOFA.jauMoon98(double, double) moon position and velocity

Precession, nutation, polar motion

JSOFA.jauBi00() frame bias components, IAU 2000
JSOFA.jauBp00(double, double, double[][], double[][], double[][]) frame bias and precession matrices, IAU 2000
JSOFA.jauBp06(double, double, double[][], double[][], double[][]) frame bias and precession matrices, IAU 2006
JSOFA.jauBpn2xy(double[][]) extract CIP X,Y coordinates from NPB matrix
JSOFA.jauC2i00a(double, double) celestial-to-intermediate matrix, IAU 2000A
JSOFA.jauC2i00b(double, double) celestial-to-intermediate matrix, IAU 2000B
JSOFA.jauC2i06a(double, double) celestial-to-intermediate matrix, IAU 2006/2000A
JSOFA.jauC2ibpn(double, double, double[][]) celestial-to-intermediate matrix, given NPB matrix, IAU 2000
JSOFA.jauC2ixy(double, double, double, double) celestial-to-intermediate matrix, given X,Y, IAU 2000
JSOFA.jauC2ixys(double, double, double) celestial-to-intermediate matrix, given X,Y and s
JSOFA.jauC2t00a(double, double, double, double, double, double) celestial-to-terrestrial matrix, IAU 2000A
JSOFA.jauC2t00b(double, double, double, double, double, double) celestial-to-terrestrial matrix, IAU 2000B
JSOFA.jauC2t06a(double, double, double, double, double, double) celestial-to-terrestrial matrix, IAU 2006/2000A
JSOFA.jauC2tcio(double[][], double, double[][]) form CIO-based celestial-to-terrestrial matrix
JSOFA.jauC2teqx(double[][], double, double[][]) form equinox-based celestial-to-terrestrial matrix
JSOFA.jauC2tpe(double, double, double, double, double, double, double, double) celestial-to-terrestrial matrix given nutation, IAU 2000
JSOFA.jauC2txy(double, double, double, double, double, double, double, double) celestial-to-terrestrial matrix given CIP, IAU 2000
JSOFA.jauEo06a(double, double) equation of the origins, IAU 2006/2000A
JSOFA.jauEors(double[][], double) equation of the origins, given NPB matrix and s
JSOFA.jauFw2m(double, double, double, double) Fukushima-Williams angles to r-matrix
JSOFA.jauFw2xy(double, double, double, double) Fukushima-Williams angles to X,Y
JSOFA.jauNum00a(double, double) nutation matrix, IAU 2000A
JSOFA.jauLtp(double) long-term precession matrix
JSOFA.jauLtpb(double) long-term precession matrix, including ICRS frame bias
JSOFA.jauLtpecl(double) long-term precession of the ecliptic
JSOFA.jauLtpequ(double) long-term precession of the equator
JSOFA.jauNum00b(double, double) nutation matrix, IAU 2000B
JSOFA.jauNum06a(double, double) nutation matrix, IAU 2006/2000A
JSOFA.jauNumat(double, double, double) form nutation matrix
JSOFA.jauNut00a(double, double) nutation, IAU 2000A
JSOFA.jauNut00b(double, double) nutation, IAU 2000B
JSOFA.jauNut06a(double, double) nutation, IAU 2006/2000A
JSOFA.jauNut80(double, double) nutation, IAU 1980
JSOFA.jauNutm80(double, double) nutation matrix, IAU 1980
JSOFA.jauObl06(double, double) mean obliquity, IAU 2006
JSOFA.jauObl80(double, double) mean obliquity, IAU 1980
JSOFA.jauPb06(double, double) zeta,z,theta precession angles, IAU 2006, including bias
JSOFA.jauPfw06(double, double) bias-precession Fukushima-Williams angles, IAU 2006
JSOFA.jauPmat00(double, double) precession matrix (including frame bias), IAU 2000
JSOFA.jauPmat06(double, double) PB matrix, IAU 2006
JSOFA.jauPmat76(double, double) precession matrix, IAU 1976
JSOFA.jauPn00(double, double, double, double) bias/precession/nutation results, IAU 2000
JSOFA.jauPn00a(double, double) bias/precession/nutation, IAU 2000A
JSOFA.jauPn00b(double, double) bias/precession/nutation, IAU 2000B
JSOFA.jauPn06(double, double, double, double) bias/precession/nutation results, IAU 2006
JSOFA.jauPn06a(double, double) bias/precession/nutation results, IAU 2006/2000A
JSOFA.jauPnm00a(double, double) classical NPB matrix, IAU 2000A
JSOFA.jauPnm00b(double, double) classical NPB matrix, IAU 2000B
JSOFA.jauPnm06a(double, double) classical NPB matrix, IAU 2006/2000A
JSOFA.jauPnm80(double, double) precession/nutation matrix, IAU 1976/1980
JSOFA.jauP06e(double, double) precession angles, IAU 2006, equinox based
JSOFA.jauPom00(double, double, double) polar motion matrix
JSOFA.jauPr00(double, double) IAU 2000 precession adjustments
JSOFA.jauPrec76(double, double, double, double) accumulated precession angles, IAU 1976
JSOFA.jauS00(double, double, double, double) the CIO locator s, given X,Y, IAU 2000A
JSOFA.jauS00a(double, double) the CIO locator s, IAU 2000A
JSOFA.jauS00b(double, double) the CIO locator s, IAU 2000B
JSOFA.jauS06(double, double, double, double) the CIO locator s, given X,Y, IAU 2006
JSOFA.jauS06a(double, double) the CIO locator s, IAU 2006/2000A
JSOFA.jauSp00(double, double) the TIO locator s', IERS 2003
JSOFA.jauXy06(double, double) CIP, IAU 2006/2000A, from series
JSOFA.jauXys00a(double, double) CIP and s, IAU 2000A
JSOFA.jauXys00b(double, double) CIP and s, IAU 2000B
JSOFA.jauXys06a(double, double) CIP and s, IAU 2006/2000A

Fundamental arguments for nutation etc.

JSOFA.jauFad03(double) mean elongation of the Moon from the Sun
JSOFA.jauFae03(double) mean longitude of Earth
JSOFA.jauFaf03(double) mean argument of the latitude of the Moon
JSOFA.jauFaju03(double) mean longitude of Jupiter
JSOFA.jauFal03(double) mean anomaly of the Moon
JSOFA.jauFalp03(double) mean anomaly of the Sun
JSOFA.jauFama03(double) mean longitude of Mars
JSOFA.jauFame03(double) mean longitude of Mercury
JSOFA.jauFane03(double) mean longitude of Neptune
JSOFA.jauFaom03(double) mean longitude of the Moon's ascending node
JSOFA.jauFapa03(double) general accumulated precession in longitude
JSOFA.jauFasa03(double) mean longitude of Saturn
JSOFA.jauFaur03(double) mean longitude of Uranus
JSOFA.jauFave03(double) mean longitude of Venus

Star catalog conversions

JSOFA.jauFk425(double, double, double, double, double, double) convert B1950.0 FK4 star catalog data to J2000.0 FK5
JSOFA.jauFk45z(double, double, double) convert a B1950.0 FK4 star position to J2000.0 FK5, assuming zero proper motion in the FK5 system
JSOFA.jauFk524(double, double, double, double, double, double) convert J2000.0 FK5 star catalog data to B1950.0 FK4
JSOFA.jauFk54z(double, double, double) convert a J2000.0 FK5 star position to B1950.0 FK4, assuming zero proper motion in FK5 system and zero parallax
JSOFA.jauFk52h(double, double, double, double, double, double) transform FK5 star data into the Hipparcos system
JSOFA.jauFk5hip(double[][], double[]) FK5 to Hipparcos rotation and spin
JSOFA.jauFk5hz(double, double, double, double) FK5 to Hipparcos assuming zero Hipparcos proper motion
JSOFA.jauH2fk5(double, double, double, double, double, double) transform Hipparcos star data into the FK5 system
JSOFA.jauHfk5z(double, double, double, double) Hipparcos to FK5 assuming zero Hipparcos proper motion
JSOFA.jauStarpm(double, double, double, double, double, double, double, double, double, double) proper motion between two epochs

Geodetic/geocentric

JSOFA.jauEform(int) a,f for a nominated Earth reference ellipsoid
JSOFA.jauGc2gd(int, double[]) geocentric to geodetic for a nominated ellipsoid
JSOFA.jauGc2gde(double, double, double[]) geocentric to geodetic given ellipsoid a,f
JSOFA.jauGd2gc(int, double, double, double) geodetic to geocentric for a nominated ellipsoid
JSOFA.jauGd2gce(double, double, double, double, double) geodetic to geocentric given ellipsoid a,f

OPERATIONS INVOLVING P-VECTORS AND R-MATRICES

Initialize

JSOFA.jauZp(double[]) zero p-vector
JSOFA.jauZr(double[][]) initialize r-matrix to null
JSOFA.jauIr(double[][]) initialize r-matrix to identity

Copy/extend/extract

JSOFA.jauCp(double[], double[]) copy p-vector
JSOFA.jauCr(double[][], double[][]) copy r-matrix

Build rotations

JSOFA.jauRx(double, double[][]) rotate r-matrix about x
JSOFA.jauRy(double, double[][]) rotate r-matrix about y
JSOFA.jauRz(double, double[][]) rotate r-matrix about z

Spherical/Cartesian conversions

JSOFA.jauS2c(double, double) spherical to unit vector
JSOFA.jauC2s(double[]) unit vector to spherical
JSOFA.jauS2p(double, double, double) spherical to p-vector
JSOFA.jauP2s(double[]) p-vector to spherical

Operations on vectors

JSOFA.jauPpp(double[], double[]) p-vector plus p-vector
JSOFA.jauPmp(double[], double[]) p-vector minus p-vector
JSOFA.jauPpsp(double[], double, double[]) p-vector plus scaled p-vector
JSOFA.jauPdp(double[], double[]) inner (=scalar=dot) product of two p-vectors
JSOFA.jauPxp(double[], double[]) outer (=vector=cross) product of two p-vectors
JSOFA.jauPm(double[]) modulus of p-vector
JSOFA.jauPn(double[]) normalize p-vector returning modulus
JSOFA.jauSxp(double, double[]) multiply p-vector by scalar

Operations on matrices

JSOFA.jauRxr(double[][], double[][]) r-matrix multiply
JSOFA.jauTr(double[][]) transpose r-matrix

Matrix-vector products

JSOFA.jauRxp(double[][], double[]) product of r-matrix and p-vector
JSOFA.jauTrxp(double[][], double[]) product of transpose of r-matrix and p-vector

Separation and position-angle

JSOFA.jauSepp(double[], double[]) angular separation from p-vectors
JSOFA.jauSeps(double, double, double, double) angular separation from spherical coordinates
JSOFA.jauPap(double[], double[]) position-angle from p-vectors
JSOFA.jauPas(double, double, double, double) position-angle from spherical coordinates

Rotation vectors

JSOFA.jauRv2m(double[]) r-vector to r-matrix
JSOFA.jauRm2v(double[][]) r-matrix to r-vector

OPERATIONS INVOLVING PV-VECTORS

Initialize

JSOFA.jauZpv(double[][]) zero pv-vector

Copy/extend/extract

JSOFA.jauCpv(double[][], double[][]) copy pv-vector
JSOFA.jauP2pv(double[]) append zero velocity to p-vector
JSOFA.jauPv2p(double[][]) discard velocity component of pv-vector

Spherical/Cartesian conversions

JSOFA.jauS2pv(double, double, double, double, double, double) spherical to pv-vector
JSOFA.jauPv2s(double[][]) pv-vector to spherical

Operations on vectors

JSOFA.jauPvppv(double[][], double[][]) pv-vector plus pv-vector
JSOFA.jauPvmpv(double[][], double[][]) pv-vector minus pv-vector
JSOFA.jauPvdpv(double[][], double[][]) inner (=scalar=dot) product of two pv-vectors
JSOFA.jauPvxpv(double[][], double[][]) outer (=vector=cross) product of two pv-vectors
JSOFA.jauPvm(double[][]) modulus of pv-vector
JSOFA.jauSxpv(double, double[][]) multiply pv-vector by scalar
JSOFA.jauS2xpv(double, double, double[][]) multiply pv-vector by two scalars
JSOFA.jauPvu(double, double[][]) update pv-vector
JSOFA.jauPvup(double, double[][]) update pv-vector discarding velocity

Matrix-vector products

JSOFA.jauRxpv(double[][], double[][]) product of r-matrix and pv-vector
JSOFA.jauTrxpv(double[][], double[][]) product of transpose of r-matrix and pv-vector

OPERATIONS ON ANGLES

JSOFA.jauAnp(double) normalize radians to range 0 to 2pi
JSOFA.jauAnpm(double) normalize radians to range -pi to +pi
JSOFA.jauA2tf(int, double, int[]) decompose radians into hms
JSOFA.jauA2af(int, double, int[]) decompose radians into d ' "
JSOFA.jauD2tf(int, double, int[]) decompose days into hms

Gnomonic projection

JSOFA.jauTpors(double, double, double, double) solve for tangent point, spherical
JSOFA.jauTporv(double, double, double[]) solve for tangent point, vector
JSOFA.jauTpsts(double, double, double, double) deproject tangent plane to celestial, spherical
JSOFA.jauTpstv(double, double, double[]) deproject tangent plane to celestial, vector
JSOFA.jauTpxes(double, double, double, double) project celestial to tangent plane, spherical
JSOFA.jauTpxev(double[], double[]) project celestial to tangent plane, vector

Horizon/equatorial

JSOFA.jauAe2hd(double, double, double) (azimuth, altitude) to (hour angle, declination)
JSOFA.jauHd2ae(double, double, double) (hour angle, declination) to (azimuth, altitude)
JSOFA.jauHd2pa(double, double, double) parallactic angle
Since:
February 2010
Author:
Paul Harrison (paul.harrison@manchester.ac.uk) 1 Feb 2010
 Copyright © 2019 Paul Harrison, University of Manchester.
 
 This JSOFA software is derived from the official C release of the "Standards Of Fundamental Astronomy" (SOFA) library 
 of the International Astronomical Union. The intention is to reproduce the functionality and algorithms of 
 the official SOFA library in a pure Java form.
 
 The responsibility for the maintenance and supply of the JSOFA library lies with the author (not the IAU SOFA Board). 
 However, The JSOFA software is provided "as is" and the author makes no warranty as to its use or performance. 
 The author does not and cannot warrant the performance or results which the user may obtain by using the JSOFA software. 
 The author makes no warranties, express or implied, as to non-infringement of third party rights, merchantability,
 or fitness for any particular purpose. In no event will the author be liable to the user for any consequential, 
 incidental, or special damages, including any lost profits or lost savings, even if the author has been advised
 of such damages, or for any claim by any third party.
 
 Other conditions of the original license (reproduced below) are carried over as applicable.
 
+----------------------------------------------------------------------

  Copyright (C) 2019
  Standards Of Fundamental Astronomy Board
  of the International Astronomical Union.

  =====================
  SOFA Software License
  =====================

  NOTICE TO USER:

  BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND
  CONDITIONS WHICH APPLY TO ITS USE.

  1. The Software is owned by the IAU SOFA Board ("SOFA").

  2. Permission is granted to anyone to use the SOFA software for any
     purpose, including commercial applications, free of charge and
     without payment of royalties, subject to the conditions and
     restrictions listed below.

  3. You (the user) may copy and distribute SOFA source code to others,
     and use and adapt its code and algorithms in your own software,
     on a world-wide, royalty-free basis.  That portion of your
     distribution that does not consist of intact and unchanged copies
     of SOFA source code files is a "derived work" that must comply
     with the following requirements:

     a) Your work shall be marked or carry a statement that it
        (i) uses routines and computations derived by you from
        software provided by SOFA under license to you; and
        (ii) does not itself constitute software provided by and/or
        endorsed by SOFA.

     b) The source code of your derived work must contain descriptions
        of how the derived work is based upon, contains and/or differs
        from the original SOFA software.

     c) The names of all routines in your derived work shall not
        include the prefix "iau" or "sofa" or trivial modifications
        thereof such as changes of case.

     d) The origin of the SOFA components of your derived work must
        not be misrepresented;  you must not claim that you wrote the
        original software, nor file a patent application for SOFA
        software or algorithms embedded in the SOFA software.

     e) These requirements must be reproduced intact in any source
        distribution and shall apply to anyone to whom you have
        granted a further right to modify the source code of your
        derived work.

     Note that, as originally distributed, the SOFA software is
     intended to be a definitive implementation of the IAU standards,
     and consequently third-party modifications are discouraged.  All
     variations, no matter how minor, must be explicitly marked as
     such, as explained above.

  4. You shall not cause the SOFA software to be brought into
     disrepute, either by misuse, or use for inappropriate tasks, or
     by inappropriate modification.

  5. The SOFA software is provided "as is" and SOFA makes no warranty
     as to its use or performance.   SOFA does not and cannot warrant
     the performance or results which the user may obtain by using the
     SOFA software.  SOFA makes no warranties, express or implied, as
     to non-infringement of third party rights, merchantability, or
     fitness for any particular purpose.  In no event will SOFA be
     liable to the user for any consequential, incidental, or special
     damages, including any lost profits or lost savings, even if a
     SOFA representative has been advised of such damages, or for any
     claim by any third party.

  6. The provision of any version of the SOFA software under the terms
     and conditions specified herein does not imply that future
     versions will also be made available under the same terms and
     conditions.

  In any published work or commercial product which uses the SOFA
  software directly, acknowledgement (see www.iausofa.org) is
  appreciated.

  Correspondence concerning SOFA software should be addressed as
  follows:

      By email:  sofa@ukho.gov.uk
      By post:   IAU SOFA Center
                 HM Nautical Almanac Office
                 UK Hydrographic Office
                 Admiralty Way, Taunton
                 Somerset, TA1 2DN
                 United Kingdom

-----------------------------------------------------------------------
Skip navigation links

Copyright © 2010-2021 JBCA, University of Manchester. All Rights Reserved.