SOFA  20200721
Functions
support function

Functions

void iauAb (double pnat[3], double v[3], double s, double bm1, double ppr[3])
 Apply aberration to transform natural direction into proper direction. More...
 
void iauAe2hd (double az, double el, double phi, double *ha, double *dec)
 Horizon to equatorial coordinates: transform azimuth and altitude to hour angle and declination. More...
 
int iauAf2a (char s, int ideg, int iamin, double asec, double *rad)
 Convert degrees, arcminutes, arcseconds to radians. More...
 
void iauApcg (double date1, double date2, double ebpv[2][3], double ehp[3], iauASTROM *astrom)
 prepare star-independent astrometry parameters More...
 
void iauApcg13 (double date1, double date2, iauASTROM *astrom)
 prepare star-independent astrometry parameters More...
 
void iauApci (double date1, double date2, double ebpv[2][3], double ehp[3], double x, double y, double s, iauASTROM *astrom)
 prepare star-independent astrometry parameters More...
 
void iauApci13 (double date1, double date2, iauASTROM *astrom, double *eo)
 prepare star-independent astrometry parameters More...
 
void iauApco (double date1, double date2, double ebpv[2][3], double ehp[3], double x, double y, double s, double theta, double elong, double phi, double hm, double xp, double yp, double sp, double refa, double refb, iauASTROM *astrom)
 prepare star-independent astrometry parameters More...
 
int iauApco13 (double utc1, double utc2, double dut1, double elong, double phi, double hm, double xp, double yp, double phpa, double tc, double rh, double wl, iauASTROM *astrom, double *eo)
 prepare star-independent astrometry parameters More...
 
void iauApcs (double date1, double date2, double pv[2][3], double ebpv[2][3], double ehp[3], iauASTROM *astrom)
 prepare star-independent astrometry parameters More...
 
void iauApcs13 (double date1, double date2, double pv[2][3], iauASTROM *astrom)
 prepare star-independent astrometry parameters More...
 
void iauAper (double theta, iauASTROM *astrom)
 update the Earth rotation angle More...
 
void iauAper13 (double ut11, double ut12, iauASTROM *astrom)
 update the Earth rotation angle More...
 
void iauApio (double sp, double theta, double elong, double phi, double hm, double xp, double yp, double refa, double refb, iauASTROM *astrom)
 prepare star-independent astrometry parameters More...
 
int iauApio13 (double utc1, double utc2, double dut1, double elong, double phi, double hm, double xp, double yp, double phpa, double tc, double rh, double wl, iauASTROM *astrom)
 prepare star-independent astrometry parameters More...
 
void iauAtci13 (double rc, double dc, double pr, double pd, double px, double rv, double date1, double date2, double *ri, double *di, double *eo)
 Transform ICRS star data, epoch J2000.0, to CIRS. More...
 
void iauAtciq (double rc, double dc, double pr, double pd, double px, double rv, iauASTROM *astrom, double *ri, double *di)
 Quick ICRS, epoch J2000.0, to CIRS transformation. More...
 
void iauAtciqn (double rc, double dc, double pr, double pd, double px, double rv, iauASTROM *astrom, int n, iauLDBODY b[], double *ri, double *di)
 Quick ICRS, epoch J2000.0, to CIRS transformation. More...
 
void iauAtciqz (double rc, double dc, iauASTROM *astrom, double *ri, double *di)
 Quick ICRS to CIRS transformation. More...
 
int iauAtco13 (double rc, double dc, double pr, double pd, double px, double rv, double utc1, double utc2, double dut1, double elong, double phi, double hm, double xp, double yp, double phpa, double tc, double rh, double wl, double *aob, double *zob, double *hob, double *dob, double *rob, double *eo)
 ICRS RA,Dec to observed place. More...
 
void iauAtic13 (double ri, double di, double date1, double date2, double *rc, double *dc, double *eo)
 Transform star RA,Dec from geocentric CIRS to ICRS astrometric. More...
 
void iauAticq (double ri, double di, iauASTROM *astrom, double *rc, double *dc)
 Quick CIRS RA,Dec to ICRS astrometric place. More...
 
void iauAticqn (double ri, double di, iauASTROM *astrom, int n, iauLDBODY b[], double *rc, double *dc)
 Quick CIRS to ICRS astrometric place transformation. More...
 
int iauAtio13 (double ri, double di, double utc1, double utc2, double dut1, double elong, double phi, double hm, double xp, double yp, double phpa, double tc, double rh, double wl, double *aob, double *zob, double *hob, double *dob, double *rob)
 CIRS RA,Dec to observed place. More...
 
void iauAtioq (double ri, double di, iauASTROM *astrom, double *aob, double *zob, double *hob, double *dob, double *rob)
 Quick CIRS to observed place transformation. More...
 
int iauAtoc13 (const char *type, double ob1, double ob2, double utc1, double utc2, double dut1, double elong, double phi, double hm, double xp, double yp, double phpa, double tc, double rh, double wl, double *rc, double *dc)
 Observed place at a groundbased site to to ICRS astrometric RA,Dec. More...
 
int iauAtoi13 (const char *type, double ob1, double ob2, double utc1, double utc2, double dut1, double elong, double phi, double hm, double xp, double yp, double phpa, double tc, double rh, double wl, double *ri, double *di)
 Observed place to CIRS. More...
 
void iauAtoiq (const char *type, double ob1, double ob2, iauASTROM *astrom, double *ri, double *di)
 Quick observed place to CIRS. More...
 
void iauBp06 (double date1, double date2, double rb[3][3], double rp[3][3], double rbp[3][3])
 Frame bias and precession, IAU 2006. More...
 
void iauBpn2xy (double rbpn[3][3], double *x, double *y)
 Extract the X,Y coordinates of the Celestial Intermediate Pole. More...
 
void iauC2i00a (double date1, double date2, double rc2i[3][3])
 Form the celestial-to-intermediate matrix for a given date. More...
 
void iauC2i00b (double date1, double date2, double rc2i[3][3])
 Form the celestial-to-intermediate matrix for a given date . More...
 
void iauC2i06a (double date1, double date2, double rc2i[3][3])
 Form the celestial-to-intermediate matrix for a given date. More...
 
void iauC2ibpn (double date1, double date2, double rbpn[3][3], double rc2i[3][3])
 Form the celestial-to-intermediate matrix for a given date. More...
 
void iauC2ixy (double date1, double date2, double x, double y, double rc2i[3][3])
 Form the celestial to intermediate-frame-of-date matrix. More...
 
void iauC2ixys (double x, double y, double s, double rc2i[3][3])
 Form the celestial to intermediate-frame-of-date matrix. More...
 
void iauC2t00a (double tta, double ttb, double uta, double utb, double xp, double yp, double rc2t[3][3])
 Form the celestial to terrestrial matrix. More...
 
void iauC2t00b (double tta, double ttb, double uta, double utb, double xp, double yp, double rc2t[3][3])
 Form the celestial to terrestrial matrix. More...
 
void iauC2t06a (double tta, double ttb, double uta, double utb, double xp, double yp, double rc2t[3][3])
 Form the celestial to terrestrial matrix. More...
 
void iauC2tcio (double rc2i[3][3], double era, double rpom[3][3], double rc2t[3][3])
 Assemble the celestial to terrestrial matrix. More...
 
void iauC2teqx (double rbpn[3][3], double gst, double rpom[3][3], double rc2t[3][3])
 Assemble the celestial to terrestrial matrix. More...
 
void iauC2tpe (double tta, double ttb, double uta, double utb, double dpsi, double deps, double xp, double yp, double rc2t[3][3])
 Form the celestial to terrestrial matrix. More...
 
void iauC2txy (double tta, double ttb, double uta, double utb, double x, double y, double xp, double yp, double rc2t[3][3])
 Form the celestial to terrestrial matrix. More...
 
int iauCal2jd (int iy, int im, int id, double *djm0, double *djm)
 Gregorian Calendar to Julian Date. More...
 
int iauD2dtf (const char *scale, int ndp, double d1, double d2, int *iy, int *im, int *id, int ihmsf[4])
 Format for output a 2-part Julian Date. More...
 
int iauDat (int iy, int im, int id, double fd, double *deltat)
 For a given UTC date, calculate delta(AT) = TAI-UTC. More...
 
int iauDtf2d (const char *scale, int iy, int im, int id, int ihr, int imn, double sec, double *d1, double *d2)
 Encode date and time fields into 2-part Julian Date. More...
 
void iauEceq06 (double date1, double date2, double dl, double db, double *dr, double *dd)
 Transformation from ecliptic coordinates (mean equinox and ecliptic of date) to ICRS RA,Dec, using the IAU 2006 precession model. More...
 
void iauEcm06 (double date1, double date2, double rm[3][3])
 ICRS equatorial to ecliptic rotation matrix, IAU 2006. More...
 
double iauEe00a (double date1, double date2)
 Equation of the equinoxes. More...
 
double iauEe00b (double date1, double date2)
 Equation of the equinoxes. More...
 
double iauEe06a (double date1, double date2)
 Equation of the equinoxes. More...
 
double iauEo06a (double date1, double date2)
 Equation of the origins. More...
 
double iauEors (double rnpb[3][3], double s)
 Equation of the origins. More...
 
double iauEpb (double dj1, double dj2)
 Julian Date to Besselian Epoch. More...
 
void iauEpb2jd (double epb, double *djm0, double *djm)
 Besselian Epoch to Julian Date. More...
 
double iauEpj (double dj1, double dj2)
 Julian Date to Julian Epoch. More...
 
void iauEpj2jd (double epj, double *djm0, double *djm)
 Julian Epoch to Julian Date. More...
 
int iauEpv00 (double date1, double date2, double pvh[2][3], double pvb[2][3])
 Earth position and velocity. More...
 
void iauEqec06 (double date1, double date2, double dr, double dd, double *dl, double *db)
 Transformation from ICRS equatorial coordinates to ecliptic coordinates. More...
 
void iauFk425 (double r1950, double d1950, double dr1950, double dd1950, double p1950, double v1950, double *r2000, double *d2000, double *dr2000, double *dd2000, double *p2000, double *v2000)
 Convert B1950.0 FK4 star catalog data to J2000.0 FK5.Notes: More...
 
void iauFk45z (double r1950, double d1950, double bepoch, double *r2000, double *d2000)
 Convert a B1950.0 FK4 star position to J2000.0 FK5.Convert a B1950.0 FK4 star position to J2000.0 FK5, assuming zero proper motion in the FK5 system. This function converts a star's catalog data from the old FK4 (Bessel-Newcomb) system to the later IAU 1976 FK5 (Fricke) system, in such a way that the FK5 proper motion is zero. Because such a star has, in general, a non-zero proper motion in the FK4 system, the routine requires the epoch at which the position in the FK4 system was determined. More...
 
void iauFk524 (double r2000, double d2000, double dr2000, double dd2000, double p2000, double v2000, double *r1950, double *d1950, double *dr1950, double *dd1950, double *p1950, double *v1950)
 Convert J2000.0 FK5 star catalog data to B1950.0 FK4.Notes: More...
 
void iauFk52h (double r5, double d5, double dr5, double dd5, double px5, double rv5, double *rh, double *dh, double *drh, double *ddh, double *pxh, double *rvh)
 Transform FK5 star data into the Hipparcos system. More...
 
void iauFk54z (double r2000, double d2000, double bepoch, double *r1950, double *d1950, double *dr1950, double *dd1950)
 Convert a J2000.0 FK5 star position to B1950.0 FK4Convert a J2000.0 FK5 star position to B1950.0 FK4, assuming zero proper motion in FK5 and parallax. Notes: More...
 
void iauFk5hip (double r5h[3][3], double s5h[3])
 FK5 to Hipparcos rotation and spin. More...
 
void iauFk5hz (double r5, double d5, double date1, double date2, double *rh, double *dh)
 Transform an FK5 star position into the Hipparcos system. More...
 
void iauFw2m (double gamb, double phib, double psi, double eps, double r[3][3])
 Form rotation matrix given the Fukushima-Williams angles. More...
 
void iauFw2xy (double gamb, double phib, double psi, double eps, double *x, double *y)
 CIP X,Y given Fukushima-Williams bias-precession-nutation angles. More...
 
int iauGc2gde (double a, double f, double xyz[3], double *elong, double *phi, double *height)
 Transform geocentric coordinates to geodetic. More...
 
int iauGd2gce (double a, double f, double elong, double phi, double height, double xyz[3])
 Transform geodetic coordinates to geocentric. More...
 
double iauGst00b (double uta, double utb)
 Greenwich apparent sidereal time. More...
 
double iauGst06 (double uta, double utb, double tta, double ttb, double rnpb[3][3])
 Greenwich apparent sidereal time. More...
 
double iauGst94 (double uta, double utb)
 Greenwich apparent sidereal time. More...
 
void iauH2fk5 (double rh, double dh, double drh, double ddh, double pxh, double rvh, double *r5, double *d5, double *dr5, double *dd5, double *px5, double *rv5)
 Transform Hipparcos star data into the FK5 (J2000.0) system. More...
 
void iauHd2ae (double ha, double dec, double phi, double *az, double *el)
 Equatorial to horizon coordinates. More...
 
double iauHd2pa (double ha, double dec, double phi)
 Parallactic angle for a given hour angle and declination.Notes: More...
 
void iauHfk5z (double rh, double dh, double date1, double date2, double *r5, double *d5, double *dr5, double *dd5)
 Transform a Hipparcos star position into FK5 J2000.0. More...
 
int iauJd2cal (double dj1, double dj2, int *iy, int *im, int *id, double *fd)
 Julian Date to Gregorian year, month, day, and fraction of a day. More...
 
int iauJdcalf (int ndp, double dj1, double dj2, int iymdf[4])
 Julian Date to Gregorian Calendar. More...
 
void iauLd (double bm, double p[3], double q[3], double e[3], double em, double dlim, double p1[3])
 Apply light deflection by a solar-system body. More...
 
void iauLdn (int n, iauLDBODY b[], double ob[3], double sc[3], double sn[3])
 apply light deflection by multiple solar-system bodies More...
 
void iauLdsun (double p[3], double e[3], double em, double p1[3])
 Deflection of starlight by the Sun. More...
 
void iauLteceq (double epj, double dl, double db, double *dr, double *dd)
 Transformation from ecliptic coordinates (mean equinox and ecliptic of date) to ICRS RA,Dec.Transformation from ecliptic coordinates (mean equinox and ecliptic of date) to ICRS RA,Dec, using a long-term precession model. 1) No assumptions are made about whether the coordinates represent starlight and embody astrometric effects such as parallax or aberration. More...
 
void iauLtecm (double epj, double rm[3][3])
 ICRS equatorial to ecliptic rotation matrix, long-term. More...
 
void iauLteqec (double epj, double dr, double dd, double *dl, double *db)
 Transformation from ICRS equatorial coordinates to ecliptic coordinates. More...
 
void iauLtp (double epj, double rp[3][3])
 Long-term precession matrix.Notes: More...
 
void iauLtpb (double epj, double rpb[3][3])
 Long-term precession matrix, including ICRS frame bias.Notes: More...
 
void iauLtpecl (double epj, double vec[3])
 Long-term precession of the ecliptic.Notes: More...
 
void iauNum00a (double date1, double date2, double rmatn[3][3])
 Form the matrix of nutation for a given date. More...
 
void iauNum00b (double date1, double date2, double rmatn[3][3])
 Form the matrix of nutation for a given date. More...
 
void iauNum06a (double date1, double date2, double rmatn[3][3])
 Form the matrix of nutation for a given date. More...
 
void iauNumat (double epsa, double dpsi, double deps, double rmatn[3][3])
 Form the matrix of nutation. More...
 
void iauNutm80 (double date1, double date2, double rmatn[3][3])
 Form the matrix of nutation for a given date,. More...
 
void iauPb06 (double date1, double date2, double *bzeta, double *bz, double *btheta)
 forms three Euler angles which implement general precession from epoch J2000.0, More...
 
int iauPlan94 (double date1, double date2, int np, double pv[2][3])
 Approximate heliocentric position and velocity of a planet. More...
 
void iauPmat00 (double date1, double date2, double rbp[3][3])
 Precession matrix from GCRS to specified date. More...
 
void iauPmat06 (double date1, double date2, double rbp[3][3])
 Precession matrix from GCRS to a specified date. More...
 
void iauPmat76 (double date1, double date2, double rmatp[3][3])
 Precession matrix from J2000.0 to a specified date. More...
 
void iauPmpx (double rc, double dc, double pr, double pd, double px, double rv, double pmt, double pob[3], double pco[3])
 Proper motion and parallax. More...
 
int iauPmsafe (double ra1, double dec1, double pmr1, double pmd1, double px1, double rv1, double ep1a, double ep1b, double ep2a, double ep2b, double *ra2, double *dec2, double *pmr2, double *pmd2, double *px2, double *rv2)
 Star proper motion. More...
 
void iauPn00 (double date1, double date2, double dpsi, double deps, double *epsa, double rb[3][3], double rp[3][3], double rbp[3][3], double rn[3][3], double rbpn[3][3])
 Precession-nutation, IAU 2000 model. More...
 
void iauPn00a (double date1, double date2, double *dpsi, double *deps, double *epsa, double rb[3][3], double rp[3][3], double rbp[3][3], double rn[3][3], double rbpn[3][3])
 Precession-nutation, IAU 2000A model. More...
 
void iauPn00b (double date1, double date2, double *dpsi, double *deps, double *epsa, double rb[3][3], double rp[3][3], double rbp[3][3], double rn[3][3], double rbpn[3][3])
 Precession-nutation, IAU 2000B model. More...
 
void iauPn06 (double date1, double date2, double dpsi, double deps, double *epsa, double rb[3][3], double rp[3][3], double rbp[3][3], double rn[3][3], double rbpn[3][3])
 Precession-nutation, IAU 2006 model. More...
 
void iauPn06a (double date1, double date2, double *dpsi, double *deps, double *epsa, double rb[3][3], double rp[3][3], double rbp[3][3], double rn[3][3], double rbpn[3][3])
 Precession-nutation, IAU 2006/2000A models. More...
 
void iauPnm00a (double date1, double date2, double rbpn[3][3])
 Form the matrix of precession-nutation. More...
 
void iauPnm00b (double date1, double date2, double rbpn[3][3])
 Form the matrix of precession-nutation. More...
 
void iauPnm06a (double date1, double date2, double rnpb[3][3])
 Form the matrix of precession-nutation. More...
 
void iauPnm80 (double date1, double date2, double rmatpn[3][3])
 Form the matrix of precession/nutation. More...
 
void iauPom00 (double xp, double yp, double sp, double rpom[3][3])
 Form the matrix of polar motion. More...
 
int iauPvstar (double pv[2][3], double *ra, double *dec, double *pmr, double *pmd, double *px, double *rv)
 Convert star position+velocity vector to catalog coordinates. More...
 
void iauPvtob (double elong, double phi, double hm, double xp, double yp, double sp, double theta, double pv[2][3])
 Position and velocity of a terrestrial observing station. More...
 
void iauRefco (double phpa, double tc, double rh, double wl, double *refa, double *refb)
 Determine constants in the atmospheric refraction model. More...
 
double iauS00a (double date1, double date2)
 The CIO locator using the IA2000A precission-nutation model. More...
 
double iauS00b (double date1, double date2)
 The CIO locator using the IAU 2000B precission-nutation model. More...
 
double iauS06a (double date1, double date2)
 The CIO locator using IAU2006 precession and IAU 2000A nutation models. More...
 
int iauStarpm (double ra1, double dec1, double pmr1, double pmd1, double px1, double rv1, double ep1a, double ep1b, double ep2a, double ep2b, double *ra2, double *dec2, double *pmr2, double *pmd2, double *px2, double *rv2)
 Star proper motion. More...
 
int iauStarpv (double ra, double dec, double pmr, double pmd, double px, double rv, double pv[2][3])
 Convert star catalog coordinates to position+velocity vector. More...
 
int iauTf2a (char s, int ihour, int imin, double sec, double *rad)
 Convert hours, minutes, seconds to radians. More...
 
int iauTf2d (char s, int ihour, int imin, double sec, double *days)
 Convert hours, minutes, seconds to days. More...
 
int iauTporv (double xi, double eta, double v[3], double v01[3], double v02[3])
 In the tangent plane projection, determine the direction cosines of the tangent point. More...
 
void iauTpsts (double xi, double eta, double a0, double b0, double *a, double *b)
 In the tangent plane projection, solve for the spherical coordinates of the star. More...
 
void iauTpstv (double xi, double eta, double v0[3], double v[3])
 In the tangent plane projection, solve for the direction cosines of the star. More...
 
int iauTpxes (double a, double b, double a0, double b0, double *xi, double *eta)
 In the tangent plane projection, solve for the star's rectangular coordinates in the tangent plane.Notes: More...
 
int iauTpxev (double v[3], double v0[3], double *xi, double *eta)
 In the tangent plane projection, solve for the star's rectangular coordinates in the tangent plane.In the tangent plane projection, given celestial direction cosines for a star and the tangent point, solve for the star's rectangular coordinates in the tangent plane. More...
 
void iauXys00a (double date1, double date2, double *x, double *y, double *s)
 Compute X,Y coordinates of the CIP and CIO locator. More...
 
void iauXys00b (double date1, double date2, double *x, double *y, double *s)
 Compute X,Y coordinates of the CIP and CIO locator. More...
 
void iauXys06a (double date1, double date2, double *x, double *y, double *s)
 Compute X,Y coordinates of the CIP and CIO locator. More...
 

Detailed Description

Function Documentation

◆ iauAb()

void iauAb ( double  pnat[3],
double  v[3],
double  s,
double  bm1,
double  ppr[3] 
)

Apply aberration to transform natural direction into proper direction.

1) The algorithm is based on Expr. (7.40) in the Explanatory Supplement (Urban & Seidelmann 2013), but with the following changes:

o Rigorous rather than approximate normalization is applied.

o The gravitational potential term from Expr. (7) in Klioner (2003) is added, taking into account only the Sun's contribution. This has a maximum effect of about 0.4 microarcsecond.

2) In almost all cases, the maximum accuracy will be limited by the supplied velocity. For example, if the SOFA iauEpv00 function is used, errors of up to 5 microarcseconds could occur.

References:

Urban, S. & Seidelmann, P. K. (eds), Explanatory Supplement to the Astronomical Almanac, 3rd ed., University Science Books (2013).

Klioner, Sergei A., "A practical relativistic model for micro- arcsecond astrometry in space", Astr. J. 125, 1580-1597 (2003).

Parameters
[in]pnatnatural direction to the source (unit vector)
[in]vobserver barycentric velocity in units of c
[in]sdistance between the Sun and the observer (au)
[in]bm1sqrt(1-|v|^2): reciprocal of Lorenz factor
[out]pprproper direction to source (unit vector)
Here is the call graph for this function:

◆ iauAe2hd()

int iauAe2hd ( double  az,
double  el,
double  phi,
double *  ha,
double *  dec 
)

Horizon to equatorial coordinates: transform azimuth and altitude to hour angle and declination.

1) All the arguments are angles in radians.

2) The sign convention for azimuth is north zero, east +pi/2.

3) HA is returned in the range +/-pi. Declination is returned in the range +/-pi/2.

4) The latitude phi is pi/2 minus the angle between the Earth's rotation axis and the adopted zenith. In many applications it will be sufficient to use the published geodetic latitude of the site. In very precise (sub-arcsecond) applications, phi can be corrected for polar motion.

5) The azimuth az must be with respect to the rotational north pole, as opposed to the ITRS pole, and an azimuth with respect to north on a map of the Earth's surface will need to be adjusted for polar motion if sub-arcsecond accuracy is required.

6) Should the user wish to work with respect to the astronomical zenith rather than the geodetic zenith, phi will need to be adjusted for deflection of the vertical (often tens of arcseconds), and the zero point of ha will also be affected.

7) The transformation is the same as Ve = Ry(phi-pi/2)*Rz(pi)*Vh, where Ve and Vh are lefthanded unit vectors in the (ha,dec) and (az,el) systems respectively and Rz and Ry are rotations about first the z-axis and then the y-axis. (n.b. Rz(pi) simply reverses the signs of the x and y components.) For efficiency, the algorithm is written out rather than calling other utility functions. For applications that require even greater efficiency, additional savings are possible if constant terms such as functions of latitude are computed once and for all.

8) Again for efficiency, no range checking of arguments is carried out.

Parameters
[in]azazimuth
[in]elalittude (informally, elevation)
[in]phisite latitude
[out]hahour angle (local)
[out]decdeclination

◆ iauAf2a()

int iauAf2a ( char  s,
int  ideg,
int  iamin,
double  asec,
double *  rad 
)

Convert degrees, arcminutes, arcseconds to radians.

1) The result is computed even if any of the range checks fail.

2) Negative ideg, iamin and/or asec produce a warning status, but the absolute value is used in the conversion.

3) If there are multiple errors, the status value reflects only the first, the smallest taking precedence.

Parameters
[in]ssign: '-' = negative, otherwise positive
[in]idegdegrees
[in]iaminarcminutes
[in]asecarcseconds
[out]rdangle in radians
Returns
0 = OK 1 = ideg outside range 0-359 2 = iamin outside range 0-59 3 = asec outside range 0-59.999...

◆ iauApcg()

void iauApcg ( double  date1,
double  date2,
double  ebpv[2][3],
double  ehp[3],
iauASTROM astrom 
)

prepare star-independent astrometry parameters

For a geocentric observer, prepare star-independent astrometry parameters for transformations between ICRS and GCRS coordinates. The Earth ephemeris is supplied by the caller.

The parameters produced by this function are required in the parallax, light deflection and aberration parts of the astrometric transformation chain.

Parameters
[in]date1TDB as a 2-part Julian Date
[in]date2TDB as a 2-part Julian Date
[in]ebpvEarth barycentric pos/vel (au, au/day)
[in]ehpEarth heliocentric position (au)
[out]astromstar-independent astrometry parameters:
[out]pmtPM time interval (SSB, Julian years)
[out]ebSSB to observer (vector, au)
[out]ehSun to observer (unit vector)
[out]emdistance from Sun to observer (au)
[out]vbarycentric observer velocity (vector, c)
[out]bm1sqrt(1-|v|^2): reciprocal of Lorenz factor
[out]bpnbias-precession-nutation matrix
[out]alongunchanged
[out]xplunchanged
[out]yplunchanged
[out]sphiunchanged
[out]cphiunchanged
[out]diurabunchanged
[out]eralunchanged
[out]refaunchanged
[out]refbunchanged

1) The TDB date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TDB)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience. For most applications of this function the choice will not be at all critical.

TT can be used instead of TDB without any significant impact on accuracy.

2) All the vectors are with respect to BCRS axes.

3) This is one of several functions that inserts into the astrom structure star-independent parameters needed for the chain of astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed.

The various functions support different classes of observer and portions of the transformation chain:

 functions         observer        transformation

iauApcg iauApcg13 geocentric ICRS <-> GCRS iauApci iauApci13 terrestrial ICRS <-> CIRS iauApco iauApco13 terrestrial ICRS <-> observed iauApcs iauApcs13 space ICRS <-> GCRS iauAper iauAper13 terrestrial update Earth rotation iauApio iauApio13 terrestrial CIRS <-> observed

Those with names ending in "13" use contemporary SOFA models to compute the various ephemerides. The others accept ephemerides supplied by the caller.

The transformation from ICRS to GCRS covers space motion, parallax, light deflection, and aberration. From GCRS to CIRS comprises frame bias and precession-nutation. From CIRS to observed takes account of Earth rotation, polar motion, diurnal aberration and parallax (unless subsumed into the ICRS <-> GCRS transformation), and atmospheric refraction.

4) The context structure astrom produced by this function is used by iauAtciq* and iauAticq*.

Here is the call graph for this function:

◆ iauApcg13()

void iauApcg13 ( double  date1,
double  date2,
iauASTROM astrom 
)

prepare star-independent astrometry parameters

For a geocentric observer, prepare star-independent astrometry parameters for transformations between ICRS and GCRS coordinates. The caller supplies the date, and SOFA models are used to predict the Earth ephemeris.

The parameters produced by this function are required in the parallax, light deflection and aberration parts of the astrometric transformation chain.

Parameters
[in]date1TDB as a 2-part...
[in]date2...Julian Date (Note 1)
[out]astrom* star-independent astrometry parameters:
[out]pmtPM time interval (SSB, Julian years)
[out]ebSSB to observer (vector, au)
[out]ehSun to observer (unit vector)
[out]emdistance from Sun to observer (au)
[out]vbarycentric observer velocity (vector, c)
[out]bm1sqrt(1-|v|^2): reciprocal of Lorenz factor
[out]bpnbias-precession-nutation matrix
[out]alongunchanged
[out]xplunchanged
[out]yplunchanged
[out]sphiunchanged
[out]cphiunchanged
[out]diurabunchanged
[out]eralunchanged
[out]refaunchanged
[out]refbunchanged

Notes:

1) The TDB date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TDB)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience. For most applications of this function the choice will not be at all critical.

TT can be used instead of TDB without any significant impact on accuracy.

2) All the vectors are with respect to BCRS axes.

3) In cases where the caller wishes to supply his own Earth ephemeris, the function iauApcg can be used instead of the present function.

4) This is one of several functions that inserts into the astrom structure star-independent parameters needed for the chain of astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed.

The various functions support different classes of observer and portions of the transformation chain:

 functions         observer        transformation

iauApcg iauApcg13 geocentric ICRS <-> GCRS iauApci iauApci13 terrestrial ICRS <-> CIRS iauApco iauApco13 terrestrial ICRS <-> observed iauApcs iauApcs13 space ICRS <-> GCRS iauAper iauAper13 terrestrial update Earth rotation iauApio iauApio13 terrestrial CIRS <-> observed

Those with names ending in "13" use contemporary SOFA models to compute the various ephemerides. The others accept ephemerides supplied by the caller.

The transformation from ICRS to GCRS covers space motion, parallax, light deflection, and aberration. From GCRS to CIRS comprises frame bias and precession-nutation. From CIRS to observed takes account of Earth rotation, polar motion, diurnal aberration and parallax (unless subsumed into the ICRS <-> GCRS transformation), and atmospheric refraction.

5) The context structure astrom produced by this function is used by iauAtciq* and iauAticq*.

Here is the call graph for this function:

◆ iauApci()

void iauApci ( double  date1,
double  date2,
double  ebpv[2][3],
double  ehp[3],
double  x,
double  y,
double  s,
iauASTROM astrom 
)

prepare star-independent astrometry parameters

For a terrestrial observer, prepare star-independent astrometry parameters for transformations between ICRS and geocentric CIRS coordinates. The Earth ephemeris and CIP/CIO are supplied by the caller.

The parameters produced by this function are required in the parallax, light deflection, aberration, and bias-precession-nutation parts of the astrometric transformation chain.

Parameters
[in]date1TDB as a 2-part Julian Date
[in]date2TDB as a 2-part Julian Date (Note 1)
[in]ebpvEarth barycentric position/velocity (au, au/day)
[in]ehpEarth heliocentric position (au)
[in]x,yCIP X,Y (components of unit vector)
[in]sthe CIO locator s (radians)
[out]astromstar-independent astrometry parameters:
[out]pmtPM time interval (SSB, Julian years)
[out]ebSSB to observer (vector, au)
[out]ehSun to observer (unit vector)
[out]emdistance from Sun to observer (au)
[out]vbarycentric observer velocity (vector, c)
[out]bm1sqrt(1-|v|^2): reciprocal of Lorenz factor
[out]bpnbias-precession-nutation matrix
[out]alongunchanged
[out]xplunchanged
[out]yplunchanged
[out]sphiunchanged
[out]cphiunchanged
[out]diurabunchanged
[out]eralunchanged
[out]refaunchanged
[out]refbunchanged

Notes:

1) The TDB date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TDB)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience. For most applications of this function the choice will not be at all critical.

TT can be used instead of TDB without any significant impact on accuracy.

2) All the vectors are with respect to BCRS axes.

3) In cases where the caller does not wish to provide the Earth ephemeris and CIP/CIO, the function iauApci13 can be used instead of the present function. This computes the required quantities using other SOFA functions.

4) This is one of several functions that inserts into the astrom structure star-independent parameters needed for the chain of astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed.

The various functions support different classes of observer and portions of the transformation chain:

 functions         observer        transformation

iauApcg iauApcg13 geocentric ICRS <-> GCRS iauApci iauApci13 terrestrial ICRS <-> CIRS iauApco iauApco13 terrestrial ICRS <-> observed iauApcs iauApcs13 space ICRS <-> GCRS iauAper iauAper13 terrestrial update Earth rotation iauApio iauApio13 terrestrial CIRS <-> observed

Those with names ending in "13" use contemporary SOFA models to compute the various ephemerides. The others accept ephemerides supplied by the caller.

The transformation from ICRS to GCRS covers space motion, parallax, light deflection, and aberration. From GCRS to CIRS comprises frame bias and precession-nutation. From CIRS to observed takes account of Earth rotation, polar motion, diurnal aberration and parallax (unless subsumed into the ICRS <-> GCRS transformation), and atmospheric refraction.

5) The context structure astrom produced by this function is used by iauAtciq* and iauAticq*.

Here is the call graph for this function:

◆ iauApci13()

void iauApci13 ( double  date1,
double  date2,
iauASTROM astrom,
double *  eo 
)

prepare star-independent astrometry parameters

For a terrestrial observer, prepare star-independent astrometry parameters for transformations between ICRS and geocentric CIRS coordinates. The caller supplies the date, and SOFA models are used to predict the Earth ephemeris and CIP/CIO.

The parameters produced by this function are required in the parallax, light deflection, aberration, and bias-precession-nutation parts of the astrometric transformation chain.

Parameters
[in]date1TDB as a 2-part Julian Date
[in]date2TDB as 2 2-part Julian Date (Note 1)
[out]astromstar-independent astrometry parameters:
[out]pmtPM time interval (SSB, Julian years)
[out]ebSSB to observer (vector, au)
[out]ehSun to observer (unit vector)
[out]emdistance from Sun to observer (au)
[out]vbarycentric observer velocity (vector, c)
[out]bm1sqrt(1-|v|^2): reciprocal of Lorenz factor
[out]bpnbias-precession-nutation matrix
[out]alongunchanged
[out]xplunchanged
[out]yplunchanged
[out]sphiunchanged
[out]cphiunchanged
[out]diurabunchanged
[out]eralunchanged
[out]refaunchanged
[out]refbunchanged
[out]eoequation of the origins (ERA-GST)

Notes:

1) The TDB date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TDB)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience. For most applications of this function the choice will not be at all critical.

TT can be used instead of TDB without any significant impact on accuracy.

2) All the vectors are with respect to BCRS axes.

3) In cases where the caller wishes to supply his own Earth ephemeris and CIP/CIO, the function iauApci can be used instead of the present function.

4) This is one of several functions that inserts into the astrom structure star-independent parameters needed for the chain of astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed.

The various functions support different classes of observer and portions of the transformation chain:

 functions         observer        transformation

iauApcg iauApcg13 geocentric ICRS <-> GCRS iauApci iauApci13 terrestrial ICRS <-> CIRS iauApco iauApco13 terrestrial ICRS <-> observed iauApcs iauApcs13 space ICRS <-> GCRS iauAper iauAper13 terrestrial update Earth rotation iauApio iauApio13 terrestrial CIRS <-> observed

Those with names ending in "13" use contemporary SOFA models to compute the various ephemerides. The others accept ephemerides supplied by the caller.

The transformation from ICRS to GCRS covers space motion, parallax, light deflection, and aberration. From GCRS to CIRS comprises frame bias and precession-nutation. From CIRS to observed takes account of Earth rotation, polar motion, diurnal aberration and parallax (unless subsumed into the ICRS <-> GCRS transformation), and atmospheric refraction.

5) The context structure astrom produced by this function is used by iauAtciq* and iauAticq*.

Here is the call graph for this function:

◆ iauApco()

void iauApco ( double  date1,
double  date2,
double  ebpv[2][3],
double  ehp[3],
double  x,
double  y,
double  s,
double  theta,
double  elong,
double  phi,
double  hm,
double  xp,
double  yp,
double  sp,
double  refa,
double  refb,
iauASTROM astrom 
)

prepare star-independent astrometry parameters

For a terrestrial observer, prepare star-independent astrometry parameters for transformations between ICRS and observed coordinates. The caller supplies the Earth ephemeris, the Earth rotation information and the refraction constants as well as the site coordinates.

Parameters
[in]date1TDB as a 2-part Julian Date
[in]date2TDB as a 2-part Julian Date (Note 1)
[in]ebpvEarth barycentric PV (au, au/day, Note 2)
[in]ehpEarth heliocentric P (au, Note 2)
[in]x,yCIP X,Y (components of unit vector)
[in]sthe CIO locator s (radians)
[in]thetaEarth rotation angle (radians)
[in]elonglongitude (radians, east +ve, Note 3)
[in]philatitude (geodetic, radians, Note 3)
[in]hmheight above ellipsoid (m, geodetic, Note 3)
[in]xp,yppolar motion coordinates (radians, Note 4)
[in]spthe TIO locator s' (radians, Note 4)
[in]refarefraction constant A (radians, Note 5)
[in]refbrefraction constant B (radians, Note 5)
[out]astromstar-independent astrometry parameters:
[out]pmtPM time interval (SSB, Julian years)
[out]ebSSB to observer (vector, au)
[out]ehSun to observer (unit vector)
[out]emdistance from Sun to observer (au)
[out]vbarycentric observer velocity (vector, c)
[out]bm1sqrt(1-|v|^2): reciprocal of Lorenz factor
[out]bpnbias-precession-nutation matrix
[out]alonglongitude + s' (radians)
[out]xplpolar motion xp wrt local meridian (radians)
[out]yplpolar motion yp wrt local meridian (radians)
[out]sphisine of geodetic latitude
[out]cphicosine of geodetic latitude
[out]diurabmagnitude of diurnal aberration vector
[out]eral"local" Earth rotation angle (radians)
[out]refarefraction constant A (radians)
[out]refbrefraction constant B (radians)

Notes:

1) The TDB date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TDB)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience. For most applications of this function the choice will not be at all critical.

TT can be used instead of TDB without any significant impact on accuracy.

2) The vectors eb, eh, and all the astrom vectors, are with respect to BCRS axes.

3) The geographical coordinates are with respect to the WGS84 reference ellipsoid. TAKE CARE WITH THE LONGITUDE SIGN CONVENTION: the longitude required by the present function is right-handed, i.e. east-positive, in accordance with geographical convention.

4) xp and yp are the coordinates (in radians) of the Celestial Intermediate Pole with respect to the International Terrestrial Reference System (see IERS Conventions), measured along the meridians 0 and 90 deg west respectively. sp is the TIO locator s', in radians, which positions the Terrestrial Intermediate Origin on the equator. For many applications, xp, yp and (especially) sp can be set to zero.

Internally, the polar motion is stored in a form rotated onto the local meridian.

5) The refraction constants refa and refb are for use in a dZ = A*tan(Z)+B*tan^3(Z) model, where Z is the observed (i.e. refracted) zenith distance and dZ is the amount of refraction.

6) It is advisable to take great care with units, as even unlikely values of the input parameters are accepted and processed in accordance with the models used.

7) In cases where the caller does not wish to provide the Earth Ephemeris, the Earth rotation information and refraction constants, the function iauApco13 can be used instead of the present function. This starts from UTC and weather readings etc. and computes suitable values using other SOFA functions.

8) This is one of several functions that inserts into the astrom structure star-independent parameters needed for the chain of astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed.

The various functions support different classes of observer and portions of the transformation chain:

 functions         observer        transformation

iauApcg iauApcg13 geocentric ICRS <-> GCRS iauApci iauApci13 terrestrial ICRS <-> CIRS iauApco iauApco13 terrestrial ICRS <-> observed iauApcs iauApcs13 space ICRS <-> GCRS iauAper iauAper13 terrestrial update Earth rotation iauApio iauApio13 terrestrial CIRS <-> observed

Those with names ending in "13" use contemporary SOFA models to compute the various ephemerides. The others accept ephemerides supplied by the caller.

The transformation from ICRS to GCRS covers space motion, parallax, light deflection, and aberration. From GCRS to CIRS comprises frame bias and precession-nutation. From CIRS to observed takes account of Earth rotation, polar motion, diurnal aberration and parallax (unless subsumed into the ICRS <-> GCRS transformation), and atmospheric refraction.

9) The context structure astrom produced by this function is used by iauAtioq, iauAtoiq, iauAtciq* and iauAticq*.

Here is the call graph for this function:

◆ iauApco13()

int iauApco13 ( double  utc1,
double  utc2,
double  dut1,
double  elong,
double  phi,
double  hm,
double  xp,
double  yp,
double  phpa,
double  tc,
double  rh,
double  wl,
iauASTROM astrom,
double *  eo 
)

prepare star-independent astrometry parameters

For a terrestrial observer, prepare star-independent astrometry parameters for transformations between ICRS and observed coordinates. The caller supplies UTC, site coordinates, ambient air conditions and observing wavelength, and SOFA models are used to obtain the Earth ephemeris, CIP/CIO and refraction constants.

The parameters produced by this function are required in the parallax, light deflection, aberration, and bias-precession-nutation parts of the ICRS/CIRS transformations.

Parameters
[in]utc1UTC as a 2-part...
[in]utc2...quasi Julian Date (Notes 1,2)
[in]dut1UT1-UTC (seconds, Note 3)
[in]elonglongitude (radians, east +ve, Note 4)
[in]philatitude (geodetic, radians, Note 4)
[in]hmheight above ellipsoid (m, geodetic, Notes 4,6)
[in]xp,yppolar motion coordinates (radians, Note 5)
[in]phpapressure at the observer (hPa = mB, Note 6)
[in]tcambient temperature at the observer (deg C)
[in]rhrelative humidity at the observer (range 0-1)
[in]wlwavelength (micrometers, Note 7)
[out]astromstar-independent astrometry parameters:
[out]pmtPM time interval (SSB, Julian years)
[out]ebSSB to observer (vector, au)
[out]ehSun to observer (unit vector)
[out]emdistance from Sun to observer (au)
[out]vbarycentric observer velocity (vector, c)
[out]bm1sqrt(1-|v|^2): reciprocal of Lorenz factor
[out]bpnbias-precession-nutation matrix
[out]alonglongitude + s' (radians)
[out]xplpolar motion xp wrt local meridian (radians)
[out]yplpolar motion yp wrt local meridian (radians)
[out]sphisine of geodetic latitude
[out]cphicosine of geodetic latitude
[out]diurabmagnitude of diurnal aberration vector
[out]eral"local" Earth rotation angle (radians)
[out]refarefraction constant A (radians)
[out]refbrefraction constant B (radians)
[out]eoequation of the origins (ERA-GST)
Returns
+1 = dubious year (Note 2) 0 = OK -1 = unacceptable date Notes:

1) utc1+utc2 is quasi Julian Date (see Note 2), apportioned in any convenient way between the two arguments, for example where utc1 is the Julian Day Number and utc2 is the fraction of a day.

However, JD cannot unambiguously represent UTC during a leap second unless special measures are taken. The convention in the present function is that the JD day represents UTC days whether the length is 86399, 86400 or 86401 SI seconds.

Applications should use the function iauDtf2d to convert from calendar date and time of day into 2-part quasi Julian Date, as it implements the leap-second-ambiguity convention just described.

2) The warning status "dubious year" flags UTCs that predate the introduction of the time scale or that are too far in the future to be trusted. See iauDat for further details.

3) UT1-UTC is tabulated in IERS bulletins. It increases by exactly one second at the end of each positive UTC leap second, introduced in order to keep UT1-UTC within +/- 0.9s. n.b. This practice is under review, and in the future UT1-UTC may grow essentially without limit.

4) The geographical coordinates are with respect to the WGS84 reference ellipsoid. TAKE CARE WITH THE LONGITUDE SIGN: the longitude required by the present function is east-positive (i.e. right-handed), in accordance with geographical convention.

5) The polar motion xp,yp can be obtained from IERS bulletins. The values are the coordinates (in radians) of the Celestial Intermediate Pole with respect to the International Terrestrial Reference System (see IERS Conventions 2003), measured along the meridians 0 and 90 deg west respectively. For many applications, xp and yp can be set to zero.

Internally, the polar motion is stored in a form rotated onto the local meridian.

6) If hm, the height above the ellipsoid of the observing station in meters, is not known but phpa, the pressure in hPa (=mB), is available, an adequate estimate of hm can be obtained from the expression

  hm = -29.3 * tsl * log ( phpa / 1013.25 );

where tsl is the approximate sea-level air temperature in K (See Astrophysical Quantities, C.W.Allen, 3rd edition, section 52). Similarly, if the pressure phpa is not known, it can be estimated from the height of the observing station, hm, as follows:

  phpa = 1013.25 * exp ( -hm / ( 29.3 * tsl ) );

Note, however, that the refraction is nearly proportional to the pressure and that an accurate phpa value is important for precise work.

7) The argument wl specifies the observing wavelength in micrometers. The transition from optical to radio is assumed to occur at 100 micrometers (about 3000 GHz).

8) It is advisable to take great care with units, as even unlikely values of the input parameters are accepted and processed in accordance with the models used.

9) In cases where the caller wishes to supply his own Earth ephemeris, Earth rotation information and refraction constants, the function iauApco can be used instead of the present function.

10) This is one of several functions that inserts into the astrom structure star-independent parameters needed for the chain of astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed.

The various functions support different classes of observer and portions of the transformation chain:

functions         observer        transformation

iauApcg iauApcg13 geocentric ICRS <-> GCRS iauApci iauApci13 terrestrial ICRS <-> CIRS iauApco iauApco13 terrestrial ICRS <-> observed iauApcs iauApcs13 space ICRS <-> GCRS iauAper iauAper13 terrestrial update Earth rotation iauApio iauApio13 terrestrial CIRS <-> observed

Those with names ending in "13" use contemporary SOFA models to compute the various ephemerides. The others accept ephemerides supplied by the caller.

The transformation from ICRS to GCRS covers space motion, parallax, light deflection, and aberration. From GCRS to CIRS comprises frame bias and precession-nutation. From CIRS to observed takes account of Earth rotation, polar motion, diurnal aberration and parallax (unless subsumed into the ICRS <-> GCRS transformation), and atmospheric refraction.

11) The context structure astrom produced by this function is used by iauAtioq, iauAtoiq, iauAtciq* and iauAticq*.

Here is the call graph for this function:

◆ iauApcs()

void iauApcs ( double  date1,
double  date2,
double  pv[2][3],
double  ebpv[2][3],
double  ehp[3],
iauASTROM astrom 
)

prepare star-independent astrometry parameters

file apcs.c

For an observer whose geocentric position and velocity are known, prepare star-independent astrometry parameters for transformations between ICRS and GCRS. The Earth ephemeris is supplied by the caller.

The parameters produced by this function are required in the space motion, parallax, light deflection and aberration parts of the astrometric transformation chain.

Parameters
[in]date1TDB as a 2-part Julian Date
[in]date2TDB as a 2-part Julian Date (Note 1)
[in]pvobserver's geocentric pos/vel (m, m/s)
[in]ebpvEarth barycentric PV (au, au/day)
[in]ehpEarth heliocentric P (au)
[out]astromstar-independent astrometry parameters:
[out]pmtPM time interval (SSB, Julian years)
[out]ebSSB to observer (vector, au)
[out]ehSun to observer (unit vector)
[out]emdistance from Sun to observer (au)
[out]vbarycentric observer velocity (vector, c)
[out]bm1sqrt(1-|v|^2): reciprocal of Lorenz factor
[out]bpnbias-precession-nutation matrix
[out]alongunchanged
[out]xplunchanged
[out]yplunchanged
[out]sphiunchanged
[out]cphiunchanged
[out]diurabunchanged
[out]eralunchanged
[out]refaunchanged
[out]refbunchanged

Notes:

1) The TDB date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TDB)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience. For most applications of this function the choice will not be at all critical.

TT can be used instead of TDB without any significant impact on accuracy.

2) All the vectors are with respect to BCRS axes.

3) Providing separate arguments for (i) the observer's geocentric position and velocity and (ii) the Earth ephemeris is done for convenience in the geocentric, terrestrial and Earth orbit cases. For deep space applications it maybe more convenient to specify zero geocentric position and velocity and to supply the observer's position and velocity information directly instead of with respect to the Earth. However, note the different units: m and m/s for the geocentric vectors, au and au/day for the heliocentric and barycentric vectors.

4) In cases where the caller does not wish to provide the Earth ephemeris, the function iauApcs13 can be used instead of the present function. This computes the Earth ephemeris using the SOFA function iauEpv00.

5) This is one of several functions that inserts into the astrom structure star-independent parameters needed for the chain of astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed.

The various functions support different classes of observer and portions of the transformation chain:

 functions         observer        transformation

iauApcg iauApcg13 geocentric ICRS <-> GCRS iauApci iauApci13 terrestrial ICRS <-> CIRS iauApco iauApco13 terrestrial ICRS <-> observed iauApcs iauApcs13 space ICRS <-> GCRS iauAper iauAper13 terrestrial update Earth rotation iauApio iauApio13 terrestrial CIRS <-> observed

Those with names ending in "13" use contemporary SOFA models to compute the various ephemerides. The others accept ephemerides supplied by the caller.

The transformation from ICRS to GCRS covers space motion, parallax, light deflection, and aberration. From GCRS to CIRS comprises frame bias and precession-nutation. From CIRS to observed takes account of Earth rotation, polar motion, diurnal aberration and parallax (unless subsumed into the ICRS <-> GCRS transformation), and atmospheric refraction.

6) The context structure astrom produced by this function is used by iauAtciq* and iauAticq*.

Here is the call graph for this function:

◆ iauApcs13()

void iauApcs13 ( double  date1,
double  date2,
double  pv[2][3],
iauASTROM astrom 
)

prepare star-independent astrometry parameters

For an observer whose geocentric position and velocity are known, prepare star-independent astrometry parameters for transformations between ICRS and GCRS. The Earth ephemeris is from SOFA models.

The parameters produced by this function are required in the space motion, parallax, light deflection and aberration parts of the astrometric transformation chain.

Parameters
[in]date1TDB as a 2-part Julian Date
[in]date2TDB as a 2-part Julian Date (Note 1)
[in]pvobserver's geocentric pos/vel (Note 3)
[out]astromstar-independent astrometry parameters:
[out]pmtPM time interval (SSB, Julian years)
[out]ebSSB to observer (vector, au)
[out]ehSun to observer (unit vector)
[out]emdistance from Sun to observer (au)
[out]vbarycentric observer velocity (vector, c)
[out]bm1sqrt(1-|v|^2): reciprocal of Lorenz factor
[out]bpnbias-precession-nutation matrix
[out]alongunchanged
[out]xplunchanged
[out]yplunchanged
[out]sphiunchanged
[out]cphiunchanged
[out]diurabunchanged
[out]eralunchanged
[out]refaunchanged
[out]refbunchanged Notes:

1) The TDB date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TDB)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience. For most applications of this function the choice will not be at all critical.

TT can be used instead of TDB without any significant impact on accuracy.

2) All the vectors are with respect to BCRS axes.

3) The observer's position and velocity pv are geocentric but with respect to BCRS axes, and in units of m and m/s. No assumptions are made about proximity to the Earth, and the function can be used for deep space applications as well as Earth orbit and terrestrial.

4) In cases where the caller wishes to supply his own Earth ephemeris, the function iauApcs can be used instead of the present function.

5) This is one of several functions that inserts into the astrom structure star-independent parameters needed for the chain of astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed.

The various functions support different classes of observer and portions of the transformation chain:

 functions         observer        transformation

iauApcg iauApcg13 geocentric ICRS <-> GCRS iauApci iauApci13 terrestrial ICRS <-> CIRS iauApco iauApco13 terrestrial ICRS <-> observed iauApcs iauApcs13 space ICRS <-> GCRS iauAper iauAper13 terrestrial update Earth rotation iauApio iauApio13 terrestrial CIRS <-> observed

Those with names ending in "13" use contemporary SOFA models to compute the various ephemerides. The others accept ephemerides supplied by the caller.

The transformation from ICRS to GCRS covers space motion, parallax, light deflection, and aberration. From GCRS to CIRS comprises frame bias and precession-nutation. From CIRS to observed takes account of Earth rotation, polar motion, diurnal aberration and parallax (unless subsumed into the ICRS <-> GCRS transformation), and atmospheric refraction.

6) The context structure astrom produced by this function is used by iauAtciq* and iauAticq*.

Here is the call graph for this function:

◆ iauAper()

void iauAper ( double  theta,
iauASTROM astrom 
)

update the Earth rotation angle

In the star-independent astrometry parameters, update only the Earth rotation angle, supplied by the caller explicitly.

Parameters
[in]thetaEarth rotation angle (radians, Note 2)
[in]astromstar-independent astrometry parameters:
[in]pmtnot used
[in]ebnot used
[in]ehnot used
[in]emnot used
[in]vnot used
[in]bm1not used
[in]bpnnot used
[in]alonglongitude + s' (radians)
[in]xplnot used
[in]yplnot used
[in]sphinot used
[in]cphinot used
[in]diurabnot used
[in]eralnot used
[in]refanot used
[in]refbnot used
[out]astromstar-independent astrometry parameters:
[out]pmtunchanged
[out]ebunchanged
[out]ehunchanged
[out]emunchanged
[out]vunchanged
[out]bm1unchanged
[out]bpnunchanged
[out]alongunchanged
[out]xplunchanged
[out]yplunchanged
[out]sphiunchanged
[out]cphiunchanged
[out]diurabunchanged
[out]eral"local" Earth rotation angle (radians)
[out]refaunchanged
[out]refbunchanged

Notes:

1) This function exists to enable sidereal-tracking applications to avoid wasteful recomputation of the bulk of the astrometry parameters: only the Earth rotation is updated.

2) For targets expressed as equinox based positions, such as classical geocentric apparent (RA,Dec), the supplied theta can be Greenwich apparent sidereal time rather than Earth rotation angle.

3) The function iauAper13 can be used instead of the present function, and starts from UT1 rather than ERA itself.

4) This is one of several functions that inserts into the astrom structure star-independent parameters needed for the chain of astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed.

The various functions support different classes of observer and portions of the transformation chain:

 functions         observer        transformation

iauApcg iauApcg13 geocentric ICRS <-> GCRS iauApci iauApci13 terrestrial ICRS <-> CIRS iauApco iauApco13 terrestrial ICRS <-> observed iauApcs iauApcs13 space ICRS <-> GCRS iauAper iauAper13 terrestrial update Earth rotation iauApio iauApio13 terrestrial CIRS <-> observed

Those with names ending in "13" use contemporary SOFA models to compute the various ephemerides. The others accept ephemerides supplied by the caller.

The transformation from ICRS to GCRS covers space motion, parallax, light deflection, and aberration. From GCRS to CIRS comprises frame bias and precession-nutation. From CIRS to observed takes account of Earth rotation, polar motion, diurnal aberration and parallax (unless subsumed into the ICRS <-> GCRS transformation), and atmospheric refraction.

◆ iauAper13()

void iauAper13 ( double  ut11,
double  ut12,
iauASTROM astrom 
)

update the Earth rotation angle

In the star-independent astrometry parameters, update only the Earth rotation angle. The caller provides UT1, (n.b. not UTC).

Parameters
[in]ut11UT1 as a 2-part Julian Date
[in]ut12UT1 as a 2-part Julian Date (Note 1)
[in]astromstar-independent astrometry parameters:
[in]pmtnot used
[in]ebnot used
[in]ehnot used
[in]emnot used
[in]vnot used
[in]bm1not used
[in]bpnnot used
[in]alonglongitude + s' (radians)
[in]xplnot used
[in]yplnot used
[in]sphinot used
[in]cphinot used
[in]diurabnot used
[in]eralnot used
[in]refanot used
[in]refbnot used
[out]astromstar-independent astrometry parameters:
[out]pmtunchanged
[out]ebunchanged
[out]ehunchanged
[out]emunchanged
[out]vunchanged
[out]bm1unchanged
[out]bpnunchanged
[out]alongunchanged
[out]xplunchanged
[out]yplunchanged
[out]sphiunchanged
[out]cphiunchanged
[out]diurabunchanged
[out]eral"local" Earth rotation angle (radians)
[out]refaunchanged
[out]refbunchanged

Notes:

1) The UT1 date (n.b. not UTC) ut11+ut12 is a Julian Date, apportioned in any convenient way between the arguments ut11 and ut12. For example, JD(UT1)=2450123.7 could be expressed in any of these ways, among others:

   ut11           ut12

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 and MJD methods are good compromises between resolution and convenience. The date & time method is best matched to the algorithm used: maximum precision is delivered when the ut11 argument is for 0hrs UT1 on the day in question and the ut12 argument lies in the range 0 to 1, or vice versa.

2) If the caller wishes to provide the Earth rotation angle itself, the function iauAper can be used instead. One use of this technique is to substitute Greenwich apparent sidereal time and thereby to support equinox based transformations directly.

3) This is one of several functions that inserts into the astrom structure star-independent parameters needed for the chain of astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed.

The various functions support different classes of observer and portions of the transformation chain:

 functions         observer        transformation

iauApcg iauApcg13 geocentric ICRS <-> GCRS iauApci iauApci13 terrestrial ICRS <-> CIRS iauApco iauApco13 terrestrial ICRS <-> observed iauApcs iauApcs13 space ICRS <-> GCRS iauAper iauAper13 terrestrial update Earth rotation iauApio iauApio13 terrestrial CIRS <-> observed

Those with names ending in "13" use contemporary SOFA models to compute the various ephemerides. The others accept ephemerides supplied by the caller.

The transformation from ICRS to GCRS covers space motion, parallax, light deflection, and aberration. From GCRS to CIRS comprises frame bias and precession-nutation. From CIRS to observed takes account of Earth rotation, polar motion, diurnal aberration and parallax (unless subsumed into the ICRS <-> GCRS transformation), and atmospheric refraction.

Here is the call graph for this function:

◆ iauApio()

void iauApio ( double  sp,
double  theta,
double  elong,
double  phi,
double  hm,
double  xp,
double  yp,
double  refa,
double  refb,
iauASTROM astrom 
)

prepare star-independent astrometry parameters

file apio.c

For a terrestrial observer, prepare star-independent astrometry parameters for transformations between CIRS and observed coordinates. The caller supplies the Earth orientation information and the refraction constants as well as the site coordinates.

Parameters
[in]spthe TIO locator s' (radians, Note 1)
[in]thetaEarth rotation angle (radians)
[in]elonglongitude (radians, east +ve, Note 2)
[in]phigeodetic latitude (radians, Note 2)
[in]hmheight above ellipsoid (m, geodetic Note 2)
[in]xppolar motion coordinates (radians, Note 3)
[in]yppolar motion coordinates (radians, Note 3)
[in]refarefraction constant A (radians, Note 4)
[in]refbrefraction constant B (radians, Note 4)
[out]astromstar-independent astrometry parameters:
[out]pmtunchanged
[out]ebunchanged
[out]ehunchanged
[out]emunchanged
[out]vunchanged
[out]bm1unchanged
[out]bpnunchanged
[out]alonglongitude + s' (radians)
[out]xplpolar motion xp wrt local meridian (radians)
[out]yplpolar motion yp wrt local meridian (radians)
[out]sphisine of geodetic latitude
[out]cphicosine of geodetic latitude
[out]diurabmagnitude of diurnal aberration vector
[out]eral"local" Earth rotation angle (radians)
[out]refarefraction constant A (radians)
[out]refbrefraction constant B (radians)

Notes:

1) sp, the TIO locator s', is a tiny quantity needed only by the most precise applications. It can either be set to zero or predicted using the SOFA function iauSp00.

2) The geographical coordinates are with respect to the WGS84 reference ellipsoid. TAKE CARE WITH THE LONGITUDE SIGN: the longitude required by the present function is east-positive (i.e. right-handed), in accordance with geographical convention.

3) The polar motion xp,yp can be obtained from IERS bulletins. The values are the coordinates (in radians) of the Celestial Intermediate Pole with respect to the International Terrestrial Reference System (see IERS Conventions 2003), measured along the meridians 0 and 90 deg west respectively. For many applications, xp and yp can be set to zero.

Internally, the polar motion is stored in a form rotated onto the local meridian.

4) The refraction constants refa and refb are for use in a dZ = A*tan(Z)+B*tan^3(Z) model, where Z is the observed (i.e. refracted) zenith distance and dZ is the amount of refraction.

5) It is advisable to take great care with units, as even unlikely values of the input parameters are accepted and processed in accordance with the models used.

6) In cases where the caller does not wish to provide the Earth rotation information and refraction constants, the function iauApio13 can be used instead of the present function. This starts from UTC and weather readings etc. and computes suitable values using other SOFA functions.

7) This is one of several functions that inserts into the astrom structure star-independent parameters needed for the chain of astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed.

The various functions support different classes of observer and portions of the transformation chain:

 functions         observer        transformation

iauApcg iauApcg13 geocentric ICRS <-> GCRS iauApci iauApci13 terrestrial ICRS <-> CIRS iauApco iauApco13 terrestrial ICRS <-> observed iauApcs iauApcs13 space ICRS <-> GCRS iauAper iauAper13 terrestrial update Earth rotation iauApio iauApio13 terrestrial CIRS <-> observed

Those with names ending in "13" use contemporary SOFA models to compute the various ephemerides. The others accept ephemerides supplied by the caller.

The transformation from ICRS to GCRS covers space motion, parallax, light deflection, and aberration. From GCRS to CIRS comprises frame bias and precession-nutation. From CIRS to observed takes account of Earth rotation, polar motion, diurnal aberration and parallax (unless subsumed into the ICRS <-> GCRS transformation), and atmospheric refraction.

8) The context structure astrom produced by this function is used by iauAtioq and iauAtoiq.

Here is the call graph for this function:

◆ iauApio13()

int iauApio13 ( double  utc1,
double  utc2,
double  dut1,
double  elong,
double  phi,
double  hm,
double  xp,
double  yp,
double  phpa,
double  tc,
double  rh,
double  wl,
iauASTROM astrom 
)

prepare star-independent astrometry parameters

file apio13.c

For a terrestrial observer, prepare star-independent astrometry parameters for transformations between CIRS and observed coordinates. The caller supplies UTC, site coordinates, ambient air conditions and observing wavelength.

Parameters
[in]utc1UTC as a 2-part quasi Julian Date
[in]utc2UTC as a 2-part quasi Julian Date (Notes 1,2)
[in]dut1UT1-UTC (seconds)
[in]elonglongitude (radians, east +ve, Note 3)
[in]phigeodetic latitude (radians, Note 3)
[in]hmheight above ellipsoid (m, geodetic Notes 4,6)
[in]xppolar motion coordinates (radians, Note 5)
[in]yppolar motion coordinates (radians, Note 5)
[in]phpapressure at the observer (hPa = mB, Note 6)
[in]tcambient temperature at the observer (deg C)
[in]rhrelative humidity at the observer (range 0-1)
[in]wlwavelength (micrometers, Note 7)
[out]astromstar-independent astrometry parameters:
[out]pmtunchanged
[out]ebunchanged
[out]ehunchanged
[out]emunchanged
[out]vunchanged
[out]bm1unchanged
[out]bpnunchanged
[out]alonglongitude + s' (radians)
[out]xplpolar motion xp wrt local meridian (radians)
[out]yplpolar motion yp wrt local meridian (radians)
[out]sphisine of geodetic latitude
[out]cphicosine of geodetic latitude
[out]diurabmagnitude of diurnal aberration vector
[out]eral"local" Earth rotation angle (radians)
[out]refarefraction constant A (radians)
[out]refbrefraction constant B (radians)
Returns
+1 = dubious year (Note 2) 0 = OK -1 = unacceptable date Notes:

1) utc1+utc2 is quasi Julian Date (see Note 2), apportioned in any convenient way between the two arguments, for example where utc1 is the Julian Day Number and utc2 is the fraction of a day.

However, JD cannot unambiguously represent UTC during a leap second unless special measures are taken. The convention in the present function is that the JD day represents UTC days whether the length is 86399, 86400 or 86401 SI seconds.

Applications should use the function iauDtf2d to convert from calendar date and time of day into 2-part quasi Julian Date, as it implements the leap-second-ambiguity convention just described.

2) The warning status "dubious year" flags UTCs that predate the introduction of the time scale or that are too far in the future to be trusted. See iauDat for further details.

3) UT1-UTC is tabulated in IERS bulletins. It increases by exactly one second at the end of each positive UTC leap second, introduced in order to keep UT1-UTC within +/- 0.9s. n.b. This practice is under review, and in the future UT1-UTC may grow essentially without limit.

4) The geographical coordinates are with respect to the WGS84 reference ellipsoid. TAKE CARE WITH THE LONGITUDE SIGN: the longitude required by the present function is east-positive (i.e. right-handed), in accordance with geographical convention.

5) The polar motion xp,yp can be obtained from IERS bulletins. The values are the coordinates (in radians) of the Celestial Intermediate Pole with respect to the International Terrestrial Reference System (see IERS Conventions 2003), measured along the meridians 0 and 90 deg west respectively. For many applications, xp and yp can be set to zero.

Internally, the polar motion is stored in a form rotated onto the local meridian.

6) If hm, the height above the ellipsoid of the observing station in meters, is not known but phpa, the pressure in hPa (=mB), is available, an adequate estimate of hm can be obtained from the expression

  hm = -29.3 * tsl * log ( phpa / 1013.25 );

where tsl is the approximate sea-level air temperature in K (See Astrophysical Quantities, C.W.Allen, 3rd edition, section 52). Similarly, if the pressure phpa is not known, it can be estimated from the height of the observing station, hm, as follows:

  phpa = 1013.25 * exp ( -hm / ( 29.3 * tsl ) );

Note, however, that the refraction is nearly proportional to the pressure and that an accurate phpa value is important for precise work.

7) The argument wl specifies the observing wavelength in micrometers. The transition from optical to radio is assumed to occur at 100 micrometers (about 3000 GHz).

8) It is advisable to take great care with units, as even unlikely values of the input parameters are accepted and processed in accordance with the models used.

9) In cases where the caller wishes to supply his own Earth rotation information and refraction constants, the function iauApc can be used instead of the present function.

10) This is one of several functions that inserts into the astrom structure star-independent parameters needed for the chain of astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed.

The various functions support different classes of observer and portions of the transformation chain:

functions         observer        transformation

iauApcg iauApcg13 geocentric ICRS <-> GCRS iauApci iauApci13 terrestrial ICRS <-> CIRS iauApco iauApco13 terrestrial ICRS <-> observed iauApcs iauApcs13 space ICRS <-> GCRS iauAper iauAper13 terrestrial update Earth rotation iauApio iauApio13 terrestrial CIRS <-> observed

Those with names ending in "13" use contemporary SOFA models to compute the various ephemerides. The others accept ephemerides supplied by the caller.

The transformation from ICRS to GCRS covers space motion, parallax, light deflection, and aberration. From GCRS to CIRS comprises frame bias and precession-nutation. From CIRS to observed takes account of Earth rotation, polar motion, diurnal aberration and parallax (unless subsumed into the ICRS <-> GCRS transformation), and atmospheric refraction.

11) The context structure astrom produced by this function is used by iauAtioq and iauAtoiq.

Here is the call graph for this function:

◆ iauAtci13()

void iauAtci13 ( double  rc,
double  dc,
double  pr,
double  pd,
double  px,
double  rv,
double  date1,
double  date2,
double *  ri,
double *  di,
double *  eo 
)

Transform ICRS star data, epoch J2000.0, to CIRS.

Parameters
[in]rcICRS right ascension at J2000.0 (radians, Note 1)
[in]dcICRS declination at J2000.0 (radians, Note 1)
[in]prRA proper motion (radians/year; Note 2)
[in]pdDec proper motion (radians/year)
[in]pxparallax (arcsec)
[in]rvradial velocity (km/s, +ve if receding)
[in]date1TDB as a 2-part...
[in]date2...Julian Date (Note 3)
[out]riCIRS geocentric RA (radians)
[out]diCIRS geocentric Dec (radians)
[out]eoequation of the origins (ERA-GST, Note 5)

Notes:

1) Star data for an epoch other than J2000.0 (for example from the Hipparcos catalog, which has an epoch of J1991.25) will require a preliminary call to iauPmsafe before use.

2) The proper motion in RA is dRA/dt rather than cos(Dec)*dRA/dt.

3) The TDB date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TDB)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience. For most applications of this function the choice will not be at all critical.

TT can be used instead of TDB without any significant impact on accuracy.

4) The available accuracy is better than 1 milliarcsecond, limited mainly by the precession-nutation model that is used, namely IAU 2000A/2006. Very close to solar system bodies, additional errors of up to several milliarcseconds can occur because of unmodeled light deflection; however, the Sun's contribution is taken into account, to first order. The accuracy limitations of the SOFA function iauEpv00 (used to compute Earth position and velocity) can contribute aberration errors of up to 5 microarcseconds. Light deflection at the Sun's limb is uncertain at the 0.4 mas level.

5) Should the transformation to (equinox based) apparent place be required rather than (CIO based) intermediate place, subtract the equation of the origins from the returned right ascension: RA = RI - EO. (The iauAnp function can then be applied, as

Here is the call graph for this function:

◆ iauAtciq()

void iauAtciq ( double  rc,
double  dc,
double  pr,
double  pd,
double  px,
double  rv,
iauASTROM astrom,
double *  ri,
double *  di 
)

Quick ICRS, epoch J2000.0, to CIRS transformation.

Quick ICRS, epoch J2000.0, to CIRS transformation, given precomputed star-independent astrometry parameters.

Use of this function is appropriate when efficiency is important and where many star positions are to be transformed for one date. The star-independent parameters can be obtained by calling one of the functions iauApci[13], iauApcg[13], iauApco[13] or iauApcs[13].

If the parallax and proper motions are zero the iauAtciqz function can be used instead.

Parameters
[in]rcICRS RA at J2000.0 (radians)
[in]dcICRS Dec at J2000.0 (radians)
[in]prRA proper motion (radians/year; Note 3)
[in]pdDec proper motion (radians/year)
[in]pxparallax (arcsec)
[in]rvradial velocity (km/s, +ve if receding)
[in]astromstar-independent astrometry parameters:
[in]pmtPM time interval (SSB, Julian years)
[in]ebSSB to observer (vector, au)
[in]ehSun to observer (unit vector)
[in]emdistance from Sun to observer (au)
[in]vbarycentric observer velocity (vector, c)
[in]bm1sqrt(1-|v|^2): reciprocal of Lorenz factor
[in]bpnbias-precession-nutation matrix
[in]alonglongitude + s' (radians)
[in]xplpolar motion xp wrt local meridian (radians)
[in]yplpolar motion yp wrt local meridian (radians)
[in]sphisine of geodetic latitude
[in]cphicosine of geodetic latitude
[in]diurabmagnitude of diurnal aberration vector
[in]eral"local" Earth rotation angle (radians)
[in]refarefraction constant A (radians)
[in]refbrefraction constant B (radians)
[out]riCIRS RA (radians)
[out]diCIRS Dec (radians)

Notes:

1) All the vectors are with respect to BCRS axes.

2) Star data for an epoch other than J2000.0 (for example from the Hipparcos catalog, which has an epoch of J1991.25) will require a preliminary call to iauPmsafe before use.

3) The proper motion in RA is dRA/dt rather than cos(Dec)*dRA/dt.

Here is the call graph for this function:

◆ iauAtciqn()

void iauAtciqn ( double  rc,
double  dc,
double  pr,
double  pd,
double  px,
double  rv,
iauASTROM astrom,
int  n,
iauLDBODY  b[],
double *  ri,
double *  di 
)

Quick ICRS, epoch J2000.0, to CIRS transformation.

Quick ICRS, epoch J2000.0, to CIRS transformation, given precomputed star-independent astrometry parameters plus a list of light- deflecting bodies.

Use of this function is appropriate when efficiency is important and where many star positions are to be transformed for one date. The star-independent parameters can be obtained by calling one of the functions iauApci[13], iauApcg[13], iauApco[13] or iauApcs[13].

If the only light-deflecting body to be taken into account is the Sun, the iauAtciq function can be used instead. If in addition the parallax and proper motions are zero, the iauAtciqz function can be used.

Parameters
[in]rcICRS RA at J2000.0 (radians)
[in]dcICRS Dec at J2000.0 (radians)
[in]prRA proper motion (radians/year; Note 3)
[in]pdDec proper motion (radians/year)
[in]pxparallax (arcsec)
[in]rvradial velocity (km/s, +ve if receding)
[in]astromstar-independent astrometry parameters:
[in]pmtPM time interval (SSB, Julian years)
[in]ebSSB to observer (vector, au)
[in]ehSun to observer (unit vector)
[in]emdistance from Sun to observer (au)
[in]vbarycentric observer velocity (vector, c)
[in]bm1sqrt(1-|v|^2): reciprocal of Lorenz factor
[in]bpnbias-precession-nutation matrix
[in]alonglongitude + s' (radians)
[in]xplpolar motion xp wrt local meridian (radians)
[in]yplpolar motion yp wrt local meridian (radians)
[in]sphisine of geodetic latitude
[in]cphicosine of geodetic latitude
[in]diurabmagnitude of diurnal aberration vector
[in]eral"local" Earth rotation angle (radians)
[in]refarefraction constant A (radians)
[in]refbrefraction constant B (radians)
[in]nnumber of bodies (Note 3)
[in]bdata for each of the n bodies (Notes 3,4):
[in]bmmass of the body (solar masses, Note 5)
[in]dldeflection limiter (Note 6)
[in]pvbarycentric PV of the body (au, au/day)
[out]riCIRS RA (radians)
[out]diCIRS Dec (radians)

Notes:

1) Star data for an epoch other than J2000.0 (for example from the Hipparcos catalog, which has an epoch of J1991.25) will require a preliminary call to iauPmsafe before use.

2) The proper motion in RA is dRA/dt rather than cos(Dec)*dRA/dt.

3) The struct b contains n entries, one for each body to be considered. If n = 0, no gravitational light deflection will be applied, not even for the Sun.

4) The struct b should include an entry for the Sun as well as for any planet or other body to be taken into account. The entries should be in the order in which the light passes the body.

5) In the entry in the b struct for body i, the mass parameter b[i].bm can, as required, be adjusted in order to allow for such effects as quadrupole field.

6) The deflection limiter parameter b[i].dl is phi^2/2, where phi is the angular separation (in radians) between star and body at which limiting is applied. As phi shrinks below the chosen threshold, the deflection is artificially reduced, reaching zero for phi = 0. Example values suitable for a terrestrial observer, together with masses, are as follows:

body i b[i].bm b[i].dl

Sun 1.0 6e-6 Jupiter 0.00095435 3e-9 Saturn 0.00028574 3e-10

7) For efficiency, validation of the contents of the b array is omitted. The supplied masses must be greater than zero, the position and velocity vectors must be right, and the deflection limiter greater than zero.

Here is the call graph for this function:

◆ iauAtciqz()

void iauAtciqz ( double  rc,
double  dc,
iauASTROM astrom,
double *  ri,
double *  di 
)

Quick ICRS to CIRS transformation.

Quick ICRS to CIRS transformation, given precomputed star- independent astrometry parameters, and assuming zero parallax and proper motion.

Use of this function is appropriate when efficiency is important and where many star positions are to be transformed for one date. The star-independent parameters can be obtained by calling one of the functions iauApci[13], iauApcg[13], iauApco[13] or iauApcs[13].

The corresponding function for the case of non-zero parallax and proper motion is iauAtciq.

Parameters
[in]rccICRS astrometric RA (radians)
[in]dcICRS astrometric Dec (radians)
[in]astromstar-independent astrometry parameters:
[in]pmtPM time interval (SSB, Julian years)
[in]ebSSB to observer (vector, au)
[in]ehSun to observer (unit vector)
[in]emdistance from Sun to observer (au)
[in]vbarycentric observer velocity (vector, c)
[in]bm1sqrt(1-|v|^2): reciprocal of Lorenz factor
[in]bpnbias-precession-nutation matrix
[in]alonglongitude + s' (radians)
[in]xplpolar motion xp wrt local meridian (radians)
[in]yplpolar motion yp wrt local meridian (radians)
[in]sphisine of geodetic latitude
[in]cphicosine of geodetic latitude
[in]diurabmagnitude of diurnal aberration vector
[in]eral"local" Earth rotation angle (radians)
[in]refarefraction constant A (radians)
[in]refbrefraction constant B (radians)
[out]riCIRS RA (radians)
[out]diCIRS Dec (radians)

Note:

All the vectors are with respect to BCRS axes.

References:

Urban, S. & Seidelmann, P. K. (eds), Explanatory Supplement to the Astronomical Almanac, 3rd ed., University Science Books (2013).

Klioner, Sergei A., "A practical relativistic model for micro- arcsecond astrometry in space", Astr. J. 125, 1580-1597 (2003).

Here is the call graph for this function:

◆ iauAtco13()

int iauAtco13 ( double  rc,
double  dc,
double  pr,
double  pd,
double  px,
double  rv,
double  utc1,
double  utc2,
double  dut1,
double  elong,
double  phi,
double  hm,
double  xp,
double  yp,
double  phpa,
double  tc,
double  rh,
double  wl,
double *  aob,
double *  zob,
double *  hob,
double *  dob,
double *  rob,
double *  eo 
)

ICRS RA,Dec to observed place.

ICRS RA,Dec to observed place. The caller supplies UTC, site coordinates, ambient air conditions and observing wavelength.

SOFA models are used for the Earth ephemeris, bias-precession- nutation, Earth orientation and refraction.

Parameters
[in]rcICRS right ascension at J2000.0 (radians, Note 1)
[in]dcICRS declination at J2000.0 (radians, Note 1)
[in]prRA proper motion (radians/year; Note 2)
[in]pdDec proper motion (radians/year)
[in]pxparallax (arcsec)
[in]rvradial velocity (km/s, +ve if receding)
[in]utc1UTC as a 2-part quasi Julian Date
[in]utc2UTC as a 2-part quasi Julian Date (Notes 3-4)
[in]dut1UT1-UTC (seconds, Note 5)
[in]elonglongitude (radians, east +ve, Note 6)
[in]philatitude (geodetic, radians, Note 6)
[in]hmheight above ellipsoid (m, geodetic, Notes 6,8)
[in]xp,yppolar motion coordinates (radians, Note 7)
[in]phpapressure at the observer (hPa = mB, Note 8)
[in]tcambient temperature at the observer (deg C)
[in]rhrelative humidity at the observer (range 0-1)
[in]wlwavelength (micrometers, Note 9)
[out]aobobserved azimuth (radians: N=0,E=90)
[out]zobobserved zenith distance (radians)
[out]hobobserved hour angle (radians)
[out]dobobserved declination (radians)
[out]robobserved right ascension (CIO-based, radians)
[out]eoequation of the origins (ERA-GST)
Returns
+1 = dubious year (Note 4) 0 = OK -1 = unacceptable date Notes:

1) Star data for an epoch other than J2000.0 (for example from the Hipparcos catalog, which has an epoch of J1991.25) will require a preliminary call to iauPmsafe before use.

2) The proper motion in RA is dRA/dt rather than cos(Dec)*dRA/dt.

3) utc1+utc2 is quasi Julian Date (see Note 2), apportioned in any convenient way between the two arguments, for example where utc1 is the Julian Day Number and utc2 is the fraction of a day.

However, JD cannot unambiguously represent UTC during a leap second unless special measures are taken. The convention in the present function is that the JD day represents UTC days whether the length is 86399, 86400 or 86401 SI seconds.

Applications should use the function iauDtf2d to convert from calendar date and time of day into 2-part quasi Julian Date, as it implements the leap-second-ambiguity convention just described.

4) The warning status "dubious year" flags UTCs that predate the introduction of the time scale or that are too far in the future to be trusted. See iauDat for further details.

5) UT1-UTC is tabulated in IERS bulletins. It increases by exactly one second at the end of each positive UTC leap second, introduced in order to keep UT1-UTC within +/- 0.9s. n.b. This practice is under review, and in the future UT1-UTC may grow essentially without limit.

6) The geographical coordinates are with respect to the WGS84 reference ellipsoid. TAKE CARE WITH THE LONGITUDE SIGN: the longitude required by the present function is east-positive (i.e. right-handed), in accordance with geographical convention.

7) The polar motion xp,yp can be obtained from IERS bulletins. The values are the coordinates (in radians) of the Celestial Intermediate Pole with respect to the International Terrestrial Reference System (see IERS Conventions 2003), measured along the meridians 0 and 90 deg west respectively. For many applications, xp and yp can be set to zero.

8) If hm, the height above the ellipsoid of the observing station in meters, is not known but phpa, the pressure in hPa (=mB), is available, an adequate estimate of hm can be obtained from the expression

  hm = -29.3 * tsl * log ( phpa / 1013.25 );

where tsl is the approximate sea-level air temperature in K (See Astrophysical Quantities, C.W.Allen, 3rd edition, section 52). Similarly, if the pressure phpa is not known, it can be estimated from the height of the observing station, hm, as follows:

  phpa = 1013.25 * exp ( -hm / ( 29.3 * tsl ) );

Note, however, that the refraction is nearly proportional to the pressure and that an accurate phpa value is important for precise work.

9) The argument wl specifies the observing wavelength in micrometers. The transition from optical to radio is assumed to occur at 100 micrometers (about 3000 GHz).

10) The accuracy of the result is limited by the corrections for refraction, which use a simple A*tan(z) + B*tan^3(z) model. Providing the meteorological parameters are known accurately and there are no gross local effects, the predicted observed coordinates should be within 0.05 arcsec (optical) or 1 arcsec (radio) for a zenith distance of less than 70 degrees, better than 30 arcsec (optical or radio) at 85 degrees and better than 20 arcmin (optical) or 30 arcmin (radio) at the horizon.

Without refraction, the complementary functions iauAtco13 and iauAtoc13 are self-consistent to better than 1 microarcsecond all over the celestial sphere. With refraction included, consistency falls off at high zenith distances, but is still better than 0.05 arcsec at 85 degrees.

11) "Observed" Az,ZD means the position that would be seen by a perfect geodetically aligned theodolite. (Zenith distance is used rather than altitude in order to reflect the fact that no allowance is made for depression of the horizon.) This is related to the observed HA,Dec via the standard rotation, using the geodetic latitude (corrected for polar motion), while the observed HA and RA are related simply through the Earth rotation angle and the site longitude. "Observed" RA,Dec or HA,Dec thus means the position that would be seen by a perfect equatorial with its polar axis aligned to the Earth's axis of rotation.

12) It is advisable to take great care with units, as even unlikely values of the input parameters are accepted and processed in accordance with the models used.

Here is the call graph for this function:

◆ iauAtic13()

void iauAtic13 ( double  ri,
double  di,
double  date1,
double  date2,
double *  rc,
double *  dc,
double *  eo 
)

Transform star RA,Dec from geocentric CIRS to ICRS astrometric.

Parameters
[in]riiCIRS geocentric RA (radians)
[in]diCIRS geocentric Dec (radians)
[in]date1TDB as a 2-part...
[in]date2...Julian Date (Note 1)
[out]rcICRS astrometric RA (radians)
[out]dcICRS astrometric Dec (radians)
[out]eoequation of the origins (ERA-GST, Note 4)

Notes:

1) The TDB date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TDB)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience. For most applications of this function the choice will not be at all critical.

TT can be used instead of TDB without any significant impact on accuracy.

2) Iterative techniques are used for the aberration and light deflection corrections so that the functions iauAtic13 (or iauAticq) and iauAtci13 (or iauAtciq) are accurate inverses; even at the edge of the Sun's disk the discrepancy is only about 1 nanoarcsecond.

3) The available accuracy is better than 1 milliarcsecond, limited mainly by the precession-nutation model that is used, namely IAU 2000A/2006. Very close to solar system bodies, additional errors of up to several milliarcseconds can occur because of unmodeled light deflection; however, the Sun's contribution is taken into account, to first order. The accuracy limitations of the SOFA function iauEpv00 (used to compute Earth position and velocity) can contribute aberration errors of up to 5 microarcseconds. Light deflection at the Sun's limb is uncertain at the 0.4 mas level.

4) Should the transformation to (equinox based) J2000.0 mean place be required rather than (CIO based) ICRS coordinates, subtract the equation of the origins from the returned right ascension: RA = RI - EO. (The iauAnp function can then be applied, as required, to keep the result in the conventional 0-2pi range.)

Here is the call graph for this function:

◆ iauAticq()

void iauAticq ( double  ri,
double  di,
iauASTROM astrom,
double *  rc,
double *  dc 
)

Quick CIRS RA,Dec to ICRS astrometric place.

Quick CIRS RA,Dec to ICRS astrometric place, given the star- independent astrometry parameters.

Use of this function is appropriate when efficiency is important and where many star positions are all to be transformed for one date. The star-independent astrometry parameters can be obtained by calling one of the functions iauApci[13], iauApcg[13], iauApco[13] or iauApcs[13].

Parameters
[in]riCIRS RA (radians)
[in]diCIRS Dec (radians)
[in]astromstar-independent astrometry parameters:
[in]pmtPM time interval (SSB, Julian years)
[in]ebSSB to observer (vector, au)
[in]ehSun to observer (unit vector)
[in]emdistance from Sun to observer (au)
[in]vbarycentric observer velocity (vector, c)
[in]bm1sqrt(1-|v|^2): reciprocal of Lorenz factor
[in]bpnbias-precession-nutation matrix
[in]alonglongitude + s' (radians)
[in]xplpolar motion xp wrt local meridian (radians)
[in]yplpolar motion yp wrt local meridian (radians)
[in]sphisine of geodetic latitude
[in]cphicosine of geodetic latitude
[in]diurabmagnitude of diurnal aberration vector
[in]eral"local" Earth rotation angle (radians)
[in]refarefraction constant A (radians)
[in]refbrefraction constant B (radians)
[out]rcICRS astrometric RA (radians)
[out]dcICRS astrometric Dec (radians)

Notes:

1) Only the Sun is taken into account in the light deflection correction.

2) Iterative techniques are used for the aberration and light deflection corrections so that the functions iauAtic13 (or iauAticq) and iauAtci13 (or iauAtciq) are accurate inverses; even at the edge of the Sun's disk the discrepancy is only about 1 nanoarcsecond.

Here is the call graph for this function:

◆ iauAticqn()

void iauAticqn ( double  ri,
double  di,
iauASTROM astrom,
int  n,
iauLDBODY  b[],
double *  rc,
double *  dc 
)

Quick CIRS to ICRS astrometric place transformation.

Quick CIRS to ICRS astrometric place transformation, given the star- independent astrometry parameters plus a list of light-deflecting bodies.

Use of this function is appropriate when efficiency is important and where many star positions are all to be transformed for one date. The star-independent astrometry parameters can be obtained by calling one of the functions iauApci[13], iauApcg[13], iauApco[13] or iauApcs[13].

If the only light-deflecting body to be taken into account is the Sun, the iauAticq function can be used instead.

Parameters
[in]riiCIRS RA (radians)
[in]diCIRS Dec (radians)
[in]astromstar-independent astrometry parameters:
[in]pmtPM time interval (SSB, Julian years)
[in]ebSSB to observer (vector, au)
[in]ehSun to observer (unit vector)
[in]emdistance from Sun to observer (au)
[in]vbarycentric observer velocity (vector, c)
[in]bm1sqrt(1-|v|^2): reciprocal of Lorenz factor
[in]bpnbias-precession-nutation matrix
[in]alonglongitude + s' (radians)
[in]xplpolar motion xp wrt local meridian (radians)
[in]yplpolar motion yp wrt local meridian (radians)
[in]sphisine of geodetic latitude
[in]cphicosine of geodetic latitude
[in]diurabmagnitude of diurnal aberration vector
[in]eral"local" Earth rotation angle (radians)
[in]refarefraction constant A (radians)
[in]refbrefraction constant B (radians)
[in]nnumber of bodies (Note 3)
[in]bdata for each of the n bodies (Notes 3,4):
[in]bmmass of the body (solar masses, Note 5)
[in]dldeflection limiter (Note 6)
[in]pvbarycentric PV of the body (au, au/day)
[out]rcICRS astrometric RA (radians)
[out]dcICRS astrometric Dec (radians)

Notes:

1) Iterative techniques are used for the aberration and light deflection corrections so that the functions iauAticqn and iauAtciqn are accurate inverses; even at the edge of the Sun's disk the discrepancy is only about 1 nanoarcsecond.

2) If the only light-deflecting body to be taken into account is the Sun, the iauAticq function can be used instead.

3) The struct b contains n entries, one for each body to be considered. If n = 0, no gravitational light deflection will be applied, not even for the Sun.

4) The struct b should include an entry for the Sun as well as for any planet or other body to be taken into account. The entries should be in the order in which the light passes the body.

5) In the entry in the b struct for body i, the mass parameter b[i].bm can, as required, be adjusted in order to allow for such effects as quadrupole field.

6) The deflection limiter parameter b[i].dl is phi^2/2, where phi is the angular separation (in radians) between star and body at which limiting is applied. As phi shrinks below the chosen threshold, the deflection is artificially reduced, reaching zero for phi = 0. Example values suitable for a terrestrial observer, together with masses, are as follows:

body i b[i].bm b[i].dl

Sun 1.0 6e-6 Jupiter 0.00095435 3e-9 Saturn 0.00028574 3e-10

7) For efficiency, validation of the contents of the b array is omitted. The supplied masses must be greater than zero, the position and velocity vectors must be right, and the deflection limiter greater than zero.

Here is the call graph for this function:

◆ iauAtio13()

int iauAtio13 ( double  ri,
double  di,
double  utc1,
double  utc2,
double  dut1,
double  elong,
double  phi,
double  hm,
double  xp,
double  yp,
double  phpa,
double  tc,
double  rh,
double  wl,
double *  aob,
double *  zob,
double *  hob,
double *  dob,
double *  rob 
)

CIRS RA,Dec to observed place.

CIRS RA,Dec to observed place. The caller supplies UTC, site coordinates, ambient air conditions and observing wavelength.

Parameters
[in]riCIRS right ascension (CIO-based, radians)
[in]diCIRS declination (radians)
[in]utc1UTC as a 2-part...
[in]utc2...quasi Julian Date (Notes 1,2)
[in]dut1UT1-UTC (seconds, Note 3)
[in]elonglongitude (radians, east +ve, Note 4)
[in]phigeodetic latitude (radians, Note 4)
[in]hmheight above ellipsoid (m, geodetic Notes 4,6)
[in]xp,yppolar motion coordinates (radians, Note 5)
[in]phpapressure at the observer (hPa = mB, Note 6)
[in]tcambient temperature at the observer (deg C)
[in]rhrelative humidity at the observer (range 0-1)
[in]wlwavelength (micrometers, Note 7)
[out]aobobserved azimuth (radians: N=0,E=90)
[out]zobobserved zenith distance (radians)
[out]hobobserved hour angle (radians)
[out]dobobserved declination (radians)
[out]robobserved right ascension (CIO-based, radians)
Returns
+1 = dubious year (Note 2) 0 = OK -1 = unacceptable date

Notes:

1) utc1+utc2 is quasi Julian Date (see Note 2), apportioned in any convenient way between the two arguments, for example where utc1 is the Julian Day Number and utc2 is the fraction of a day.

However, JD cannot unambiguously represent UTC during a leap second unless special measures are taken. The convention in the present function is that the JD day represents UTC days whether the length is 86399, 86400 or 86401 SI seconds.

Applications should use the function iauDtf2d to convert from calendar date and time of day into 2-part quasi Julian Date, as it implements the leap-second-ambiguity convention just described.

2) The warning status "dubious year" flags UTCs that predate the introduction of the time scale or that are too far in the future to be trusted. See iauDat for further details.

3) UT1-UTC is tabulated in IERS bulletins. It increases by exactly one second at the end of each positive UTC leap second, introduced in order to keep UT1-UTC within +/- 0.9s. n.b. This practice is under review, and in the future UT1-UTC may grow essentially without limit.

4) The geographical coordinates are with respect to the WGS84 reference ellipsoid. TAKE CARE WITH THE LONGITUDE SIGN: the longitude required by the present function is east-positive (i.e. right-handed), in accordance with geographical convention.

5) The polar motion xp,yp can be obtained from IERS bulletins. The values are the coordinates (in radians) of the Celestial Intermediate Pole with respect to the International Terrestrial Reference System (see IERS Conventions 2003), measured along the meridians 0 and 90 deg west respectively. For many applications, xp and yp can be set to zero.

6) If hm, the height above the ellipsoid of the observing station in meters, is not known but phpa, the pressure in hPa (=mB), is available, an adequate estimate of hm can be obtained from the expression

  hm = -29.3 * tsl * log ( phpa / 1013.25 );

where tsl is the approximate sea-level air temperature in K (See Astrophysical Quantities, C.W.Allen, 3rd edition, section 52). Similarly, if the pressure phpa is not known, it can be estimated from the height of the observing station, hm, as follows:

  phpa = 1013.25 * exp ( -hm / ( 29.3 * tsl ) );

Note, however, that the refraction is nearly proportional to the pressure and that an accurate phpa value is important for precise work.

7) The argument wl specifies the observing wavelength in micrometers. The transition from optical to radio is assumed to occur at 100 micrometers (about 3000 GHz).

8) "Observed" Az,ZD means the position that would be seen by a perfect geodetically aligned theodolite. (Zenith distance is used rather than altitude in order to reflect the fact that no allowance is made for depression of the horizon.) This is related to the observed HA,Dec via the standard rotation, using the geodetic latitude (corrected for polar motion), while the observed HA and RA are related simply through the Earth rotation angle and the site longitude. "Observed" RA,Dec or HA,Dec thus means the position that would be seen by a perfect equatorial with its polar axis aligned to the Earth's axis of rotation.

9) The accuracy of the result is limited by the corrections for refraction, which use a simple A*tan(z) + B*tan^3(z) model. Providing the meteorological parameters are known accurately and there are no gross local effects, the predicted astrometric coordinates should be within 0.05 arcsec (optical) or 1 arcsec (radio) for a zenith distance of less than 70 degrees, better than 30 arcsec (optical or radio) at 85 degrees and better than 20 arcmin (optical) or 30 arcmin (radio) at the horizon.

10) The complementary functions iauAtio13 and iauAtoi13 are self- consistent to better than 1 microarcsecond all over the celestial sphere.

11) It is advisable to take great care with units, as even unlikely values of the input parameters are accepted and processed in accordance with the models used.

Here is the call graph for this function:

◆ iauAtioq()

void iauAtioq ( double  ri,
double  di,
iauASTROM astrom,
double *  aob,
double *  zob,
double *  hob,
double *  dob,
double *  rob 
)

Quick CIRS to observed place transformation.

Quick CIRS to observed place transformation.

Use of this function is appropriate when efficiency is important and where many star positions are all to be transformed for one date. The star-independent astrometry parameters can be obtained by calling iauApio[13] or iauApco[13].

Parameters
[in]riCIRS right ascension
[in]diCIRS declination
[in]astromstar-independent astrometry parameters:
[in]pmtPM time interval (SSB, Julian years)
[in]ebSSB to observer (vector, au)
[in]ehSun to observer (unit vector)
[in]emdistance from Sun to observer (au)
[in]vbarycentric observer velocity (vector, c)
[in]bm1sqrt(1-|v|^2): reciprocal of Lorenz factor
[in]bpnbias-precession-nutation matrix
[in]alonglongitude + s' (radians)
[in]xplpolar motion xp wrt local meridian (radians)
[in]yplpolar motion yp wrt local meridian (radians)
[in]sphisine of geodetic latitude
[in]cphicosine of geodetic latitude
[in]diurabmagnitude of diurnal aberration vector
[in]eral"local" Earth rotation angle (radians)
[in]refarefraction constant A (radians)
[in]refbrefraction constant B (radians)
[out]aobobserved azimuth (radians: N=0,E=90)
[out]zobobserved zenith distance (radians)
[out]hobobserved hour angle (radians)
[out]dobobserved declination (radians)
[out]robobserved right ascension (CIO-based, radians)

Notes:

1) This function returns zenith distance rather than altitude in order to reflect the fact that no allowance is made for depression of the horizon.

2) The accuracy of the result is limited by the corrections for refraction, which use a simple A*tan(z) + B*tan^3(z) model. Providing the meteorological parameters are known accurately and there are no gross local effects, the predicted observed coordinates should be within 0.05 arcsec (optical) or 1 arcsec (radio) for a zenith distance of less than 70 degrees, better than 30 arcsec (optical or radio) at 85 degrees and better than 20 arcmin (optical) or 30 arcmin (radio) at the horizon.

Without refraction, the complementary functions iauAtioq and iauAtoiq are self-consistent to better than 1 microarcsecond all over the celestial sphere. With refraction included, consistency falls off at high zenith distances, but is still better than 0.05 arcsec at 85 degrees.

3) It is advisable to take great care with units, as even unlikely values of the input parameters are accepted and processed in accordance with the models used.

4) The CIRS RA,Dec is obtained from a star catalog mean place by allowing for space motion, parallax, the Sun's gravitational lens effect, annual aberration and precession-nutation. For star positions in the ICRS, these effects can be applied by means of the iauAtci13 (etc.) functions. Starting from classical "mean place" systems, additional transformations will be needed first.

5) "Observed" Az,El means the position that would be seen by a perfect geodetically aligned theodolite. This is obtained from the CIRS RA,Dec by allowing for Earth orientation and diurnal aberration, rotating from equator to horizon coordinates, and then adjusting for refraction. The HA,Dec is obtained by rotating back into equatorial coordinates, and is the position that would be seen by a perfect equatorial with its polar axis aligned to the Earth's axis of rotation. Finally, the RA is obtained by subtracting the HA from the local ERA.

6) The star-independent CIRS-to-observed-place parameters in ASTROM may be computed with iauApio[13] or iauApco[13]. If nothing has changed significantly except the time, iauAper[13] may be used to perform the requisite adjustment to the astrom structure.

Here is the call graph for this function:

◆ iauAtoc13()

int iauAtoc13 ( const char *  type,
double  ob1,
double  ob2,
double  utc1,
double  utc2,
double  dut1,
double  elong,
double  phi,
double  hm,
double  xp,
double  yp,
double  phpa,
double  tc,
double  rh,
double  wl,
double *  rc,
double *  dc 
)

Observed place at a groundbased site to to ICRS astrometric RA,Dec.

Observed place at a groundbased site to to ICRS astrometric RA,Dec. The caller supplies UTC, site coordinates, ambient air conditions and observing wavelength.

Parameters
[in]typetype of coordinates - "R", "H" or "A" (Notes 1,2)
[in]ob1observed Az, HA or RA (radians; Az is N=0,E=90)
[in]ob2observed ZD or Dec (radians)
[in]utc1UTC as a 2-part...
[in]utc2...quasi Julian Date (Notes 3,4)
[in]dut1UT1-UTC (seconds, Note 5)
[in]elonglongitude (radians, east +ve, Note 6)
[in]phigeodetic latitude (radians, Note 6)
[in]hmheight above ellipsoid (m, geodetic Notes 6,8)
[in]xp,yppolar motion coordinates (radians, Note 7)
[in]phpapressure at the observer (hPa = mB, Note 8)
[in]tcambient temperature at the observer (deg C)
[in]rhrelative humidity at the observer (range 0-1)
[in]wlwavelength (micrometers, Note 9)
[out]rc,dcICRS astrometric RA,Dec (radians)
Returns
+1 = dubious year (Note 4) 0 = OK -1 = unacceptable date

Notes:

1) "Observed" Az,ZD means the position that would be seen by a perfect geodetically aligned theodolite. (Zenith distance is used rather than altitude in order to reflect the fact that no allowance is made for depression of the horizon.) This is related to the observed HA,Dec via the standard rotation, using the geodetic latitude (corrected for polar motion), while the observed HA and RA are related simply through the Earth rotation angle and the site longitude. "Observed" RA,Dec or HA,Dec thus means the position that would be seen by a perfect equatorial with its polar axis aligned to the Earth's axis of rotation.

2) Only the first character of the type argument is significant. "R" or "r" indicates that ob1 and ob2 are the observed right ascension and declination; "H" or "h" indicates that they are hour angle (west +ve) and declination; anything else ("A" or "a" is recommended) indicates that ob1 and ob2 are azimuth (north zero, east 90 deg) and zenith distance.

3) utc1+utc2 is quasi Julian Date (see Note 2), apportioned in any convenient way between the two arguments, for example where utc1 is the Julian Day Number and utc2 is the fraction of a day.

However, JD cannot unambiguously represent UTC during a leap second unless special measures are taken. The convention in the present function is that the JD day represents UTC days whether the length is 86399, 86400 or 86401 SI seconds.

Applications should use the function iauDtf2d to convert from calendar date and time of day into 2-part quasi Julian Date, as it implements the leap-second-ambiguity convention just described.

4) The warning status "dubious year" flags UTCs that predate the introduction of the time scale or that are too far in the future to be trusted. See iauDat for further details.

5) UT1-UTC is tabulated in IERS bulletins. It increases by exactly one second at the end of each positive UTC leap second, introduced in order to keep UT1-UTC within +/- 0.9s. n.b. This practice is under review, and in the future UT1-UTC may grow essentially without limit.

6) The geographical coordinates are with respect to the WGS84 reference ellipsoid. TAKE CARE WITH THE LONGITUDE SIGN: the longitude required by the present function is east-positive (i.e. right-handed), in accordance with geographical convention.

7) The polar motion xp,yp can be obtained from IERS bulletins. The values are the coordinates (in radians) of the Celestial Intermediate Pole with respect to the International Terrestrial Reference System (see IERS Conventions 2003), measured along the meridians 0 and 90 deg west respectively. For many applications, xp and yp can be set to zero.

8) If hm, the height above the ellipsoid of the observing station in meters, is not known but phpa, the pressure in hPa (=mB), is available, an adequate estimate of hm can be obtained from the expression

  hm = -29.3 * tsl * log ( phpa / 1013.25 );

where tsl is the approximate sea-level air temperature in K (See Astrophysical Quantities, C.W.Allen, 3rd edition, section 52). Similarly, if the pressure phpa is not known, it can be estimated from the height of the observing station, hm, as follows:

  phpa = 1013.25 * exp ( -hm / ( 29.3 * tsl ) );

Note, however, that the refraction is nearly proportional to the pressure and that an accurate phpa value is important for precise work.

9) The argument wl specifies the observing wavelength in micrometers. The transition from optical to radio is assumed to occur at 100 micrometers (about 3000 GHz).

10) The accuracy of the result is limited by the corrections for refraction, which use a simple A*tan(z) + B*tan^3(z) model. Providing the meteorological parameters are known accurately and there are no gross local effects, the predicted astrometric coordinates should be within 0.05 arcsec (optical) or 1 arcsec (radio) for a zenith distance of less than 70 degrees, better than 30 arcsec (optical or radio) at 85 degrees and better than 20 arcmin (optical) or 30 arcmin (radio) at the horizon.

Without refraction, the complementary functions iauAtco13 and iauAtoc13 are self-consistent to better than 1 microarcsecond all over the celestial sphere. With refraction included, consistency falls off at high zenith distances, but is still better than 0.05 arcsec at 85 degrees.

11) It is advisable to take great care with units, as even unlikely values of the input parameters are accepted and processed in accordance with the models used.

Here is the call graph for this function:

◆ iauAtoi13()

int iauAtoi13 ( const char *  type,
double  ob1,
double  ob2,
double  utc1,
double  utc2,
double  dut1,
double  elong,
double  phi,
double  hm,
double  xp,
double  yp,
double  phpa,
double  tc,
double  rh,
double  wl,
double *  ri,
double *  di 
)

Observed place to CIRS.

Observed place to CIRS. The caller supplies UTC, site coordinates, ambient air conditions and observing wavelength.

Parameters
[in]typetype of coordinates - "R", "H" or "A" (Notes 1,2)
[in]ob1observed Az, HA or RA (radians; Az is N=0,E=90)
[in]ob2observed ZD or Dec (radians)
[in]utc1UTC as a 2-part...
[in]utc2...quasi Julian Date (Notes 3,4)
[in]dut1UT1-UTC (seconds, Note 5)
[in]elonglongitude (radians, east +ve, Note 6)
[in]phigeodetic latitude (radians, Note 6)
[in]hmheight above the ellipsoid (meters, Notes 6,8)
[in]xp,yppolar motion coordinates (radians, Note 7)
[in]phpapressure at the observer (hPa = mB, Note 8)
[in]tcambient temperature at the observer (deg C)
[in]rhrelative humidity at the observer (range 0-1)
[in]wlwavelength (micrometers, Note 9)
[out]riCIRS right ascension (CIO-based, radians)
[out]diCIRS declination (radians)
Returns
+1 = dubious year (Note 2) 0 = OK -1 = unacceptable date

Notes:

1) "Observed" Az,ZD means the position that would be seen by a perfect geodetically aligned theodolite. (Zenith distance is used rather than altitude in order to reflect the fact that no allowance is made for depression of the horizon.) This is related to the observed HA,Dec via the standard rotation, using the geodetic latitude (corrected for polar motion), while the observed HA and RA are related simply through the Earth rotation angle and the site longitude. "Observed" RA,Dec or HA,Dec thus means the position that would be seen by a perfect equatorial with its polar axis aligned to the Earth's axis of rotation.

2) Only the first character of the type argument is significant. "R" or "r" indicates that ob1 and ob2 are the observed right ascension and declination; "H" or "h" indicates that they are hour angle (west +ve) and declination; anything else ("A" or "a" is recommended) indicates that ob1 and ob2 are azimuth (north zero, east 90 deg) and zenith distance.

3) utc1+utc2 is quasi Julian Date (see Note 2), apportioned in any convenient way between the two arguments, for example where utc1 is the Julian Day Number and utc2 is the fraction of a day.

However, JD cannot unambiguously represent UTC during a leap second unless special measures are taken. The convention in the present function is that the JD day represents UTC days whether the length is 86399, 86400 or 86401 SI seconds.

Applications should use the function iauDtf2d to convert from calendar date and time of day into 2-part quasi Julian Date, as it implements the leap-second-ambiguity convention just described.

4) The warning status "dubious year" flags UTCs that predate the introduction of the time scale or that are too far in the future to be trusted. See iauDat for further details.

5) UT1-UTC is tabulated in IERS bulletins. It increases by exactly one second at the end of each positive UTC leap second, introduced in order to keep UT1-UTC within +/- 0.9s. n.b. This practice is under review, and in the future UT1-UTC may grow essentially without limit.

6) The geographical coordinates are with respect to the WGS84 reference ellipsoid. TAKE CARE WITH THE LONGITUDE SIGN: the longitude required by the present function is east-positive (i.e. right-handed), in accordance with geographical convention.

7) The polar motion xp,yp can be obtained from IERS bulletins. The values are the coordinates (in radians) of the Celestial Intermediate Pole with respect to the International Terrestrial Reference System (see IERS Conventions 2003), measured along the meridians 0 and 90 deg west respectively. For many applications, xp and yp can be set to zero.

8) If hm, the height above the ellipsoid of the observing station in meters, is not known but phpa, the pressure in hPa (=mB), is available, an adequate estimate of hm can be obtained from the expression

  hm = -29.3 * tsl * log ( phpa / 1013.25 );

where tsl is the approximate sea-level air temperature in K (See Astrophysical Quantities, C.W.Allen, 3rd edition, section 52). Similarly, if the pressure phpa is not known, it can be estimated from the height of the observing station, hm, as follows:

  phpa = 1013.25 * exp ( -hm / ( 29.3 * tsl ) );

Note, however, that the refraction is nearly proportional to the pressure and that an accurate phpa value is important for precise work.

9) The argument wl specifies the observing wavelength in micrometers. The transition from optical to radio is assumed to occur at 100 micrometers (about 3000 GHz).

10) The accuracy of the result is limited by the corrections for refraction, which use a simple A*tan(z) + B*tan^3(z) model. Providing the meteorological parameters are known accurately and there are no gross local effects, the predicted astrometric coordinates should be within 0.05 arcsec (optical) or 1 arcsec (radio) for a zenith distance of less than 70 degrees, better than 30 arcsec (optical or radio) at 85 degrees and better than 20 arcmin (optical) or 30 arcmin (radio) at the horizon.

Without refraction, the complementary functions iauAtio13 and iauAtoi13 are self-consistent to better than 1 microarcsecond all over the celestial sphere. With refraction included, consistency falls off at high zenith distances, but is still better than 0.05 arcsec at 85 degrees.

12) It is advisable to take great care with units, as even unlikely values of the input parameters are accepted and processed in accordance with the models used.

Here is the call graph for this function:

◆ iauAtoiq()

void iauAtoiq ( const char *  type,
double  ob1,
double  ob2,
iauASTROM astrom,
double *  ri,
double *  di 
)

Quick observed place to CIRS.

Quick observed place to CIRS, given the star-independent astrometry parameters.

Use of this function is appropriate when efficiency is important and where many star positions are all to be transformed for one date. The star-independent astrometry parameters can be obtained by calling iauApio[13] or iauApco[13].

Parameters
[in]typetype of coordinates: "R", "H" or "A" (Note 1)
[in]ob1observed Az, HA or RA (radians; Az is N=0,E=90)
[in]ob2observed ZD or Dec (radians)
[in]astromstar-independent astrometry parameters:
[in]pmtPM time interval (SSB, Julian years)
[in]ebSSB to observer (vector, au)
[in]ehSun to observer (unit vector)
[in]emdistance from Sun to observer (au)
[in]vbarycentric observer velocity (vector, c)
[in]bm1sqrt(1-|v|^2): reciprocal of Lorenz factor
[in]bpnbias-precession-nutation matrix
[in]alonglongitude + s' (radians)
[in]xplpolar motion xp wrt local meridian (radians)
[in]yplpolar motion yp wrt local meridian (radians)
[in]sphisine of geodetic latitude
[in]cphicosine of geodetic latitude
[in]diurabmagnitude of diurnal aberration vector
[in]eral"local" Earth rotation angle (radians)
[in]refarefraction constant A (radians)
[in]refbrefraction constant B (radians)
[out]riCIRS right ascension (CIO-based, radians)
[out]diCIRS declination (radians)

Notes:

1) "Observed" Az,El means the position that would be seen by a perfect geodetically aligned theodolite. This is related to the observed HA,Dec via the standard rotation, using the geodetic latitude (corrected for polar motion), while the observed HA and RA are related simply through the Earth rotation angle and the site longitude. "Observed" RA,Dec or HA,Dec thus means the position that would be seen by a perfect equatorial with its polar axis aligned to the Earth's axis of rotation. By removing from the observed place the effects of atmospheric refraction and diurnal aberration, the CIRS RA,Dec is obtained.

2) Only the first character of the type argument is significant. "R" or "r" indicates that ob1 and ob2 are the observed right ascension and declination; "H" or "h" indicates that they are hour angle (west +ve) and declination; anything else ("A" or "a" is recommended) indicates that ob1 and ob2 are azimuth (north zero, east 90 deg) and zenith distance. (Zenith distance is used rather than altitude in order to reflect the fact that no allowance is made for depression of the horizon.)

3) The accuracy of the result is limited by the corrections for refraction, which use a simple A*tan(z) + B*tan^3(z) model. Providing the meteorological parameters are known accurately and there are no gross local effects, the predicted observed coordinates should be within 0.05 arcsec (optical) or 1 arcsec (radio) for a zenith distance of less than 70 degrees, better than 30 arcsec (optical or radio) at 85 degrees and better than 20 arcmin (optical) or 30 arcmin (radio) at the horizon.

Without refraction, the complementary functions iauAtioq and iauAtoiq are self-consistent to better than 1 microarcsecond all over the celestial sphere. With refraction included, consistency falls off at high zenith distances, but is still better than 0.05 arcsec at 85 degrees.

4) It is advisable to take great care with units, as even unlikely values of the input parameters are accepted and processed in accordance with the models used.

Here is the call graph for this function:

◆ iauBp06()

void iauBp06 ( double  date1,
double  date2,
double  rb[3][3],
double  rp[3][3],
double  rbp[3][3] 
)

Frame bias and precession, IAU 2006.

Parameters
[in]date1,date2TT as a 2-part Julian Date (Note 1)
[out]rbframe bias matrix (Note 2)
[out]rpprecession matrix (Note 3)
[out]rbpbias-precession matrix (Note 4)

Notes:

1) The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

    date1         date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.

2) The matrix rb transforms vectors from GCRS to mean J2000.0 by applying frame bias.

3) The matrix rp transforms vectors from mean J2000.0 to mean of date by applying precession.

4) The matrix rbp transforms vectors from GCRS to mean of date by applying frame bias then precession. It is the product rp x rb.

5) It is permissible to re-use the same array in the returned arguments. The arrays are filled in the order given.

References:

Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855

Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981

Here is the call graph for this function:

◆ iauBpn2xy()

void iauBpn2xy ( double  rbpn[3][3],
double *  x,
double *  y 
)

Extract the X,Y coordinates of the Celestial Intermediate Pole.

Extract from the bias-precession-nutation matrix the X,Y coordinates of the Celestial Intermediate Pole.

Parameters
[in]rbpncelestial-to-true matrix (Note 1)
[out]x,yCelestial Intermediate Pole (Note 2)

Notes:

1) The matrix rbpn transforms vectors from GCRS to true equator (and CIO or equinox) of date, and therefore the Celestial Intermediate Pole unit vector is the bottom row of the matrix.

2) The arguments x,y are components of the Celestial Intermediate Pole unit vector in the Geocentric Celestial Reference System.

Reference:

"Expressions for the Celestial Intermediate Pole and Celestial Ephemeris Origin consistent with the IAU 2000A precession- nutation model", Astron.Astrophys. 400, 1145-1154 (2003)

n.b. The celestial ephemeris origin (CEO) was renamed "celestial intermediate origin" (CIO) by IAU 2006 Resolution 2.

◆ iauC2i00a()

void iauC2i00a ( double  date1,
double  date2,
double  rc2i[3][3] 
)

Form the celestial-to-intermediate matrix for a given date.

Form the celestial-to-intermediate matrix for a given date using the IAU 2000A precession-nutation model.

Parameters
[in]date1,date2TT as a 2-part Julian Date (Note 1)
[out]rc2icelestial-to-intermediate matrix (Note 2)

Notes:

1) The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.

2) The matrix rc2i is the first stage in the transformation from celestial to terrestrial coordinates:

[TRS] = RPOM * R_3(ERA) * rc2i * [CRS]

   =  rc2t * [CRS]

where [CRS] is a vector in the Geocentric Celestial Reference System and [TRS] is a vector in the International Terrestrial Reference System (see IERS Conventions 2003), ERA is the Earth Rotation Angle and RPOM is the polar motion matrix.

3) A faster, but slightly less accurate result (about 1 mas), can be obtained by using instead the iauC2i00b function.

References:

"Expressions for the Celestial Intermediate Pole and Celestial Ephemeris Origin consistent with the IAU 2000A precession- nutation model", Astron.Astrophys. 400, 1145-1154 (2003)

n.b. The celestial ephemeris origin (CEO) was renamed "celestial intermediate origin" (CIO) by IAU 2006 Resolution 2.

McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

Here is the call graph for this function:

◆ iauC2i00b()

void iauC2i00b ( double  date1,
double  date2,
double  rc2i[3][3] 
)

Form the celestial-to-intermediate matrix for a given date .

Form the celestial-to-intermediate matrix for a given date using the IAU 2000B precession-nutation model.

Parameters
[in]date1,date2TT as a 2-part Julian Date (Note 1)
[out]rc2icelestial-to-intermediate matrix (Note 2)

Notes:

1) The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.

2) The matrix rc2i is the first stage in the transformation from celestial to terrestrial coordinates:

[TRS] = RPOM * R_3(ERA) * rc2i * [CRS]

   =  rc2t * [CRS]

where [CRS] is a vector in the Geocentric Celestial Reference System and [TRS] is a vector in the International Terrestrial Reference System (see IERS Conventions 2003), ERA is the Earth Rotation Angle and RPOM is the polar motion matrix.

3) The present function is faster, but slightly less accurate (about 1 mas), than the iauC2i00a function.

References:

"Expressions for the Celestial Intermediate Pole and Celestial Ephemeris Origin consistent with the IAU 2000A precession- nutation model", Astron.Astrophys. 400, 1145-1154 (2003)

n.b. The celestial ephemeris origin (CEO) was renamed "celestial intermediate origin" (CIO) by IAU 2006 Resolution 2.

McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

Here is the call graph for this function:

◆ iauC2i06a()

void iauC2i06a ( double  date1,
double  date2,
double  rc2i[3][3] 
)

Form the celestial-to-intermediate matrix for a given date.

Form the celestial-to-intermediate matrix for a given date using the IAU 2006 precession and IAU 2000A nutation models.

Parameters
[in]date1,date2TT as a 2-part Julian Date (Note 1)
[out]rc2icelestial-to-intermediate matrix (Note 2)

Notes:

1) The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.

2) The matrix rc2i is the first stage in the transformation from celestial to terrestrial coordinates:

[TRS] = RPOM * R_3(ERA) * rc2i * [CRS]

   =  RC2T * [CRS]

where [CRS] is a vector in the Geocentric Celestial Reference System and [TRS] is a vector in the International Terrestrial Reference System (see IERS Conventions 2003), ERA is the Earth Rotation Angle and RPOM is the polar motion matrix.

References:

McCarthy, D. D., Petit, G. (eds.), 2004, IERS Conventions (2003), IERS Technical Note No. 32, BKG

Here is the call graph for this function:

◆ iauC2ibpn()

void iauC2ibpn ( double  date1,
double  date2,
double  rbpn[3][3],
double  rc2i[3][3] 
)

Form the celestial-to-intermediate matrix for a given date.

Form the celestial-to-intermediate matrix for a given date given the bias-precession-nutation matrix. IAU 2000.

Parameters
[in]date1,date2TT as a 2-part Julian Date (Note 1)
[in]rbpncelestial-to-true matrix (Note 2)
[out]rc2icelestial-to-intermediate matrix (Note 3)

Notes:

1) The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.

2) The matrix rbpn transforms vectors from GCRS to true equator (and CIO or equinox) of date. Only the CIP (bottom row) is used.

3) The matrix rc2i is the first stage in the transformation from celestial to terrestrial coordinates:

[TRS] = RPOM * R_3(ERA) * rc2i * [CRS]

  = RC2T * [CRS]

where [CRS] is a vector in the Geocentric Celestial Reference System and [TRS] is a vector in the International Terrestrial Reference System (see IERS Conventions 2003), ERA is the Earth Rotation Angle and RPOM is the polar motion matrix.

4) Although its name does not include "00", This function is in fact specific to the IAU 2000 models.

References: "Expressions for the Celestial Intermediate Pole and Celestial Ephemeris Origin consistent with the IAU 2000A precession- nutation model", Astron.Astrophys. 400, 1145-1154 (2003)

n.b. The celestial ephemeris origin (CEO) was renamed "celestial intermediate origin" (CIO) by IAU 2006 Resolution 2.

McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

Here is the call graph for this function:

◆ iauC2ixy()

void iauC2ixy ( double  date1,
double  date2,
double  x,
double  y,
double  rc2i[3][3] 
)

Form the celestial to intermediate-frame-of-date matrix.

Form the celestial to intermediate-frame-of-date matrix for a given date when the CIP X,Y coordinates are known. IAU 2000.

Parameters
[in]date1,date2TT as a 2-part Julian Date (Note 1)
[in]x,yCelestial Intermediate Pole (Note 2)
[out]rc2icelestial-to-intermediate matrix (Note 3)

Notes:

1) The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.

2) The Celestial Intermediate Pole coordinates are the x,y components of the unit vector in the Geocentric Celestial Reference System.

3) The matrix rc2i is the first stage in the transformation from celestial to terrestrial coordinates:

[TRS] = RPOM * R_3(ERA) * rc2i * [CRS]

  = RC2T * [CRS]

where [CRS] is a vector in the Geocentric Celestial Reference System and [TRS] is a vector in the International Terrestrial Reference System (see IERS Conventions 2003), ERA is the Earth Rotation Angle and RPOM is the polar motion matrix.

4) Although its name does not include "00", This function is in fact specific to the IAU 2000 models.

Reference:

McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

Here is the call graph for this function:

◆ iauC2ixys()

void iauC2ixys ( double  x,
double  y,
double  s,
double  rc2i[3][3] 
)

Form the celestial to intermediate-frame-of-date matrix.

Form the celestial to intermediate-frame-of-date matrix given the CIP X,Y and the CIO locator s.

Parameters
[in]x,yCelestial Intermediate Pole (Note 1)
[in]sthe CIO locator s (Note 2)
[out]rc2icelestial-to-intermediate matrix (Note 3)

Notes:

1) The Celestial Intermediate Pole coordinates are the x,y components of the unit vector in the Geocentric Celestial Reference System.

2) The CIO locator s (in radians) positions the Celestial Intermediate Origin on the equator of the CIP.

3) The matrix rc2i is the first stage in the transformation from celestial to terrestrial coordinates:

[TRS] = RPOM * R_3(ERA) * rc2i * [CRS]

  = RC2T * [CRS]

where [CRS] is a vector in the Geocentric Celestial Reference System and [TRS] is a vector in the International Terrestrial Reference System (see IERS Conventions 2003), ERA is the Earth Rotation Angle and RPOM is the polar motion matrix.

Reference:

McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

Here is the call graph for this function:

◆ iauC2t00a()

void iauC2t00a ( double  tta,
double  ttb,
double  uta,
double  utb,
double  xp,
double  yp,
double  rc2t[3][3] 
)

Form the celestial to terrestrial matrix.

Form the celestial to terrestrial matrix given the date, the UT1 and the polar motion, using the IAU 2000A nutation model.

Parameters
[in]tta,ttbTT as a 2-part Julian Date (Note 1)
[in]uta,utbUT1 as a 2-part Julian Date (Note 1)
[in]xp,ypcoordinates of the pole (radians, Note 2)
[out]rc2tcelestial-to-terrestrial matrix (Note 3)

Notes:

1) The TT and UT1 dates tta+ttb and uta+utb are Julian Dates, apportioned in any convenient way between the arguments uta and utb. For example, JD(UT1)=2450123.7 could be expressed in any of these ways, among others:

    uta            utb

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 and MJD methods are good compromises between resolution and convenience. In the case of uta,utb, the date & time method is best matched to the Earth rotation angle algorithm used: maximum precision is delivered when the uta argument is for 0hrs UT1 on the day in question and the utb argument lies in the range 0 to 1, or vice versa.

2) The arguments xp and yp are the coordinates (in radians) of the Celestial Intermediate Pole with respect to the International Terrestrial Reference System (see IERS Conventions 2003), measured along the meridians to 0 and 90 deg west respectively.

3) The matrix rc2t transforms from celestial to terrestrial coordinates:

[TRS] = RPOM * R_3(ERA) * RC2I * [CRS]

  = rc2t * [CRS]

where [CRS] is a vector in the Geocentric Celestial Reference System and [TRS] is a vector in the International Terrestrial Reference System (see IERS Conventions 2003), RC2I is the celestial-to-intermediate matrix, ERA is the Earth rotation angle and RPOM is the polar motion matrix.

4) A faster, but slightly less accurate result (about 1 mas), can be obtained by using instead the iauC2t00b function.

Reference:

McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

Here is the call graph for this function:

◆ iauC2t00b()

void iauC2t00b ( double  tta,
double  ttb,
double  uta,
double  utb,
double  xp,
double  yp,
double  rc2t[3][3] 
)

Form the celestial to terrestrial matrix.

Form the celestial to terrestrial matrix given the date, the UT1 and the polar motion, using the IAU 2000B nutation model.

Parameters
[in]tta,ttbTT as a 2-part Julian Date (Note 1)
[in]uta,utbUT1 as a 2-part Julian Date (Note 1)
[in]xp,ypcoordinates of the pole (radians, Note 2)
[out]rc2tcelestial-to-terrestrial matrix (Note 3)

Notes:

1) The TT and UT1 dates tta+ttb and uta+utb are Julian Dates, apportioned in any convenient way between the arguments uta and utb. For example, JD(UT1)=2450123.7 could be expressed in any of these ways, among others:

    uta            utb

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 and MJD methods are good compromises between resolution and convenience. In the case of uta,utb, the date & time method is best matched to the Earth rotation angle algorithm used: maximum precision is delivered when the uta argument is for 0hrs UT1 on the day in question and the utb argument lies in the range 0 to 1, or vice versa.

2) The arguments xp and yp are the coordinates (in radians) of the Celestial Intermediate Pole with respect to the International Terrestrial Reference System (see IERS Conventions 2003), measured along the meridians to 0 and 90 deg west respectively.

3) The matrix rc2t transforms from celestial to terrestrial coordinates:

[TRS] = RPOM * R_3(ERA) * RC2I * [CRS]

  = rc2t * [CRS]

where [CRS] is a vector in the Geocentric Celestial Reference System and [TRS] is a vector in the International Terrestrial Reference System (see IERS Conventions 2003), RC2I is the celestial-to-intermediate matrix, ERA is the Earth rotation angle and RPOM is the polar motion matrix.

4) The present function is faster, but slightly less accurate (about 1 mas), than the iauC2t00a function.

Reference:

McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

Here is the call graph for this function:

◆ iauC2t06a()

void iauC2t06a ( double  tta,
double  ttb,
double  uta,
double  utb,
double  xp,
double  yp,
double  rc2t[3][3] 
)

Form the celestial to terrestrial matrix.

Form the celestial to terrestrial matrix given the date, the UT1 and the polar motion, using the IAU 2006 precession and IAU 2000A nutation models.

Parameters
[in]tta,ttbTT as a 2-part Julian Date (Note 1)
[in]uta,utbUT1 as a 2-part Julian Date (Note 1)
[in]xp,ypcoordinates of the pole (radians, Note 2)
[out]rc2tcelestial-to-terrestrial matrix (Note 3)

Notes:

1) The TT and UT1 dates tta+ttb and uta+utb are Julian Dates, apportioned in any convenient way between the arguments uta and utb. For example, JD(UT1)=2450123.7 could be expressed in any of these ways, among others:

    uta            utb

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 and MJD methods are good compromises between resolution and convenience. In the case of uta,utb, the date & time method is best matched to the Earth rotation angle algorithm used: maximum precision is delivered when the uta argument is for 0hrs UT1 on the day in question and the utb argument lies in the range 0 to 1, or vice versa.

2) The arguments xp and yp are the coordinates (in radians) of the Celestial Intermediate Pole with respect to the International Terrestrial Reference System (see IERS Conventions 2003), measured along the meridians to 0 and 90 deg west respectively.

3) The matrix rc2t transforms from celestial to terrestrial coordinates:

[TRS] = RPOM * R_3(ERA) * RC2I * [CRS]

  = rc2t * [CRS]

where [CRS] is a vector in the Geocentric Celestial Reference System and [TRS] is a vector in the International Terrestrial Reference System (see IERS Conventions 2003), RC2I is the celestial-to-intermediate matrix, ERA is the Earth rotation angle and RPOM is the polar motion matrix.

Reference:

McCarthy, D. D., Petit, G. (eds.), 2004, IERS Conventions (2003), IERS Technical Note No. 32, BKG

Here is the call graph for this function:

◆ iauC2tcio()

void iauC2tcio ( double  rc2i[3][3],
double  era,
double  rpom[3][3],
double  rc2t[3][3] 
)

Assemble the celestial to terrestrial matrix.

Assemble the celestial to terrestrial matrix from CIO-based components (the celestial-to-intermediate matrix, the Earth Rotation Angle and the polar motion matrix).

Parameters
[in]rc2icelestial-to-intermediate matrix
[in]eraEarth rotation angle (radians)
[in]rpompolar-motion matrix
[out]rc2tcelestial-to-terrestrial matrix

Notes:

1) This function constructs the rotation matrix that transforms vectors in the celestial system into vectors in the terrestrial system. It does so starting from precomputed components, namely the matrix which rotates from celestial coordinates to the intermediate frame, the Earth rotation angle and the polar motion matrix. One use of the present function is when generating a series of celestial-to-terrestrial matrices where only the Earth Rotation Angle changes, avoiding the considerable overhead of recomputing the precession-nutation more often than necessary to achieve given accuracy objectives.

2) The relationship between the arguments is as follows:

  [TRS] = RPOM * R_3(ERA) * rc2i * [CRS]

        = rc2t * [CRS]

where [CRS] is a vector in the Geocentric Celestial Reference System and [TRS] is a vector in the International Terrestrial Reference System (see IERS Conventions 2003).

Reference:

McCarthy, D. D., Petit, G. (eds.), 2004, IERS Conventions (2003), IERS Technical Note No. 32, BKG

Here is the call graph for this function:

◆ iauC2teqx()

void iauC2teqx ( double  rbpn[3][3],
double  gst,
double  rpom[3][3],
double  rc2t[3][3] 
)

Assemble the celestial to terrestrial matrix.

Assemble the celestial to terrestrial matrix from equinox-based components (the celestial-to-true matrix, the Greenwich Apparent Sidereal Time and the polar motion matrix).

Parameters
[in]rbpncelestial-to-true matrix
[in]gstGreenwich (apparent) Sidereal Time (radians)
[in]rpompolar-motion matrix
[out]rc2tcelestial-to-terrestrial matrix (Note 2)

Notes:

1) This function constructs the rotation matrix that transforms vectors in the celestial system into vectors in the terrestrial system. It does so starting from precomputed components, namely the matrix which rotates from celestial coordinates to the true equator and equinox of date, the Greenwich Apparent Sidereal Time and the polar motion matrix. One use of the present function is when generating a series of celestial-to-terrestrial matrices where only the Sidereal Time changes, avoiding the considerable overhead of recomputing the precession-nutation more often than necessary to achieve given accuracy objectives.

2) The relationship between the arguments is as follows:

  [TRS] = rpom * R_3(gst) * rbpn * [CRS]

        = rc2t * [CRS]

where [CRS] is a vector in the Geocentric Celestial Reference System and [TRS] is a vector in the International Terrestrial Reference System (see IERS Conventions 2003).

Reference:

McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

Here is the call graph for this function:

◆ iauC2tpe()

void iauC2tpe ( double  tta,
double  ttb,
double  uta,
double  utb,
double  dpsi,
double  deps,
double  xp,
double  yp,
double  rc2t[3][3] 
)

Form the celestial to terrestrial matrix.

Form the celestial to terrestrial matrix given the date, the UT1, the nutation and the polar motion. IAU 2000.

Parameters
[in]tta,ttbTT as a 2-part Julian Date (Note 1)
[in]uta,utbUT1 as a 2-part Julian Date (Note 1)
[in]dpsi,depsnutation (Note 2)
[in]xp,ypcoordinates of the pole (radians, Note 3)
[out]rc2tcelestial-to-terrestrial matrix (Note 4)

Notes:

1) The TT and UT1 dates tta+ttb and uta+utb are Julian Dates, apportioned in any convenient way between the arguments uta and utb. For example, JD(UT1)=2450123.7 could be expressed in any of these ways, among others:

    uta            utb

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 and MJD methods are good compromises between resolution and convenience. In the case of uta,utb, the date & time method is best matched to the Earth rotation angle algorithm used: maximum precision is delivered when the uta argument is for 0hrs UT1 on the day in question and the utb argument lies in the range 0 to 1, or vice versa.

2) The caller is responsible for providing the nutation components; they are in longitude and obliquity, in radians and are with respect to the equinox and ecliptic of date. For high-accuracy applications, free core nutation should be included as well as any other relevant corrections to the position of the CIP.

3) The arguments xp and yp are the coordinates (in radians) of the Celestial Intermediate Pole with respect to the International Terrestrial Reference System (see IERS Conventions 2003), measured along the meridians to 0 and 90 deg west respectively.

4) The matrix rc2t transforms from celestial to terrestrial coordinates:

[TRS] = RPOM * R_3(GST) * RBPN * [CRS]

  = rc2t * [CRS]

where [CRS] is a vector in the Geocentric Celestial Reference System and [TRS] is a vector in the International Terrestrial Reference System (see IERS Conventions 2003), RBPN is the bias-precession-nutation matrix, GST is the Greenwich (apparent) Sidereal Time and RPOM is the polar motion matrix.

5) Although its name does not include "00", This function is in fact specific to the IAU 2000 models.

Reference:

McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

Here is the call graph for this function:

◆ iauC2txy()

void iauC2txy ( double  tta,
double  ttb,
double  uta,
double  utb,
double  x,
double  y,
double  xp,
double  yp,
double  rc2t[3][3] 
)

Form the celestial to terrestrial matrix.

Form the celestial to terrestrial matrix given the date, the UT1, the CIP coordinates and the polar motion. IAU 2000.

Parameters
[in]tta,ttbTT as a 2-part Julian Date (Note 1)
[in]uta,utbUT1 as a 2-part Julian Date (Note 1)
[in]x,yCelestial Intermediate Pole (Note 2)
[in]xp,ypcoordinates of the pole (radians, Note 3)
[out]rc2tcelestial-to-terrestrial matrix (Note 4)

Notes:

1) The TT and UT1 dates tta+ttb and uta+utb are Julian Dates, apportioned in any convenient way between the arguments uta and utb. For example, JD(UT1)=2450123.7 could be expressed in any o these ways, among others:

    uta            utb

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 and MJD methods are good compromises between resolution and convenience. In the case of uta,utb, the date & time method is best matched to the Earth rotation angle algorithm used: maximum precision is delivered when the uta argument is for 0hrs UT1 on the day in question and the utb argument lies in the range 0 to 1, or vice versa.

2) The Celestial Intermediate Pole coordinates are the x,y components of the unit vector in the Geocentric Celestial Reference System.

3) The arguments xp and yp are the coordinates (in radians) of the Celestial Intermediate Pole with respect to the International Terrestrial Reference System (see IERS Conventions 2003), measured along the meridians to 0 and 90 deg west respectively.

4) The matrix rc2t transforms from celestial to terrestrial coordinates:

[TRS] = RPOM * R_3(ERA) * RC2I * [CRS]

  = rc2t * [CRS]

where [CRS] is a vector in the Geocentric Celestial Reference System and [TRS] is a vector in the International Terrestrial Reference System (see IERS Conventions 2003), ERA is the Earth Rotation Angle and RPOM is the polar motion matrix.

5) Although its name does not include "00", This function is in fact specific to the IAU 2000 models.

Reference:

McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
IERS Technical Note No. 32, BKG (2004)
Here is the call graph for this function:

◆ iauCal2jd()

int iauCal2jd ( int  iy,
int  im,
int  id,
double *  djm0,
double *  djm 
)

Gregorian Calendar to Julian Date.

Parameters
[in]iy,im,idyear, month, day in Gregorian calendar (Note 1)
[out]djm0MJD zero-point: always 2400000.5
[out]djmModified Julian Date for 0 hrs
Returns
0 = OK -1 = bad year (Note 3: JD not computed) -2 = bad month (JD not computed) -3 = bad day (JD computed)

Notes:

1) The algorithm used is valid from -4800 March 1, but this implementation rejects dates before -4799 January 1.

2) The Julian Date is returned in two pieces, in the usual SOFA manner, which is designed to preserve time resolution. The Julian Date is available as a single number by adding djm0 and djm.

3) In early eras the conversion is from the "Proleptic Gregorian Calendar"; no account is taken of the date(s) of adoption of the Gregorian Calendar, nor is the AD/BC numbering convention observed.

Reference:

Explanatory Supplement to the Astronomical Almanac, P. Kenneth Seidelmann (ed), University Science Books (1992), Section 12.92 (p604).

◆ iauD2dtf()

int iauD2dtf ( const char *  scale,
int  ndp,
double  d1,
double  d2,
int *  iy,
int *  im,
int *  id,
int  ihmsf[4] 
)

Format for output a 2-part Julian Date.

Format for output a 2-part Julian Date (or in the case of UTC a quasi-JD form that includes special provision for leap seconds).

Parameters
[in]scaletime scale ID (Note 1)
[in]ndpresolution (Note 2)
[in]d1,d2time as a 2-part Julian Date (Notes 3,4)
[out]iy,im,idyear, month, day in Gregorian calendar (Note 5)
[out]ihmsfhours, minutes, seconds, fraction (Note 1)
Returns
+1 = dubious year (Note 5) 0 = OK -1 = unacceptable date (Note 6)

Notes:

1) scale identifies the time scale. Only the value "UTC" (in upper case) is significant, and enables handling of leap seconds (see Note 4).

2) ndp is the number of decimal places in the seconds field, and can have negative as well as positive values, such as:

*     ndp         resolution
*     -4            1 00 00
*     -3            0 10 00
*     -2            0 01 00
*     -1            0 00 10
*      0            0 00 01
*      1            0 00 00.1
*      2            0 00 00.01
*      3            0 00 00.001
*

The limits are platform dependent, but a safe range is -5 to +9.

3) d1+d2 is Julian Date, apportioned in any convenient way between the two arguments, for example where d1 is the Julian Day Number and d2 is the fraction of a day. In the case of UTC, where the use of JD is problematical, special conventions apply: see the next note.

4) JD cannot unambiguously represent UTC during a leap second unless special measures are taken. The SOFA internal convention is that the quasi-JD day represents UTC days whether the length is 86399, 86400 or 86401 SI seconds. In the 1960-1972 era there were smaller jumps (in either direction) each time the linear UTC(TAI) expression was changed, and these "mini-leaps" are also included in the SOFA convention.

5) The warning status "dubious year" flags UTCs that predate the introduction of the time scale or that are too far in the future to be trusted. See iauDat for further details.

6) For calendar conventions and limitations, see iauCal2jd.

Here is the call graph for this function:

◆ iauDat()

int iauDat ( int  iy,
int  im,
int  id,
double  fd,
double *  deltat 
)

For a given UTC date, calculate delta(AT) = TAI-UTC.

  :------------------------------------------:
  :                                          :
  :                 IMPORTANT                :
  :                                          :
  :  A new version of this function must be  :
  :  produced whenever a new leap second is  :
  :  announced.  There are four items to     :
  :  change on each such occasion:           :
  :                                          :
  :  1) A new line must be added to the set  :
  :     of statements that initialize the    :
  :     array "changes".                     :
  :                                          :
  :  2) The constant IYV must be set to the  :
  :     current year.                        :
  :                                          :
  :  3) The "Latest leap second" comment     :
  :     below must be set to the new leap    :
  :     second date.                         :
  :                                          :
  :  4) The "This revision" comment, later,  :
  :     must be set to the current date.     :
  :                                          :
  :  Change (2) must also be carried out     :
  :  whenever the function is re-issued,     :
  :  even if no leap seconds have been       :
  :  added.                                  :
  :                                          :
  :  Latest leap second:  2015 June 30       :
  :                                          :
  :__________________________________________:
Parameters
[in]iyUTC: year (Notes 1 and 2)
[in]immonth (Note 2)
[in]idday (Notes 2 and 3)
[in]fdfraction of day (Note 4)
[out]deltatTAI minus UTC, seconds
Returns
(Note 5): 1 = dubious year (Note 1) 0 = OK -1 = bad year -2 = bad month -3 = bad day (Note 3) -4 = bad fraction (Note 4) -5 = internal error (Note 5)

Notes:

1) UTC began at 1960 January 1.0 (JD 2436934.5) and it is improper to call the function with an earlier date. If this is attempted, zero is returned together with a warning status.

Because leap seconds cannot, in principle, be predicted in advance, a reliable check for dates beyond the valid range is impossible. To guard against gross errors, a year five or more after the release year of the present function (see the constant IYV) is considered dubious. In this case a warning status is returned but the result is computed in the normal way.

For both too-early and too-late years, the warning status is +1. This is distinct from the error status -1, which signifies a year so early that JD could not be computed.

2) If the specified date is for a day which ends with a leap second, the UTC-TAI value returned is for the period leading up to the leap second. If the date is for a day which begins as a leap second ends, the UTC-TAI returned is for the period following the leap second.

3) The day number must be in the normal calendar range, for example 1 through 30 for April. The "almanac" convention of allowing such dates as January 0 and December 32 is not supported in this function, in order to avoid confusion near leap seconds.

4) The fraction of day is used only for dates before the introduction of leap seconds, the first of which occurred at the end of 1971. It is tested for validity (0 to 1 is the valid range) even if not used; if invalid, zero is used and status -4 is returned. For many applications, setting fd to zero is acceptable; the resulting error is always less than 3 ms (and occurs only pre-1972).

5) The status value returned in the case where there are multiple errors refers to the first error detected. For example, if the month and day are 13 and 32 respectively, status -2 (bad month) will be returned. The "internal error" status refers to a case that is impossible but causes some compilers to issue a warning.

6) In cases where a valid result is not available, zero is returned.

References:

1) For dates from 1961 January 1 onwards, the expressions from the file ftp://maia.usno.navy.mil/ser7/tai-utc.dat are used.

2) The 5ms timestep at 1961 January 1 is taken from 2.58.1 (p87) of the 1992 Explanatory Supplement.

Here is the call graph for this function:

◆ iauDtf2d()

int iauDtf2d ( const char *  scale,
int  iy,
int  im,
int  id,
int  ihr,
int  imn,
double  sec,
double *  d1,
double *  d2 
)

Encode date and time fields into 2-part Julian Date.

Encode date and time fields into 2-part Julian Date (or in the case of UTC a quasi-JD form that includes special provision for leap seconds).

Parameters
[in]scaletime scale ID (Note 1)
[in]iy,im,idyear, month, day in Gregorian calendar (Note 2)
[in]ihr,imnhour, minute
[in]secseconds
[out]d1,d22-part Julian Date (Notes 3,4)
Returns
+3 = both of next two +2 = time is after end of day (Note 5) +1 = dubious year (Note 6) 0 = OK -1 = bad year -2 = bad month -3 = bad day -4 = bad hour -5 = bad minute -6 = bad second (<0)

Notes:

1) scale identifies the time scale. Only the value "UTC" (in upper case) is significant, and enables handling of leap seconds (see Note 4).

2) For calendar conventions and limitations, see iauCal2jd.

3) The sum of the results, d1+d2, is Julian Date, where normally d1 is the Julian Day Number and d2 is the fraction of a day. In the case of UTC, where the use of JD is problematical, special conventions apply: see the next note.

4) JD cannot unambiguously represent UTC during a leap second unless special measures are taken. The SOFA internal convention is that the quasi-JD day represents UTC days whether the length is 86399, 86400 or 86401 SI seconds. In the 1960-1972 era there were smaller jumps (in either direction) each time the linear UTC(TAI) expression was changed, and these "mini-leaps" are also included in the SOFA convention.

5) The warning status "time is after end of day" usually means that the sec argument is greater than 60.0. However, in a day ending in a leap second the limit changes to 61.0 (or 59.0 in the case of a negative leap second).

6) The warning status "dubious year" flags UTCs that predate the introduction of the time scale or that are too far in the future to be trusted. See iauDat for further details.

7) Only in the case of continuous and regular time scales (TAI, TT, TCG, TCB and TDB) is the result d1+d2 a Julian Date, strictly speaking. In the other cases (UT1 and UTC) the result must be used with circumspection; in particular the difference between two such results cannot be interpreted as a precise time interval.

Here is the call graph for this function:

◆ iauEceq06()

int iauEceq06 ( double  date1,
double  date2,
double  dl,
double  db,
double *  dr,
double *  dd 
)

Transformation from ecliptic coordinates (mean equinox and ecliptic of date) to ICRS RA,Dec, using the IAU 2006 precession model.

1) The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

            date1          date2

         2450123.7           0.0       (JD method)
         2451545.0       -1421.3       (J2000 method)
         2400000.5       50123.2       (MJD method)
         2450123.5           0.2       (date & time method)
* 
The JD method is the most natural and convenient to use in
cases where the loss of several decimal digits of resolution
is acceptable.  The J2000 method is best matched to the way
the argument is handled internally and will deliver the
optimum resolution.  The MJD method and the date & time methods
are both good compromises between resolution and convenience.

2) No assumptions are made about whether the coordinates represent starlight and embody astrometric effects such as parallax or aberration.

3) The transformation is approximately that from ecliptic longitude and latitude (mean equinox and ecliptic of date) to mean J2000.0 right ascension and declination, with only frame bias (always less than 25 mas) to disturb this classical picture.

Parameters
[in]date1TT as a 2-part Julian date
[in]date2TT as a 2-part Julian date
[in]dlecliptic longitute (radians)
[in]dbecliptic latitude (radians)
Returns
dr ICRS right ascension (radians)
dd ICRS right declination (radians)
Here is the call graph for this function:

◆ iauEcm06()

int iauEcm06 ( double  date1,
double  date2,
double  rm[3][3] 
)

ICRS equatorial to ecliptic rotation matrix, IAU 2006.

Notes:

1) The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

            date1          date2

         2450123.7           0.0       (JD method)
         2451545.0       -1421.3       (J2000 method)
         2400000.5       50123.2       (MJD method)
         2450123.5           0.2       (date & time method)
*
  The JD method is the most natural and convenient to use in
  cases where the loss of several decimal digits of resolution
  is acceptable.  The J2000 method is best matched to the way
  the argument is handled internally and will deliver the
  optimum resolution.  The MJD method and the date & time methods
  are both good compromises between resolution and convenience.

1) The matrix is in the sense

  E_ep = rm x P_ICRS,

where P_ICRS is a vector with respect to ICRS right ascension and declination axes and E_ep is the same vector with respect to the (inertial) ecliptic and equinox of date.

2) P_ICRS is a free vector, merely a direction, typically of unit magnitude, and not bound to any particular spatial origin, such as the Earth, Sun or SSB. No assumptions are made about whether it represents starlight and embodies astrometric effects such as parallax or aberration. The transformation is approximately that between mean J2000.0 right ascension and declination and ecliptic longitude and latitude, with only frame bias (always less than 25 mas) to disturb this classical picture.

Parameters
[in]date1TT as a 2-part Julian date
[in]date2TT as a 2-part Julian date
[out]rmICRS to ecliptic rotation matrix
Here is the call graph for this function:

◆ iauEe00a()

double iauEe00a ( double  date1,
double  date2 
)

Equation of the equinoxes.

Equation of the equinoxes, compatible with IAU 2000 resolutions.

Parameters
[in]date1,date2TT as a 2-part Julian Date (Note 1)
Returns
equation of the equinoxes (Note 2)

Notes:

1) The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.

2) The result, which is in radians, operates in the following sense:

  Greenwich apparent ST = GMST + equation of the equinoxes

3) The result is compatible with the IAU 2000 resolutions. For further details, see IERS Conventions 2003 and Capitaine et al. (2002).

References:

Capitaine, N., Wallace, P.T. and McCarthy, D.D., "Expressions to implement the IAU 2000 definition of UT1", Astronomy & Astrophysics, 406, 1135-1149 (2003).

McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004).

Here is the call graph for this function:

◆ iauEe00b()

double iauEe00b ( double  date1,
double  date2 
)

Equation of the equinoxes.

Equation of the equinoxes, compatible with IAU 2000 resolutions but using the truncated nutation model IAU 2000B.

Parameters
[in]date1,date2TT as a 2-part Julian Date (Note 1)
Returns
equation of the equinoxes (Note 2)

Notes:

1) The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.

2) The result, which is in radians, operates in the following sense:

  Greenwich apparent ST = GMST + equation of the equinoxes

3) The result is compatible with the IAU 2000 resolutions except that accuracy has been compromised for the sake of speed. For further details, see McCarthy & Luzum (2001), IERS Conventions 2003 and Capitaine et al. (2003).

References:

Capitaine, N., Wallace, P.T. and McCarthy, D.D., "Expressions to implement the IAU 2000 definition of UT1", Astronomy & Astrophysics, 406, 1135-1149 (2003)

McCarthy, D.D. & Luzum, B.J., "An abridged model of the precession-nutation of the celestial pole", Celestial Mechanics & Dynamical Astronomy, 85, 37-49 (2003)

McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

Here is the call graph for this function:

◆ iauEe06a()

double iauEe06a ( double  date1,
double  date2 
)

Equation of the equinoxes.

Equation of the equinoxes, compatible with IAU 2000 resolutions and IAU 2006/2000A precession-nutation.

Parameters
[in]date1,date2TT as a 2-part Julian Date (Note 1)
Returns
equation of the equinoxes (Note 2)

Notes:

1) The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.

2) The result, which is in radians, operates in the following sense:

  Greenwich apparent ST = GMST + equation of the equinoxes

Reference:

McCarthy, D. D., Petit, G. (eds.), 2004, IERS Conventions (2003), IERS Technical Note No. 32, BKG

Here is the call graph for this function:

◆ iauEo06a()

double iauEo06a ( double  date1,
double  date2 
)

Equation of the origins.

Equation of the origins, IAU 2006 precession and IAU 2000A nutation.

Parameters
[in]date1,date2TT as a 2-part Julian Date (Note 1)
Returns
equation of the origins in radians

Notes:

1) The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.

2) The equation of the origins is the distance between the true equinox and the celestial intermediate origin and, equivalently, the difference between Earth rotation angle and Greenwich apparent sidereal time (ERA-GST). It comprises the precession (since J2000.0) in right ascension plus the equation of the equinoxes (including the small correction terms).

References:

Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855

Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981

Here is the call graph for this function:

◆ iauEors()

double iauEors ( double  rnpb[3][3],
double  s 
)

Equation of the origins.

Equation of the origins, given the classical NPB matrix and the quantity s.

Parameters
[in]rnpbclassical nutation x precession x bias matrix
[in]sthe quantity s (the CIO locator)
Returns
the equation of the origins in radians.

Notes:

1) The equation of the origins is the distance between the true equinox and the celestial intermediate origin and, equivalently, the difference between Earth rotation angle and Greenwich apparent sidereal time (ERA-GST). It comprises the precession (since J2000.0) in right ascension plus the equation of the equinoxes (including the small correction terms).

2) The algorithm is from Wallace & Capitaine (2006).

References:

Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855

Wallace, P. & Capitaine, N., 2006, Astron.Astrophys. 459, 981

◆ iauEpb()

double iauEpb ( double  dj1,
double  dj2 
)

Julian Date to Besselian Epoch.

Parameters
[in]dj1,dj2Julian Date (see note)
Returns
Besselian Epoch.

Note:

The Julian Date is supplied in two pieces, in the usual SOFA manner, which is designed to preserve time resolution. The Julian Date is available as a single number by adding dj1 and dj2. The maximum resolution is achieved if dj1 is 2451545.0 (J2000.0).

Reference:

Lieske, J.H., 1979. Astron.Astrophys., 73, 282.

◆ iauEpb2jd()

void iauEpb2jd ( double  epb,
double *  djm0,
double *  djm 
)

Besselian Epoch to Julian Date.

Parameters
[in]epbBesselian Epoch (e.g. 1957.3)
[out]djm0MJD zero-point: always 2400000.5
[out]djmModified Julian Date

Note:

The Julian Date is returned in two pieces, in the usual SOFA manner, which is designed to preserve time resolution. The Julian Date is available as a single number by adding djm0 and djm.

Reference:

Lieske, J.H., 1979, Astron.Astrophys. 73, 282.

◆ iauEpj()

double iauEpj ( double  dj1,
double  dj2 
)

Julian Date to Julian Epoch.

Parameters
[in]dj1,dj2Julian Date (see note)
Returns
Julian Epoch

Note:

The Julian Date is supplied in two pieces, in the usual SOFA manner, which is designed to preserve time resolution. The Julian Date is available as a single number by adding dj1 and dj2. The maximum resolution is achieved if dj1 is 2451545.0 (J2000.0).

Reference:

Lieske, J.H., 1979, Astron.Astrophys. 73, 282.

◆ iauEpj2jd()

void iauEpj2jd ( double  epj,
double *  djm0,
double *  djm 
)

Julian Epoch to Julian Date.

Parameters
[in]epjJulian Epoch (e.g. 1996.8)
[out]djm0MJD zero-point: always 2400000.5
[out]djmModified Julian Date

Note:

The Julian Date is returned in two pieces, in the usual SOFA manner, which is designed to preserve time resolution. The Julian Date is available as a single number by adding djm0 and djm.

Reference:

Lieske, J.H., 1979, Astron.Astrophys. 73, 282.

◆ iauEpv00()

int iauEpv00 ( double  date1,
double  date2,
double  pvh[2][3],
double  pvb[2][3] 
)

Earth position and velocity.

Earth position and velocity, heliocentric and barycentric, with respect to the Barycentric Celestial Reference System.

Parameters
[in]date1,date2TDB date (Note 1)
[out]pvhheliocentric Earth position/velocity
[out]pvbbarycentric Earth position/velocity
Returns
0 = OK +1 = warning: date outside the range 1900-2100 AD

Notes:

1) The TDB date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TDB)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience. However, the accuracy of the result is more likely to be limited by the algorithm itself than the way the date has been expressed.

n.b. TT can be used instead of TDB in most applications.

2) On return, the arrays pvh and pvb contain the following:

  pvh[0][0]  x       }
  pvh[0][1]  y       } heliocentric position, AU
  pvh[0][2]  z       }

  pvh[1][0]  xdot    }
  pvh[1][1]  ydot    } heliocentric velocity, AU/d
  pvh[1][2]  zdot    }

  pvb[0][0]  x       }
  pvb[0][1]  y       } barycentric position, AU
  pvb[0][2]  z       }

  pvb[1][0]  xdot    }
  pvb[1][1]  ydot    } barycentric velocity, AU/d
  pvb[1][2]  zdot    }

The vectors are with respect to the Barycentric Celestial Reference System. The time unit is one day in TDB.

3) The function is a SIMPLIFIED SOLUTION from the planetary theory VSOP2000 (X. Moisson, P. Bretagnon, 2001, Celes. Mechanics & Dyn. Astron., 80, 3/4, 205-213) and is an adaptation of original Fortran code supplied by P. Bretagnon (private comm., 2000).

4) Comparisons over the time span 1900-2100 with this simplified solution and the JPL DE405 ephemeris give the following results:

                       RMS    max
  Heliocentric:
     position error    3.7   11.2   km
     velocity error    1.4    5.0   mm/s

  Barycentric:
     position error    4.6   13.4   km
     velocity error    1.4    4.9   mm/s

Comparisons with the JPL DE406 ephemeris show that by 1800 and 2200 the position errors are approximately double their 1900-2100 size. By 1500 and 2500 the deterioration is a factor of 10 and by 1000 and 3000 a factor of 60. The velocity accuracy falls off at about half that rate.

5) It is permissible to use the same array for pvh and pvb, which will receive the barycentric values.

◆ iauEqec06()

void iauEqec06 ( double  date1,
double  date2,
double  dr,
double  dd,
double *  dl,
double *  db 
)

Transformation from ICRS equatorial coordinates to ecliptic coordinates.

Transformation from ICRS equatorial coordinates to ecliptic coordinates (mean equinox and ecliptic of date) using IAU 2006 precession model. 1) The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.

2) No assumptions are made about whether the coordinates represent starlight and embody astrometric effects such as parallax or aberration.

3) The transformation is approximately that from mean J2000.0 right ascension and declination to ecliptic longitude and latitude (mean equinox and ecliptic of date), with only frame bias (always less than 25 mas) to disturb this classical picture.

Parameters
[in]data1TT as a 2-part Julian date
[in]data2TT as a 2-part Julian date
[in]drICRS right ascension (radians)
[in]ddICRS right declination (radians)
[out]dlecliptic longitute (radians)
[out]dbecliptic latitude (radians)
Here is the call graph for this function:

◆ iauFk425()

void iauFk425 ( double  r1950,
double  d1950,
double  dr1950,
double  dd1950,
double  p1950,
double  v1950,
double *  r2000,
double *  d2000,
double *  dr2000,
double *  dd2000,
double *  p2000,
double *  v2000 
)

Convert B1950.0 FK4 star catalog data to J2000.0 FK5.Notes:

1) The proper motions in RA are dRA/dt rather than cos(Dec)*dRA/dt, and are per year rather than per century.

2) The conversion is somewhat complicated, for several reasons:

. Change of standard epoch from B1950.0 to J2000.0.

. An intermediate transition date of 1984 January 1.0 TT.

. A change of precession model.

. Change of time unit for proper motion (tropical to Julian).

. FK4 positions include the E-terms of aberration, to simplify the hand computation of annual aberration. FK5 positions assume a rigorous aberration computation based on the Earth's barycentric velocity.

. The E-terms also affect proper motions, and in particular cause objects at large distances to exhibit fictitious proper motions.

The algorithm is based on Smith et al. (1989) and Yallop et al. (1989), which presented a matrix method due to Standish (1982) as developed by Aoki et al. (1983), using Kinoshita's development of Andoyer's post-Newcomb precession. The numerical constants from Seidelmann (1992) are used canonically.

3) Conversion from B1950.0 FK4 to J2000.0 FK5 only is provided for. Conversions for different epochs and equinoxes would require additional treatment for precession, proper motion and E-terms.

4) In the FK4 catalog the proper motions of stars within 10 degrees of the poles do not embody differential E-terms effects and should, strictly speaking, be handled in a different manner from stars outside these regions. However, given the general lack of homogeneity of the star data available for routine astrometry, the difficulties of handling positions that may have been determined from astrometric fields spanning the polar and non- polar regions, the likelihood that the differential E-terms effect was not taken into account when allowing for proper motion in past astrometry, and the undesirability of a discontinuity in the algorithm, the decision has been made in this SOFA algorithm to include the effects of differential E-terms on the proper motions for all stars, whether polar or not. At epoch J2000.0, and measuring "on the sky" rather than in terms of RA change, the errors resulting from this simplification are less than 1 milliarcsecond in position and 1 milliarcsecond per century in proper motion.

Parameters
[in]r1950B1950.0 RA (rad)
[in]d1950B1950.0 Dec (rad)
[in]dr1950B1950.0 proper motion (rad/trop.yr)
[in]dd1950B1950.0 proper motion (rad/trop.yr)
[in]p1950parallax (arcsec)
[in]v1950radial velocity (km/s, +ve = moving away)
[out]r2000J2000.0 RA (rad)
[out]d2000J2000.0 Dec (rad)
[out]dr2000J2000.0 proper motion (rad/Jul.yr)
[out]dd2000J2000.0 proper motion (rad/Jul.yr)
[out]p2000J2000.0 parallax (arcsec)
[out]v2000J2000.0 radial velocity (km/s, +ve = moving away)
Here is the call graph for this function:

◆ iauFk45z()

iauFk45z ( double  r1950,
double  d1950,
double  bepoch,
double *  r2000,
double *  d2000 
)

Convert a B1950.0 FK4 star position to J2000.0 FK5.Convert a B1950.0 FK4 star position to J2000.0 FK5, assuming zero proper motion in the FK5 system. This function converts a star's catalog data from the old FK4 (Bessel-Newcomb) system to the later IAU 1976 FK5 (Fricke) system, in such a way that the FK5 proper motion is zero. Because such a star has, in general, a non-zero proper motion in the FK4 system, the routine requires the epoch at which the position in the FK4 system was determined.

Notes:

1) The epoch bepoch is strictly speaking Besselian, but if a Julian epoch is supplied the result will be affected only to a negligible extent.

2) The method is from Appendix 2 of Aoki et al. (1983), but using the constants of Seidelmann (1992). See the routine iauFk425 for a general introduction to the FK4 to FK5 conversion.

3) Conversion from equinox B1950.0 FK4 to equinox J2000.0 FK5 only is provided for. Conversions for different starting and/or ending epochs would require additional treatment for precession, proper motion and E-terms.

4) In the FK4 catalog the proper motions of stars within 10 degrees of the poles do not embody differential E-terms effects and should, strictly speaking, be handled in a different manner from stars outside these regions. However, given the general lack of homogeneity of the star data available for routine astrometry, the difficulties of handling positions that may have been determined from astrometric fields spanning the polar and non- polar regions, the likelihood that the differential E-terms effect was not taken into account when allowing for proper motion in past astrometry, and the undesirability of a discontinuity in the algorithm, the decision has been made in this SOFA algorithm to include the effects of differential E-terms on the proper motions for all stars, whether polar or not. At epoch 2000.0, and measuring "on the sky" rather than in terms of RA change, the errors resulting from this simplification are less than 1 milliarcsecond in position and 1 milliarcsecond per century in proper motion.

Parameters
[in]r1950B1950.0 FK4 RA at epoch (rad)
[in]d1950B1950.0 FK4 Dec at epoch (rad)
[in]bepochBesselian epoch (eg. 1979.3D0)
[out]r2000J2000.0 FK5 RA (rad)
[out]d2000J2000.0 FK5 Dec (rad)
Here is the call graph for this function:

◆ iauFk524()

void iauFk524 ( double  r2000,
double  d2000,
double  dr2000,
double  dd2000,
double  p2000,
double  v2000,
double *  r1950,
double *  d1950,
double *  dr1950,
double *  dd1950,
double *  p1950,
double *  v1950 
)

Convert J2000.0 FK5 star catalog data to B1950.0 FK4.Notes:

1) The proper motions in RA are dRA/dt rather than cos(Dec)*dRA/dt, and are per year rather than per century.

2) The conversion is somewhat complicated, for several reasons:

. Change of standard epoch from J2000.0 to B1950.0.

. An intermediate transition date of 1984 January 1.0 TT.

. A change of precession model.

. Change of time unit for proper motion (Julian to tropical).

. FK4 positions include the E-terms of aberration, to simplify the hand computation of annual aberration. FK5 positions assume a rigorous aberration computation based on the Earth's barycentric velocity.

. The E-terms also affect proper motions, and in particular cause objects at large distances to exhibit fictitious proper motions.

The algorithm is based on Smith et al. (1989) and Yallop et al. (1989), which presented a matrix method due to Standish (1982) as developed by Aoki et al. (1983), using Kinoshita's development of Andoyer's post-Newcomb precession. The numerical constants from Seidelmann (1992) are used canonically.

4) In the FK4 catalog the proper motions of stars within 10 degrees of the poles do not embody differential E-terms effects and should, strictly speaking, be handled in a different manner from stars outside these regions. However, given the general lack of homogeneity of the star data available for routine astrometry, the difficulties of handling positions that may have been determined from astrometric fields spanning the polar and non- polar regions, the likelihood that the differential E-terms effect was not taken into account when allowing for proper motion in past astrometry, and the undesirability of a discontinuity in the algorithm, the decision has been made in this SOFA algorithm to include the effects of differential E-terms on the proper motions for all stars, whether polar or not. At epoch J2000.0, and measuring "on the sky" rather than in terms of RA change, the errors resulting from this simplification are less than 1 milliarcsecond in position and 1 milliarcsecond per century in proper motion.

Parameters
[in]r2000J2000.0 RA (rad)
[in]d2000J2000.0 Dec (rad)
[in]dr2000J2000.0 proper motion (rad/Jul.yr)
[in]dd2000J2000.0 proper motion (rad/Jul.yr)
[in]p2000J2000.0 parallax (arcsec)
[in]v2000J2000.0 radial velocity (km/s, +ve = moving away)
[out]r1950B1950.0 RA (rad)
[out]d1950B1950.0 Dec (rad)
[out]dr1950B1950.0 proper motion (rad/trop.yr)
[out]dd1950B1950.0 proper motion (rad/trop.yr)
[out]p1950parallax (arcsec)
[out]v1950radial velocity (km/s, +ve = moving away)

References:

Aoki, S. et al., 1983, "Conversion matrix of epoch B1950.0 FK4-based positions of stars to epoch J2000.0 positions in accordance with the new IAU resolutions". Astron.Astrophys. 128, 263-267.

Seidelmann, P.K. (ed), 1992, "Explanatory Supplement to the Astronomical Almanac", ISBN 0-935702-68-7.

Smith, C.A. et al., 1989, "The transformation of astrometric catalog systems to the equinox J2000.0". Astron.J. 97, 265.

Standish, E.M., 1982, "Conversion of positions and proper motions from B1950.0 to the IAU system at J2000.0". Astron.Astrophys., 115, 1, 20-22.

Yallop, B.D. et al., 1989, "Transformation of mean star places from FK4 B1950.0 to FK5 J2000.0 using matrices in 6-space". Astron.J. 97, 274.

Here is the call graph for this function:

◆ iauFk52h()

void iauFk52h ( double  r5,
double  d5,
double  dr5,
double  dd5,
double  px5,
double  rv5,
double *  rh,
double *  dh,
double *  drh,
double *  ddh,
double *  pxh,
double *  rvh 
)

Transform FK5 star data into the Hipparcos system.

Transform FK5 (J2000.0) star data into the Hipparcos system.

All input parameters are FK5, equinox J2000.0, epoch J2000.0.

Parameters
[in]r5RA (radians)
[in]d5Dec (radians)
[in]dr5proper motion in RA (dRA/dt, rad/Jyear)
[in]dd5proper motion in Dec (dDec/dt, rad/Jyear)
[in]px5parallax (arcsec)
[in]rv5radial velocity (km/s, positive = receding)

All output parameters are Hipparcos, epoch J2000.0.

Parameters
[out]rhRA (radians)
[out]dhDec (radians)
[out]drhproper motion in RA (dRA/dt, rad/Jyear)
[out]ddhproper motion in Dec (dDec/dt, rad/Jyear)
[out]pxhparallax (arcsec)
[out]rvhradial velocity (km/s, positive = receding)

Notes:

1) This function transforms FK5 star positions and proper motions into the system of the Hipparcos catalog.

2) The proper motions in RA are dRA/dt rather than cos(Dec)*dRA/dt, and are per year rather than per century.

3) The FK5 to Hipparcos transformation is modeled as a pure rotation and spin; zonal errors in the FK5 catalog are not taken into account.

4) See also iauH2fk5, iauFk5hz, iauHfk5z.

Reference:

F.Mignard & M.Froeschle, Astron. Astrophys. 354, 732-739 (2000).

Here is the call graph for this function:

◆ iauFk54z()

void iauFk54z ( double  r2000,
double  d2000,
double  bepoch,
double *  r1950,
double *  d1950,
double *  dr1950,
double *  dd1950 
)

Convert a J2000.0 FK5 star position to B1950.0 FK4Convert a J2000.0 FK5 star position to B1950.0 FK4, assuming zero proper motion in FK5 and parallax. Notes:

1) In contrast to the iauFk524 routine, here the FK5 proper motions, the parallax and the radial velocity are presumed zero.

2) This function converts a star position from the IAU 1976 FK5 (Fricke) system to the former FK4 (Bessel-Newcomb) system, for cases such as distant radio sources where it is presumed there is zero parallax and no proper motion. Because of the E-terms of aberration, such objects have (in general) non-zero proper motion in FK4, and the present routine returns those fictitious proper motions.

3) Conversion from B1950.0 FK4 to J2000.0 FK5 only is provided for. Conversions involving other equinoxes would require additional treatment for precession.

4) The position returned by this routine is in the B1950.0 FK4 reference system but at Besselian epoch BEPOCH. For comparison with catalogs the BEPOCH argument will frequently be 1950.0. (In this context the distinction between Besselian and Julian epoch is insignificant.)

5) The RA component of the returned (fictitious) proper motion is dRA/dt rather than cos(Dec)*dRA/dt.

Parameters
[in]r2000J2000.0 FK5 RA (rad)
[in]d2000J2000.0 FK5 Dec (rad)
[in]bepochBesselian epoch (eg. 1979.3D0)
[out]r1950B1950.0 FK4 RA at epoch (rad)
[out]d1950B1950.0 FK4 Dec at epoch (rad)
Here is the call graph for this function:

◆ iauFk5hip()

void iauFk5hip ( double  r5h[3][3],
double  s5h[3] 
)

FK5 to Hipparcos rotation and spin.

Parameters
[out]r5hr-matrix: FK5 rotation wrt Hipparcos (Note 2)
[out]s5hr-vector: FK5 spin wrt Hipparcos (Note 3)

Notes:

1) This function models the FK5 to Hipparcos transformation as a pure rotation and spin; zonal errors in the FK5 catalogue are not taken into account.

2) The r-matrix r5h operates in the sense:

     P_Hipparcos = r5h x P_FK5

where P_FK5 is a p-vector in the FK5 frame, and P_Hipparcos is the equivalent Hipparcos p-vector.

3) The r-vector s5h represents the time derivative of the FK5 to Hipparcos rotation. The units are radians per year (Julian, TDB).

Reference:

F.Mignard & M.Froeschle, Astron. Astrophys. 354, 732-739 (2000).

Here is the call graph for this function:

◆ iauFk5hz()

void iauFk5hz ( double  r5,
double  d5,
double  date1,
double  date2,
double *  rh,
double *  dh 
)

Transform an FK5 star position into the Hipparcos system.

Transform an FK5 (J2000.0) star position into the system of the Hipparcos catalogue, assuming zero Hipparcos proper motion.

Parameters
[in]r5FK5 RA (radians), equinox J2000.0, at date
[in]d5FK5 Dec (radians), equinox J2000.0, at date
[in]date1,date2TDB date (Notes 1,2)
[out]rhHipparcos RA (radians)
[out]dhHipparcos Dec (radians)

Notes:

1) This function converts a star position from the FK5 system to the Hipparcos system, in such a way that the Hipparcos proper motion is zero. Because such a star has, in general, a non-zero proper motion in the FK5 system, the function requires the date at which the position in the FK5 system was determined.

2) The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.

3) The FK5 to Hipparcos transformation is modeled as a pure rotation and spin; zonal errors in the FK5 catalogue are not taken into account.

4) The position returned by this function is in the Hipparcos reference system but at date date1+date2.

5) See also iauFk52h, iauH2fk5, iauHfk5z.

Reference:

F.Mignard & M.Froeschle, 2000, Astron.Astrophys. 354, 732-739.

Here is the call graph for this function:

◆ iauFw2m()

void iauFw2m ( double  gamb,
double  phib,
double  psi,
double  eps,
double  r[3][3] 
)

Form rotation matrix given the Fukushima-Williams angles.

Parameters
[in]gambF-W angle gamma_bar (radians)
[in]phibF-W angle phi_bar (radians)
[in]psiF-W angle psi (radians)
[in]epsF-W angle epsilon (radians)
[out]rrotation matrix

Notes:

1) Naming the following points:

     e = J2000.0 ecliptic pole,
     p = GCRS pole,
     E = ecliptic pole of date,

and P = CIP,

the four Fukushima-Williams angles are as follows:

gamb = gamma = epE phib = phi = pE psi = psi = pEP eps = epsilon = EP

2) The matrix representing the combined effects of frame bias, precession and nutation is:

NxPxB = R_1(-eps).R_3(-psi).R_1(phib).R_3(gamb)

3) The present function can construct three different matrices, depending on which angles are supplied as the arguments gamb, phib, psi and eps:

o To obtain the nutation x precession x frame bias matrix, first generate the four precession angles known conventionally as gamma_bar, phi_bar, psi_bar and epsilon_A, then generate the nutation components Dpsi and Depsilon and add them to psi_bar and epsilon_A, and finally call the present function using those four angles as arguments.

o To obtain the precession x frame bias matrix, generate the four precession angles and call the present function.

o To obtain the frame bias matrix, generate the four precession angles for date J2000.0 and call the present function.

The nutation-only and precession-only matrices can if necessary be obtained by combining these three appropriately.

References:

Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855 Hilton, J. et al., 2006, Celest.Mech.Dyn.Astron. 94, 351

Here is the call graph for this function:

◆ iauFw2xy()

void iauFw2xy ( double  gamb,
double  phib,
double  psi,
double  eps,
double *  x,
double *  y 
)

CIP X,Y given Fukushima-Williams bias-precession-nutation angles.

Parameters
[in]gambF-W angle gamma_bar (radians)
[in]phibF-W angle phi_bar (radians)
[in]psiF-W angle psi (radians)
[in]epsF-W angle epsilon (radians)
[out]x,yCIP unit vector X,Y

Notes:

1) Naming the following points:

     e = J2000.0 ecliptic pole,
     p = GCRS pole
     E = ecliptic pole of date,

and P = CIP,

the four Fukushima-Williams angles are as follows:

gamb = gamma = epE phib = phi = pE psi = psi = pEP eps = epsilon = EP

2) The matrix representing the combined effects of frame bias, precession and nutation is:

NxPxB = R_1(-epsA).R_3(-psi).R_1(phib).R_3(gamb)

The returned values x,y are elements [2][0] and [2][1] of the matrix. Near J2000.0, they are essentially angles in radians.

Reference:

Hilton, J. et al., 2006, Celest.Mech.Dyn.Astron. 94, 351

Here is the call graph for this function:

◆ iauGc2gde()

int iauGc2gde ( double  a,
double  f,
double  xyz[3],
double *  elong,
double *  phi,
double *  height 
)

Transform geocentric coordinates to geodetic.

Transform geocentric coordinates to geodetic for a reference ellipsoid of specified form.

Parameters
[in]aequatorial radius (Notes 2,4)
[in]fflattening (Note 3)
[in]xyzgeocentric vector (Note 4)
[out]elonglongitude (radians, east +ve)
[out]philatitude (geodetic, radians)
[out]heightheight above ellipsoid (geodetic, Note 4)
Returns
0 = OK -1 = illegal f -2 = illegal a

Notes:

1) This function is based on the GCONV2H Fortran subroutine by Toshio Fukushima (see reference).

2) The equatorial radius, a, can be in any units, but meters is the conventional choice.

3) The flattening, f, is (for the Earth) a value around 0.00335, i.e. around 1/298.

4) The equatorial radius, a, and the geocentric vector, xyz, must be given in the same units, and determine the units of the returned height, height.

5) If an error occurs (status < 0), elong, phi and height are unchanged.

6) The inverse transformation is performed in the function iauGd2gce.

7) The transformation for a standard ellipsoid (such as WGS84) can more conveniently be performed by calling iauGc2gd, which uses a numerical code to identify the required A and F values.

Reference:

Fukushima, T., "Transformation from Cartesian to geodetic coordinates accelerated by Halley's method", J.Geodesy (2006) 79: 689-693

◆ iauGd2gce()

int iauGd2gce ( double  a,
double  f,
double  elong,
double  phi,
double  height,
double  xyz[3] 
)

Transform geodetic coordinates to geocentric.

Transform geodetic coordinates to geocentric for a reference ellipsoid of specified form.

Parameters
[in]aequatorial radius (Notes 1,4)
[in]fflattening (Notes 2,4)
[in]elonglongitude (radians, east +ve)
[in]philatitude (geodetic, radians, Note 4)
[in]heightheight above ellipsoid (geodetic, Notes 3,4)
[out]xyzgeocentric vector (Note 3)
Returns
0 = OK -1 = illegal case (Note 4) Notes:

1) The equatorial radius, a, can be in any units, but meters is the conventional choice.

2) The flattening, f, is (for the Earth) a value around 0.00335, i.e. around 1/298.

3) The equatorial radius, a, and the height, height, must be given in the same units, and determine the units of the returned geocentric vector, xyz.

4) No validation is performed on individual arguments. The error status -1 protects against (unrealistic) cases that would lead to arithmetic exceptions. If an error occurs, xyz is unchanged.

5) The inverse transformation is performed in the function iauGc2gde.

6) The transformation for a standard ellipsoid (such as WGS84) can more conveniently be performed by calling iauGd2gc, which uses a numerical code to identify the required a and f values.

References:

Green, R.M., Spherical Astronomy, Cambridge University Press, (1985) Section 4.5, p96.

Explanatory Supplement to the Astronomical Almanac, P. Kenneth Seidelmann (ed), University Science Books (1992), Section 4.22, p202.

◆ iauGst00b()

double iauGst00b ( double  uta,
double  utb 
)

Greenwich apparent sidereal time.

Greenwich apparent sidereal time (consistent with IAU 2000 resolutions but using the truncated nutation model IAU 2000B).

Parameters
[in]uta,utbUT1 as a 2-part Julian Date (Notes 1,2)
Returns
Greenwich apparent sidereal time (radians)

Notes:

1) The UT1 date uta+utb is a Julian Date, apportioned in any convenient way between the argument pair. For example, JD=2450123.7 could be expressed in any of these ways, among others:

    uta            utb

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 and MJD methods are good compromises between resolution and convenience. For UT, the date & time method is best matched to the algorithm that is used by the Earth Rotation Angle function, called internally: maximum precision is delivered when the uta argument is for 0hrs UT1 on the day in question and the utb argument lies in the range 0 to 1, or vice versa.

2) The result is compatible with the IAU 2000 resolutions, except that accuracy has been compromised for the sake of speed and convenience in two respects:

. UT is used instead of TDB (or TT) to compute the precession component of GMST and the equation of the equinoxes. This results in errors of order 0.1 mas at present.

. The IAU 2000B abridged nutation model (McCarthy & Luzum, 2001) is used, introducing errors of up to 1 mas.

3) This GAST is compatible with the IAU 2000 resolutions and must be used only in conjunction with other IAU 2000 compatible components such as precession-nutation.

4) The result is returned in the range 0 to 2pi.

5) The algorithm is from Capitaine et al. (2003) and IERS Conventions 2003.

References:

Capitaine, N., Wallace, P.T. and McCarthy, D.D., "Expressions to implement the IAU 2000 definition of UT1", Astronomy & Astrophysics, 406, 1135-1149 (2003)

McCarthy, D.D. & Luzum, B.J., "An abridged model of the precession-nutation of the celestial pole", Celestial Mechanics & Dynamical Astronomy, 85, 37-49 (2003)

McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

Here is the call graph for this function:

◆ iauGst06()

double iauGst06 ( double  uta,
double  utb,
double  tta,
double  ttb,
double  rnpb[3][3] 
)

Greenwich apparent sidereal time.

\filte gst06.c

Greenwich apparent sidereal time, IAU 2006, given the NPB matrix.

Parameters
[in]uta,utbUT1 as a 2-part Julian Date (Notes 1,2)
[in]tta,ttbTT as a 2-part Julian Date (Notes 1,2)
[in]rnpbnutation x precession x bias matrix
Returns
Greenwich apparent sidereal time (radians)

Notes:

1) The UT1 and TT dates uta+utb and tta+ttb respectively, are both Julian Dates, apportioned in any convenient way between the argument pairs. For example, JD=2450123.7 could be expressed in any of these ways, among others:

   Part A        Part B

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable (in the case of UT; the TT is not at all critical in this respect). The J2000 and MJD methods are good compromises between resolution and convenience. For UT, the date & time method is best matched to the algorithm that is used by the Earth rotation angle function, called internally: maximum precision is delivered when the uta argument is for 0hrs UT1 on the day in question and the utb argument lies in the range 0 to 1, or vice versa.

2) Both UT1 and TT are required, UT1 to predict the Earth rotation and TT to predict the effects of precession-nutation. If UT1 is used for both purposes, errors of order 100 microarcseconds result.

3) Although the function uses the IAU 2006 series for s+XY/2, it is otherwise independent of the precession-nutation model and can in practice be used with any equinox-based NPB matrix.

4) The result is returned in the range 0 to 2pi.

Reference:

Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981

Here is the call graph for this function:

◆ iauGst94()

double iauGst94 ( double  uta,
double  utb 
)

Greenwich apparent sidereal time.

Greenwich apparent sidereal time (consistent with IAU 1982/94 resolutions).

Parameters
[in]uta,utbUT1 as a 2-part Julian Date (Notes 1,2)
Returns
Greenwich apparent sidereal time (radians)

Notes:

1) The UT1 date uta+utb is a Julian Date, apportioned in any convenient way between the argument pair. For example, JD=2450123.7 could be expressed in any of these ways, among others:

    uta            utb

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 and MJD methods are good compromises between resolution and convenience. For UT, the date & time method is best matched to the algorithm that is used by the Earth Rotation Angle function, called internally: maximum precision is delivered when the uta argument is for 0hrs UT1 on the day in question and the utb argument lies in the range 0 to 1, or vice versa.

2) The result is compatible with the IAU 1982 and 1994 resolutions, except that accuracy has been compromised for the sake of convenience in that UT is used instead of TDB (or TT) to compute the equation of the equinoxes.

3) This GAST must be used only in conjunction with contemporaneous IAU standards such as 1976 precession, 1980 obliquity and 1982 nutation. It is not compatible with the IAU 2000 resolutions.

4) The result is returned in the range 0 to 2pi.

References:

Explanatory Supplement to the Astronomical Almanac, P. Kenneth Seidelmann (ed), University Science Books (1992)

IAU Resolution C7, Recommendation 3 (1994)

Here is the call graph for this function:

◆ iauH2fk5()

void iauH2fk5 ( double  rh,
double  dh,
double  drh,
double  ddh,
double  pxh,
double  rvh,
double *  r5,
double *  d5,
double *  dr5,
double *  dd5,
double *  px5,
double *  rv5 
)

Transform Hipparcos star data into the FK5 (J2000.0) system.

All input parameters are Hipparcos, epoch J2000.0.

Parameters
[in]rhRA (radians)
[in]dhDec (radians)
[in]drhproper motion in RA (dRA/dt, rad/Jyear)
[in]ddhproper motion in Dec (dDec/dt, rad/Jyear)
[in]pxhparallax (arcsec)
[in]rvhradial velocity (km/s, positive = receding)

All output parameters are FK5, equinox J2000.0, epoch J2000.0.

Parameters
[out]r5RA (radians)
[out]d5Dec (radians)
[out]dr5proper motion in RA (dRA/dt, rad/Jyear)
[out]dd5proper motion in Dec (dDec/dt, rad/Jyear)
[out]px5parallax (arcsec)
[out]rv5radial velocity (km/s, positive = receding)

Notes:

1) This function transforms Hipparcos star positions and proper motions into FK5 J2000.0.

2) The proper motions in RA are dRA/dt rather than cos(Dec)*dRA/dt, and are per year rather than per century.

3) The FK5 to Hipparcos transformation is modeled as a pure rotation and spin; zonal errors in the FK5 catalog are not taken into account.

4) See also iauFk52h, iauFk5hz, iauHfk5z.

Reference:

F.Mignard & M.Froeschle, Astron. Astrophys. 354, 732-739 (2000).

Here is the call graph for this function:

◆ iauHd2ae()

void iauHd2ae ( double  ha,
double  dec,
double  phi,
double *  az,
double *  el 
)

Equatorial to horizon coordinates.

Equatorial to horizon coordinates: transform hour angle and declination to azimuth and altitude.

Notes:

1) All the arguments are angles in radians.

2) Azimuth is returned in the range 0-2pi; north is zero, and east is +pi/2. Altitude is returned in the range +/- pi/2.

3) The latitude phi is pi/2 minus the angle between the Earth's rotation axis and the adopted zenith. In many applications it will be sufficient to use the published geodetic latitude of the site. In very precise (sub-arcsecond) applications, phi can be corrected for polar motion.

4) The returned azimuth az is with respect to the rotational north pole, as opposed to the ITRS pole, and for sub-arcsecond accuracy will need to be adjusted for polar motion if it is to be with respect to north on a map of the Earth's surface.

5) Should the user wish to work with respect to the astronomical zenith rather than the geodetic zenith, phi will need to be adjusted for deflection of the vertical (often tens of arcseconds), and the zero point of the hour angle ha will also be affected.

6) The transformation is the same as Vh = Rz(pi)*Ry(pi/2-phi)*Ve, where Vh and Ve are lefthanded unit vectors in the (az,el) and (ha,dec) systems respectively and Ry and Rz are rotations about first the y-axis and then the z-axis. (n.b. Rz(pi) simply reverses the signs of the x and y components.) For efficiency, the algorithm is written out rather than calling other utility functions. For applications that require even greater efficiency, additional savings are possible if constant terms such as functions of latitude are computed once and for all.

7) Again for efficiency, no range checking of arguments is carried out.

Parameters
[in]hahour angle (local)
[in]decdeclination
[in]phisite latitude
[out]azazimuth
[out]elaltitude (informally, elevation)

◆ iauHd2pa()

double iauHd2pa ( double  ha,
double  dec,
double  phi 
)

Parallactic angle for a given hour angle and declination.Notes:

1) All the arguments are angles in radians.

2) The parallactic angle at a point in the sky is the position angle of the vertical, i.e. the angle between the directions to the north celestial pole and to the zenith respectively.

3) The result is returned in the range -pi to +pi.

4) At the pole itself a zero result is returned.

5) The latitude phi is pi/2 minus the angle between the Earth's rotation axis and the adopted zenith. In many applications it will be sufficient to use the published geodetic latitude of the site. In very precise (sub-arcsecond) applications, phi can be corrected for polar motion.

6) Should the user wish to work with respect to the astronomical zenith rather than the geodetic zenith, phi will need to be adjusted for deflection of the vertical (often tens of arcseconds), and the zero point of the hour angle ha will also be affected.

Reference: Smart, W.M., "Spherical Astronomy", Cambridge University Press, 6th edition (Green, 1977), p49.

Parameters
[in]hahour angle
[in]decdeclination
[in]phisite latitudedeclination
Returns
prallactic angle

◆ iauHfk5z()

void iauHfk5z ( double  rh,
double  dh,
double  date1,
double  date2,
double *  r5,
double *  d5,
double *  dr5,
double *  dd5 
)

Transform a Hipparcos star position into FK5 J2000.0.

Transform a Hipparcos star position into FK5 J2000.0, assuming zero Hipparcos proper motion.

Parameters
[in]rhHipparcos RA (radians)
[in]dhHipparcos Dec (radians)
[in]date1,date2TDB date (Note 1)

All output parameters are FK5, equinox J2000.0, date date1+date2.

Parameters
[out]r5RA (radians)
[out]d5Dec (radians)
[out]dr5FK5 RA proper motion (rad/year, Note 4)
[out]dd5Dec proper motion (rad/year, Note 4)

Notes:

1) The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.

2) The proper motion in RA is dRA/dt rather than cos(Dec)*dRA/dt.

3) The FK5 to Hipparcos transformation is modeled as a pure rotation and spin; zonal errors in the FK5 catalogue are not taken into account.

4) It was the intention that Hipparcos should be a close approximation to an inertial frame, so that distant objects have zero proper motion; such objects have (in general) non-zero proper motion in FK5, and this function returns those fictitious proper motions.

5) The position returned by this function is in the FK5 J2000.0 reference system but at date date1+date2.

6) See also iauFk52h, iauH2fk5, iauFk5zhz.

Reference:

F.Mignard & M.Froeschle, 2000, Astron.Astrophys. 354, 732-739.

Here is the call graph for this function:

◆ iauJd2cal()

int iauJd2cal ( double  dj1,
double  dj2,
int *  iy,
int *  im,
int *  id,
double *  fd 
)

Julian Date to Gregorian year, month, day, and fraction of a day.

Parameters
[in]dj1,dj2Julian Date (Notes 1, 2)
[out]iyyear
[out]immonth
[out]idday
[out]fdfraction of day
Returns
status: 0 = OK -1 = unacceptable date (Note 3)

Notes:

1) The earliest valid date is -68569.5 (-4900 March 1). The largest value accepted is 1e9.

2) The Julian Date is apportioned in any convenient way between the arguments dj1 and dj2. For example, JD=2450123.7 could be expressed in any of these ways, among others:

   dj1             dj2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

3) In early eras the conversion is from the "proleptic Gregorian calendar"; no account is taken of the date(s) of adoption of the Gregorian calendar, nor is the AD/BC numbering convention observed.

Reference:

Explanatory Supplement to the Astronomical Almanac, P. Kenneth Seidelmann (ed), University Science Books (1992), Section 12.92 (p604).

◆ iauJdcalf()

int iauJdcalf ( int  ndp,
double  dj1,
double  dj2,
int  iymdf[4] 
)

Julian Date to Gregorian Calendar.

Julian Date to Gregorian Calendar, expressed in a form convenient for formatting messages: rounded to a specified precision.

Parameters
[in]ndpnumber of decimal places of days in fraction
[in]dj1,dj2dj1+dj2 = Julian Date (Note 1)
[out]iymdfyear, month, day, fraction in Gregorian calendar
Returns
status: -1 = date out of range 0 = OK +1 = NDP not 0-9 (interpreted as 0)

Notes:

1) The Julian Date is apportioned in any convenient way between the arguments dj1 and dj2. For example, JD=2450123.7 could be expressed in any of these ways, among others:

    dj1            dj2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

2) In early eras the conversion is from the "Proleptic Gregorian Calendar"; no account is taken of the date(s) of adoption of the Gregorian Calendar, nor is the AD/BC numbering convention observed.

3) Refer to the function iauJd2cal.

4) NDP should be 4 or less if internal overflows are to be avoided on machines which use 16-bit integers.

Reference:

Explanatory Supplement to the Astronomical Almanac, P. Kenneth Seidelmann (ed), University Science Books (1992), Section 12.92 (p604).

Here is the call graph for this function:

◆ iauLd()

void iauLd ( double  bm,
double  p[3],
double  q[3],
double  e[3],
double  em,
double  dlim,
double  p1[3] 
)

Apply light deflection by a solar-system body.

Apply light deflection by a solar-system body, as part of transforming coordinate direction into natural direction.

Parameters
[in]bmmass of the gravitating body (solar masses)
[in]pdirection from observer to source (unit vector)
[in]qdirection from body to source (unit vector)
[in]edirection from body to observer (unit vector)
[in]emdistance from body to observer (au)
[in]dlimdeflection limiter (Note 4)
[out]p1observer to deflected source (unit vector)

Notes:

1) The algorithm is based on Expr. (70) in Klioner (2003) and Expr. (7.63) in the Explanatory Supplement (Urban & Seidelmann 2013), with some rearrangement to minimize the effects of machine precision.

2) The mass parameter bm can, as required, be adjusted in order to allow for such effects as quadrupole field.

3) The barycentric position of the deflecting body should ideally correspond to the time of closest approach of the light ray to the body.

4) The deflection limiter parameter dlim is phi^2/2, where phi is the angular separation (in radians) between source and body at which limiting is applied. As phi shrinks below the chosen threshold, the deflection is artificially reduced, reaching zero for phi = 0.

5) The returned vector p1 is not normalized, but the consequential departure from unit magnitude is always negligible.

6) The arguments p and p1 can be the same array.

7) To accumulate total light deflection taking into account the contributions from several bodies, call the present function for each body in succession, in decreasing order of distance from the observer.

8) For efficiency, validation is omitted. The supplied vectors must be of unit magnitude, and the deflection limiter non-zero and positive.

References:

Urban, S. & Seidelmann, P. K. (eds), Explanatory Supplement to the Astronomical Almanac, 3rd ed., University Science Books (2013).

Klioner, Sergei A., "A practical relativistic model for micro- arcsecond astrometry in space", Astr. J. 125, 1580-1597 (2003).

Here is the call graph for this function:

◆ iauLdn()

void iauLdn ( int  n,
iauLDBODY  b[],
double  ob[3],
double  sc[3],
double  sn[3] 
)

apply light deflection by multiple solar-system bodies

For a star, apply light deflection by multiple solar-system bodies, as part of transforming coordinate direction into natural direction.

Parameters
[in]nnumber of bodies (note 1)
[in]bdata for each of the n bodies (Notes 1,2):
[in]bmmass of the body (solar masses, Note 3)
[in]dldeflection limiter (Note 4)
[in]pvbarycentric PV of the body (au, au/day)
[in]obbarycentric position of the observer (au)
[in]scobserver to star coord direction (unit vector)
[out]snobserver to deflected star (unit vector)

1) The array b contains n entries, one for each body to be considered. If n = 0, no gravitational light deflection will be applied, not even for the Sun.

2) The array b should include an entry for the Sun as well as for any planet or other body to be taken into account. The entries should be in the order in which the light passes the body.

3) In the entry in the b array for body i, the mass parameter b[i].bm can, as required, be adjusted in order to allow for such effects as quadrupole field.

4) The deflection limiter parameter b[i].dl is phi^2/2, where phi is the angular separation (in radians) between star and body at which limiting is applied. As phi shrinks below the chosen threshold, the deflection is artificially reduced, reaching zero for phi = 0. Example values suitable for a terrestrial observer, together with masses, are as follows:

body i b[i].bm b[i].dl

Sun 1.0 6e-6 Jupiter 0.00095435 3e-9 Saturn 0.00028574 3e-10

5) For cases where the starlight passes the body before reaching the observer, the body is placed back along its barycentric track by the light time from that point to the observer. For cases where the body is "behind" the observer no such shift is applied. If a different treatment is preferred, the user has the option of instead using the iauLd function. Similarly, iauLd can be used for cases where the source is nearby, not a star.

6) The returned vector sn is not normalized, but the consequential departure from unit magnitude is always negligible.

7) The arguments sc and sn can be the same array.

8) For efficiency, validation is omitted. The supplied masses must be greater than zero, the position and velocity vectors must be right, and the deflection limiter greater than zero.

Reference:

Urban, S. & Seidelmann, P. K. (eds), Explanatory Supplement to the Astronomical Almanac, 3rd ed., University Science Books (2013), Section 7.2.4.

Here is the call graph for this function:

◆ iauLdsun()

void iauLdsun ( double  p[3],
double  e[3],
double  em,
double  p1[3] 
)

Deflection of starlight by the Sun.

Parameters
[in]pdirection from observer to star (unit vector)
[in]edirection from Sun to observer (unit vector)
[in]emdistance from Sun to observer (au)
[out]p1observer to deflected star (unit vector)

Notes:

1) The source is presumed to be sufficiently distant that its directions seen from the Sun and the observer are essentially the same.

2) The deflection is restrained when the angle between the star and the center of the Sun is less than about 9 arcsec, falling to zero for zero separation. (The chosen threshold is within the solar limb for all solar-system applications.)

3) The arguments p and p1 can be the same array.

Here is the call graph for this function:

◆ iauLteceq()

void iauLteceq ( double  epj,
double  dl,
double  db,
double *  dr,
double *  dd 
)

Transformation from ecliptic coordinates (mean equinox and ecliptic of date) to ICRS RA,Dec.Transformation from ecliptic coordinates (mean equinox and ecliptic of date) to ICRS RA,Dec, using a long-term precession model. 1) No assumptions are made about whether the coordinates represent starlight and embody astrometric effects such as parallax or aberration.

2) The transformation is approximately that from ecliptic longitude and latitude (mean equinox and ecliptic of date) to mean J2000.0 right ascension and declination, with only frame bias (always less than 25 mas) to disturb this classical picture.

3) The Vondrak et al. (2011, 2012) 400 millennia precession model agrees with the IAU 2006 precession at J2000.0 and stays within 100 microarcseconds during the 20th and 21st centuries. It is accurate to a few arcseconds throughout the historical period, worsening to a few tenths of a degree at the end of the +/- 200,000 year time span.

References:

Vondrak, J., Capitaine, N. and Wallace, P., 2011, New precession expressions, valid for long time intervals, Astron.Astrophys. 534, A22

Vondrak, J., Capitaine, N. and Wallace, P., 2012, New precession expressions, valid for long time intervals (Corrigendum), Astron.Astrophys. 541, C1

Parameters
[in]epjJulian epoch (TT)
[in]dlecliptic longitude (radians)
[in]dbecliptic latitude (radians)
[out]drICRS right ascension (radians)
[out]ddICRS declination (radians)
Here is the call graph for this function:

◆ iauLtecm()

void iauLtecm ( double  epj,
double  rm[3][3] 
)

ICRS equatorial to ecliptic rotation matrix, long-term.

Notes:

1) The matrix is in the sense

  E_ep = rm x P_ICRS,

where P_ICRS is a vector with respect to ICRS right ascension and declination axes and E_ep is the same vector with respect to the (inertial) ecliptic and equinox of epoch epj.

2) P_ICRS is a free vector, merely a direction, typically of unit magnitude, and not bound to any particular spatial origin, such as the Earth, Sun or SSB. No assumptions are made about whether it represents starlight and embodies astrometric effects such as parallax or aberration. The transformation is approximately that between mean J2000.0 right ascension and declination and ecliptic longitude and latitude, with only frame bias (always less than 25 mas) to disturb this classical picture.

3) The Vondrak et al. (2011, 2012) 400 millennia precession model agrees with the IAU 2006 precession at J2000.0 and stays within 100 microarcseconds during the 20th and 21st centuries. It is accurate to a few arcseconds throughout the historical period, worsening to a few tenths of a degree at the end of the +/- 200,000 year time span.

Parameters
[in]epjJulian epoch (TT)
[out]rmIRCS to eclicptic rotation matrix
Here is the call graph for this function:

◆ iauLteqec()

void iauLteqec ( double  epj,
double  dr,
double  dd,
double *  dl,
double *  db 
)

Transformation from ICRS equatorial coordinates to ecliptic coordinates.

Transformation from ICRS equatorial coordinates to ecliptic coordinates (mean equinox and ecliptic of date) using a long-term

1) No assumptions are made about whether the coordinates represent starlight and embody astrometric effects such as parallax or aberration.

2) The transformation is approximately that from mean J2000.0 right ascension and declination to ecliptic longitude and latitude (mean equinox and ecliptic of date), with only frame bias (always less than 25 mas) to disturb this classical picture.

3) The Vondrak et al. (2011, 2012) 400 millennia precession model agrees with the IAU 2006 precession at J2000.0 and stays within 100 microarcseconds during the 20th and 21st centuries. It is accurate to a few arcseconds throughout the historical period, worsening to a few tenths of a degree at the end of the +/- 200,000 year time span.

Parameters
[in]epjJulian epoch (TT)
[in]drICRS right ascension (radians)
[in]ddICRS declination (radians)
[out]dlecliptic longitude (radians)
[out]dbecliptic latitude (radians)
Here is the call graph for this function:

◆ iauLtp()

void iauLtp ( double  epj,
double  rp[3][3] 
)

Long-term precession matrix.Notes:

1) The matrix is in the sense

  P_date = rp x P_J2000,

where P_J2000 is a vector with respect to the J2000.0 mean equator and equinox and P_date is the same vector with respect to the equator and equinox of epoch epj.

2) The Vondrak et al. (2011, 2012) 400 millennia precession model agrees with the IAU 2006 precession at J2000.0 and stays within 100 microarcseconds during the 20th and 21st centuries. It is accurate to a few arcseconds throughout the historical period, worsening to a few tenths of a degree at the end of the +/- 200,000 year time span.

Parameters
[in]epjJulian epoch (TT)
[out]rpprecession matrix, J2000.0 to date
Here is the call graph for this function:

◆ iauLtpb()

void iauLtpb ( double  epj,
double  rpb[3][3] 
)

Long-term precession matrix, including ICRS frame bias.Notes:

1) The matrix is in the sense

  P_date = rpb x P_ICRS,

where P_ICRS is a vector in the Geocentric Celestial Reference System, and P_date is the vector with respect to the Celestial Intermediate Reference System at that date but with nutation neglected.

2) A first order frame bias formulation is used, of sub- microarcsecond accuracy compared with a full 3D rotation.

3) The Vondrak et al. (2011, 2012) 400 millennia precession model agrees with the IAU 2006 precession at J2000.0 and stays within 100 microarcseconds during the 20th and 21st centuries. It is accurate to a few arcseconds throughout the historical period, worsening to a few tenths of a degree at the end of the +/- 200,000 year time span.

Parameters
[in]epjJulian epoch (TT)
[out]rpprecession-bias matrix, J2000.0 to date
Here is the call graph for this function:

◆ iauLtpecl()

void iauLtpecl ( double  epj,
double  vec[3] 
)

Long-term precession of the ecliptic.Notes:

1) The returned vector is with respect to the J2000.0 mean equator and equinox.

2) The Vondrak et al. (2011, 2012) 400 millennia precession model agrees with the IAU 2006 precession at J2000.0 and stays within 100 microarcseconds during the 20th and 21st centuries. It is accurate to a few arcseconds throughout the historical period, worsening to a few tenths of a degree at the end of the +/- 200,000 year time span.

Parameters
[in]epjJulian epoch (TT)
[out]vececliptic pole unit vector

◆ iauNum00a()

void iauNum00a ( double  date1,
double  date2,
double  rmatn[3][3] 
)

Form the matrix of nutation for a given date.

Form the matrix of nutation for a given date, IAU 2000A model.

Parameters
[in]date1,date2TT as a 2-part Julian Date (Note 1)
[out]rmatnnutation matrix

Notes:

1) The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.

2) The matrix operates in the sense V(true) = rmatn * V(mean), where the p-vector V(true) is with respect to the true equatorial triad of date and the p-vector V(mean) is with respect to the mean equatorial triad of date.

3) A faster, but slightly less accurate result (about 1 mas), can be obtained by using instead the iauNum00b function.

Reference:

Explanatory Supplement to the Astronomical Almanac, P. Kenneth Seidelmann (ed), University Science Books (1992), Section 3.222-3 (p114).

Here is the call graph for this function:

◆ iauNum00b()

void iauNum00b ( double  date1,
double  date2,
double  rmatn[3][3] 
)

Form the matrix of nutation for a given date.

Form the matrix of nutation for a given date, IAU 2000B model.

Parameters
[in]date1,date2TT as a 2-part Julian Date (Note 1)
[out]rmatnnutation matrix

Notes:

1) The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.

2) The matrix operates in the sense V(true) = rmatn * V(mean), where the p-vector V(true) is with respect to the true equatorial triad of date and the p-vector V(mean) is with respect to the mean equatorial triad of date.

3) The present function is faster, but slightly less accurate (about 1 mas), than the iauNum00a function.

Reference:

Explanatory Supplement to the Astronomical Almanac, P. Kenneth Seidelmann (ed), University Science Books (1992), Section 3.222-3 (p114).

Here is the call graph for this function:

◆ iauNum06a()

void iauNum06a ( double  date1,
double  date2,
double  rmatn[3][3] 
)

Form the matrix of nutation for a given date.

Form the matrix of nutation for a given date, IAU 2006/2000A model.

Parameters
[in]date1,date2TT as a 2-part Julian Date (Note 1)
[out]rmatnnutation matrix

Notes:

1) The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.

2) The matrix operates in the sense V(true) = rmatn * V(mean), where the p-vector V(true) is with respect to the true equatorial triad of date and the p-vector V(mean) is with respect to the mean equatorial triad of date.

Reference:

Explanatory Supplement to the Astronomical Almanac, P. Kenneth Seidelmann (ed), University Science Books (1992), Section 3.222-3 (p114).

Here is the call graph for this function:

◆ iauNumat()

void iauNumat ( double  epsa,
double  dpsi,
double  deps,
double  rmatn[3][3] 
)

Form the matrix of nutation.

Parameters
[in]epsamean obliquity of date (Note 1)
[in]dpsi,depsnutation (Note 2)
[out]rmatnnutation matrix (Note 3)

Notes:

1) The supplied mean obliquity epsa, must be consistent with the precession-nutation models from which dpsi and deps were obtained.

2) The caller is responsible for providing the nutation components; they are in longitude and obliquity, in radians and are with respect to the equinox and ecliptic of date.

3) The matrix operates in the sense V(true) = rmatn * V(mean), where the p-vector V(true) is with respect to the true equatorial triad of date and the p-vector V(mean) is with respect to the mean equatorial triad of date.

Reference:

Explanatory Supplement to the Astronomical Almanac, P. Kenneth Seidelmann (ed), University Science Books (1992), Section 3.222-3 (p114).

Here is the call graph for this function:

◆ iauNutm80()

void iauNutm80 ( double  date1,
double  date2,
double  rmatn[3][3] 
)

Form the matrix of nutation for a given date,.

Form the matrix of nutation for a given date, IAU 1980 model.

Parameters
[in]date1,date2TDB date (Note 1)
[out]rmatnnutation matrix

Notes:

1) The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.

2) The matrix operates in the sense V(true) = rmatn * V(mean), where the p-vector V(true) is with respect to the true equatorial triad of date and the p-vector V(mean) is with respect to the mean equatorial triad of date.

Here is the call graph for this function:

◆ iauPb06()

void iauPb06 ( double  date1,
double  date2,
double *  bzeta,
double *  bz,
double *  btheta 
)

forms three Euler angles which implement general precession from epoch J2000.0,

This function forms three Euler angles which implement general precession from epoch J2000.0, using the IAU 2006 model. Frame bias (the offset between ICRS and mean J2000.0) is included.

Parameters
[in]date1,date2TT as a 2-part Julian Date (Note 1)
[out]bzeta1st rotation: radians cw around z
[out]bz3rd rotation: radians cw around z
[out]btheta2nd rotation: radians ccw around y

Notes:

1) The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.

2) The traditional accumulated precession angles zeta_A, z_A, theta_A cannot be obtained in the usual way, namely through polynomial expressions, because of the frame bias. The latter means that two of the angles undergo rapid changes near this date. They are instead the results of decomposing the precession-bias matrix obtained by using the Fukushima-Williams method, which does not suffer from the problem. The decomposition returns values which can be used in the conventional formulation and which include frame bias.

3) The three angles are returned in the conventional order, which is not the same as the order of the corresponding Euler rotations. The precession-bias matrix is R_3(-z) x R_2(+theta) x R_3(-zeta).

4) Should zeta_A, z_A, theta_A angles be required that do not contain frame bias, they are available by calling the SOFA function iauP06e.

Here is the call graph for this function:

◆ iauPlan94()

int iauPlan94 ( double  date1,
double  date2,
int  np,
double  pv[2][3] 
)

Approximate heliocentric position and velocity of a planet.

Approximate heliocentric position and velocity of a nominated major planet: Mercury, Venus, EMB, Mars, Jupiter, Saturn, Uranus or Neptune (but not the Earth itself).

Parameters
[in]date1TDB date part A (Note 1)
[in]date2TDB date part B (Note 1)
[in]npplanet (1=Mercury, 2=Venus, 3=EMB, 4=Mars, 5=Jupiter, 6=Saturn, 7=Uranus, 8=Neptune)
[out]pvplanet p,v (heliocentric, J2000.0, AU,AU/d)
Returns
status: -1 = illegal NP (outside 1-8) 0 = OK +1 = warning: year outside 1000-3000 +2 = warning: failed to converge

Notes:

1) The date date1+date2 is in the TDB time scale (in practice TT can be used) and is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TDB)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience. The limited accuracy of the present algorithm is such that any of the methods is satisfactory.

2) If an np value outside the range 1-8 is supplied, an error status (function value -1) is returned and the pv vector set to zeroes.

3) For np=3 the result is for the Earth-Moon Barycenter. To obtain the heliocentric position and velocity of the Earth, use instead the SOFA function iauEpv00.

4) On successful return, the array pv contains the following:

  pv[0][0]   x      }
  pv[0][1]   y      } heliocentric position, AU
  pv[0][2]   z      }

  pv[1][0]   xdot   }
  pv[1][1]   ydot   } heliocentric velocity, AU/d
  pv[1][2]   zdot   }

The reference frame is equatorial and is with respect to the mean equator and equinox of epoch J2000.0.

5) The algorithm is due to J.L. Simon, P. Bretagnon, J. Chapront, M. Chapront-Touze, G. Francou and J. Laskar (Bureau des Longitudes, Paris, France). From comparisons with JPL ephemeris DE102, they quote the following maximum errors over the interval 1800-2050:

            L (arcsec)    B (arcsec)      R (km)

Mercury 4 1 300 Venus 5 1 800 EMB 6 1 1000 Mars 17 1 7700 Jupiter 71 5 76000 Saturn 81 13 267000 Uranus 86 7 712000 Neptune 11 1 253000

Over the interval 1000-3000, they report that the accuracy is no worse than 1.5 times that over 1800-2050. Outside 1000-3000 the accuracy declines.

Comparisons of the present function with the JPL DE200 ephemeris give the following RMS errors over the interval 1960-2025:

             position (km)     velocity (m/s)

Mercury 334 0.437 Venus 1060 0.855 EMB 2010 0.815 Mars 7690 1.98 Jupiter 71700 7.70 Saturn 199000 19.4 Uranus 564000 16.4 Neptune 158000 14.4

Comparisons against DE200 over the interval 1800-2100 gave the following maximum absolute differences. (The results using DE406 were essentially the same.)

          L (arcsec)   B (arcsec)     R (km)   Rdot (m/s)

Mercury 7 1 500 0.7 Venus 7 1 1100 0.9 EMB 9 1 1300 1.0 Mars 26 1 9000 2.5 Jupiter 78 6 82000 8.2 Saturn 87 14 263000 24.6 Uranus 86 7 661000 27.4 Neptune 11 2 248000 21.4

6) The present SOFA re-implementation of the original Simon et al. Fortran code differs from the original in the following respects:

  • C instead of Fortran.
  • The date is supplied in two parts.
  • The result is returned only in equatorial Cartesian form; the ecliptic longitude, latitude and radius vector are not returned.
  • The result is in the J2000.0 equatorial frame, not ecliptic.
  • More is done in-line: there are fewer calls to subroutines.
  • Different error/warning status values are used.
  • A different Kepler's-equation-solver is used (avoiding use of double precision complex).
  • Polynomials in t are nested to minimize rounding errors.
  • Explicit double constants are used to avoid mixed-mode expressions.

None of the above changes affects the result significantly.

7) The returned status indicates the most serious condition encountered during execution of the function. Illegal np is considered the most serious, overriding failure to converge, which in turn takes precedence over the remote date warning.

Reference: Simon, J.L, Bretagnon, P., Chapront, J., Chapront-Touze, M., Francou, G., and Laskar, J., Astron. Astrophys. 282, 663 (1994).

Here is the call graph for this function:

◆ iauPmat00()

void iauPmat00 ( double  date1,
double  date2,
double  rbp[3][3] 
)

Precession matrix from GCRS to specified date.

Precession matrix (including frame bias) from GCRS to a specified date, IAU 2000 model.

Parameters
[in]date1,date2TT as a 2-part Julian Date (Note 1)
[out]rbpdouble[3][3] bias-precession matrix (Note 2)

Notes:

1) The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.

2) The matrix operates in the sense V(date) = rbp * V(GCRS), where the p-vector V(GCRS) is with respect to the Geocentric Celestial Reference System (IAU, 2000) and the p-vector V(date) is with respect to the mean equatorial triad of the given date.

Reference:

IAU: Trans. International Astronomical Union, Vol. XXIVB; Proc. 24th General Assembly, Manchester, UK. Resolutions B1.3, B1.6. (2000)

Here is the call graph for this function:

◆ iauPmat06()

void iauPmat06 ( double  date1,
double  date2,
double  rbp[3][3] 
)

Precession matrix from GCRS to a specified date.

Precession matrix (including frame bias) from GCRS to a specified date, IAU 2006 model.

Parameters
[in]date1,date2TT as a 2-part Julian Date (Note 1)
[out]rbpbias-precession matrix (Note 2)

Notes:

1) The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.

2) The matrix operates in the sense V(date) = rbp * V(GCRS), where the p-vector V(GCRS) is with respect to the Geocentric Celestial Reference System (IAU, 2000) and the p-vector V(date) is with respect to the mean equatorial triad of the given date.

References:

Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855

Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981

Here is the call graph for this function:

◆ iauPmat76()

void iauPmat76 ( double  date1,
double  date2,
double  rmatp[3][3] 
)

Precession matrix from J2000.0 to a specified date.

Precession matrix from J2000.0 to a specified date, IAU 1976 model.

Parameters
[in]date1,date2ending date, TT (Note 1)
[out]rmatpprecession matrix, J2000.0 -> date1+date2

Notes:

1) The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.

2) The matrix operates in the sense V(date) = RMATP * V(J2000), where the p-vector V(J2000) is with respect to the mean equatorial triad of epoch J2000.0 and the p-vector V(date) is with respect to the mean equatorial triad of the given date.

3) Though the matrix method itself is rigorous, the precession angles are expressed through canonical polynomials which are valid only for a limited time span. In addition, the IAU 1976 precession rate is known to be imperfect. The absolute accuracy of the present formulation is better than 0.1 arcsec from 1960AD to 2040AD, better than 1 arcsec from 1640AD to 2360AD, and remains below 3 arcsec for the whole of the period 500BC to 3000AD. The errors exceed 10 arcsec outside the range 1200BC to 3900AD, exceed 100 arcsec outside 4200BC to 5600AD and exceed 1000 arcsec outside 6800BC to 8200AD.

References:

Lieske, J.H., 1979, Astron.Astrophys. 73, 282. equations (6) & (7), p283.

Kaplan,G.H., 1981. USNO circular no. 163, pA2.

Here is the call graph for this function:

◆ iauPmpx()

void iauPmpx ( double  rc,
double  dc,
double  pr,
double  pd,
double  px,
double  rv,
double  pmt,
double  pob[3],
double  pco[3] 
)

Proper motion and parallax.

Parameters
[in]rc,dcICRS RA,Dec at catalog epoch (radians)
[in]prRA proper motion (radians/year; Note 1)
[in]pdDec proper motion (radians/year)
[in]pxparallax (arcsec)
[in]rvradial velocity (km/s, +ve if receding)
[in]pmtproper motion time interval (SSB, Julian years)
[in]pobSSB to observer vector (au)
[out]pcocoordinate direction (BCRS unit vector)

Notes:

1) The proper motion in RA is dRA/dt rather than cos(Dec)*dRA/dt.

2) The proper motion time interval is for when the starlight reaches the solar system barycenter.

3) To avoid the need for iteration, the Roemer effect (i.e. the small annual modulation of the proper motion coming from the changing light time) is applied approximately, using the direction of the star at the catalog epoch.

References:

1984 Astronomical Almanac, pp B39-B41.

Urban, S. & Seidelmann, P. K. (eds), Explanatory Supplement to the Astronomical Almanac, 3rd ed., University Science Books (2013), Section 7.2.

Here is the call graph for this function:

◆ iauPmsafe()

int iauPmsafe ( double  ra1,
double  dec1,
double  pmr1,
double  pmd1,
double  px1,
double  rv1,
double  ep1a,
double  ep1b,
double  ep2a,
double  ep2b,
double *  ra2,
double *  dec2,
double *  pmr2,
double *  pmd2,
double *  px2,
double *  rv2 
)

Star proper motion.

Star proper motion: update star catalog data for space motion, with special handling to handle the zero parallax case.

Parameters
[in]ra1right ascension (radians), before
[in]dec1declination (radians), before
[in]pmr1RA proper motion (radians/year), before
[in]pmd1Dec proper motion (radians/year), before
[in]px1parallax (arcseconds), before
[in]rv1radial velocity (km/s, +ve = receding), before
[in]ep1a"before" epoch, part A (Note 1)
[in]ep1b"before" epoch, part B (Note 1)
[in]ep2a"after" epoch, part A (Note 1)
[in]ep2b"after" epoch, part B (Note 1)
[out]ra2right ascension (radians), after
[out]dec2declination (radians), after
[out]pmr2RA proper motion (radians/year), after
[out]pmd2Dec proper motion (radians/year), after
[out]px2parallax (arcseconds), after
[out]rv2radial velocity (km/s, +ve = receding), after
Returns
status: -1 = system error (should not occur) 0 = no warnings or errors 1 = distance overridden (Note 6) 2 = excessive velocity (Note 7) 4 = solution didn't converge (Note 8) else = binary logical OR of the above warnings

Notes:

1) The starting and ending TDB epochs ep1a+ep1b and ep2a+ep2b are Julian Dates, apportioned in any convenient way between the two parts (A and B). For example, JD(TDB)=2450123.7 could be expressed in any of these ways, among others:

   epNa            epNb

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.

2) In accordance with normal star-catalog conventions, the object's right ascension and declination are freed from the effects of secular aberration. The frame, which is aligned to the catalog equator and equinox, is Lorentzian and centered on the SSB.

The proper motions are the rate of change of the right ascension and declination at the catalog epoch and are in radians per TDB Julian year.

The parallax and radial velocity are in the same frame.

3) Care is needed with units. The star coordinates are in radians and the proper motions in radians per Julian year, but the parallax is in arcseconds.

4) The RA proper motion is in terms of coordinate angle, not true angle. If the catalog uses arcseconds for both RA and Dec proper motions, the RA proper motion will need to be divided by cos(Dec) before use.

5) Straight-line motion at constant speed, in the inertial frame, is assumed.

6) An extremely small (or zero or negative) parallax is overridden to ensure that the object is at a finite but very large distance, but not so large that the proper motion is equivalent to a large but safe speed (about 0.1c using the chosen constant). A warning status of 1 is added to the status if this action has been taken.

7) If the space velocity is a significant fraction of c (see the constant VMAX in the function iauStarpv), it is arbitrarily set to zero. When this action occurs, 2 is added to the status.

8) The relativistic adjustment carried out in the iauStarpv function involves an iterative calculation. If the process fails to converge within a set number of iterations, 4 is added to the status.

Here is the call graph for this function:

◆ iauPn00()

void iauPn00 ( double  date1,
double  date2,
double  dpsi,
double  deps,
double *  epsa,
double  rb[3][3],
double  rp[3][3],
double  rbp[3][3],
double  rn[3][3],
double  rbpn[3][3] 
)

Precession-nutation, IAU 2000 model.

Precession-nutation, IAU 2000 model: a multi-purpose function, supporting classical (equinox-based) use directly and CIO-based use indirectly.

Parameters
[in]date1,date2TT as a 2-part Julian Date (Note 1)
[in]dpsi,depsnutation (Note 2)
[out]epsamean obliquity (Note 3)
[out]rbframe bias matrix (Note 4)
[out]rpprecession matrix (Note 5)
[out]rbpbias-precession matrix (Note 6)
[out]rnnutation matrix (Note 7)
[out]rbpnGCRS-to-true matrix (Note 8)

Notes:

1) The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.

2) The caller is responsible for providing the nutation components; they are in longitude and obliquity, in radians and are with respect to the equinox and ecliptic of date. For high-accuracy applications, free core nutation should be included as well as any other relevant corrections to the position of the CIP.

3) The returned mean obliquity is consistent with the IAU 2000 precession-nutation models.

4) The matrix rb transforms vectors from GCRS to J2000.0 mean equator and equinox by applying frame bias.

5) The matrix rp transforms vectors from J2000.0 mean equator and equinox to mean equator and equinox of date by applying precession.

6) The matrix rbp transforms vectors from GCRS to mean equator and equinox of date by applying frame bias then precession. It is the product rp x rb.

7) The matrix rn transforms vectors from mean equator and equinox of date to true equator and equinox of date by applying the nutation (luni-solar + planetary).

8) The matrix rbpn transforms vectors from GCRS to true equator and equinox of date. It is the product rn x rbp, applying frame bias, precession and nutation in that order.

9) It is permissible to re-use the same array in the returned arguments. The arrays are filled in the order given.

Reference:

Capitaine, N., Chapront, J., Lambert, S. and Wallace, P., "Expressions for the Celestial Intermediate Pole and Celestial Ephemeris Origin consistent with the IAU 2000A precession- nutation model", Astron.Astrophys. 400, 1145-1154 (2003)

n.b. The celestial ephemeris origin (CEO) was renamed "celestial intermediate origin" (CIO) by IAU 2006 Resolution 2.

Here is the call graph for this function:

◆ iauPn00a()

void iauPn00a ( double  date1,
double  date2,
double *  dpsi,
double *  deps,
double *  epsa,
double  rb[3][3],
double  rp[3][3],
double  rbp[3][3],
double  rn[3][3],
double  rbpn[3][3] 
)

Precession-nutation, IAU 2000A model.

Precession-nutation, IAU 2000A model: a multi-purpose function, supporting classical (equinox-based) use directly and CIO-based use indirectly.

Parameters
[in]date1,date2TT as a 2-part Julian Date (Note 1)
[out]dpsi,depsnutation (Note 2)
[out]epsamean obliquity (Note 3)
[out]rbframe bias matrix (Note 4)
[out]rpprecession matrix (Note 5)
[out]rbpbias-precession matrix (Note 6)
[out]rnnutation matrix (Note 7)
[out]rbpnGCRS-to-true matrix (Notes 8,9)

Notes:

1) The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.

2) The nutation components (luni-solar + planetary, IAU 2000A) in longitude and obliquity are in radians and with respect to the equinox and ecliptic of date. Free core nutation is omitted; for the utmost accuracy, use the iauPn00 function, where the nutation components are caller-specified. For faster but slightly less accurate results, use the iauPn00b function.

3) The mean obliquity is consistent with the IAU 2000 precession.

4) The matrix rb transforms vectors from GCRS to J2000.0 mean equator and equinox by applying frame bias.

5) The matrix rp transforms vectors from J2000.0 mean equator and equinox to mean equator and equinox of date by applying precession.

6) The matrix rbp transforms vectors from GCRS to mean equator and equinox of date by applying frame bias then precession. It is the product rp x rb.

7) The matrix rn transforms vectors from mean equator and equinox of date to true equator and equinox of date by applying the nutation (luni-solar + planetary).

8) The matrix rbpn transforms vectors from GCRS to true equator and equinox of date. It is the product rn x rbp, applying frame bias, precession and nutation in that order.

9) The X,Y,Z coordinates of the IAU 2000A Celestial Intermediate Pole are elements (3,1-3) of the GCRS-to-true matrix, i.e. rbpn[2][0-2].

10) It is permissible to re-use the same array in the returned arguments. The arrays are filled in the order given.

Reference:

Capitaine, N., Chapront, J., Lambert, S. and Wallace, P., "Expressions for the Celestial Intermediate Pole and Celestial Ephemeris Origin consistent with the IAU 2000A precession- nutation model", Astron.Astrophys. 400, 1145-1154 (2003)

n.b. The celestial ephemeris origin (CEO) was renamed "celestial intermediate origin" (CIO) by IAU 2006 Resolution 2.

Here is the call graph for this function:

◆ iauPn00b()

void iauPn00b ( double  date1,
double  date2,
double *  dpsi,
double *  deps,
double *  epsa,
double  rb[3][3],
double  rp[3][3],
double  rbp[3][3],
double  rn[3][3],
double  rbpn[3][3] 
)

Precession-nutation, IAU 2000B model.

Precession-nutation, IAU 2000B model: a multi-purpose function, supporting classical (equinox-based) use directly and CIO-based use indirectly.

Parameters
[in]date1,date2TT as a 2-part Julian Date (Note 1)
[out]dpsi,depsnutation (Note 2)
[out]epsamean obliquity (Note 3)
[out]rbframe bias matrix (Note 4)
[out]rpprecession matrix (Note 5)
[out]rbpbias-precession matrix (Note 6)
[out]rnnutation matrix (Note 7)
[out]rbpnGCRS-to-true matrix (Notes 8,9)

Notes:

1) The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.

2) The nutation components (luni-solar + planetary, IAU 2000B) in longitude and obliquity are in radians and with respect to the equinox and ecliptic of date. For more accurate results, but at the cost of increased computation, use the iauPn00a function. For the utmost accuracy, use the iauPn00 function, where the nutation components are caller-specified.

3) The mean obliquity is consistent with the IAU 2000 precession.

4) The matrix rb transforms vectors from GCRS to J2000.0 mean equator and equinox by applying frame bias.

5) The matrix rp transforms vectors from J2000.0 mean equator and equinox to mean equator and equinox of date by applying precession.

6) The matrix rbp transforms vectors from GCRS to mean equator and equinox of date by applying frame bias then precession. It is the product rp x rb.

7) The matrix rn transforms vectors from mean equator and equinox of date to true equator and equinox of date by applying the nutation (luni-solar + planetary).

8) The matrix rbpn transforms vectors from GCRS to true equator and equinox of date. It is the product rn x rbp, applying frame bias, precession and nutation in that order.

9) The X,Y,Z coordinates of the IAU 2000B Celestial Intermediate Pole are elements (3,1-3) of the GCRS-to-true matrix, i.e. rbpn[2][0-2].

10) It is permissible to re-use the same array in the returned arguments. The arrays are filled in the stated order.

Reference:

Capitaine, N., Chapront, J., Lambert, S. and Wallace, P., "Expressions for the Celestial Intermediate Pole and Celestial Ephemeris Origin consistent with the IAU 2000A precession- nutation model", Astron.Astrophys. 400, 1145-1154 (2003).

n.b. The celestial ephemeris origin (CEO) was renamed "celestial intermediate origin" (CIO) by IAU 2006 Resolution 2.

Here is the call graph for this function:

◆ iauPn06()

void iauPn06 ( double  date1,
double  date2,
double  dpsi,
double  deps,
double *  epsa,
double  rb[3][3],
double  rp[3][3],
double  rbp[3][3],
double  rn[3][3],
double  rbpn[3][3] 
)

Precession-nutation, IAU 2006 model.

Precession-nutation, IAU 2006 model: a multi-purpose function, supporting classical (equinox-based) use directly and CIO-based use indirectly.

Parameters
[in]date1,date2TT as a 2-part Julian Date (Note 1)
[in]dpsi,depsnutation (Note 2)
[out]epsamean obliquity (Note 3)
[out]rbframe bias matrix (Note 4)
[out]rpprecession matrix (Note 5)
[out]rbpbias-precession matrix (Note 6)
[out]rnnutation matrix (Note 7)
[out]rbpnGCRS-to-true matrix (Note 8)

Notes:

1) The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.

2) The caller is responsible for providing the nutation components; they are in longitude and obliquity, in radians and are with respect to the equinox and ecliptic of date. For high-accuracy applications, free core nutation should be included as well as any other relevant corrections to the position of the CIP.

3) The returned mean obliquity is consistent with the IAU 2006 precession.

4) The matrix rb transforms vectors from GCRS to J2000.0 mean equator and equinox by applying frame bias.

5) The matrix rp transforms vectors from J2000.0 mean equator and equinox to mean equator and equinox of date by applying precession.

6) The matrix rbp transforms vectors from GCRS to mean equator and equinox of date by applying frame bias then precession. It is the product rp x rb.

7) The matrix rn transforms vectors from mean equator and equinox of date to true equator and equinox of date by applying the nutation (luni-solar + planetary).

8) The matrix rbpn transforms vectors from GCRS to true equator and equinox of date. It is the product rn x rbp, applying frame bias, precession and nutation in that order.

9) The X,Y,Z coordinates of the Celestial Intermediate Pole are elements (3,1-3) of the GCRS-to-true matrix, i.e. rbpn[2][0-2].

10) It is permissible to re-use the same array in the returned arguments. The arrays are filled in the stated order.

References:

Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855

Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981

Here is the call graph for this function:

◆ iauPn06a()

void iauPn06a ( double  date1,
double  date2,
double *  dpsi,
double *  deps,
double *  epsa,
double  rb[3][3],
double  rp[3][3],
double  rbp[3][3],
double  rn[3][3],
double  rbpn[3][3] 
)

Precession-nutation, IAU 2006/2000A models.

Precession-nutation, IAU 2006/2000A models: a multi-purpose function, supporting classical (equinox-based) use directly and CIO-based use indirectly.

Parameters
[in]date1,date2TT as a 2-part Julian Date (Note 1)
[out]dpsi,depsnutation (Note 2)
[out]epsamean obliquity (Note 3)
[out]rbframe bias matrix (Note 4)
[out]rpprecession matrix (Note 5)
[out]rbpbias-precession matrix (Note 6)
[out]rnnutation matrix (Note 7)
[out]rbpnGCRS-to-true matrix (Notes 8,9)

Notes:

1) The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.

2) The nutation components (luni-solar + planetary, IAU 2000A) in longitude and obliquity are in radians and with respect to the equinox and ecliptic of date. Free core nutation is omitted; for the utmost accuracy, use the iauPn06 function, where the nutation components are caller-specified.

3) The mean obliquity is consistent with the IAU 2006 precession.

4) The matrix rb transforms vectors from GCRS to mean J2000.0 by applying frame bias.

5) The matrix rp transforms vectors from mean J2000.0 to mean of date by applying precession.

6) The matrix rbp transforms vectors from GCRS to mean of date by applying frame bias then precession. It is the product rp x rb.

7) The matrix rn transforms vectors from mean of date to true of date by applying the nutation (luni-solar + planetary).

8) The matrix rbpn transforms vectors from GCRS to true of date (CIP/equinox). It is the product rn x rbp, applying frame bias, precession and nutation in that order.

9) The X,Y,Z coordinates of the IAU 2006/2000A Celestial Intermediate Pole are elements (3,1-3) of the GCRS-to-true matrix, i.e. rbpn[2][0-2].

10) It is permissible to re-use the same array in the returned arguments. The arrays are filled in the stated order.

Reference:

Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855

Here is the call graph for this function:

◆ iauPnm00a()

void iauPnm00a ( double  date1,
double  date2,
double  rbpn[3][3] 
)

Form the matrix of precession-nutation.

Form the matrix of precession-nutation for a given date (including frame bias), equinox-based, IAU 2000A model.

Parameters
[in]date1,date2TT as a 2-part Julian Date (Note 1)
[out]rbpnclassical NPB matrix (Note 2)

Notes:

1) The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.

2) The matrix operates in the sense V(date) = rbpn * V(GCRS), where the p-vector V(date) is with respect to the true equatorial triad of date date1+date2 and the p-vector V(GCRS) is with respect to the Geocentric Celestial Reference System (IAU, 2000).

3) A faster, but slightly less accurate result (about 1 mas), can be obtained by using instead the iauPnm00b function.

Reference:

IAU: Trans. International Astronomical Union, Vol. XXIVB; Proc. 24th General Assembly, Manchester, UK. Resolutions B1.3, B1.6. (2000)

Here is the call graph for this function:

◆ iauPnm00b()

void iauPnm00b ( double  date1,
double  date2,
double  rbpn[3][3] 
)

Form the matrix of precession-nutation.

Form the matrix of precession-nutation for a given date (including frame bias), equinox-based, IAU 2000B model.

Parameters
[in]date1,date2TT as a 2-part Julian Date (Note 1)
[out]rbpnbias-precession-nutation matrix (Note 2)

Notes:

1) The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.

2) The matrix operates in the sense V(date) = rbpn * V(GCRS), where the p-vector V(date) is with respect to the true equatorial triad of date date1+date2 and the p-vector V(GCRS) is with respect to the Geocentric Celestial Reference System (IAU, 2000).

3) The present function is faster, but slightly less accurate (about 1 mas), than the iauPnm00a function.

Reference:

IAU: Trans. International Astronomical Union, Vol. XXIVB; Proc. 24th General Assembly, Manchester, UK. Resolutions B1.3, B1.6. (2000)

Here is the call graph for this function:

◆ iauPnm06a()

void iauPnm06a ( double  date1,
double  date2,
double  rnpb[3][3] 
)

Form the matrix of precession-nutation.

Form the matrix of precession-nutation for a given date (including frame bias), IAU 2006 precession and IAU 2000A nutation models.

Parameters
[in]date1,date2TT as a 2-part Julian Date (Note 1)
[out]rnpbbias-precession-nutation matrix (Note 2)

Notes:

1) The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.

2) The matrix operates in the sense V(date) = rnpb * V(GCRS), where the p-vector V(date) is with respect to the true equatorial triad of date date1+date2 and the p-vector V(GCRS) is with respect to the Geocentric Celestial Reference System (IAU, 2000).

Reference:

Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855.

Here is the call graph for this function:

◆ iauPnm80()

void iauPnm80 ( double  date1,
double  date2,
double  rmatpn[3][3] 
)

Form the matrix of precession/nutation.

Form the matrix of precession/nutation for a given date, IAU 1976 precession model, IAU 1980 nutation model.

Parameters
[in]date1,date2TDB date (Note 1)
[out]rmatpncombined precession/nutation matrix

Notes:

1) The TDB date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TDB)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.

2) The matrix operates in the sense V(date) = rmatpn * V(J2000), where the p-vector V(date) is with respect to the true equatorial triad of date date1+date2 and the p-vector V(J2000) is with respect to the mean equatorial triad of epoch J2000.0.

Reference:

Explanatory Supplement to the Astronomical Almanac, P. Kenneth Seidelmann (ed), University Science Books (1992), Section 3.3 (p145).

Here is the call graph for this function:

◆ iauPom00()

void iauPom00 ( double  xp,
double  yp,
double  sp,
double  rpom[3][3] 
)

Form the matrix of polar motion.

Form the matrix of polar motion for a given date, IAU 2000.

Parameters
[in]xp,ypcoordinates of the pole (radians, Note 1)
[in]spthe TIO locator s' (radians, Note 2)
[out]rpompolar-motion matrix (Note 3)

Notes:

1) The arguments xp and yp are the coordinates (in radians) of the Celestial Intermediate Pole with respect to the International Terrestrial Reference System (see IERS Conventions 2003), measured along the meridians to 0 and 90 deg west respectively.

2) The argument sp is the TIO locator s', in radians, which positions the Terrestrial Intermediate Origin on the equator. It is obtained from polar motion observations by numerical integration, and so is in essence unpredictable. However, it is dominated by a secular drift of about 47 microarcseconds per century, and so can be taken into account by using s' = -47*t, where t is centuries since J2000.0. The function iauSp00 implements this approximation.

3) The matrix operates in the sense V(TRS) = rpom * V(CIP), meaning that it is the final rotation when computing the pointing direction to a celestial source.

Reference:

McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

Here is the call graph for this function:

◆ iauPvstar()

int iauPvstar ( double  pv[2][3],
double *  ra,
double *  dec,
double *  pmr,
double *  pmd,
double *  px,
double *  rv 
)

Convert star position+velocity vector to catalog coordinates.

Parameters
[in]pvpv-vector (AU, AU/day)
[out]raright ascension (radians)
[out]decdeclination (radians)
[out]pmrRA proper motion (radians/year)
[out]pmdDec proper motion (radians/year)
[out]pxparallax (arcsec)
[out]rvradial velocity (km/s, positive = receding)
Returns
status: 0 = OK -1 = superluminal speed (Note 5) -2 = null position vector

Notes:

1) The specified pv-vector is the coordinate direction (and its rate of change) for the date at which the light leaving the star reached the solar-system barycenter.

2) The star data returned by this function are "observables" for an imaginary observer at the solar-system barycenter. Proper motion and radial velocity are, strictly, in terms of barycentric coordinate time, TCB. For most practical applications, it is permissible to neglect the distinction between TCB and ordinary "proper" time on Earth (TT/TAI). The result will, as a rule, be limited by the intrinsic accuracy of the proper-motion and radial-velocity data; moreover, the supplied pv-vector is likely to be merely an intermediate result (for example generated by the function iauStarpv), so that a change of time unit will cancel out overall.

In accordance with normal star-catalog conventions, the object's right ascension and declination are freed from the effects of secular aberration. The frame, which is aligned to the catalog equator and equinox, is Lorentzian and centered on the SSB.

Summarizing, the specified pv-vector is for most stars almost identical to the result of applying the standard geometrical "space motion" transformation to the catalog data. The differences, which are the subject of the Stumpff paper cited below, are:

(i) In stars with significant radial velocity and proper motion, the constantly changing light-time distorts the apparent proper motion. Note that this is a classical, not a relativistic, effect.

(ii) The transformation complies with special relativity.

3) Care is needed with units. The star coordinates are in radians and the proper motions in radians per Julian year, but the parallax is in arcseconds; the radial velocity is in km/s, but the pv-vector result is in AU and AU/day.

4) The proper motions are the rate of change of the right ascension and declination at the catalog epoch and are in radians per Julian year. The RA proper motion is in terms of coordinate angle, not true angle, and will thus be numerically larger at high declinations.

5) Straight-line motion at constant speed in the inertial frame is assumed. If the speed is greater than or equal to the speed of light, the function aborts with an error status.

6) The inverse transformation is performed by the function iauStarpv.

Reference:

Stumpff, P., 1985, Astron.Astrophys. 144, 232-240.

Here is the call graph for this function:

◆ iauPvtob()

void iauPvtob ( double  elong,
double  phi,
double  hm,
double  xp,
double  yp,
double  sp,
double  theta,
double  pv[2][3] 
)

Position and velocity of a terrestrial observing station.

Parameters
[in]elonglongitude (radians, east +ve, Note 1)
[in]philatitude (geodetic, radians, Note 1)
[in]hmheight above ref. ellipsoid (geodetic, m)
[in]xp,ypcoordinates of the pole (radians, Note 2)
[in]spthe TIO locator s' (radians, Note 2)
[in]thetaEarth rotation angle (radians, Note 3)
[out]pvposition/velocity vector (m, m/s, CIRS)

Notes:

1) The terrestrial coordinates are with respect to the WGS84 reference ellipsoid.

2) xp and yp are the coordinates (in radians) of the Celestial Intermediate Pole with respect to the International Terrestrial Reference System (see IERS Conventions), measured along the meridians 0 and 90 deg west respectively. sp is the TIO locator s', in radians, which positions the Terrestrial Intermediate Origin on the equator. For many applications, xp, yp and (especially) sp can be set to zero.

3) If theta is Greenwich apparent sidereal time instead of Earth rotation angle, the result is with respect to the true equator and equinox of date, i.e. with the x-axis at the equinox rather than the celestial intermediate origin.

4) The velocity units are meters per UT1 second, not per SI second. This is unlikely to have any practical consequences in the modern era.

5) No validation is performed on the arguments. Error cases that could lead to arithmetic exceptions are trapped by the iauGd2gc function, and the result set to zeros.

References:

McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

Urban, S. & Seidelmann, P. K. (eds), Explanatory Supplement to the Astronomical Almanac, 3rd ed., University Science Books (2013), Section 7.4.3.3.

Here is the call graph for this function:

◆ iauRefco()

void iauRefco ( double  phpa,
double  tc,
double  rh,
double  wl,
double *  refa,
double *  refb 
)

Determine constants in the atmospheric refraction model.

Determine the constants A and B in the atmospheric refraction model dZ = A tan Z + B tan^3 Z.

Z is the "observed" zenith distance (i.e. affected by refraction) and dZ is what to add to Z to give the "topocentric" (i.e. in vacuo) zenith distance.

Parameters
[in]phpapressure at the observer (hPa = millibar)
[in]tcambient temperature at the observer (deg C)
[in]rhrelative humidity at the observer (range 0-1)
[in]wlwavelength (micrometers)
[out]refatan Z coefficient (radians)
[out]refbtan^3 Z coefficient (radians)

Notes:

1) The model balances speed and accuracy to give good results in applications where performance at low altitudes is not paramount. Performance is maintained across a range of conditions, and applies to both optical/IR and radio.

2) The model omits the effects of (i) height above sea level (apart from the reduced pressure itself), (ii) latitude (i.e. the flattening of the Earth), (iii) variations in tropospheric lapse rate and (iv) dispersive effects in the radio.

The model was tested using the following range of conditions:

lapse rates 0.0055, 0.0065, 0.0075 deg/meter latitudes 0, 25, 50, 75 degrees heights 0, 2500, 5000 meters ASL pressures mean for height -10% to +5% in steps of 5% temperatures -10 deg to +20 deg with respect to 280 deg at SL relative humidity 0, 0.5, 1 wavelengths 0.4, 0.6, ... 2 micron, + radio zenith distances 15, 45, 75 degrees

The accuracy with respect to raytracing through a model atmosphere was as follows:

                   worst         RMS

optical/IR 62 mas 8 mas radio 319 mas 49 mas

For this particular set of conditions:

lapse rate 0.0065 K/meter latitude 50 degrees sea level pressure 1005 mb temperature 280.15 K humidity 80% wavelength 5740 Angstroms

the results were as follows:

ZD raytrace iauRefco Saastamoinen

10 10.27 10.27 10.27 20 21.19 21.20 21.19 30 33.61 33.61 33.60 40 48.82 48.83 48.81 45 58.16 58.18 58.16 50 69.28 69.30 69.27 55 82.97 82.99 82.95 60 100.51 100.54 100.50 65 124.23 124.26 124.20 70 158.63 158.68 158.61 72 177.32 177.37 177.31 74 200.35 200.38 200.32 76 229.45 229.43 229.42 78 267.44 267.29 267.41 80 319.13 318.55 319.10

deg arcsec arcsec arcsec

The values for Saastamoinen's formula (which includes terms up to tan^5) are taken from Hohenkerk and Sinclair (1985).

3) A wl value in the range 0-100 selects the optical/IR case and is wavelength in micrometers. Any value outside this range selects the radio case.

4) Outlandish input parameters are silently limited to mathematically safe values. Zero pressure is permissible, and causes zeroes to be returned.

5) The algorithm draws on several sources, as follows:

a) The formula for the saturation vapour pressure of water as a function of temperature and temperature is taken from Equations (A4.5-A4.7) of Gill (1982).

b) The formula for the water vapour pressure, given the saturation pressure and the relative humidity, is from Crane (1976), Equation (2.5.5).

c) The refractivity of air is a function of temperature, total pressure, water-vapour pressure and, in the case of optical/IR, wavelength. The formulae for the two cases are developed from Hohenkerk & Sinclair (1985) and Rueger (2002).

d) The formula for beta, the ratio of the scale height of the atmosphere to the geocentric distance of the observer, is an adaption of Equation (9) from Stone (1996). The adaptations, arrived at empirically, consist of (i) a small adjustment to the coefficient and (ii) a humidity term for the radio case only.

e) The formulae for the refraction constants as a function of n-1 and beta are from Green (1987), Equation (4.31).

References:

Crane, R.K., Meeks, M.L. (ed), "Refraction Effects in the Neutral Atmosphere", Methods of Experimental Physics: Astrophysics 12B, Academic Press, 1976.

Gill, Adrian E., "Atmosphere-Ocean Dynamics", Academic Press, 1982.

Green, R.M., "Spherical Astronomy", Cambridge University Press, 1987.

Hohenkerk, C.Y., & Sinclair, A.T., NAO Technical Note No. 63, 1985.

Rueger, J.M., "Refractive Index Formulae for Electronic Distance Measurement with Radio and Millimetre Waves", in Unisurv Report S-68, School of Surveying and Spatial Information Systems, University of New South Wales, Sydney, Australia, 2002.

Stone, Ronald C., P.A.S.P. 108, 1051-1058, 1996.

◆ iauS00a()

double iauS00a ( double  date1,
double  date2 
)

The CIO locator using the IA2000A precission-nutation model.

The CIO locator s, positioning the Celestial Intermediate Origin on the equator of the Celestial Intermediate Pole, using the IAU 2000A precession-nutation model.

Parameters
[in]date1,date2TT as a 2-part Julian Date (Note 1)
Returns
the CIO locator s in radians (Note 2)

Notes:

1) The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.

2) The CIO locator s is the difference between the right ascensions of the same point in two systems. The two systems are the GCRS and the CIP,CIO, and the point is the ascending node of the CIP equator. The CIO locator s remains a small fraction of 1 arcsecond throughout 1900-2100.

3) The series used to compute s is in fact for s+XY/2, where X and Y are the x and y components of the CIP unit vector; this series is more compact than a direct series for s would be. The present function uses the full IAU 2000A nutation model when predicting the CIP position. Faster results, with no significant loss of accuracy, can be obtained via the function iauS00b, which uses instead the IAU 2000B truncated model.

References:

Capitaine, N., Chapront, J., Lambert, S. and Wallace, P., "Expressions for the Celestial Intermediate Pole and Celestial Ephemeris Origin consistent with the IAU 2000A precession- nutation model", Astron.Astrophys. 400, 1145-1154 (2003)

n.b. The celestial ephemeris origin (CEO) was renamed "celestial intermediate origin" (CIO) by IAU 2006 Resolution 2.

McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

Here is the call graph for this function:

◆ iauS00b()

double iauS00b ( double  date1,
double  date2 
)

The CIO locator using the IAU 2000B precission-nutation model.

The CIO locator s, positioning the Celestial Intermediate Origin on the equator of the Celestial Intermediate Pole, using the IAU 2000B precession-nutation model.

Parameters
[in]date1,date2TT as a 2-part Julian Date (Note 1)
Returns
the CIO locator s in radians (Note 2)

Notes:

1) The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.

2) The CIO locator s is the difference between the right ascensions of the same point in two systems. The two systems are the GCRS and the CIP,CIO, and the point is the ascending node of the CIP equator. The CIO locator s remains a small fraction of 1 arcsecond throughout 1900-2100.

3) The series used to compute s is in fact for s+XY/2, where X and Y are the x and y components of the CIP unit vector; this series is more compact than a direct series for s would be. The present function uses the IAU 2000B truncated nutation model when predicting the CIP position. The function iauS00a uses instead the full IAU 2000A model, but with no significant increase in accuracy and at some cost in speed.

References:

Capitaine, N., Chapront, J., Lambert, S. and Wallace, P., "Expressions for the Celestial Intermediate Pole and Celestial Ephemeris Origin consistent with the IAU 2000A precession- nutation model", Astron.Astrophys. 400, 1145-1154 (2003)

n.b. The celestial ephemeris origin (CEO) was renamed "celestial intermediate origin" (CIO) by IAU 2006 Resolution 2.

McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

Here is the call graph for this function:

◆ iauS06a()

double iauS06a ( double  date1,
double  date2 
)

The CIO locator using IAU2006 precession and IAU 2000A nutation models.

The CIO locator s, positioning the Celestial Intermediate Origin on the equator of the Celestial Intermediate Pole, using the IAU 2006 precession and IAU 2000A nutation models.

Parameters
[in]date1,date2TT as a 2-part Julian Date (Note 1)
Returns
the CIO locator s in radians (Note 2)

Notes:

1) The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.

2) The CIO locator s is the difference between the right ascensions of the same point in two systems. The two systems are the GCRS and the CIP,CIO, and the point is the ascending node of the CIP equator. The CIO locator s remains a small fraction of 1 arcsecond throughout 1900-2100.

3) The series used to compute s is in fact for s+XY/2, where X and Y are the x and y components of the CIP unit vector; this series is more compact than a direct series for s would be. The present function uses the full IAU 2000A nutation model when predicting the CIP position.

References:

Capitaine, N., Chapront, J., Lambert, S. and Wallace, P., "Expressions for the Celestial Intermediate Pole and Celestial Ephemeris Origin consistent with the IAU 2000A precession- nutation model", Astron.Astrophys. 400, 1145-1154 (2003)

n.b. The celestial ephemeris origin (CEO) was renamed "celestial intermediate origin" (CIO) by IAU 2006 Resolution 2.

Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855

McCarthy, D. D., Petit, G. (eds.), 2004, IERS Conventions (2003), IERS Technical Note No. 32, BKG

Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981

Here is the call graph for this function:

◆ iauStarpm()

int iauStarpm ( double  ra1,
double  dec1,
double  pmr1,
double  pmd1,
double  px1,
double  rv1,
double  ep1a,
double  ep1b,
double  ep2a,
double  ep2b,
double *  ra2,
double *  dec2,
double *  pmr2,
double *  pmd2,
double *  px2,
double *  rv2 
)

Star proper motion.

Star proper motion: update star catalog data for space motion.

Parameters
[in]ra1right ascension (radians), before
[in]dec1declination (radians), before
[in]pmr1RA proper motion (radians/year), before
[in]pmd1Dec proper motion (radians/year), before
[in]px1parallax (arcseconds), before
[in]rv1radial velocity (km/s, +ve = receding), before
[in]ep1a"before" epoch, part A (Note 1)
[in]ep1b"before" epoch, part B (Note 1)
[in]ep2a"after" epoch, part A (Note 1)
[in]ep2b"after" epoch, part B (Note 1)
[out]ra2right ascension (radians), after
[out]dec2declination (radians), after
[out]pmr2RA proper motion (radians/year), after
[out]pmd2Dec proper motion (radians/year), after
[out]px2parallax (arcseconds), after
[out]rv2radial velocity (km/s, +ve = receding), after
Returns
status: -1 = system error (should not occur) 0 = no warnings or errors 1 = distance overridden (Note 6) 2 = excessive velocity (Note 7) 4 = solution didn't converge (Note 8) else = binary logical OR of the above warnings

Notes:

1) The starting and ending TDB dates ep1a+ep1b and ep2a+ep2b are Julian Dates, apportioned in any convenient way between the two parts (A and B). For example, JD(TDB)=2450123.7 could be expressed in any of these ways, among others:

    epna          epnb

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.

2) In accordance with normal star-catalog conventions, the object's right ascension and declination are freed from the effects of secular aberration. The frame, which is aligned to the catalog equator and equinox, is Lorentzian and centered on the SSB.

The proper motions are the rate of change of the right ascension and declination at the catalog epoch and are in radians per TDB Julian year.

The parallax and radial velocity are in the same frame.

3) Care is needed with units. The star coordinates are in radians and the proper motions in radians per Julian year, but the parallax is in arcseconds.

4) The RA proper motion is in terms of coordinate angle, not true angle. If the catalog uses arcseconds for both RA and Dec proper motions, the RA proper motion will need to be divided by cos(Dec) before use.

5) Straight-line motion at constant speed, in the inertial frame, is assumed.

6) An extremely small (or zero or negative) parallax is interpreted to mean that the object is on the "celestial sphere", the radius of which is an arbitrary (large) value (see the iauStarpv function for the value used). When the distance is overridden in this way, the status, initially zero, has 1 added to it.

7) If the space velocity is a significant fraction of c (see the constant VMAX in the function iauStarpv), it is arbitrarily set to zero. When this action occurs, 2 is added to the status.

8) The relativistic adjustment carried out in the iauStarpv function involves an iterative calculation. If the process fails to converge within a set number of iterations, 4 is added to the status.

Here is the call graph for this function:

◆ iauStarpv()

int iauStarpv ( double  ra,
double  dec,
double  pmr,
double  pmd,
double  px,
double  rv,
double  pv[2][3] 
)

Convert star catalog coordinates to position+velocity vector.

Parameters
[in]raright ascension (radians)
[in]decdeclination (radians)
[in]pmrRA proper motion (radians/year)
[in]pmdDec proper motion (radians/year)
[in]pxparallax (arcseconds)
[in]rvradial velocity (km/s, positive = receding)
[out]pvpv-vector (AU, AU/day)
Returns
status: 0 = no warnings 1 = distance overridden (Note 6) 2 = excessive speed (Note 7) 4 = solution didn't converge (Note 8) else = binary logical OR of the above

Notes:

1) The star data accepted by this function are "observables" for an imaginary observer at the solar-system barycenter. Proper motion and radial velocity are, strictly, in terms of barycentric coordinate time, TCB. For most practical applications, it is permissible to neglect the distinction between TCB and ordinary "proper" time on Earth (TT/TAI). The result will, as a rule, be limited by the intrinsic accuracy of the proper-motion and radial-velocity data; moreover, the pv-vector is likely to be merely an intermediate result, so that a change of time unit would cancel out overall.

In accordance with normal star-catalog conventions, the object's right ascension and declination are freed from the effects of secular aberration. The frame, which is aligned to the catalog equator and equinox, is Lorentzian and centered on the SSB.

2) The resulting position and velocity pv-vector is with respect to the same frame and, like the catalog coordinates, is freed from the effects of secular aberration. Should the "coordinate direction", where the object was located at the catalog epoch, be required, it may be obtained by calculating the magnitude of the position vector pv[0][0-2] dividing by the speed of light in AU/day to give the light-time, and then multiplying the space velocity pv[1][0-2] by this light-time and adding the result to pv[0][0-2].

Summarizing, the pv-vector returned is for most stars almost identical to the result of applying the standard geometrical "space motion" transformation. The differences, which are the subject of the Stumpff paper referenced below, are:

(i) In stars with significant radial velocity and proper motion, the constantly changing light-time distorts the apparent proper motion. Note that this is a classical, not a relativistic, effect.

(ii) The transformation complies with special relativity.

3) Care is needed with units. The star coordinates are in radians and the proper motions in radians per Julian year, but the parallax is in arcseconds; the radial velocity is in km/s, but the pv-vector result is in AU and AU/day.

4) The RA proper motion is in terms of coordinate angle, not true angle. If the catalog uses arcseconds for both RA and Dec proper motions, the RA proper motion will need to be divided by cos(Dec) before use.

5) Straight-line motion at constant speed, in the inertial frame, is assumed.

6) An extremely small (or zero or negative) parallax is interpreted to mean that the object is on the "celestial sphere", the radius of which is an arbitrary (large) value (see the constant PXMIN). When the distance is overridden in this way, the status, initially zero, has 1 added to it.

7) If the space velocity is a significant fraction of c (see the constant VMAX), it is arbitrarily set to zero. When this action occurs, 2 is added to the status.

8) The relativistic adjustment involves an iterative calculation. If the process fails to converge within a set number (IMAX) of iterations, 4 is added to the status.

9) The inverse transformation is performed by the function iauPvstar.

Reference:

Stumpff, P., 1985, Astron.Astrophys. 144, 232-240.

Here is the call graph for this function:

◆ iauTf2a()

int iauTf2a ( char  s,
int  ihour,
int  imin,
double  sec,
double *  rad 
)

Convert hours, minutes, seconds to radians.

Parameters
[in]ssign: '-' = negative, otherwise positive
[in]ihourhours
[in]iminminutes
[in]secseconds
[out]radangle in radians
Returns
status: 0 = OK 1 = ihour outside range 0-23 2 = imin outside range 0-59 3 = sec outside range 0-59.999...

Notes:

1) The result is computed even if any of the range checks fail.

2) Negative ihour, imin and/or sec produce a warning status, but the absolute value is used in the conversion.

3) If there are multiple errors, the status value reflects only the first, the smallest taking precedence.

◆ iauTf2d()

int iauTf2d ( char  s,
int  ihour,
int  imin,
double  sec,
double *  days 
)

Convert hours, minutes, seconds to days.

Parameters
[in]ssign: '-' = negative, otherwise positive
[in]ihourhours
[in]iminminutes
[in]secseconds
[out]daysinterval in days
Returns
status: 0 = OK 1 = ihour outside range 0-23 2 = imin outside range 0-59 3 = sec outside range 0-59.999...

Notes:

1) The result is computed even if any of the range checks fail.

2) Negative ihour, imin and/or sec produce a warning status, but the absolute value is used in the conversion.

3) If there are multiple errors, the status value reflects only the first, the smallest taking precedence.

◆ iauTporv()

int iauTporv ( double  xi,
double  eta,
double  v[3],
double  v01[3],
double  v02[3] 
)

In the tangent plane projection, determine the direction cosines of the tangent point.

Notes:

1) The tangent plane projection is also called the "gnomonic projection" and the "central projection".

2) The eta axis points due north in the adopted coordinate system. If the direction cosines represent observed (RA,Dec), the tangent plane coordinates (xi,eta) are conventionally called the "standard coordinates". If the direction cosines are with respect to a right-handed triad, (xi,eta) are also right-handed. The units of (xi,eta) are, effectively, radians at the tangent point.

3) The vector v must be of unit length or the result will be wrong.

4) Cases where there is no solution can arise only near the poles. For example, it is clearly impossible for a star at the pole itself to have a non-zero xi value, and hence it is meaningless to ask where the tangent point would have to be.

5) Also near the poles, cases can arise where there are two useful solutions. The return value indicates whether the second of the two solutions returned is useful; 1 indicates only one useful solution, the usual case.

6) The basis of the algorithm is to solve the spherical triangle PSC, where P is the north celestial pole, S is the star and C is the tangent point. Calling the celestial spherical coordinates of the star and tangent point (a,b) and (a0,b0) respectively, and writing rho^2 = (xi^2+eta^2) and r^2 = (1+rho^2), and transforming the vector v into (a,b) in the normal way, side c is then (pi/2-b), side p is sqrt(xi^2+eta^2) and side s (to be found) is (pi/2-b0), while angle C is given by sin(C) = xi/rho and cos(C) = eta/rho; angle P (to be found) is (a-a0). After solving the spherical triangle, the result (a0,b0) can be expressed in vector form as v0.

7) This function is a member of the following set:

         spherical      vector         solve for

         iauTpxes      iauTpxev         xi,eta
         iauTpsts      iauTpstv          star
         iauTpors    > iauTporv <       origin
Parameters
[in]xirectangular coordinates of star image
[in]etarectangular coordinates of star image
[in]vstar's direction cosines
[out]v01tangent point's direction socinse, solution 1.
[out]v02tangent point's direction socinse, solution 2.
Returns
number of solutions: 0= no solutions returnd, 1 = only the first solution is useful, 2= both solutions are useful.

◆ iauTpsts()

void iauTpsts ( double  xi,
double  eta,
double  a0,
double  b0,
double *  a,
double *  b 
)

In the tangent plane projection, solve for the spherical coordinates of the star.

In the tangent plane projection, given the star's rectangular coordinates and the spherical coordinates of the tangent point, solve for the spherical coordinates of the star. 1) The tangent plane projection is also called the "gnomonic projection" and the "central projection".

2) The eta axis points due north in the adopted coordinate system. If the spherical coordinates are observed (RA,Dec), the tangent plane coordinates (xi,eta) are conventionally called the "standard coordinates". If the spherical coordinates are with respect to a right-handed triad, (xi,eta) are also right-handed. The units of (xi,eta) are, effectively, radians at the tangent point.

3) All angular arguments are in radians.

4) This function is a member of the following set:

         spherical      vector         solve for

         iauTpxes      iauTpxev         xi,eta
       > iauTpsts <    iauTpstv          star
         iauTpors      iauTporv         origin
Parameters
[in]xirectangular coordinates of star image
[in]etarectangular coordinates of star image
[in]a0tange points' spherical cordinate
[in]b0tange points' spherical cordinate
[out]astar's spherical coordinate
[out]bstar's spherical coordinate
Here is the call graph for this function:

◆ iauTpstv()

void iauTpstv ( double  xi,
double  eta,
double  v0[3],
double  v[3] 
)

In the tangent plane projection, solve for the direction cosines of the star.

In the tangent plane projection, given the star's rectangular coordinates and the direction cosines of the tangent point, solve for the direction cosines of the star. 1) The tangent plane projection is also called the "gnomonic projection" and the "central projection".

2) The eta axis points due north in the adopted coordinate system. If the direction cosines represent observed (RA,Dec), the tangent plane coordinates (xi,eta) are conventionally called the "standard coordinates". If the direction cosines are with respect to a right-handed triad, (xi,eta) are also right-handed. The units of (xi,eta) are, effectively, radians at the tangent point.

3) The method used is to complete the star vector in the (xi,eta) based triad and normalize it, then rotate the triad to put the tangent point at the pole with the x-axis aligned to zero longitude. Writing (a0,b0) for the celestial spherical coordinates of the tangent point, the sequence of rotations is (b-pi/2) around the x-axis followed by (-a-pi/2) around the z-axis.

4) If vector v0 is not of unit length, the returned vector v will be wrong.

5) If vector v0 points at a pole, the returned vector v will be based on the arbitrary assumption that the longitude coordinate of the tangent point is zero.

6) This function is a member of the following set:

         spherical      vector         solve for

         iauTpxes      iauTpxev         xi,eta
         iauTpsts    > iauTpstv <        star
         iauTpors      iauTporv         origin
Parameters
[in]xirectangular coordinates of star image
[in]etarectangular coordinates of star image
[in]v0tangent point's direction cosines
[out]vstar's directino cosines

◆ iauTpxes()

int iauTpxes ( double  a,
double  b,
double  a0,
double  b0,
double *  xi,
double *  eta 
)

In the tangent plane projection, solve for the star's rectangular coordinates in the tangent plane.Notes:

1) The tangent plane projection is also called the "gnomonic projection" and the "central projection".

2) The eta axis points due north in the adopted coordinate system. If the spherical coordinates are observed (RA,Dec), the tangent plane coordinates (xi,eta) are conventionally called the "standard coordinates". For right-handed spherical coordinates, (xi,eta) are also right-handed. The units of (xi,eta) are, effectively, radians at the tangent point.

3) All angular arguments are in radians.

4) This function is a member of the following set:

         spherical      vector         solve for

       > iauTpxes <    iauTpxev         xi,eta
         iauTpsts      iauTpstv          star
         iauTpors      iauTporv         origin
Parameters
[in]astar's spherical coordinate
[in]bstar's spherical coordinate
[in]a0tangent point's spherical coordinate
[in]b0tangent point's spherical coordinate
Returns
0=OK, 1=star too far from axis, 2=antistar on tangent plane, 3= antistar too far from axis.

◆ iauTpxev()

int iauTpxev ( double  v[3],
double  v0[3],
double *  xi,
double *  eta 
)

In the tangent plane projection, solve for the star's rectangular coordinates in the tangent plane.In the tangent plane projection, given celestial direction cosines for a star and the tangent point, solve for the star's rectangular coordinates in the tangent plane.

Notes:

1) The tangent plane projection is also called the "gnomonic projection" and the "central projection".

2) The eta axis points due north in the adopted coordinate system. If the direction cosines represent observed (RA,Dec), the tangent plane coordinates (xi,eta) are conventionally called the "standard coordinates". If the direction cosines are with respect to a right-handed triad, (xi,eta) are also right-handed. The units of (xi,eta) are, effectively, radians at the tangent point.

3) The method used is to extend the star vector to the tangent plane and then rotate the triad so that (x,y) becomes (xi,eta). Writing (a,b) for the celestial spherical coordinates of the star, the sequence of rotations is (a+pi/2) around the z-axis followed by (pi/2-b) around the x-axis.

4) If vector v0 is not of unit length, or if vector v is of zero length, the results will be wrong.

5) If v0 points at a pole, the returned (xi,eta) will be based on the arbitrary assumption that the longitude coordinate of the tangent point is zero.

6) This function is a member of the following set:

         spherical      vector         solve for

         iauTpxes    > iauTpxev <       xi,eta
         iauTpsts      iauTpstv          star
         iauTpors      iauTporv         origin
Parameters
[in]vdirection cosines of the start
[in]v0direction cosines of the tangent point
[in]xitanget plane coordinate of star
[in]etatanget plane coordinate of star
Returns
0=OK, 1=star too far from axis, 2=antistar on tangent plane, 3= antistar too far from axis.

◆ iauXys00a()

void iauXys00a ( double  date1,
double  date2,
double *  x,
double *  y,
double *  s 
)

Compute X,Y coordinates of the CIP and CIO locator.

For a given TT date, compute the X,Y coordinates of the Celestial Intermediate Pole and the CIO locator s, using the IAU 2000A precession-nutation model.

Parameters
[in]date1TT as a 2-part Julian Date (Note 1)
[in]date2TT as a 2-part Julian Date (Note 1)
[out]xCelestial Intermediate Pole (Note 2)
[out]yCelestial Intermediate Pole (Note 2)
[out]sthe CIO locator s (Note 2)

Notes:

1) The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.

2) The Celestial Intermediate Pole coordinates are the x,y components of the unit vector in the Geocentric Celestial Reference System.

3) The CIO locator s (in radians) positions the Celestial Intermediate Origin on the equator of the CIP.

4) A faster, but slightly less accurate result (about 1 mas for X,Y), can be obtained by using instead the iauXys00b function.

Reference:

McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

Here is the call graph for this function:

◆ iauXys00b()

void iauXys00b ( double  date1,
double  date2,
double *  x,
double *  y,
double *  s 
)

Compute X,Y coordinates of the CIP and CIO locator.

For a given TT date, compute the X,Y coordinates of the Celestial Intermediate Pole and the CIO locator s, using the IAU 2000B precession-nutation model.

Parameters
[in]date1,date2TT as a 2-part Julian Date (Note 1)
[out]x,yCelestial Intermediate Pole (Note 2)
[out]sthe CIO locator s (Note 2)

Notes:

1) The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.

2) The Celestial Intermediate Pole coordinates are the x,y components of the unit vector in the Geocentric Celestial Reference System.

3) The CIO locator s (in radians) positions the Celestial Intermediate Origin on the equator of the CIP.

4) The present function is faster, but slightly less accurate (about 1 mas in X,Y), than the iauXys00a function.

Reference:

McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

Here is the call graph for this function:

◆ iauXys06a()

void iauXys06a ( double  date1,
double  date2,
double *  x,
double *  y,
double *  s 
)

Compute X,Y coordinates of the CIP and CIO locator.

For a given TT date, compute the X,Y coordinates of the Celestial Intermediate Pole and the CIO locator s, using the IAU 2006 precession and IAU 2000A nutation models.

Parameters
[in]date1,date2TT as a 2-part Julian Date (Note 1)
[out]x,yCelestial Intermediate Pole (Note 2)
[out]sthe CIO locator s (Note 2)

Notes:

1) The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

   date1          date2

2450123.7           0.0       (JD method)
2451545.0       -1421.3       (J2000 method)
2400000.5       50123.2       (MJD method)
2450123.5           0.2       (date & time method)

The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.

2) The Celestial Intermediate Pole coordinates are the x,y components of the unit vector in the Geocentric Celestial Reference System.

3) The CIO locator s (in radians) positions the Celestial Intermediate Origin on the equator of the CIP.

4) Series-based solutions for generating X and Y are also available: see Capitaine & Wallace (2006) and iauXy06.

References:

Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855

Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981

Here is the call graph for this function: