astro_module Module

Modern Fortran implementations of standard models used in fundamental astronomy

Notes

This library is based on the IAU SOFA library. The routines have been changed in the following ways:

  • Conversion from Fixed-form (FORTRAN 77) to Free-form (Fortran 2008) format.
  • Removal of the "iau_" prefix on all routines.
  • All routines were combined into this module.
  • moved headers before code in prep for FORD syntax.
  • replaced DOUBLE PRECISION with REAL(WP)
  • replaced old style PARAMETER and DATA declarations
  • eliminate line numbers (replace with do...end do, replaced some with exit statements)
  • replace DBLE(...) with real(...,wp)
  • add INTENT to all arguments
  • make all routines PURE
  • get rid of the "Called:" blocks in the headers
  • added RESULT() to functions.
  • Work in progress
    • replace anint and nint
    • moved duplicated parameter declarations to the top of the module
    • changed DATA statements to PARAMETERs
    • need to eliminate a lot of documentation duplication in various routines.
    • need to provide a way to specify user-defined DAT routine for leap seconds

Original SOFA Copyright Notice

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

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

NOTICE TO USER:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Correspondence concerning SOFA software should be addressed as follows:

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


Uses

  • module~~astro_module~~UsesGraph module~astro_module astro_module iso_fortran_env iso_fortran_env module~astro_module->iso_fortran_env

Contents


Functions

public function ANP(a) result(w)

Normalize angle into the range 0 <= A < 2pi.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: a

angle (radians)

Return Value real(kind=wp)

angle in range 0-2pi

public function ANPM(a) result(w)

Normalize angle into the range -pi <= A < +pi.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: a

angle (radians)

Return Value real(kind=wp)

angle in range +/-pi

public function DTDB(date1, date2, ut, elong, u, v) result(TDB_minus_TT)

An approximation to TDB-TT, the difference between barycentric dynamical time and terrestrial time, for an observer on the Earth.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

date, TDB (Notes 1-3)

real(kind=wp), intent(in) :: date2

date, TDB (Notes 1-3)

real(kind=wp), intent(in) :: ut

universal time (UT1, fraction of one day)

real(kind=wp), intent(in) :: elong

longitude (east positive, radians)

real(kind=wp), intent(in) :: u

distance from Earth spin axis (km)

real(kind=wp), intent(in) :: v

distance north of equatorial plane (km)

Return Value real(kind=wp)

TDB-TT (seconds)

public function EE00(date1, date2, epsa, dpsi) result(res)

The equation of the equinoxes, compatible with IAU 2000 resolutions, given the nutation in longitude and the mean obliquity.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: epsa

mean obliquity (Note 2)

real(kind=wp), intent(in) :: dpsi

nutation in longitude (Note 3)

Return Value real(kind=wp)

equation of the equinoxes (Note 4)

public function EE00A(date1, date2) result(res)

Equation of the equinoxes, compatible with IAU 2000 resolutions.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

Return Value real(kind=wp)

equation of the equinoxes (Note 2)

public function EE00B(date1, date2) result(res)

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

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

Return Value real(kind=wp)

equation of the equinoxes (Note 2)

public function EE06A(date1, date2) result(res)

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

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

Return Value real(kind=wp)

equation of the equinoxes (Note 2)

public function EECT00(date1, date2) result(res)

Equation of the equinoxes complementary terms, consistent with IAU 2000 resolutions.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

Return Value real(kind=wp)

complementary terms (Note 2)

public function EO06A(date1, date2) result(res)

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

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

Return Value real(kind=wp)

equation of the origins in radians

public function EORS(rnpb, s) result(res)

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

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in), dimension(3,3):: rnpb

classical nutation x precession x bias matrix

real(kind=wp), intent(in) :: s

the quantity s (the CIO locator)

Return Value real(kind=wp)

the equation of the origins in radians.

public function EPB(dj1, dj2) result(res)

Julian Date to Besselian Epoch.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: dj1

Julian Date (see note)

real(kind=wp), intent(in) :: dj2

Julian Date (see note)

Return Value real(kind=wp)

the Besselian Epoch

public function EPJ(dj1, dj2) result(jd)

Julian Date to Julian Epoch.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: dj1

Julian Date (see note)

real(kind=wp), intent(in) :: dj2

Julian Date (see note)

Return Value real(kind=wp)

the Julian Epoch.

public function EQEQ94(date1, date2) result(eqe)

Equation of the equinoxes, IAU 1994 model.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TDB date (Note 1)

real(kind=wp), intent(in) :: date2

TDB date (Note 1)

Return Value real(kind=wp)

equation of the equinoxes (Note 2)

public function ERA00(dj1, dj2) result(era)

Earth rotation angle (IAU 2000 model).

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: dj1

UT1 as a 2-part Julian Date (see note)

real(kind=wp), intent(in) :: dj2

UT1 as a 2-part Julian Date (see note)

Return Value real(kind=wp)

the Earth rotation angle (radians), in the range 0 to 2pi.

public function FAD03(t) result(fa)

Fundamental argument, IERS Conventions (2003): mean elongation of the Moon from the Sun.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: t

TDB, Julian centuries since J2000.0 (Note 1)

Return Value real(kind=wp)

D, radians (Note 2)

public function FAE03(t) result(fae)

Fundamental argument, IERS Conventions (2003): mean longitude of Earth.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: t

TDB, Julian centuries since J2000.0 (Note 1)

Return Value real(kind=wp)

mean longitude of Earth, radians (Note 2)

public function FAF03(t) result(f)

Fundamental argument, IERS Conventions (2003): mean longitude of the Moon minus mean longitude of the ascending node.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: t

TDB, Julian centuries since J2000.0 (Note 1)

Return Value real(kind=wp)

F, radians (Note 2)

public function FAJU03(t) result(fa)

Fundamental argument, IERS Conventions (2003): mean longitude of Jupiter.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: t

TDB, Julian centuries since J2000.0 (Note 1)

Return Value real(kind=wp)

mean longitude of Jupiter, radians (Note 2)

public function FAL03(t) result(l)

Fundamental argument, IERS Conventions (2003): mean anomaly of the Moon.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: t

TDB, Julian centuries since J2000.0 (Note 1)

Return Value real(kind=wp)

l, radians (Note 2)

public function FALP03(t) result(res)

Fundamental argument, IERS Conventions (2003): mean anomaly of the Sun.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: t

TDB, Julian centuries since J2000.0 (Note 1)

Return Value real(kind=wp)

l', radians (Note 2)

public function FAMA03(t) result(res)

Fundamental argument, IERS Conventions (2003): mean longitude of Mars.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: t

TDB, Julian centuries since J2000.0 (Note 1)

Return Value real(kind=wp)

mean longitude of Mars, radians (Note 2)

public function FAME03(t) result(res)

Fundamental argument, IERS Conventions (2003): mean longitude of Mercury.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: t

TDB, Julian centuries since J2000.0 (Note 1)

Return Value real(kind=wp)

mean longitude of Mercury, radians (Note 2)

public function FANE03(t) result(res)

Fundamental argument, IERS Conventions (2003): mean longitude of Neptune.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: t

TDB, Julian centuries since J2000.0 (Note 1)

Return Value real(kind=wp)

mean longitude of Neptune, radians (Note 2)

public function FAOM03(t) result(res)

Fundamental argument, IERS Conventions (2003): mean longitude of the Moon's ascending node.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: t

TDB, Julian centuries since J2000.0 (Note 1)

Return Value real(kind=wp)

Omega, radians (Note 2)

public function FAPA03(t) result(res)

Fundamental argument, IERS Conventions (2003): general accumulated precession in longitude.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: t

TDB, Julian centuries since J2000.0 (Note 1)

Return Value real(kind=wp)

general precession in longitude, radians (Note 2)

public function FASA03(t) result(res)

Fundamental argument, IERS Conventions (2003): mean longitude of Saturn.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: t

TDB, Julian centuries since J2000.0 (Note 1)

Return Value real(kind=wp)

mean longitude of Saturn, radians (Note 2)

public function FAUR03(t) result(res)

Fundamental argument, IERS Conventions (2003): mean longitude of Uranus.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: t

TDB, Julian centuries since J2000.0 (Note 1)

Return Value real(kind=wp)

mean longitude of Uranus, radians (Note 2)

public function FAVE03(t) result(res)

Fundamental argument, IERS Conventions (2003): mean longitude of Venus.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: t

TDB, Julian centuries since J2000.0 (Note 1)

Return Value real(kind=wp)

mean longitude of Venus, radians (Note 2)

public function GMST00(uta, utb, tta, ttb) result(gmst)

Greenwich Mean Sidereal Time (model consistent with IAU 2000 resolutions).

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: uta

UT1 as a 2-part Julian Date (Notes 1,2)

real(kind=wp), intent(in) :: utb

UT1 as a 2-part Julian Date (Notes 1,2)

real(kind=wp), intent(in) :: tta

TT as a 2-part Julian Date (Notes 1,2)

real(kind=wp), intent(in) :: ttb

TT as a 2-part Julian Date (Notes 1,2)

Return Value real(kind=wp)

Greenwich mean sidereal time (radians)

public function GMST06(uta, utb, tta, ttb) result(gmst)

Greenwich mean sidereal time (consistent with IAU 2006 precession).

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: uta

UT1 as a 2-part Julian Date (Notes 1,2)

real(kind=wp), intent(in) :: utb

UT1 as a 2-part Julian Date (Notes 1,2)

real(kind=wp), intent(in) :: tta

TT as a 2-part Julian Date (Notes 1,2)

real(kind=wp), intent(in) :: ttb

TT as a 2-part Julian Date (Notes 1,2)

Return Value real(kind=wp)

Greenwich mean sidereal time (radians)

public function GMST82(dj1, dj2) result(gmst)

Universal Time to Greenwich Mean Sidereal Time (IAU 1982 model).

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: dj1

UT1 Julian Date (see note)

real(kind=wp), intent(in) :: dj2

UT1 Julian Date (see note)

Return Value real(kind=wp)

Greenwich mean sidereal time (radians)

public function GST00A(uta, utb, tta, ttb) result(gast)

Greenwich Apparent Sidereal Time (consistent with IAU 2000 resolutions).

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: uta

UT1 as a 2-part Julian Date (Notes 1,2)

real(kind=wp), intent(in) :: utb

UT1 as a 2-part Julian Date (Notes 1,2)

real(kind=wp), intent(in) :: tta

TT as a 2-part Julian Date (Notes 1,2)

real(kind=wp), intent(in) :: ttb

TT as a 2-part Julian Date (Notes 1,2)

Return Value real(kind=wp)

Greenwich apparent sidereal time (radians)

public function GST00B(uta, utb) result(gast)

Greenwich Apparent Sidereal Time (consistent with IAU 2000 resolutions but using the truncated nutation model IAU 2000B).

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: uta

UT1 as a 2-part Julian Date (Notes 1,2)

real(kind=wp), intent(in) :: utb

UT1 as a 2-part Julian Date (Notes 1,2)

Return Value real(kind=wp)

Greenwich apparent sidereal time (radians)

public function GST06(uta, utb, tta, ttb, rnpb) result(gast)

Greenwich apparent sidereal time, IAU 2006, given the NPB matrix.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: uta

UT1 as a 2-part Julian Date (Notes 1,2)

real(kind=wp), intent(in) :: utb

UT1 as a 2-part Julian Date (Notes 1,2)

real(kind=wp), intent(in) :: tta

TT as a 2-part Julian Date (Notes 1,2)

real(kind=wp), intent(in) :: ttb

TT as a 2-part Julian Date (Notes 1,2)

real(kind=wp), intent(in), dimension(3,3):: rnpb

nutation x precession x bias matrix

Return Value real(kind=wp)

Greenwich apparent sidereal time (radians)

public function GST06A(uta, utb, tta, ttb) result(gast)

Greenwich apparent sidereal time (consistent with IAU 2000 and 2006 resolutions).

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: uta

UT1 as a 2-part Julian Date (Notes 1,2)

real(kind=wp), intent(in) :: utb

UT1 as a 2-part Julian Date (Notes 1,2)

real(kind=wp), intent(in) :: tta

TT as a 2-part Julian Date (Notes 1,2)

real(kind=wp), intent(in) :: ttb

TT as a 2-part Julian Date (Notes 1,2)

Return Value real(kind=wp)

Greenwich apparent sidereal time (radians)

public function GST94(uta, utb) result(gast)

Greenwich Apparent Sidereal Time (consistent with IAU 1982/94 resolutions).

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: uta

UT1 as a 2-part Julian Date (Notes 1,2)

real(kind=wp), intent(in) :: utb

UT1 as a 2-part Julian Date (Notes 1,2)

Return Value real(kind=wp)

Greenwich apparent sidereal time (radians)

public function HD2PA(ha, dec, phi) result(res)

Parallactic angle for a given hour angle and declination.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: ha

hour angle

real(kind=wp), intent(in) :: dec

declination

real(kind=wp), intent(in) :: phi

site latitude

Return Value real(kind=wp)

parallactic angle

public function OBL06(date1, date2) result(obl)

Mean obliquity of the ecliptic, IAU 2006 precession model.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

Return Value real(kind=wp)

obliquity of the ecliptic (radians, Note 2)

public function OBL80(date1, date2) result(obl)

Mean obliquity of the ecliptic, IAU 1980 model.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

Return Value real(kind=wp)

obliquity of the ecliptic (radians, Note 2)

public function S00(date1, date2, x, y) result(s)

The CIO locator s, positioning the Celestial Intermediate Origin on the equator of the Celestial Intermediate Pole, given the CIP's X,Y coordinates. Compatible with IAU 2000A precession-nutation.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: x

CIP coordinates (Note 3)

real(kind=wp), intent(in) :: y

CIP coordinates (Note 3)

Return Value real(kind=wp)

the CIO locator s in radians (Note 2)

public function S00A(date1, date2) result(s)

The CIO locator s, positioning the Celestial Intermediate Origin on the equator of the Celestial Intermediate Pole, using the IAU 2000A precession-nutation model.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

Return Value real(kind=wp)

the CIO locator s in radians (Note 2)

public function S00B(date1, date2) result(s)

The CIO locator s, positioning the Celestial Intermediate Origin on the equator of the Celestial Intermediate Pole, using the IAU 2000B precession-nutation model.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

Return Value real(kind=wp)

the CIO locator s in radians (Note 2)

public function S06(date1, date2, x, y) result(s)

The CIO locator s, positioning the Celestial Intermediate Origin on the equator of the Celestial Intermediate Pole, given the CIP's X,Y coordinates. Compatible with IAU 2006/2000A precession-nutation.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: x

CIP coordinates (Note 3)

real(kind=wp), intent(in) :: y

CIP coordinates (Note 3)

Return Value real(kind=wp)

the CIO locator s in radians (Note 2)

public function S06A(date1, date2) result(s)

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.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

Return Value real(kind=wp)

the CIO locator s in radians (Note 2)

public function SP00(date1, date2) result(sp)

The TIO locator s', positioning the Terrestrial Intermediate Origin on the equator of the Celestial Intermediate Pole.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

Return Value real(kind=wp)

the TIO locator s' in radians (Note 2)


Subroutines

public subroutine A2AF(ndp, angle, sign, idmsf)

Decompose radians into degrees, arcminutes, arcseconds, fraction.

Read more…

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: ndp

resolution (Note 1)

real(kind=wp), intent(in) :: angle

angle in radians

character(len=*), intent(out) :: sign

'+' or '-'

integer, intent(out), dimension(4):: idmsf

degrees, arcminutes, arcseconds, fraction

public subroutine A2TF(ndp, angle, sign, ihmsf)

Decompose radians into hours, minutes, seconds, fraction.

Read more…

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: ndp

resolution (Note 1)

real(kind=wp), intent(in) :: angle

angle in radians

character(len=*), intent(out) :: sign

'+' or '-'

integer, intent(out), dimension(4):: ihmsf

hours, minutes, seconds, fraction

public subroutine AB(pnat, v, s, bm1, ppr)

Apply aberration to transform natural direction into proper direction.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in), dimension(3):: pnat

natural direction to the source (unit vector)

real(kind=wp), intent(in), dimension(3):: v

observer barycentric velocity in units of c

real(kind=wp), intent(in) :: s

distance between the Sun and the observer (au)

real(kind=wp), intent(in) :: bm1

sqrt(1-|v|^2): reciprocal of Lorenz factor

real(kind=wp), intent(out), dimension(3):: ppr

proper direction to source (unit vector)

public subroutine AE2HD(az, el, phi, ha, dec)

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

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: az

azimuth

real(kind=wp), intent(in) :: el

elevation

real(kind=wp), intent(in) :: phi

observatory latitude

real(kind=wp), intent(out) :: ha

hour angle

real(kind=wp), intent(out) :: dec

declination

public subroutine AF2A(s, ideg, iamin, asec, rad, j)

Convert degrees, arcminutes, arcseconds to radians.

Read more…

Arguments

TypeIntentOptionalAttributesName
character(len=1), intent(in) :: s

sign: '-' = negative, otherwise positive

integer, intent(in) :: ideg

degrees

integer, intent(in) :: iamin

arcminutes

real(kind=wp), intent(in) :: asec

arcseconds

real(kind=wp), intent(out) :: rad

angle in radians

integer, intent(out) :: j

0 = OK 1 = IDEG outside range 0-359 2 = IAMIN outside range 0-59 3 = ASEC outside range 0-59.999...

public subroutine APCG(date1, date2, ebpv, ehp, astrom)

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

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TDB as a 2-part...

real(kind=wp), intent(in) :: date2
real(kind=wp), intent(in), dimension(3,2):: ebpv

Earth barycentric position/velocity (au, au/day)

real(kind=wp), intent(in), dimension(3):: ehp

Earth heliocentric position (au)

real(kind=wp), intent(inout), dimension(30):: astrom

star-independent astrometry parameters:

(1) PM time interval (SSB, Julian years) (2-4) SSB to observer (vector, au) (5-7) Sun to observer (unit vector) (8) distance from Sun to observer (au) (9-11) v: barycentric observer velocity (vector, c) (12) sqrt(1-|v|^2): reciprocal of Lorenz factor (13-21) bias-precession-nutation matrix (22) unchanged (23) unchanged (24) unchanged (25) unchanged (26) unchanged (27) unchanged (28) unchanged (29) unchanged (30) unchanged

public subroutine APCG13(date1, date2, astrom)

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.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TDB as a 2-part...

real(kind=wp), intent(in) :: date2
real(kind=wp), intent(inout), dimension(30):: astrom

star-independent astrometry parameters:

(1) PM time interval (SSB, Julian years) (2-4) SSB to observer (vector, au) (5-7) Sun to observer (unit vector) (8) distance from Sun to observer (au) (9-11) v: barycentric observer velocity (vector, c) (12) sqrt(1-|v|^2): reciprocal of Lorenz factor (13-21) bias-precession-nutation matrix (22) unchanged (23) unchanged (24) unchanged (25) unchanged (26) unchanged (27) unchanged (28) unchanged (29) unchanged (30) unchanged

public subroutine APCI(date1, date2, ebpv, ehp, x, y, s, astrom)

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.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TDB as a 2-part...

real(kind=wp), intent(in) :: date2
real(kind=wp), intent(in), dimension(3,2):: ebpv

Earth barycentric position/velocity (au, au/day)

real(kind=wp), intent(in), dimension(3):: ehp

Earth heliocentric position (au)

real(kind=wp), intent(in) :: x

CIP X (component of unit vector)

real(kind=wp), intent(in) :: y

CIP Y (component of unit vector)

real(kind=wp), intent(in) :: s

the CIO locator s (radians)

real(kind=wp), intent(inout), dimension(30):: astrom

star-independent astrometry parameters:

(1) PM time interval (SSB, Julian years) (2-4) SSB to observer (vector, au) (5-7) Sun to observer (unit vector) (8) distance from Sun to observer (au) (9-11) v: barycentric observer velocity (vector, c) (12) sqrt(1-|v|^2): reciprocal of Lorenz factor (13-21) bias-precession-nutation matrix (22) unchanged (23) unchanged (24) unchanged (25) unchanged (26) unchanged (27) unchanged (28) unchanged (29) unchanged (30) unchanged

public subroutine APCI13(date1, date2, astrom, eo)

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.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TDB as a 2-part...

real(kind=wp), intent(in) :: date2
real(kind=wp), intent(inout), dimension(30):: astrom

star-independent astrometry parameters:

(1) PM time interval (SSB, Julian years) (2-4) SSB to observer (vector, au) (5-7) Sun to observer (unit vector) (8) distance from Sun to observer (au) (9-11) v: barycentric observer velocity (vector, c) (12) sqrt(1-|v|^2): reciprocal of Lorenz factor (13-21) bias-precession-nutation matrix (22) unchanged (23) unchanged (24) unchanged (25) unchanged (26) unchanged (27) unchanged (28) unchanged (29) unchanged (30) unchanged

real(kind=wp), intent(out) :: eo

equation of the origins (ERA-GST)

public subroutine APCO(date1, date2, ebpv, ehp, x, y, s, theta, elong, phi, hm, xp, yp, sp, refa, refb, astrom)

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.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TDB as a 2-part...

real(kind=wp), intent(in) :: date2
real(kind=wp), intent(in), dimension(3,2):: ebpv

Earth barycentric pos/vel (au, au/day, Note 2)

real(kind=wp), intent(in), dimension(3):: ehp

Earth heliocentric position (au, Note 2)

real(kind=wp), intent(in) :: x

CIP X (component of unit vector)

real(kind=wp), intent(in) :: y

CIP Y (component of unit vector)

real(kind=wp), intent(in) :: s

the CIO locator s (radians)

real(kind=wp), intent(in) :: theta

Earth rotation angle (radians)

real(kind=wp), intent(in) :: elong

longitude (radians, east +ve, Note 3)

real(kind=wp), intent(in) :: phi

latitude (geodetic, radians, Note 3)

real(kind=wp), intent(in) :: hm

height above ellipsoid (m, geodetic, Note 3)

real(kind=wp), intent(in) :: xp

polar motion coordinate (radians, Note 4)

real(kind=wp), intent(in) :: yp

polar motion coordinate (radians, Note 4)

real(kind=wp), intent(in) :: sp

the TIO locator s' (radians, Note 4)

real(kind=wp), intent(in) :: refa

refraction constant A (radians, Note 5)

real(kind=wp), intent(in) :: refb

refraction constant B (radians, Note 5)

real(kind=wp), intent(out), dimension(30):: astrom

star-independent astrometry parameters:

(1) PM time interval (SSB, Julian years) (2-4) SSB to observer (vector, au) (5-7) Sun to observer (unit vector) (8) distance from Sun to observer (au) (9-11) v: barycentric observer velocity (vector, c) (12) sqrt(1-|v|^2): reciprocal of Lorenz factor (13-21) bias-precession-nutation matrix (22) longitude + s' (radians) (23) polar motion xp wrt local meridian (radians) (24) polar motion yp wrt local meridian (radians) (25) sine of geodetic latitude (26) cosine of geodetic latitude (27) magnitude of diurnal aberration vector (28) "local" Earth rotation angle (radians) (29) refraction constant A (radians) (30) refraction constant B (radians)

public subroutine APCO13(utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl, astrom, eo, j)

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.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: utc1

UTC as a 2-part...

real(kind=wp), intent(in) :: utc2
real(kind=wp), intent(in) :: dut1

UT1-UTC (seconds, Note 3)

real(kind=wp), intent(in) :: elong

longitude (radians, east +ve, Note 4)

real(kind=wp), intent(in) :: phi

latitude (geodetic, radians, Note 4)

real(kind=wp), intent(in) :: hm

height above ellipsoid (m, geodetic, Notes 4,6)

real(kind=wp), intent(in) :: xp

polar motion coordinate (radians, Note 5)

real(kind=wp), intent(in) :: yp

polar motion coordinate (radians, Note 5)

real(kind=wp), intent(in) :: phpa

pressure at the observer (hPa = mB, Note 6)

real(kind=wp), intent(in) :: tc

ambient temperature at the observer (deg C)

real(kind=wp), intent(in) :: rh

relative humidity at the observer (range 0-1)

real(kind=wp), intent(in) :: wl

wavelength (micrometers, Note 7)

real(kind=wp), intent(out), dimension(30):: astrom

star-independent astrometry parameters:

(1) PM time interval (SSB, Julian years) (2-4) SSB to observer (vector, au) (5-7) Sun to observer (unit vector) (8) distance from Sun to observer (au) (9-11) v: barycentric observer velocity (vector, c) (12) sqrt(1-|v|^2): reciprocal of Lorenz factor (13-21) bias-precession-nutation matrix (22) longitude + s' (radians) (23) polar motion xp wrt local meridian (radians) (24) polar motion yp wrt local meridian (radians) (25) sine of geodetic latitude (26) cosine of geodetic latitude (27) magnitude of diurnal aberration vector (28) "local" Earth rotation angle (radians) (29) refraction constant A (radians) (30) refraction constant B (radians)

real(kind=wp), intent(out) :: eo

equation of the origins (ERA-GST)

integer, intent(out) :: j

0 = OK -1 = unacceptable date

public subroutine APCS(date1, date2, pv, ebpv, ehp, astrom)

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.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TDB as a 2-part...

real(kind=wp), intent(in) :: date2
real(kind=wp), intent(in), dimension(3,2):: pv

observer's geocentric pos/vel (m, m/s)

real(kind=wp), intent(in), dimension(3,2):: ebpv

Earth barycentric position/velocity (au, au/day)

real(kind=wp), intent(in), dimension(3):: ehp

Earth heliocentric position (au)

real(kind=wp), intent(inout), dimension(30):: astrom

star-independent astrometry parameters:

(1) PM time interval (SSB, Julian years) (2-4) SSB to observer (vector, au) (5-7) Sun to observer (unit vector) (8) distance from Sun to observer (au) (9-11) v: barycentric observer velocity (vector, c) (12) sqrt(1-|v|^2): reciprocal of Lorenz factor (13-21) bias-precession-nutation matrix (22) unchanged (23) unchanged (24) unchanged (25) unchanged (26) unchanged (27) unchanged (28) unchanged (29) unchanged (30) unchanged

public subroutine APCS13(date1, date2, pv, astrom)

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.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TDB as a 2-part...

real(kind=wp), intent(in) :: date2
real(kind=wp), intent(in), dimension(3,2):: pv

observer's geocentric pos/vel (Note 3)

real(kind=wp), intent(inout), dimension(30):: astrom

star-independent astrometry parameters:

(1) PM time interval (SSB, Julian years) (2-4) SSB to observer (vector, au) (5-7) Sun to observer (unit vector) (8) distance from Sun to observer (au) (9-11) v: barycentric observer velocity (vector, c) (12) sqrt(1-|v|^2): reciprocal of Lorenz factor (13-21) bias-precession-nutation matrix (22) unchanged (23) unchanged (24) unchanged (25) unchanged (26) unchanged (27) unchanged (28) unchanged (29) unchanged (30) unchanged

public subroutine APER(theta, astrom)

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

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: theta

Earth rotation angle (radians, Note 2)

real(kind=wp), intent(inout), dimension(30):: astrom

star-independent astrometry parameters: * In: astrom(22): longitude + s' (radians) * Out: astrom(28): "local" Earth rotation angle (radians)

public subroutine APER13(ut11, ut12, astrom)

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

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: ut11

UT1 as a 2-part...

real(kind=wp), intent(in) :: ut12
real(kind=wp), intent(inout), dimension(30):: astrom

star-independent astrometry parameters: * In: astrom(22): longitude + s' (radians) * Out: astrom(28): "local" Earth rotation angle (radians)

public subroutine APIO(sp, theta, elong, phi, hm, xp, yp, refa, refb, astrom)

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.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: sp

the TIO locator s' (radians, Note 1)

real(kind=wp), intent(in) :: theta

Earth rotation angle (radians)

real(kind=wp), intent(in) :: elong

longitude (radians, east +ve, Note 2)

real(kind=wp), intent(in) :: phi

geodetic latitude (radians, Note 2)

real(kind=wp), intent(in) :: hm

height above ellipsoid (m, geodetic Note 2)

real(kind=wp), intent(in) :: xp

polar motion coordinate (radians, Note 3)

real(kind=wp), intent(in) :: yp

polar motion coordinate (radians, Note 3)

real(kind=wp), intent(in) :: refa

refraction constant A (radians, Note 4)

real(kind=wp), intent(in) :: refb

refraction constant B (radians, Note 4)

real(kind=wp), intent(inout), dimension(30):: astrom

star-independent astrometry parameters:

(1) unchanged (2-4) unchanged (5-7) unchanged (8) unchanged (9-11) unchanged (12) unchanged (13-21) unchanged (22) longitude + s' (radians) (23) polar motion xp wrt local meridian (radians) (24) polar motion yp wrt local meridian (radians) (25) sine of geodetic latitude (26) cosine of geodetic latitude (27) magnitude of diurnal aberration vector (28) "local" Earth rotation angle (radians) (29) refraction constant A (radians) (30) refraction constant B (radians)

public subroutine APIO13(utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl, astrom, j)

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.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: utc1

UTC as a 2-part...

real(kind=wp), intent(in) :: utc2
real(kind=wp), intent(in) :: dut1

UT1-UTC (seconds)

real(kind=wp), intent(in) :: elong

longitude (radians, east +ve, Note 3)

real(kind=wp), intent(in) :: phi

geodetic latitude (radians, Note 3)

real(kind=wp), intent(in) :: hm

height above ellipsoid (m, geodetic Notes 4,6)

real(kind=wp), intent(in) :: xp

polar motion x-coordinate (radians, Note 5)

real(kind=wp), intent(in) :: yp

polar motion x-coordinate (radians, Note 5)

real(kind=wp), intent(in) :: phpa

pressure at the observer (hPa = mB, Note 6)

real(kind=wp), intent(in) :: tc

ambient temperature at the observer (deg C)

real(kind=wp), intent(in) :: rh

relative humidity at the observer (range 0-1)

real(kind=wp), intent(in) :: wl

wavelength (micrometers, Note 7)

real(kind=wp), intent(inout), dimension(30):: astrom

star-independent astrometry parameters:

(1) unchanged (2-4) unchanged (5-7) unchanged (8) unchanged (9-11) unchanged (12) unchanged (13-21) unchanged (22) longitude + s' (radians) (23) polar motion xp wrt local meridian (radians) (24) polar motion yp wrt local meridian (radians) (25) sine of geodetic latitude (26) cosine of geodetic latitude (27) magnitude of diurnal aberration vector (28) "local" Earth rotation angle (radians) (29) refraction constant A (radians) (30) refraction constant B (radians)

integer, intent(out) :: jRead more…

public subroutine ATCI13(rc, dc, pr, pd, px, rv, date1, date2, ri, di, eo)

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

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: rc

ICRS right ascension at J2000.0 (radians, Note 1)

real(kind=wp), intent(in) :: dc

ICRS declination at J2000.0 (radians, Note 1)

real(kind=wp), intent(in) :: pr

RA proper motion (radians/year; Note 2)

real(kind=wp), intent(in) :: pd

Dec proper motion (radians/year)

real(kind=wp), intent(in) :: px

parallax (arcsec)

real(kind=wp), intent(in) :: rv

radial velocity (km/s, +ve if receding)

real(kind=wp), intent(in) :: date1

TDB as a 2-part...

real(kind=wp), intent(in) :: date2
real(kind=wp), intent(out) :: ri

CIRS geocentric RA (radians)

real(kind=wp), intent(out) :: di

CIRS geocentric Dec (radians)

real(kind=wp), intent(out) :: eo

equation of the origins (ERA-GST, Note 5)

public subroutine ATCIQ(rc, dc, pr, pd, px, rv, astrom, ri, di)

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

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: rc

ICRS RA at J2000.0 (radians)

real(kind=wp), intent(in) :: dc

ICRS Dec at J2000.0 (radians)

real(kind=wp), intent(in) :: pr

RA proper motion (radians/year; Note 3)

real(kind=wp), intent(in) :: pd

Dec proper motion (radians/year)

real(kind=wp), intent(in) :: px

parallax (arcsec)

real(kind=wp), intent(in) :: rv

radial velocity (km/s, +ve if receding)

real(kind=wp), intent(in), dimension(30):: astrom

star-independent astrometry parameters: (1) PM time interval (SSB, Julian years) (2-4) SSB to observer (vector, au) (5-7) Sun to observer (unit vector) (8) distance from Sun to observer (au) (9-11) v: barycentric observer velocity (vector, c) (12) sqrt(1-|v|^2): reciprocal of Lorenz factor (13-21) bias-precession-nutation matrix (22) longitude + s' (radians) (23) polar motion xp wrt local meridian (radians) (24) polar motion yp wrt local meridian (radians) (25) sine of geodetic latitude (26) cosine of geodetic latitude (27) magnitude of diurnal aberration vector (28) "local" Earth rotation angle (radians) (29) refraction constant A (radians) (30) refraction constant B (radians)

real(kind=wp), intent(out) :: ri

CIRS RA (radians)

real(kind=wp), intent(out) :: di

CIRS Dec (radians)

public subroutine ATCIQN(rc, dc, pr, pd, px, rv, astrom, n, b, ri, di)

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

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: rc

ICRS RA at J2000.0 (radians, Note 1)

real(kind=wp), intent(in) :: dc

ICRS Dec at J2000.0 (radians, Note 1)

real(kind=wp), intent(in) :: pr

RA proper motion (radians/year; Note 2)

real(kind=wp), intent(in) :: pd

Dec proper motion (radians/year)

real(kind=wp), intent(in) :: px

parallax (arcsec)

real(kind=wp), intent(in) :: rv

radial velocity (km/s, +ve if receding)

real(kind=wp), intent(in), dimension(30):: astrom

star-independent astrometry parameters: (1) PM time interval (SSB, Julian years) (2-4) SSB to observer (vector, au) (5-7) Sun to observer (unit vector) (8) distance from Sun to observer (au) (9-11) v: barycentric observer velocity (vector, c) (12) sqrt(1-|v|^2): reciprocal of Lorenz factor (13-21) bias-precession-nutation matrix (22) longitude + s' (radians) (23) polar motion xp wrt local meridian (radians) (24) polar motion yp wrt local meridian (radians) (25) sine of geodetic latitude (26) cosine of geodetic latitude (27) magnitude of diurnal aberration vector (28) "local" Earth rotation angle (radians) (29) refraction constant A (radians) (30) refraction constant B (radians)

integer, intent(in) :: n

number of bodies (Note 3)

real(kind=wp), intent(in), dimension(8,n):: b

data for each of the NB bodies (Notes 3,4): (1,I) mass of the body (solar masses, Note 5) (2,I) deflection limiter (Note 6) (3-5,I) barycentric position of the body (au) (6-8,I) barycentric velocity of the body (au/day)

real(kind=wp), intent(out) :: ri

CIRS RA (radians)

real(kind=wp), intent(out) :: di

CIRS Dec (radians)

public subroutine ATCIQZ(rc, dc, astrom, ri, di)

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

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: rc

ICRS astrometric RA (radians)

real(kind=wp), intent(in) :: dc

ICRS astrometric Dec (radians)

real(kind=wp), intent(in), dimension(30):: astrom

star-independent astrometry parameters: (1) PM time interval (SSB, Julian years) (2-4) SSB to observer (vector, au) (5-7) Sun to observer (unit vector) (8) distance from Sun to observer (au) (9-11) v: barycentric observer velocity (vector, c) (12) sqrt(1-|v|^2): reciprocal of Lorenz factor (13-21) bias-precession-nutation matrix (22) longitude + s' (radians) (23) polar motion xp wrt local meridian (radians) (24) polar motion yp wrt local meridian (radians) (25) sine of geodetic latitude (26) cosine of geodetic latitude (27) magnitude of diurnal aberration vector (28) "local" Earth rotation angle (radians) (29) refraction constant A (radians) (30) refraction constant B (radians)

real(kind=wp), intent(out) :: ri

CIRS RA (radians)

real(kind=wp), intent(out) :: di

CIRS Dec (radians)

public subroutine ATCO13(rc, dc, pr, pd, px, rv, utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl, aob, zob, hob, dob, rob, eo, j)

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

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: rc

ICRS right ascension at J2000.0 (radians, Note 1)

real(kind=wp), intent(in) :: dc

ICRS declination at J2000.0 (radians, Note 1)

real(kind=wp), intent(in) :: pr

RA proper motion (radians/year; Note 2)

real(kind=wp), intent(in) :: pd

Dec proper motion (radians/year)

real(kind=wp), intent(in) :: px

parallax (arcsec)

real(kind=wp), intent(in) :: rv

radial velocity (km/s, +ve if receding)

real(kind=wp), intent(in) :: utc1

UTC as a 2-part...

real(kind=wp), intent(in) :: utc2
real(kind=wp), intent(in) :: dut1

UT1-UTC (seconds, Note 5)

real(kind=wp), intent(in) :: elong

longitude (radians, east +ve, Note 6)

real(kind=wp), intent(in) :: phi

latitude (geodetic, radians, Note 6)

real(kind=wp), intent(in) :: hm

height above ellipsoid (m, geodetic, Notes 6,8)

real(kind=wp), intent(in) :: xp

polar motion coordinate (radians, Note 7)

real(kind=wp), intent(in) :: yp

polar motion coordinate (radians, Note 7)

real(kind=wp), intent(in) :: phpa

pressure at the observer (hPa = mB, Note 8)

real(kind=wp), intent(in) :: tc

ambient temperature at the observer (deg C)

real(kind=wp), intent(in) :: rh

relative humidity at the observer (range 0-1)

real(kind=wp), intent(in) :: wl

wavelength (micrometers, Note 9)

real(kind=wp), intent(out) :: aob

observed azimuth (radians: N=0,E=90)

real(kind=wp), intent(out) :: zob

observed zenith distance (radians)

real(kind=wp), intent(out) :: hob

observed hour angle (radians)

real(kind=wp), intent(out) :: dob

observed declination (radians)

real(kind=wp), intent(out) :: rob

observed right ascension (CIO-based, radians)

real(kind=wp), intent(out) :: eo

equation of the origins (ERA-GST)

integer, intent(out) :: jRead more…

public subroutine ATIC13(ri, di, date1, date2, rc, dc, eo)

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

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: ri

CIRS geocentric RA (radians)

real(kind=wp), intent(in) :: di

CIRS geocentric Dec (radians)

real(kind=wp), intent(in) :: date1

TDB as a 2-part...

real(kind=wp), intent(in) :: date2
real(kind=wp), intent(out) :: rc

ICRS astrometric RA (radians)

real(kind=wp), intent(out) :: dc

ICRS astrometric Dec (radians)

real(kind=wp), intent(out) :: eo

equation of the origins (ERA-GST, Note 4)

public subroutine ATICQ(ri, di, astrom, rc, dc)

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

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: ri

CIRS RA (radians)

real(kind=wp), intent(in) :: di

CIRS Dec (radians)

real(kind=wp), intent(in), dimension(30):: astrom

star-independent astrometry parameters: (1) PM time interval (SSB, Julian years) (2-4) SSB to observer (vector, au) (5-7) Sun to observer (unit vector) (8) distance from Sun to observer (au) (9-11) v: barycentric observer velocity (vector, c) (12) sqrt(1-|v|^2): reciprocal of Lorenz factor (13-21) bias-precession-nutation matrix (22) longitude + s' (radians) (23) polar motion xp wrt local meridian (radians) (24) polar motion yp wrt local meridian (radians) (25) sine of geodetic latitude (26) cosine of geodetic latitude (27) magnitude of diurnal aberration vector (28) "local" Earth rotation angle (radians) (29) refraction constant A (radians) (30) refraction constant B (radians)

real(kind=wp), intent(out) :: rc

ICRS astrometric RA (radians)

real(kind=wp), intent(out) :: dc

ICRS astrometric Dec (radians)

public subroutine ATICQN(ri, di, astrom, n, b, rc, dc)

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

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: ri

CIRS RA (radians)

real(kind=wp), intent(in) :: di

CIRS Dec (radians)

real(kind=wp), intent(in), dimension(30):: astrom

star-independent astrometry parameters: (1) PM time interval (SSB, Julian years) (2-4) SSB to observer (vector, au) (5-7) Sun to observer (unit vector) (8) distance from Sun to observer (au) (9-11) v: barycentric observer velocity (vector, c) (12) sqrt(1-|v|^2): reciprocal of Lorenz factor (13-21) bias-precession-nutation matrix (22) longitude + s' (radians) (23) polar motion xp wrt local meridian (radians) (24) polar motion yp wrt local meridian (radians) (25) sine of geodetic latitude (26) cosine of geodetic latitude (27) magnitude of diurnal aberration vector (28) "local" Earth rotation angle (radians) (29) refraction constant A (radians) (30) refraction constant B (radians)

integer, intent(in) :: n

number of bodies (Note 3)

real(kind=wp), intent(in), dimension(8,n):: b

data for each of the NB bodies (Notes 3,4): (1,I) mass of the body (solar masses, Note 5) (2,I) deflection limiter (Note 6) (3-5,I) barycentric position of the body (au) (6-8,I) barycentric velocity of the body (au/day)

real(kind=wp), intent(out) :: rc

ICRS astrometric RA (radians)

real(kind=wp), intent(out) :: dc

ICRS astrometric Dec (radians)

public subroutine ATIO13(ri, di, utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl, aob, zob, hob, dob, rob, j)

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

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: ri

CIRS right ascension (CIO-based, radians)

real(kind=wp), intent(in) :: di

CIRS declination (radians)

real(kind=wp), intent(in) :: utc1

UTC as a 2-part...

real(kind=wp), intent(in) :: utc2
real(kind=wp), intent(in) :: dut1

UT1-UTC (seconds, Note 3)

real(kind=wp), intent(in) :: elong

longitude (radians, east +ve, Note 4)

real(kind=wp), intent(in) :: phi

geodetic latitude (radians, Note 4)

real(kind=wp), intent(in) :: hm

height above ellipsoid (m, geodetic Notes 4,6)

real(kind=wp), intent(in) :: xp

polar motion coordinates (radians, Note 5)

real(kind=wp), intent(in) :: yp

polar motion coordinates (radians, Note 5)

real(kind=wp), intent(in) :: phpa

pressure at the observer (hPa = mB, Note 6)

real(kind=wp), intent(in) :: tc

ambient temperature at the observer (deg C)

real(kind=wp), intent(in) :: rh

relative humidity at the observer (range 0-1)

real(kind=wp), intent(in) :: wl

wavelength (micrometers, Note 7)

real(kind=wp), intent(out) :: aob

observed azimuth (radians: N=0,E=90)

real(kind=wp), intent(out) :: zob

observed zenith distance (radians)

real(kind=wp), intent(out) :: hob

observed hour angle (radians)

real(kind=wp), intent(out) :: dob

observed declination (radians)

real(kind=wp), intent(out) :: rob

observed right ascension (CIO-based, radians)

integer, intent(out) :: j

0 = OK -1 = unacceptable date

public subroutine ATIOQ(ri, di, astrom, aob, zob, hob, dob, rob)

Quick CIRS to observed place transformation.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: ri

CIRS right ascension

real(kind=wp), intent(in) :: di

CIRS declination

real(kind=wp), intent(in), dimension(30):: astrom

star-independent astrometry parameters: (1) PM time interval (SSB, Julian years) (2-4) SSB to observer (vector, au) (5-7) Sun to observer (unit vector) (8) distance from Sun to observer (au) (9-11) v: barycentric observer velocity (vector, c) (12) sqrt(1-|v|^2): reciprocal of Lorenz factor (13-21) bias-precession-nutation matrix (22) longitude + s' (radians) (23) polar motion xp wrt local meridian (radians) (24) polar motion yp wrt local meridian (radians) (25) sine of geodetic latitude (26) cosine of geodetic latitude (27) magnitude of diurnal aberration vector (28) "local" Earth rotation angle (radians) (29) refraction constant A (radians) (30) refraction constant B (radians)

real(kind=wp), intent(out) :: aob

observed azimuth (radians: N=0,E=90)

real(kind=wp), intent(out) :: zob

observed zenith distance (radians)

real(kind=wp), intent(out) :: hob

observed hour angle (radians)

real(kind=wp), intent(out) :: dob

observed declination (CIO-based, radians)

real(kind=wp), intent(out) :: rob

observed right ascension (CIO-based, radians)

public subroutine ATOC13(type, ob1, ob2, utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl, rc, dc, j)

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

Read more…

Arguments

TypeIntentOptionalAttributesName
character(len=*), intent(in) :: type

type of coordinates - 'R', 'H' or 'A' (Notes 1,2)

real(kind=wp), intent(in) :: ob1

observed Az, HA or RA (radians; Az is N=0,E=90)

real(kind=wp), intent(in) :: ob2

observed ZD or Dec (radians)

real(kind=wp), intent(in) :: utc1

UTC as a 2-part...

real(kind=wp), intent(in) :: utc2
real(kind=wp), intent(in) :: dut1

UT1-UTC (seconds, Note 5)

real(kind=wp), intent(in) :: elong

longitude (radians, east +ve, Note 6)

real(kind=wp), intent(in) :: phi

geodetic latitude (radians, Note 6)

real(kind=wp), intent(in) :: hm

height above ellipsoid (m, geodetic Notes 6,8)

real(kind=wp), intent(in) :: xp

polar motion coordinates (radians, Note 7)

real(kind=wp), intent(in) :: yp

polar motion coordinates (radians, Note 7)

real(kind=wp), intent(in) :: phpa

pressure at the observer (hPa = mB, Note 8)

real(kind=wp), intent(in) :: tc

ambient temperature at the observer (deg C)

real(kind=wp), intent(in) :: rh

relative humidity at the observer (range 0-1)

real(kind=wp), intent(in) :: wl

wavelength (micrometers, Note 9)

real(kind=wp), intent(out) :: rc

ICRS astrometric RA (radians)

real(kind=wp), intent(out) :: dc

ICRS astrometric Dec (radians)

integer, intent(out) :: j

0 = OK -1 = unacceptable date

public subroutine ATOI13(type, ob1, ob2, utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl, ri, di, j)

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

Read more…

Arguments

TypeIntentOptionalAttributesName
character(len=*), intent(in) :: type

type of coordinates - 'R', 'H' or 'A' (Notes 1,2)

real(kind=wp), intent(in) :: ob1

observed Az, HA or RA (radians; Az is N=0,E=90)

real(kind=wp), intent(in) :: ob2

observed ZD or Dec (radians)

real(kind=wp), intent(in) :: utc1

UTC as a 2-part...

real(kind=wp), intent(in) :: utc2
real(kind=wp), intent(in) :: dut1

UT1-UTC (seconds, Note 5)

real(kind=wp), intent(in) :: elong

longitude (radians, east +ve, Note 6)

real(kind=wp), intent(in) :: phi

geodetic latitude (radians, Note 6)

real(kind=wp), intent(in) :: hm

height above the ellipsoid (meters, Notes 6,8)

real(kind=wp), intent(in) :: xp

polar motion coordinates (radians, Note 7)

real(kind=wp), intent(in) :: yp

polar motion coordinates (radians, Note 7)

real(kind=wp), intent(in) :: phpa

pressure at the observer (hPa = mB, Note 8)

real(kind=wp), intent(in) :: tc

ambient temperature at the observer (deg C)

real(kind=wp), intent(in) :: rh

relative humidity at the observer (range 0-1)

real(kind=wp), intent(in) :: wl

wavelength (micrometers, Note 9)

real(kind=wp), intent(out) :: ri

CIRS right ascension (CIO-based, radians)

real(kind=wp), intent(out) :: di

CIRS declination (radians)

integer, intent(out) :: j

0 = OK -1 = unacceptable date

public subroutine ATOIQ(type, ob1, ob2, astrom, ri, di)

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

Read more…

Arguments

TypeIntentOptionalAttributesName
character(len=*), intent(in) :: type

type of coordinates: 'R', 'H' or 'A' (Note 2)

real(kind=wp), intent(in) :: ob1

observed Az, HA or RA (radians; Az is N=0,E=90)

real(kind=wp), intent(in) :: ob2

observed ZD or Dec (radians)

real(kind=wp), intent(in), dimension(30):: astrom

star-independent astrometry parameters: (1) PM time interval (SSB, Julian years) (2-4) SSB to observer (vector, au) (5-7) Sun to observer (unit vector) (8) distance from Sun to observer (au) (9-11) v: barycentric observer velocity (vector, c) (12) sqrt(1-|v|^2): reciprocal of Lorenz factor (13-21) bias-precession-nutation matrix (22) longitude + s' (radians) (23) polar motion xp wrt local meridian (radians) (24) polar motion yp wrt local meridian (radians) (25) sine of geodetic latitude (26) cosine of geodetic latitude (27) magnitude of diurnal aberration vector (28) "local" Earth rotation angle (radians) (29) refraction constant A (radians) (30) refraction constant B (radians)

real(kind=wp), intent(out) :: ri

CIRS right ascension (CIO-based, radians)

real(kind=wp), intent(out) :: di

CIRS declination (radians)

public subroutine BI00(dpsibi, depsbi, dra)

Frame bias components of IAU 2000 precession-nutation models (part of MHB2000 with additions).

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(out) :: dpsibi

longitude correction

real(kind=wp), intent(out) :: depsbi

obliquity correction

real(kind=wp), intent(out) :: dra

the ICRS RA of the J2000.0 mean equinox

public subroutine BP00(date1, date2, rb, rp, rbp)

Frame bias and precession, IAU 2000.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(out), dimension(3,3):: rb

frame bias matrix (Note 2)

real(kind=wp), intent(out), dimension(3,3):: rp

precession matrix (Note 3)

real(kind=wp), intent(out), dimension(3,3):: rbp

bias-precession matrix (Note 4)

public subroutine BP06(date1, date2, rb, rp, rbp)

Frame bias and precession, IAU 2006.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(out), dimension(3,3):: rb

frame bias matrix (Note 2)

real(kind=wp), intent(out), dimension(3,3):: rp

precession matrix (Note 3)

real(kind=wp), intent(out), dimension(3,3):: rbp

bias-precession matrix (Note 4)

public subroutine BPN2XY(rbpn, x, y)

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

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in), dimension(3,3):: rbpn

celestial-to-true matrix (Note 1)

real(kind=wp), intent(out) :: x

Celestial Intermediate Pole (Note 2)

real(kind=wp), intent(out) :: y

Celestial Intermediate Pole (Note 2)

public subroutine C2I00A(date1, date2, rc2i)

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

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(out), dimension(3,3):: rc2i

celestial-to-intermediate matrix (Note 2)

public subroutine C2I00B(date1, date2, rc2i)

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

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(out), dimension(3,3):: rc2i

celestial-to-intermediate matrix (Note 2)

public subroutine C2I06A(date1, date2, rc2i)

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

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(out), dimension(3,3):: rc2i

celestial-to-intermediate matrix (Note 2)

public subroutine C2IBPN(date1, date2, rbpn, rc2i)

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

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in), dimension(3,3):: rbpn

celestial-to-true matrix (Note 2)

real(kind=wp), intent(out), dimension(3,3):: rc2i

celestial-to-intermediate matrix (Note 3)

public subroutine C2IXY(date1, date2, x, y, rc2i)

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

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: x

Celestial Intermediate Pole (Note 2)

real(kind=wp), intent(in) :: y

Celestial Intermediate Pole (Note 2)

real(kind=wp), intent(out), dimension(3,3):: rc2i

celestial-to-intermediate matrix (Note 3)

public subroutine C2IXYS(x, y, s, rc2i)

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

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: x

Celestial Intermediate Pole (Note 1)

real(kind=wp), intent(in) :: y

Celestial Intermediate Pole (Note 1)

real(kind=wp), intent(in) :: s

the CIO locator s (Note 2)

real(kind=wp), intent(out), dimension(3,3):: rc2i

celestial-to-intermediate matrix (Note 3)

public subroutine C2S(p, theta, phi)

P-vector to spherical coordinates.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in), dimension(3):: p

p-vector

real(kind=wp), intent(out) :: theta

longitude angle (radians)

real(kind=wp), intent(out) :: phi

latitude angle (radians)

public subroutine C2T00A(tta, ttb, uta, utb, xp, yp, rc2t)

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

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: tta

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: ttb

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: uta

UT1 as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: utb

UT1 as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: xp

coordinates of the pole (radians, Note 2)

real(kind=wp), intent(in) :: yp

coordinates of the pole (radians, Note 2)

real(kind=wp), intent(out), dimension(3,3):: rc2t

celestial-to-terrestrial matrix (Note 3)

public subroutine C2T00B(tta, ttb, uta, utb, xp, yp, rc2t)

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

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: tta

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: ttb

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: uta

UT1 as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: utb

UT1 as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: xp

coordinates of the pole (radians, Note 2)

real(kind=wp), intent(in) :: yp

coordinates of the pole (radians, Note 2)

real(kind=wp), intent(out), dimension(3,3):: rc2t

celestial-to-terrestrial matrix (Note 3)

public subroutine C2T06A(tta, ttb, uta, utb, xp, yp, rc2t)

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.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: tta

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: ttb

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: uta

UT1 as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: utb

UT1 as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: xp

coordinates of the pole (radians, Note 2)

real(kind=wp), intent(in) :: yp

coordinates of the pole (radians, Note 2)

real(kind=wp), intent(out), dimension(3,3):: rc2t

celestial-to-terrestrial matrix (Note 3)

public subroutine C2TCEO(rc2i, era, rpom, rc2t)

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

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in), dimension(3,3):: rc2i

celestial-to-intermediate matrix

real(kind=wp), intent(in) :: era

Earth rotation angle

real(kind=wp), intent(in), dimension(3,3):: rpom

polar-motion matrix

real(kind=wp), intent(out), dimension(3,3):: rc2t

celestial-to-terrestrial matrix

public subroutine C2TCIO(rc2i, era, rpom, rc2t)

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

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in), dimension(3,3):: rc2i

celestial-to-intermediate matrix

real(kind=wp), intent(in) :: era

Earth rotation angle (radians)

real(kind=wp), intent(in), dimension(3,3):: rpom

polar-motion matrix

real(kind=wp), intent(out), dimension(3,3):: rc2t

celestial-to-terrestrial matrix

public subroutine C2TEQX(rbpn, gst, rpom, rc2t)

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).

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in), dimension(3,3):: rbpn

celestial-to-true matrix

real(kind=wp), intent(in) :: gst

Greenwich (apparent) Sidereal Time (radians)

real(kind=wp), intent(in), dimension(3,3):: rpom

polar-motion matrix

real(kind=wp), intent(out), dimension(3,3):: rc2t

celestial-to-terrestrial matrix (Note 2)

public subroutine C2TPE(tta, ttb, uta, utb, dpsi, deps, xp, yp, rc2t)

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

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: tta

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: ttb

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: uta

UT1 as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: utb

UT1 as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: dpsi

nutation (Note 2)

real(kind=wp), intent(in) :: deps

nutation (Note 2)

real(kind=wp), intent(in) :: xp

coordinates of the pole (radians, Note 3)

real(kind=wp), intent(in) :: yp

coordinates of the pole (radians, Note 3)

real(kind=wp), intent(out), dimension(3,3):: rc2t

celestial-to-terrestrial matrix (Note 4)

public subroutine C2TXY(tta, ttb, uta, utb, x, y, xp, yp, rc2t)

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

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: tta

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: ttb

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: uta

UT1 as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: utb

UT1 as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: x

Celestial Intermediate Pole (Note 2)

real(kind=wp), intent(in) :: y

Celestial Intermediate Pole (Note 2)

real(kind=wp), intent(in) :: xp

coordinates of the pole (radians, Note 3)

real(kind=wp), intent(in) :: yp

coordinates of the pole (radians, Note 3)

real(kind=wp), intent(out), dimension(3,3):: rc2t

celestial-to-terrestrial matrix (Note 4)

public subroutine CAL2JD(iy, im, id, djm0, djm, j)

Gregorian Calendar to Julian Date.

Read more…

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: iy

year in Gregorian calendar (Note 1)

integer, intent(in) :: im

month in Gregorian calendar (Note 1)

integer, intent(in) :: id

day in Gregorian calendar (Note 1)

real(kind=wp), intent(out) :: djm0

MJD zero-point: always 2400000.5

real(kind=wp), intent(out) :: djm

Modified Julian Date for 0 hrs

integer, intent(out) :: jRead more…

public subroutine CP(p, c)

Copy a p-vector.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in), dimension(3):: p

p-vector to be copied

real(kind=wp), intent(out), dimension(3):: c

copy

public subroutine CPV(pv, c)

Copy a position/velocity vector.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in), dimension(3,2):: pv

position/velocity vector to be copied

real(kind=wp), intent(out), dimension(3,2):: c

copy

public subroutine CR(r, c)

Copy an r-matrix.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in), dimension(3,3):: r

r-matrix to be copied

real(kind=wp), intent(out), dimension(3,3):: c

copy

public subroutine D2DTF(scale, ndp, d1, d2, iy, im, id, ihmsf, j)

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).

Read more…

Arguments

TypeIntentOptionalAttributesName
character(len=*), intent(in) :: scale

time scale ID (Note 1)

integer, intent(in) :: ndp

resolution (Note 2)

real(kind=wp), intent(in) :: d1

time as a 2-part Julian Date (Notes 3,4)

real(kind=wp), intent(in) :: d2

time as a 2-part Julian Date (Notes 3,4)

integer, intent(out) :: iy

year in Gregorian calendar (Note 5)

integer, intent(out) :: im

month in Gregorian calendar (Note 5)

integer, intent(out) :: id

day in Gregorian calendar (Note 5)

integer, intent(out), dimension(4):: ihmsf

hours, minutes, seconds, fraction (Note 1)

integer, intent(out) :: jRead more…

public subroutine D2TF(ndp, days, sign, ihmsf)

Decompose days to hours, minutes, seconds, fraction.

Read more…

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: ndp

resolution (Note 1)

real(kind=wp), intent(in) :: days

interval in days

character(len=*), intent(out) :: sign

'+' or '-'

integer, intent(out), dimension(4):: ihmsf

hours, minutes, seconds, fraction

public subroutine DAT(iy, im, id, fd, deltat, j)

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

Read more…

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: iy

UTC: year (Notes 1 and 2)

integer, intent(in) :: im

UTC: month (Note 2)

integer, intent(in) :: id

UTC: day (Notes 2 and 3)

real(kind=wp), intent(in) :: fd

UTC: fraction of day (Note 4)

real(kind=wp), intent(out) :: deltat

TAI minus UTC, seconds

integer, intent(out) :: j

status (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)

public subroutine DTF2D(scale, iy, im, id, ihr, imn, sec, d1, d2, j)

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).

Read more…

Arguments

TypeIntentOptionalAttributesName
character(len=*), intent(in) :: scale

time scale ID (Note 1)

integer, intent(in) :: iy

year in Gregorian calendar (Note 2)

integer, intent(in) :: im

month in Gregorian calendar (Note 2)

integer, intent(in) :: id

day in Gregorian calendar (Note 2)

integer, intent(in) :: ihr

hour

integer, intent(in) :: imn

minute

real(kind=wp), intent(in) :: sec

seconds

real(kind=wp), intent(out) :: d1

2-part Julian Date (Notes 3,4)

real(kind=wp), intent(out) :: d2

2-part Julian Date (Notes 3,4)

integer, intent(out) :: jRead more…

public subroutine ECEQ06(date1, date2, dl, db, dr, dd)

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

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: dl

ecliptic longitude and latitude (radians)

real(kind=wp), intent(in) :: db

ecliptic longitude and latitude (radians)

real(kind=wp), intent(out) :: dr

ICRS right ascension and declination (radians)

real(kind=wp), intent(out) :: dd

ICRS right ascension and declination (radians)

public subroutine ECM06(date1, date2, rm)

ICRS equatorial to ecliptic rotation matrix, IAU 2006.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(out), dimension(3,3):: rm

ICRS to ecliptic rotation matrix

public subroutine EFORM(n, a, f, j)

Earth reference ellipsoids.

Read more…

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: n

ellipsoid identifier (Note 1)

real(kind=wp), intent(out) :: a

equatorial radius (meters, Note 2)

real(kind=wp), intent(out) :: f

flattening (Note 2)

integer, intent(out) :: jRead more…

public subroutine EPB2JD(epb, djm0, djm)

Besselian Epoch to Julian Date.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: epb

Besselian Epoch (e.g. 1957.3D0)

real(kind=wp), intent(out) :: djm0

MJD zero-point: always 2400000.5

real(kind=wp), intent(out) :: djm

Modified Julian Date

public subroutine EPJ2JD(epj, djm0, djm)

Julian Epoch to Julian Date.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: epj

Julian Epoch (e.g. 1996.8)

real(kind=wp), intent(out) :: djm0

MJD zero-point: always 2400000.5

real(kind=wp), intent(out) :: djm

Modified Julian Date

public subroutine EPV00(date1, date2, pvh, pvb, jstat)

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

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TDB date part A (Note 1)

real(kind=wp), intent(in) :: date2

TDB date part B (Note 1)

real(kind=wp), intent(out), dimension(3,2):: pvh

heliocentric Earth position/velocity (au,au/day)

real(kind=wp), intent(out), dimension(3,2):: pvb

barycentric Earth position/velocity (au,au/day)

integer, intent(out) :: jstatRead more…

public subroutine EQEC06(date1, date2, dr, dd, dl, db)

Transformation from ICRS equatorial coordinates to ecliptic coordinates (mean equinox and ecliptic of date) using IAU 2006 precession model.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: dr

ICRS right ascension (radians)

real(kind=wp), intent(in) :: dd

ICRS declination (radians)

real(kind=wp), intent(out) :: dl

ecliptic longitude (radians)

real(kind=wp), intent(out) :: db

ecliptic latitude (radians)

public subroutine FK425(r1950, d1950, dr1950, dd1950, p1950, v1950, r2000, d2000, dr2000, dd2000, p2000, v2000)

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

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: r1950

B1950.0 RA (rad)

real(kind=wp), intent(in) :: d1950

B1950.0 Dec (rad)

real(kind=wp), intent(in) :: dr1950

B1950.0 proper motions (rad/trop.yr)

real(kind=wp), intent(in) :: dd1950

B1950.0 proper motions (rad/trop.yr)

real(kind=wp), intent(in) :: p1950

parallax (arcsec)

real(kind=wp), intent(in) :: v1950

radial velocity (km/s, +ve = moving away)

real(kind=wp), intent(out) :: r2000

J2000.0 RA (rad)

real(kind=wp), intent(out) :: d2000

J2000.0 Dec (rad)

real(kind=wp), intent(out) :: dr2000

J2000.0 proper motions (rad/Jul.yr)

real(kind=wp), intent(out) :: dd2000

J2000.0 proper motions (rad/Jul.yr)

real(kind=wp), intent(out) :: p2000

parallax (arcsec)

real(kind=wp), intent(out) :: v2000

radial velocity (km/s, +ve = moving away)

public subroutine FK45Z(r1950, d1950, bepoch, r2000, d2000)

Convert a B1950.0 FK4 star position to J2000.0 FK5, assuming zero proper motion in the FK5 system.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: r1950

B1950.0 FK4 RA at epoch (rad)

real(kind=wp), intent(in) :: d1950

B1950.0 FK4 Dec at epoch (rad)

real(kind=wp), intent(in) :: bepoch

Besselian epoch (e.g. 1979.3D0)

real(kind=wp), intent(out) :: r2000

J2000.0 FK5 RA (rad)

real(kind=wp), intent(out) :: d2000

J2000.0 FK5 Dec (rad)

public subroutine FK524(r2000, d2000, dr2000, dd2000, p2000, v2000, r1950, d1950, dr1950, dd1950, p1950, v1950)

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

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: r2000

J2000.0 RA (rad)

real(kind=wp), intent(in) :: d2000

J2000.0 Dec (rad)

real(kind=wp), intent(in) :: dr2000

J2000.0 proper motions (rad/Jul.yr)

real(kind=wp), intent(in) :: dd2000

J2000.0 proper motions (rad/Jul.yr)

real(kind=wp), intent(in) :: p2000

parallax (arcsec)

real(kind=wp), intent(in) :: v2000

radial velocity (km/s, +ve = moving away)

real(kind=wp), intent(out) :: r1950

B1950.0 RA (rad)

real(kind=wp), intent(out) :: d1950

B1950.0 Dec (rad)

real(kind=wp), intent(out) :: dr1950

B1950.0 proper motions (rad/trop.yr)

real(kind=wp), intent(out) :: dd1950

B1950.0 proper motions (rad/trop.yr)

real(kind=wp), intent(out) :: p1950

parallax (arcsec)

real(kind=wp), intent(out) :: v1950

radial velocity (km/s, +ve = moving away)

public subroutine FK52H(r5, d5, dr5, dd5, px5, rv5, rh, dh, drh, ddh, pxh, rvh)

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

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: r5

RA (radians)

real(kind=wp), intent(in) :: d5

Dec (radians)

real(kind=wp), intent(in) :: dr5

proper motion in RA (dRA/dt, rad/Jyear)

real(kind=wp), intent(in) :: dd5

proper motion in Dec (dDec/dt, rad/Jyear)

real(kind=wp), intent(in) :: px5

parallax (arcsec)

real(kind=wp), intent(in) :: rv5

radial velocity (km/s, positive = receding)

real(kind=wp), intent(out) :: rh

RA (radians)

real(kind=wp), intent(out) :: dh

Dec (radians)

real(kind=wp), intent(out) :: drh

proper motion in RA (dRA/dt, rad/Jyear)

real(kind=wp), intent(out) :: ddh

proper motion in Dec (dDec/dt, rad/Jyear)

real(kind=wp), intent(out) :: pxh

parallax (arcsec)

real(kind=wp), intent(out) :: rvh

radial velocity (km/s, positive = receding)

public subroutine FK54Z(r2000, d2000, bepoch, r1950, d1950, dr1950, dd1950)

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

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: r2000

J2000.0 FK5 RA (rad)

real(kind=wp), intent(in) :: d2000

J2000.0 FK5 Dec (rad)

real(kind=wp), intent(in) :: bepoch

Besselian epoch (e.g. 1950D0)

real(kind=wp), intent(out) :: r1950

B1950.0 FK4 RA (rad) at epoch BEPOCH

real(kind=wp), intent(out) :: d1950

B1950.0 FK4 Dec (rad) at epoch BEPOCH

real(kind=wp), intent(out) :: dr1950

B1950.0 FK4 proper motions (rad/trop.yr)

real(kind=wp), intent(out) :: dd1950

B1950.0 FK4 proper motions (rad/trop.yr)

public subroutine FK5HIP(r5h, s5h)

FK5 to Hipparcos rotation and spin.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(out), dimension(3,3):: r5h

r-matrix: FK5 rotation wrt Hipparcos (Note 2)

real(kind=wp), intent(out), dimension(3):: s5h

public subroutine FK5HZ(r5, d5, date1, date2, rh, dh)

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

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: r5

FK5 RA (radians), equinox J2000.0, at date

real(kind=wp), intent(in) :: d5

FK5 Dec (radians), equinox J2000.0, at date

real(kind=wp), intent(in) :: date1

TDB date (Notes 1,2)

real(kind=wp), intent(in) :: date2

TDB date (Notes 1,2)

real(kind=wp), intent(out) :: rh

Hipparcos RA (radians)

real(kind=wp), intent(out) :: dh

Hipparcos Dec (radians)

public subroutine FW2M(gamb, phib, psi, eps, r)

Form rotation matrix given the Fukushima-Williams angles.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: gamb

F-W angle gamma_bar (radians)

real(kind=wp), intent(in) :: phib

F-W angle phi_bar (radians)

real(kind=wp), intent(in) :: psi

F-W angle psi (radians)

real(kind=wp), intent(in) :: eps

F-W angle epsilon (radians)

real(kind=wp), intent(out), dimension(3,3):: r

rotation matrix

public subroutine FW2XY(gamb, phib, psi, eps, x, y)

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

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: gamb

F-W angle gamma_bar (radians)

real(kind=wp), intent(in) :: phib

F-W angle phi_bar (radians)

real(kind=wp), intent(in) :: psi

F-W angle psi (radians)

real(kind=wp), intent(in) :: eps

F-W angle epsilon (radians)

real(kind=wp), intent(out) :: x

CIP unit vector X,Y

real(kind=wp), intent(out) :: y

CIP unit vector X,Y

public subroutine G2ICRS(dl, db, dr, dd)

Transformation from Galactic Coordinates to ICRS.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: dl

galactic longitude (radians)

real(kind=wp), intent(in) :: db

galactic latitude (radians)

real(kind=wp), intent(out) :: dr

ICRS right ascension (radians)

real(kind=wp), intent(out) :: dd

ICRS declination (radians)

public subroutine GC2GD(n, xyz, elong, phi, height, j)

Transform geocentric coordinates to geodetic using the specified reference ellipsoid.

Read more…

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: n

ellipsoid identifier (Note 1)

real(kind=wp), intent(in), dimension(3):: xyz

geocentric vector (Note 2)

real(kind=wp), intent(out) :: elong

longitude (radians, east +ve, Note 3)

real(kind=wp), intent(out) :: phi

latitude (geodetic, radians, Note 3)

real(kind=wp), intent(out) :: height

height above ellipsoid (geodetic, Notes 2,3)

integer, intent(out) :: jRead more…

public subroutine GC2GDE(a, f, xyz, elong, phi, height, j)

Transform geocentric coordinates to geodetic for a reference ellipsoid of specified form.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: a

equatorial radius (Notes 2,4)

real(kind=wp), intent(in) :: f

flattening (Note 3)

real(kind=wp), intent(in), dimension(3):: xyz

geocentric vector (Note 4)

real(kind=wp), intent(out) :: elong

longitude (radians, east +ve)

real(kind=wp), intent(out) :: phi

latitude (geodetic, radians)

real(kind=wp), intent(out) :: height

height above ellipsoid (geodetic, Note 4)

integer, intent(out) :: jRead more…

public subroutine GD2GC(n, elong, phi, height, xyz, j)

Transform geodetic coordinates to geocentric using the specified reference ellipsoid.

Read more…

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: n

ellipsoid identifier (Note 1)

real(kind=wp), intent(in) :: elong

longitude (radians, east +ve)

real(kind=wp), intent(in) :: phi

latitude (geodetic, radians, Note 3)

real(kind=wp), intent(in) :: height

height above ellipsoid (geodetic, Notes 2,3)

real(kind=wp), intent(out), dimension(3):: xyz

geocentric vector (Note 2)

integer, intent(out) :: jRead more…

public subroutine GD2GCE(a, f, elong, phi, height, xyz, j)

Transform geodetic coordinates to geocentric for a reference ellipsoid of specified form.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: a

equatorial radius (Notes 1,4)

real(kind=wp), intent(in) :: f

flattening (Notes 2,4)

real(kind=wp), intent(in) :: elong

longitude (radians, east +ve)

real(kind=wp), intent(in) :: phi

latitude (geodetic, radians, Note 4)

real(kind=wp), intent(in) :: height

height above ellipsoid (geodetic, Notes 3,4)

real(kind=wp), intent(out), dimension(3):: xyz

geocentric vector (Note 3)

integer, intent(out) :: jRead more…

public subroutine H2FK5(rh, dh, drh, ddh, pxh, rvh, r5, d5, dr5, dd5, px5, rv5)

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

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: rh

RA (radians) [Hipparcos, epoch J2000.0]

real(kind=wp), intent(in) :: dh

Dec (radians) [Hipparcos, epoch J2000.0]

real(kind=wp), intent(in) :: drh

proper motion in RA (dRA/dt, rad/Jyear) [Hipparcos, epoch J2000.0]

real(kind=wp), intent(in) :: ddh

proper motion in Dec (dDec/dt, rad/Jyear) [Hipparcos, epoch J2000.0]

real(kind=wp), intent(in) :: pxh

parallax (arcsec) [Hipparcos, epoch J2000.0]

real(kind=wp), intent(in) :: rvh

radial velocity (km/s, positive = receding) [Hipparcos, epoch J2000.0]

real(kind=wp), intent(out) :: r5

RA (radians) [FK5, equinox J2000.0, epoch J2000.0]

real(kind=wp), intent(out) :: d5

Dec (radians) [FK5, equinox J2000.0, epoch J2000.0]

real(kind=wp), intent(out) :: dr5

proper motion in RA (dRA/dt, rad/Jyear) [FK5, equinox J2000.0, epoch J2000.0]

real(kind=wp), intent(out) :: dd5

proper motion in Dec (dDec/dt, rad/Jyear) [FK5, equinox J2000.0, epoch J2000.0]

real(kind=wp), intent(out) :: px5

parallax (arcsec) [FK5, equinox J2000.0, epoch J2000.0]

real(kind=wp), intent(out) :: rv5

radial velocity (km/s, positive = receding) [FK5, equinox J2000.0, epoch J2000.0]

public subroutine HD2AE(ha, dec, phi, az, el)

Equatorial to horizon coordinates: transform hour angle and declination to azimuth and altitude.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: ha

hour angle (local)

real(kind=wp), intent(in) :: dec

declination

real(kind=wp), intent(in) :: phi

site latitude

real(kind=wp), intent(out) :: az

azimuth

real(kind=wp), intent(out) :: el

altitude (informally, elevation)

public subroutine HFK5Z(rh, dh, date1, date2, r5, d5, dr5, dd5)

Transform a Hipparcos star position into FK5 J2000.0, assuming zero Hipparcos proper motion.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: rh

Hipparcos RA (radians)

real(kind=wp), intent(in) :: dh

Hipparcos Dec (radians)

real(kind=wp), intent(in) :: date1

TDB date (Note 1)

real(kind=wp), intent(in) :: date2

TDB date (Note 1)

real(kind=wp), intent(out) :: r5

RA (radians) [FK5, equinox J2000.0, date DATE1+DATE2]

real(kind=wp), intent(out) :: d5

Dec (radians) [FK5, equinox J2000.0, date DATE1+DATE2]

real(kind=wp), intent(out) :: dr5

FK5 RA proper motion (rad/year, Note 4) [FK5, equinox J2000.0, date DATE1+DATE2]

real(kind=wp), intent(out) :: dd5

Dec proper motion (rad/year, Note 4) [FK5, equinox J2000.0, date DATE1+DATE2]

public subroutine ICRS2G(dr, dd, dl, db)

Transformation from ICRS to Galactic Coordinates.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: dr

ICRS right ascension (radians)

real(kind=wp), intent(in) :: dd

ICRS declination (radians)

real(kind=wp), intent(out) :: dl

galactic longitude (radians)

real(kind=wp), intent(out) :: db

galactic latitude (radians)

public subroutine IR(r)

Initialize an r-matrix to the identity matrix.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(out), dimension(3,3):: r

r-matrix

public subroutine JD2CAL(dj1, dj2, iy, im, id, fd, j)

Julian Date to Gregorian year, month, day, and fraction of a day.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: dj1

Julian Date (Notes 1, 2)

real(kind=wp), intent(in) :: dj2

Julian Date (Notes 1, 2)

integer, intent(out) :: iy

year

integer, intent(out) :: im

month

integer, intent(out) :: id

day

real(kind=wp), intent(out) :: fd

fraction of day

integer, intent(out) :: jRead more…

public subroutine JDCALF(ndp, dj1, dj2, iymdf, j)

Julian Date to Gregorian Calendar, expressed in a form convenient for formatting messages: rounded to a specified precision, and with the fields stored in a single array.

Read more…

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: ndp

number of decimal places of days in fraction

real(kind=wp), intent(in) :: dj1

DJ1+DJ2 = Julian Date (Note 1)

real(kind=wp), intent(in) :: dj2

DJ1+DJ2 = Julian Date (Note 1)

integer, intent(out), dimension(4):: iymdf

year, month, day, fraction in Gregorian calendar

integer, intent(out) :: jRead more…

public subroutine LD(bm, p, q, e, em, dlim, p1)

Apply light deflection by a solar-system body, as part of transforming coordinate direction into natural direction.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: bm

mass of the gravitating body (solar masses)

real(kind=wp), intent(in), dimension(3):: p

direction from observer to source (unit vector)

real(kind=wp), intent(in), dimension(3):: q

direction from body to source (unit vector)

real(kind=wp), intent(in), dimension(3):: e

direction from body to observer (unit vector)

real(kind=wp), intent(in) :: em

distance from body to observer (au)

real(kind=wp), intent(in) :: dlim

deflection limiter (Note 4)

real(kind=wp), intent(out), dimension(3):: p1

observer to deflected source (unit vector)

public subroutine LDN(n, b, ob, sc, sn)

For a star, apply light deflection by multiple solar-system bodies, as part of transforming coordinate direction into natural direction.

Read more…

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: n

number of bodies (Note 1)

real(kind=wp), intent(in), dimension(8,n):: b

data for each of the N bodies (Notes 1,2): (1,I) mass of the body (solar masses, Note 3) (2,I) deflection limiter (Note 4) (3-5,I) barycentric position of the body (au) (6-8,I) barycentric velocity of the body (au/day)

real(kind=wp), intent(in), dimension(3):: ob

barycentric position of the observer (au)

real(kind=wp), intent(in), dimension(3):: sc

observer to star coordinate direction (unit vector)

real(kind=wp), intent(out), dimension(3):: sn

observer to deflected star (unit vector)

public subroutine LDSUN(p, e, em, p1)

Deflection of starlight by the Sun.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in), dimension(3):: p

direction from observer to star (unit vector)

real(kind=wp), intent(in), dimension(3):: e

direction from Sun to observer (unit vector)

real(kind=wp), intent(in) :: em

distance from Sun to observer (au)

real(kind=wp), intent(out), dimension(3):: p1

observer to deflected star (unit vector)

public subroutine LTECEQ(epj, dl, db, dr, dd)

Transformation from ecliptic coordinates (mean equinox and ecliptic of date) to ICRS RA,Dec, using a long-term precession model.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: epj

Julian epoch (TT)

real(kind=wp), intent(in) :: dl

ecliptic longitude (radians)

real(kind=wp), intent(in) :: db

ecliptic latitude (radians)

real(kind=wp), intent(out) :: dr

ICRS right ascension (radians)

real(kind=wp), intent(out) :: dd

ICRS declination (radians)

public subroutine LTECM(epj, rm)

ICRS equatorial to ecliptic rotation matrix, long-term.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: epj

Julian epoch (TT)

real(kind=wp), intent(out), dimension(3,3):: rm

ICRS to ecliptic rotation matrix

public subroutine LTEQEC(epj, dr, dd, dl, db)

Transformation from ICRS equatorial coordinates to ecliptic coordinates (mean equinox and ecliptic of date), using a long-term precession model.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: epj

Julian epoch (TT)

real(kind=wp), intent(in) :: dr

ICRS right ascension (radians)

real(kind=wp), intent(in) :: dd

ICRS right declination (radians)

real(kind=wp), intent(out) :: dl

ecliptic longitude (radians)

real(kind=wp), intent(out) :: db

ecliptic latitude (radians)

public subroutine LTP(epj, rp)

Long-term precession matrix.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: epj

Julian epoch (TT)

real(kind=wp), intent(out), dimension(3,3):: rp

precession matrix, J2000.0 to date

public subroutine LTPB(epj, rpb)

Long-term precession matrix, including ICRS frame bias.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: epj

Julian epoch (TT)

real(kind=wp), intent(out), dimension(3,3):: rpb

precession-bias matrix, J2000.0 to date

public subroutine LTPECL(epj, vec)

Long-term precession of the ecliptic.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: epj

Julian epoch (TT)

real(kind=wp), intent(out), dimension(3):: vec

ecliptic pole unit vector

public subroutine LTPEQU(epj, veq)

Long-term precession of the equator.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: epj

Julian epoch (TT)

real(kind=wp), intent(out), dimension(3):: veq

equator pole unit vector

public subroutine NUM00A(date1, date2, rmatn)

Form the matrix of nutation for a given date, IAU 2000A model.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(out), dimension(3,3):: rmatn

nutation matrix

public subroutine NUM00B(date1, date2, rmatn)

Form the matrix of nutation for a given date, IAU 2000B model.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(out), dimension(3,3):: rmatn

nutation matrix

public subroutine NUM06A(date1, date2, rmatn)

Form the matrix of nutation for a given date, IAU 2006/2000A model.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(out), dimension(3,3):: rmatn

nutation matrix

public subroutine NUMAT(epsa, dpsi, deps, rmatn)

Form the matrix of nutation.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: epsa

mean obliquity of date (Note 1)

real(kind=wp), intent(in) :: dpsi

nutation (Note 2)

real(kind=wp), intent(in) :: deps

nutation (Note 2)

real(kind=wp), intent(out), dimension(3,3):: rmatn

nutation matrix (Note 3)

public subroutine NUT00A(date1, date2, dpsi, deps)

Nutation, IAU 2000A model (MHB2000 luni-solar and planetary nutation with free core nutation omitted).

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(out) :: dpsi

nutation, luni-solar + planetary (Note 2)

real(kind=wp), intent(out) :: deps

nutation, luni-solar + planetary (Note 2)

public subroutine NUT00B(date1, date2, dpsi, deps)

Nutation, IAU 2000B model.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(out) :: dpsi

nutation, luni-solar + planetary (Note 2)

real(kind=wp), intent(out) :: deps

nutation, luni-solar + planetary (Note 2)

public subroutine NUT06A(date1, date2, dpsi, deps)

IAU 2000A nutation with adjustments to match the IAU 2006 precession.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(out) :: dpsi

nutation, luni-solar + planetary (Note 2)

real(kind=wp), intent(out) :: deps

nutation, luni-solar + planetary (Note 2)

public subroutine NUT80(date1, date2, dpsi, deps)

Nutation, IAU 1980 model.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(out) :: dpsi

nutation in longitude (radians)

real(kind=wp), intent(out) :: deps

nutation in obliquity (radians)

public subroutine NUTM80(date1, date2, rmatn)

Form the matrix of nutation for a given date, IAU 1980 model.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TDB date (Note 1)

real(kind=wp), intent(in) :: date2

TDB date (Note 1)

real(kind=wp), intent(out), dimension(3,3):: rmatn

nutation matrix

public subroutine P06E(date1, date2, eps0, psia, oma, bpa, bqa, pia, bpia, epsa, chia, za, zetaa, thetaa, pa, gam, phi, psi)

Precession angles, IAU 2006, equinox based.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(out) :: eps0

epsilon_0 [see Note 2]

real(kind=wp), intent(out) :: psia

psi_A [see Note 2]

real(kind=wp), intent(out) :: oma

omega_A [see Note 2]

real(kind=wp), intent(out) :: bpa

P_A [see Note 2]

real(kind=wp), intent(out) :: bqa

Q_A [see Note 2]

real(kind=wp), intent(out) :: pia

pi_A [see Note 2]

real(kind=wp), intent(out) :: bpia

Pi_A [see Note 2]

real(kind=wp), intent(out) :: epsa

obliquity epsilon_A [see Note 2]

real(kind=wp), intent(out) :: chia

chi_A [see Note 2]

real(kind=wp), intent(out) :: za

z_A [see Note 2]

real(kind=wp), intent(out) :: zetaa

zeta_A [see Note 2]

real(kind=wp), intent(out) :: thetaa

theta_A [see Note 2]

real(kind=wp), intent(out) :: pa

p_A [see Note 2]

real(kind=wp), intent(out) :: gam

F-W angle gamma_J2000 [see Note 2]

real(kind=wp), intent(out) :: phi

F-W angle phi_J2000 [see Note 2]

real(kind=wp), intent(out) :: psi

F-W angle psi_J2000 [see Note 2]

public subroutine P2PV(p, pv)

Extend a p-vector to a pv-vector by appending a zero velocity.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in), dimension(3):: p

p-vector

real(kind=wp), intent(out), dimension(3,2):: pv

pv-vector

public subroutine P2S(p, theta, phi, r)

P-vector to spherical polar coordinates.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in), dimension(3):: p

p-vector

real(kind=wp), intent(out) :: theta

longitude angle (radians)

real(kind=wp), intent(out) :: phi

latitude angle (radians)

real(kind=wp), intent(out) :: r

radial distance

public subroutine PAP(a, b, theta)

Position-angle from two p-vectors.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in), dimension(3):: a

direction of reference point

real(kind=wp), intent(in), dimension(3):: b

direction of point whose PA is required

real(kind=wp), intent(out) :: theta

position angle of B with respect to A (radians)

public subroutine PAS(al, ap, bl, bp, theta)

Position-angle from spherical coordinates.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: al

longitude of point A (e.g. RA) in radians

real(kind=wp), intent(in) :: ap

latitude of point A (e.g. Dec) in radians

real(kind=wp), intent(in) :: bl

longitude of point B

real(kind=wp), intent(in) :: bp

latitude of point B

real(kind=wp), intent(out) :: theta

position angle of B with respect to A

public subroutine PB06(date1, date2, bzeta, bz, btheta)

This routine 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.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(out) :: bzeta

1st rotation: radians clockwise around z

real(kind=wp), intent(out) :: bz

3rd rotation: radians clockwise around z

real(kind=wp), intent(out) :: btheta

2nd rotation: radians counterclockwise around y

public subroutine PDP(a, b, adb)

p-vector inner (=scalar=dot) product.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in), dimension(3):: a

first p-vector

real(kind=wp), intent(in), dimension(3):: b

second p-vector

real(kind=wp), intent(out) :: adb

A . B

public subroutine PFW06(date1, date2, gamb, phib, psib, epsa)

Precession angles, IAU 2006 (Fukushima-Williams 4-angle formulation).

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(out) :: gamb

F-W angle gamma_bar (radians)

real(kind=wp), intent(out) :: phib

F-W angle phi_bar (radians)

real(kind=wp), intent(out) :: psib

F-W angle psi_bar (radians)

real(kind=wp), intent(out) :: epsa

F-W angle epsilon_A (radians)

public subroutine PLAN94(date1, date2, np, pv, j)

Approximate heliocentric position and velocity of a nominated major planet: Mercury, Venus, EMB, Mars, Jupiter, Saturn, Uranus or Neptune (but not the Earth itself).

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TDB date part A (Note 1)

real(kind=wp), intent(in) :: date2

TDB date part B (Note 1)

integer, intent(in) :: np

planet (1=Mercury, 2=Venus, 3=EMB ... 8=Neptune)

real(kind=wp), intent(out), dimension(3,2):: pv

planet pos,vel (heliocentric, J2000.0, au, au/d)

integer, intent(out) :: jRead more…

public subroutine PM(p, r)

Modulus of p-vector.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in), dimension(3):: p

p-vector

real(kind=wp), intent(out) :: r

modulus

public subroutine PMAT00(date1, date2, rbp)

Precession matrix (including frame bias) from GCRS to a specified date, IAU 2000 model.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(out), dimension(3,3):: rbp

bias-precession matrix (Note 2)

public subroutine PMAT06(date1, date2, rbp)

Precession matrix (including frame bias) from GCRS to a specified date, IAU 2006 model.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(out), dimension(3,3):: rbp

bias-precession matrix (Note 2)

public subroutine PMAT76(date1, date2, rmatp)

Precession matrix from J2000.0 to a specified date, IAU 1976 model.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

ending date, TT (Note 1)

real(kind=wp), intent(in) :: date2

ending date, TT (Note 1)

real(kind=wp), intent(out), dimension(3,3):: rmatp

precession matrix, J2000.0 -> DATE1+DATE2

public subroutine PMP(a, b, amb)

P-vector subtraction.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in), dimension(3):: a

first p-vector

real(kind=wp), intent(in), dimension(3):: b

second p-vector

real(kind=wp), intent(out), dimension(3):: amb

A - B

public subroutine PMPX(rc, dc, pr, pd, px, rv, pmt, pob, pco)

Proper motion and parallax.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: rc

ICRS RA at catalog epoch (radians)

real(kind=wp), intent(in) :: dc

ICRS Dec at catalog epoch (radians)

real(kind=wp), intent(in) :: pr

RA proper motion (radians/year; Note 1)

real(kind=wp), intent(in) :: pd

Dec proper motion (radians/year)

real(kind=wp), intent(in) :: px

parallax (arcsec)

real(kind=wp), intent(in) :: rv

radial velocity (km/s, +ve if receding)

real(kind=wp), intent(in) :: pmt

proper motion time interval (SSB, Julian years)

real(kind=wp), intent(in), dimension(3):: pob

SSB to observer vector (au)

real(kind=wp), intent(out), dimension(3):: pco

coordinate direction (BCRS unit vector)

public subroutine PMSAFE(ra1, dec1, pmr1, pmd1, px1, rv1, ep1a, ep1b, ep2a, ep2b, ra2, dec2, pmr2, pmd2, px2, rv2, j)

Star proper motion: update star catalog data for space motion, with special handling to handle the zero parallax case.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: ra1

right ascension (radians), before

real(kind=wp), intent(in) :: dec1

declination (radians), before

real(kind=wp), intent(in) :: pmr1

RA proper motion (radians/year), before

real(kind=wp), intent(in) :: pmd1

Dec proper motion (radians/year), before

real(kind=wp), intent(in) :: px1

parallax (arcseconds), before

real(kind=wp), intent(in) :: rv1

radial velocity (km/s, +ve = receding), before

real(kind=wp), intent(in) :: ep1a

"before" epoch, part A (Note 1)

real(kind=wp), intent(in) :: ep1b

"before" epoch, part B (Note 1)

real(kind=wp), intent(in) :: ep2a

"after" epoch, part A (Note 1)

real(kind=wp), intent(in) :: ep2b

"after" epoch, part B (Note 1)

real(kind=wp), intent(out) :: ra2

right ascension (radians), after

real(kind=wp), intent(out) :: dec2

declination (radians), after

real(kind=wp), intent(out) :: pmr2

RA proper motion (radians/year), after

real(kind=wp), intent(out) :: pmd2

Dec proper motion (radians/year), after

real(kind=wp), intent(out) :: px2

parallax (arcseconds), after

real(kind=wp), intent(out) :: rv2

radial velocity (km/s, +ve = receding), after

integer, intent(out) :: jRead more…

public subroutine PN(p, r, u)

Convert a p-vector into modulus and unit vector.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in), dimension(3):: p

p-vector

real(kind=wp), intent(out) :: r

modulus

real(kind=wp), intent(out), dimension(3):: u

unit vector

public subroutine PN00(date1, date2, dpsi, deps, epsa, rb, rp, rbp, rn, rbpn)

Precession-nutation, IAU 2000 model: a multi-purpose routine, supporting classical (equinox-based) use directly and CIO-based use indirectly.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: dpsi

nutation (Note 2)

real(kind=wp), intent(in) :: deps

nutation (Note 2)

real(kind=wp), intent(out) :: epsa

mean obliquity (Note 3)

real(kind=wp), intent(out), dimension(3,3):: rb

frame bias matrix (Note 4)

real(kind=wp), intent(out), dimension(3,3):: rp

precession matrix (Note 5)

real(kind=wp), intent(out), dimension(3,3):: rbp

bias-precession matrix (Note 6)

real(kind=wp), intent(out), dimension(3,3):: rn

nutation matrix (Note 7)

real(kind=wp), intent(out), dimension(3,3):: rbpn

GCRS-to-true matrix (Note 8)

public subroutine PN00A(date1, date2, dpsi, deps, epsa, rb, rp, rbp, rn, rbpn)

Precession-nutation, IAU 2000A model: a multi-purpose routine, supporting classical (equinox-based) use directly and CIO-based use indirectly.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(out) :: dpsi

nutation (Note 2)

real(kind=wp), intent(out) :: deps

nutation (Note 2)

real(kind=wp), intent(out) :: epsa

mean obliquity (Note 3)

real(kind=wp), intent(out), dimension(3,3):: rb

frame bias matrix (Note 4)

real(kind=wp), intent(out), dimension(3,3):: rp

precession matrix (Note 5)

real(kind=wp), intent(out), dimension(3,3):: rbp

bias-precession matrix (Note 6)

real(kind=wp), intent(out), dimension(3,3):: rn

nutation matrix (Note 7)

real(kind=wp), intent(out), dimension(3,3):: rbpn

GCRS-to-true matrix (Notes 8,9)

public subroutine PN00B(date1, date2, dpsi, deps, epsa, rb, rp, rbp, rn, rbpn)

Precession-nutation, IAU 2000B model: a multi-purpose routine, supporting classical (equinox-based) use directly and CIO-based use indirectly.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(out) :: dpsi

nutation (Note 2)

real(kind=wp), intent(out) :: deps

nutation (Note 2)

real(kind=wp), intent(out) :: epsa

mean obliquity (Note 3)

real(kind=wp), intent(out), dimension(3,3):: rb

frame bias matrix (Note 4)

real(kind=wp), intent(out), dimension(3,3):: rp

precession matrix (Note 5)

real(kind=wp), intent(out), dimension(3,3):: rbp

bias-precession matrix (Note 6)

real(kind=wp), intent(out), dimension(3,3):: rn

nutation matrix (Note 7)

real(kind=wp), intent(out), dimension(3,3):: rbpn

GCRS-to-true matrix (Notes 8,9)

public subroutine PN06(date1, date2, dpsi, deps, epsa, rb, rp, rbp, rn, rbpn)

Precession-nutation, IAU 2006 model: a multi-purpose routine, supporting classical (equinox-based) use directly and CIO-based use indirectly.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: dpsi

nutation (Note 2)

real(kind=wp), intent(in) :: deps

nutation (Note 2)

real(kind=wp), intent(out) :: epsa

mean obliquity (Note 3)

real(kind=wp), intent(out), dimension(3,3):: rb

frame bias matrix (Note 4)

real(kind=wp), intent(out), dimension(3,3):: rp

precession matrix (Note 5)

real(kind=wp), intent(out), dimension(3,3):: rbp

bias-precession matrix (Note 6)

real(kind=wp), intent(out), dimension(3,3):: rn

nutation matrix (Note 7)

real(kind=wp), intent(out), dimension(3,3):: rbpn

GCRS-to-true matrix (Note 8)

public subroutine PN06A(date1, date2, dpsi, deps, epsa, rb, rp, rbp, rn, rbpn)

Precession-nutation, IAU 2006/2000A models: a multi-purpose routine, supporting classical (equinox-based) use directly and CIO-based use indirectly.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(out) :: dpsi

nutation (Note 2)

real(kind=wp), intent(out) :: deps

nutation (Note 2)

real(kind=wp), intent(out) :: epsa

mean obliquity (Note 3)

real(kind=wp), intent(out), dimension(3,3):: rb

frame bias matrix (Note 4)

real(kind=wp), intent(out), dimension(3,3):: rp

precession matrix (Note 5)

real(kind=wp), intent(out), dimension(3,3):: rbp

bias-precession matrix (Note 6)

real(kind=wp), intent(out), dimension(3,3):: rn

nutation matrix (Note 7)

real(kind=wp), intent(out), dimension(3,3):: rbpn

GCRS-to-true matrix (Notes 8,9)

public subroutine PNM00A(date1, date2, rbpn)

Form the matrix of precession-nutation for a given date (including frame bias), equinox-based, IAU 2000A model.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(out), dimension(3,3):: rbpn

classical NPB matrix (Note 2)

public subroutine PNM00B(date1, date2, rbpn)

Form the matrix of precession-nutation for a given date (including frame bias), equinox-based, IAU 2000B model.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(out), dimension(3,3):: rbpn

bias-precession-nutation matrix (Note 2)

public subroutine PNM06A(date1, date2, rnpb)

Form the matrix of precession-nutation for a given date (including frame bias), IAU 2006 precession and IAU 2000A nutation models.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(out), dimension(3,3):: rnpb

bias-precession-nutation matrix (Note 2)

public subroutine PNM80(date1, date2, rmatpn)

Form the matrix of precession/nutation for a given date, IAU 1976 precession model, IAU 1980 nutation model.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TDB date (Note 1)

real(kind=wp), intent(in) :: date2

TDB date (Note 1)

real(kind=wp), intent(out), dimension(3,3):: rmatpn

combined precession/nutation matrix

public subroutine POM00(xp, yp, sp, rpom)

Form the matrix of polar motion for a given date, IAU 2000.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: xp

coordinates of the pole (radians, Note 1)

real(kind=wp), intent(in) :: yp

coordinates of the pole (radians, Note 1)

real(kind=wp), intent(in) :: sp

the TIO locator s' (radians, Note 2)

real(kind=wp), intent(out), dimension(3,3):: rpom

polar-motion matrix (Note 3)

public subroutine PPP(a, b, apb)

P-vector addition.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in), dimension(3):: a

first p-vector

real(kind=wp), intent(in), dimension(3):: b

second p-vector

real(kind=wp), intent(out), dimension(3):: apb

A + B

public subroutine PPSP(a, s, b, apsb)

P-vector plus scaled p-vector.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in), dimension(3):: a

first p-vector

real(kind=wp), intent(in) :: s

scalar (multiplier for B)

real(kind=wp), intent(in), dimension(3):: b

second p-vector

real(kind=wp), intent(out), dimension(3):: apsb

A + S*B

public subroutine PR00(date1, date2, dpsipr, depspr)

Precession-rate part of the IAU 2000 precession-nutation models (part of MHB2000).

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(out) :: dpsipr

precession corrections (Notes 2,3)

real(kind=wp), intent(out) :: depspr

precession corrections (Notes 2,3)

public subroutine PREC76(date01, date02, date11, date12, zeta, z, theta)

IAU 1976 precession model.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date01

TDB starting date (Note 1)

real(kind=wp), intent(in) :: date02

TDB starting date (Note 1)

real(kind=wp), intent(in) :: date11

TDB ending date (Note 1)

real(kind=wp), intent(in) :: date12

TDB ending date (Note 1)

real(kind=wp), intent(out) :: zeta

1st rotation: radians clockwise around z

real(kind=wp), intent(out) :: z

3rd rotation: radians clockwise around z

real(kind=wp), intent(out) :: theta

2nd rotation: radians counterclockwise around y

public subroutine PV2P(pv, p)

Discard velocity component of a pv-vector.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in), dimension(3,2):: pv

pv-vector

real(kind=wp), intent(out), dimension(3):: p

p-vector

public subroutine PV2S(pv, theta, phi, r, td, pd, rd)

Convert position/velocity from Cartesian to spherical coordinates.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in), dimension(3,2):: pv

pv-vector

real(kind=wp), intent(out) :: theta

longitude angle (radians)

real(kind=wp), intent(out) :: phi

latitude angle (radians)

real(kind=wp), intent(out) :: r

radial distance

real(kind=wp), intent(out) :: td

rate of change of THETA

real(kind=wp), intent(out) :: pd

rate of change of PHI

real(kind=wp), intent(out) :: rd

rate of change of R

public subroutine PVDPV(a, b, adb)

Inner (=scalar=dot) product of two pv-vectors.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in), dimension(3,2):: a

first pv-vector

real(kind=wp), intent(in), dimension(3,2):: b

second pv-vector

real(kind=wp), intent(out), dimension(2):: adb

A . B (see note)

public subroutine PVM(pv, r, s)

Modulus of pv-vector.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in), dimension(3,2):: pv

pv-vector

real(kind=wp), intent(out) :: r

modulus of position component

real(kind=wp), intent(out) :: s

modulus of velocity component

public subroutine PVMPV(a, b, amb)

Subtract one pv-vector from another.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in), dimension(3,2):: a

first pv-vector

real(kind=wp), intent(in), dimension(3,2):: b

second pv-vector

real(kind=wp), intent(out), dimension(3,2):: amb

A - B

public subroutine PVPPV(a, b, apb)

Add one pv-vector to another.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in), dimension(3,2):: a

first pv-vector

real(kind=wp), intent(in), dimension(3,2):: b

second pv-vector

real(kind=wp), intent(out), dimension(3,2):: apb

A + B

public subroutine PVSTAR(pv, ra, dec, pmr, pmd, px, rv, j)

Convert star position+velocity vector to catalog coordinates.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(inout), dimension(3,2):: pv

pv-vector (au, au/day) [see Note 1]

real(kind=wp), intent(out) :: ra

right ascension (radians) [see Note 2]

real(kind=wp), intent(out) :: dec

declination (radians) [see Note 2]

real(kind=wp), intent(out) :: pmr

RA proper motion (radians/year) [see Note 2]

real(kind=wp), intent(out) :: pmd

Dec proper motion (radians/year) [see Note 2]

real(kind=wp), intent(out) :: px

parallax (arcsec) [see Note 2]

real(kind=wp), intent(out) :: rv

radial velocity (km/s, positive = receding) [see Note 2]

integer, intent(out) :: j

status [see Note 2]: * 0 = OK * -1 = superluminal speed (Note 5) * -2 = null position vector

public subroutine PVTOB(elong, phi, hm, xp, yp, sp, theta, pv)

Position and velocity of a terrestrial observing station.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: elong

longitude (radians, east +ve, Note 1)

real(kind=wp), intent(in) :: phi

latitude (geodetic, radians, Note 1)

real(kind=wp), intent(in) :: hm

height above reference ellipsoid (geodetic, m)

real(kind=wp), intent(in) :: xp

coordinates of the pole (radians, Note 2)

real(kind=wp), intent(in) :: yp

coordinates of the pole (radians, Note 2)

real(kind=wp), intent(in) :: sp

the TIO locator s' (radians, Note 2)

real(kind=wp), intent(in) :: theta

Earth rotation angle (radians, Note 3)

real(kind=wp), intent(out), dimension(3,2):: pv

position/velocity vector (m, m/s, CIRS)

public subroutine PVU(dt, pv, upv)

Update a pv-vector.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: dt

time interval

real(kind=wp), intent(in), dimension(3,2):: pv

pv-vector

real(kind=wp), intent(out), dimension(3,2):: upv

p updated, v unchanged

public subroutine PVUP(dt, pv, p)

Update a pv-vector, discarding the velocity component.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: dt

time interval

real(kind=wp), intent(in), dimension(3,2):: pv

pv-vector

real(kind=wp), intent(out), dimension(3):: p

p-vector

public subroutine PVXPV(a, b, axb)

Outer (=vector=cross) product of two pv-vectors.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in), dimension(3,2):: a

first pv-vector

real(kind=wp), intent(in), dimension(3,2):: b

second pv-vector

real(kind=wp), intent(out), dimension(3,2):: axb

A x B

public subroutine PXP(a, b, axb)

p-vector outer (=vector=cross) product.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in), dimension(3):: a

first p-vector

real(kind=wp), intent(in), dimension(3):: b

second p-vector

real(kind=wp), intent(out), dimension(3):: axb

A x B

public subroutine REFCO(phpa, tc, rh, wl, refa, refb)

Determine the constants A and B in the atmospheric refraction model dZ = A tan Z + B tan^3 Z.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: phpa

pressure at the observer (hPa = millibar)

real(kind=wp), intent(in) :: tc

ambient temperature at the observer (deg C)

real(kind=wp), intent(in) :: rh

relative humidity at the observer (range 0-1)

real(kind=wp), intent(in) :: wl

wavelength (micrometers)

real(kind=wp), intent(out) :: refa

tan Z coefficient (radians)

real(kind=wp), intent(out) :: refb

tan^3 Z coefficient (radians)

public subroutine RM2V(r, w)

Express an r-matrix as an r-vector.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in), dimension(3,3):: r

rotation matrix

real(kind=wp), intent(out), dimension(3):: w

rotation vector (Note 1)

public subroutine RV2M(w, r)

Form the r-matrix corresponding to a given r-vector.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in), dimension(3):: w

rotation vector (Note 1)

real(kind=wp), intent(out), dimension(3,3):: r

rotation matrix

public subroutine RX(phi, r)

Rotate an r-matrix about the x-axis.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: phi

angle (radians)

real(kind=wp), intent(out), dimension(3,3):: r

r-matrix, rotated

public subroutine RXP(r, p, rp)

Multiply a p-vector by an r-matrix.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in), dimension(3,3):: r

r-matrix

real(kind=wp), intent(in), dimension(3):: p

p-vector

real(kind=wp), intent(out), dimension(3):: rp

R * P

public subroutine RXPV(r, pv, rpv)

Multiply a pv-vector by an r-matrix.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in), dimension(3,3):: r

r-matrix

real(kind=wp), intent(in), dimension(3,2):: pv

pv-vector

real(kind=wp), intent(out), dimension(3,2):: rpv

R * PV

public subroutine RXR(a, b, atb)

Multiply two r-matrices.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in), dimension(3,3):: a

first r-matrix

real(kind=wp), intent(in), dimension(3,3):: b

second r-matrix

real(kind=wp), intent(out), dimension(3,3):: atb

A * B

public subroutine RY(theta, r)

Rotate an r-matrix about the y-axis.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: theta

angle (radians)

real(kind=wp), intent(out), dimension(3,3):: r

r-matrix, rotated

public subroutine RZ(psi, r)

Rotate an r-matrix about the z-axis.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: psi

angle (radians)

real(kind=wp), intent(out), dimension(3,3):: r

r-matrix, rotated

public subroutine S2C(theta, phi, c)

Convert spherical coordinates to Cartesian.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: theta

longitude angle (radians)

real(kind=wp), intent(in) :: phi

latitude angle (radians)

real(kind=wp), intent(out), dimension(3):: c

direction cosines

public subroutine S2P(theta, phi, r, p)

Convert spherical polar coordinates to p-vector.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: theta

longitude angle (radians)

real(kind=wp), intent(in) :: phi

latitude angle (radians)

real(kind=wp), intent(in) :: r

radial distance

real(kind=wp), intent(out), dimension(3):: p

Cartesian coordinates

public subroutine S2PV(theta, phi, r, td, pd, rd, pv)

Convert position/velocity from spherical to Cartesian coordinates.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: theta

longitude angle (radians)

real(kind=wp), intent(in) :: phi

latitude angle (radians)

real(kind=wp), intent(in) :: r

radial distance

real(kind=wp), intent(in) :: td

rate of change of THETA

real(kind=wp), intent(in) :: pd

rate of change of PHI

real(kind=wp), intent(in) :: rd

rate of change of R

real(kind=wp), intent(out), dimension(3,2):: pv

pv-vector

public subroutine S2XPV(s1, s2, pv, spv)

Multiply a pv-vector by two scalars.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: s1

scalar to multiply position component by

real(kind=wp), intent(in) :: s2

scalar to multiply velocity component by

real(kind=wp), intent(in), dimension(3,2):: pv

pv-vector

real(kind=wp), intent(out), dimension(3,2):: spv

pv-vector: p scaled by S1, v scaled by S2

public subroutine SEPP(a, b, s)

Angular separation between two p-vectors.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in), dimension(3):: a

first p-vector (not necessarily unit length)

real(kind=wp), intent(in), dimension(3):: b

second p-vector (not necessarily unit length)

real(kind=wp), intent(out) :: s

angular separation (radians, always positive)

public subroutine SEPS(al, ap, bl, bp, s)

Angular separation between two sets of spherical coordinates.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: al

first longitude (radians)

real(kind=wp), intent(in) :: ap

first latitude (radians)

real(kind=wp), intent(in) :: bl

second longitude (radians)

real(kind=wp), intent(in) :: bp

second latitude (radians)

real(kind=wp), intent(out) :: s

angular separation (radians)

public subroutine STARPM(ra1, dec1, pmr1, pmd1, px1, rv1, ep1a, ep1b, ep2a, ep2b, ra2, dec2, pmr2, pmd2, px2, rv2, j)

Star proper motion: update star catalog data for space motion.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: ra1

right ascension (radians), before

real(kind=wp), intent(in) :: dec1

declination (radians), before

real(kind=wp), intent(in) :: pmr1

RA proper motion (radians/year), before

real(kind=wp), intent(in) :: pmd1

Dec proper motion (radians/year), before

real(kind=wp), intent(in) :: px1

parallax (arcseconds), before

real(kind=wp), intent(in) :: rv1

radial velocity (km/s, +ve = receding), before

real(kind=wp), intent(in) :: ep1a

"before" epoch, part A (Note 1)

real(kind=wp), intent(in) :: ep1b

"before" epoch, part B (Note 1)

real(kind=wp), intent(in) :: ep2a

"after" epoch, part A (Note 1)

real(kind=wp), intent(in) :: ep2b

"after" epoch, part B (Note 1)

real(kind=wp), intent(out) :: ra2

right ascension (radians), after

real(kind=wp), intent(out) :: dec2

declination (radians), after

real(kind=wp), intent(out) :: pmr2

RA proper motion (radians/year), after

real(kind=wp), intent(out) :: pmd2

Dec proper motion (radians/year), after

real(kind=wp), intent(out) :: px2

parallax (arcseconds), after

real(kind=wp), intent(out) :: rv2

radial velocity (km/s, +ve = receding), after

integer, intent(out) :: jRead more…

public subroutine STARPV(ra, dec, pmr, pmd, px, rv, pv, j)

Convert star catalog coordinates to position+velocity vector.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: ra

right ascension (radians) [see Note 1]

real(kind=wp), intent(in) :: dec

declination (radians) [see Note 1]

real(kind=wp), intent(in) :: pmr

RA proper motion (radians/year) [see Note 1]

real(kind=wp), intent(in) :: pmd

Dec proper motion (radians/year) [see Note 1]

real(kind=wp), intent(in) :: px

parallax (arcseconds) [see Note 1]

real(kind=wp), intent(in) :: rv

radial velocity (km/s, positive = receding) [see Note 1]

real(kind=wp), intent(out), dimension(3,2):: pv

pv-vector (au, au/day) [see Note 2]

integer, intent(out) :: j

status [see Note 2]: * 0 = no warnings * 1 = distance overridden (Note 6) * 2 = excessive velocity (Note 7) * 4 = solution didn't converge (Note 8) * else = binary logical OR of the above

public subroutine SXP(s, p, sp)

Multiply a p-vector by a scalar.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: s

scalar

real(kind=wp), intent(in), dimension(3):: p

p-vector

real(kind=wp), intent(out), dimension(3):: sp

S * P

public subroutine SXPV(s, pv, spv)

Multiply a pv-vector by a scalar.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: s

scalar

real(kind=wp), intent(in), dimension(3,2):: pv

pv-vector

real(kind=wp), intent(out), dimension(3,2):: spv

S * PV

public subroutine TAITT(tai1, tai2, tt1, tt2, j)

Time scale transformation: International Atomic Time, TAI, to Terrestrial Time, TT.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: tai1

TAI as a 2-part Julian Date

real(kind=wp), intent(in) :: tai2

TAI as a 2-part Julian Date

real(kind=wp), intent(out) :: tt1

TT as a 2-part Julian Date

real(kind=wp), intent(out) :: tt2

TT as a 2-part Julian Date

integer, intent(out) :: j

public subroutine TAIUT1(tai1, tai2, dta, ut11, ut12, j)

Time scale transformation: International Atomic Time, TAI, to Universal Time, UT1.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: tai1

TAI as a 2-part Julian Date

real(kind=wp), intent(in) :: tai2

TAI as a 2-part Julian Date

real(kind=wp), intent(in) :: dta

UT1-TAI in seconds

real(kind=wp), intent(out) :: ut11

UT1 as a 2-part Julian Date

real(kind=wp), intent(out) :: ut12

UT1 as a 2-part Julian Date

integer, intent(out) :: j

status: 0 = OK

public subroutine TAIUTC(tai1, tai2, utc1, utc2, j)

Time scale transformation: International Atomic Time, TAI, to Coordinated Universal Time, UTC.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: tai1

TAI as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: tai2

TAI as a 2-part Julian Date (Note 1)

real(kind=wp), intent(out) :: utc1

UTC as a 2-part quasi Julian Date (Notes 1-3)

real(kind=wp), intent(out) :: utc2

UTC as a 2-part quasi Julian Date (Notes 1-3)

integer, intent(out) :: jRead more…

public subroutine TCBTDB(tcb1, tcb2, tdb1, tdb2, j)

Time scale transformation: Barycentric Coordinate Time, TCB, to Barycentric Dynamical Time, TDB.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: tcb1

TCB as a 2-part Julian Date

real(kind=wp), intent(in) :: tcb2

TCB as a 2-part Julian Date

real(kind=wp), intent(out) :: tdb1

TDB as a 2-part Julian Date

real(kind=wp), intent(out) :: tdb2

TDB as a 2-part Julian Date

integer, intent(out) :: j

public subroutine TCGTT(tcg1, tcg2, tt1, tt2, j)

Time scale transformation: Geocentric Coordinate Time, TCG, to Terrestrial Time, TT.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: tcg1

TCG as a 2-part Julian Date

real(kind=wp), intent(in) :: tcg2

TCG as a 2-part Julian Date

real(kind=wp), intent(out) :: tt1

TT as a 2-part Julian Date

real(kind=wp), intent(out) :: tt2

TT as a 2-part Julian Date

integer, intent(out) :: j

public subroutine TDBTCB(tdb1, tdb2, tcb1, tcb2, j)

Time scale transformation: Barycentric Dynamical Time, TDB, to Barycentric Coordinate Time, TCB.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: tdb1

TDB as a 2-part Julian Date

real(kind=wp), intent(in) :: tdb2

TDB as a 2-part Julian Date

real(kind=wp), intent(out) :: tcb1

TCB as a 2-part Julian Date

real(kind=wp), intent(out) :: tcb2

TCB as a 2-part Julian Date

integer, intent(out) :: j

public subroutine TDBTT(tdb1, tdb2, dtr, tt1, tt2, j)

Time scale transformation: Barycentric Dynamical Time, TDB, to Terrestrial Time, TT.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: tdb1

TDB as a 2-part Julian Date

real(kind=wp), intent(in) :: tdb2

TDB as a 2-part Julian Date

real(kind=wp), intent(in) :: dtr

TDB-TT in seconds

real(kind=wp), intent(out) :: tt1

TT as a 2-part Julian Date

real(kind=wp), intent(out) :: tt2

TT as a 2-part Julian Date

integer, intent(out) :: j

status: 0 = OK

public subroutine TF2A(s, ihour, imin, sec, rad, j)

Convert hours, minutes, seconds to radians.

Read more…

Arguments

TypeIntentOptionalAttributesName
character(len=1), intent(in) :: s

sign: '-' = negative, otherwise positive

integer, intent(in) :: ihour

hours

integer, intent(in) :: imin

minutes

real(kind=wp), intent(in) :: sec

seconds

real(kind=wp), intent(out) :: rad

angle in radians

integer, intent(out) :: jRead more…

public subroutine TF2D(s, ihour, imin, sec, days, j)

Convert hours, minutes, seconds to days.

Read more…

Arguments

TypeIntentOptionalAttributesName
character(len=1), intent(in) :: s

sign: '-' = negative, otherwise positive

integer, intent(in) :: ihour

hours

integer, intent(in) :: imin

minutes

real(kind=wp), intent(in) :: sec

seconds

real(kind=wp), intent(out) :: days

interval in days

integer, intent(out) :: jRead more…

public subroutine TPORS(xi, eta, a, b, a01, b01, a02, b02, n)

In the tangent plane projection, given the rectangular coordinates of a star and its spherical coordinates, determine the spherical coordinates of the tangent point.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: xi

rectangular coordinates of star image (Note 2)

real(kind=wp), intent(in) :: eta

rectangular coordinates of star image (Note 2)

real(kind=wp), intent(in) :: a

star's spherical coordinates (Note 3)

real(kind=wp), intent(in) :: b

star's spherical coordinates (Note 3)

real(kind=wp), intent(out) :: a01

tangent point's spherical coordinates, Soln. 1

real(kind=wp), intent(out) :: b01

tangent point's spherical coordinates, Soln. 1

real(kind=wp), intent(out) :: a02

tangent point's spherical coordinates, Soln. 2

real(kind=wp), intent(out) :: b02

tangent point's spherical coordinates, Soln. 2

integer, intent(out) :: n

number of solutions: * 0 = no solutions returned (Note 5) * 1 = only the first solution is useful (Note 6) * 2 = both solutions are useful (Note 6)

public subroutine TPORV(xi, eta, v, v01, v02, n)

In the tangent plane projection, given the rectangular coordinates of a star and its direction cosines, determine the direction cosines of the tangent point.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: xi

rectangular coordinates of star image (Note 2)

real(kind=wp), intent(in) :: eta

rectangular coordinates of star image (Note 2)

real(kind=wp), intent(in), dimension(3):: v

star's direction cosines (Note 3)

real(kind=wp), intent(out), dimension(3):: v01

tangent point's direction cosines, Solution 1

real(kind=wp), intent(out), dimension(3):: v02

tangent point's direction cosines, Solution 2

integer, intent(out) :: n

number of solutions: * 0 = no solutions returned (Note 4) * 1 = only the first solution is useful (Note 5) * 2 = both solutions are useful (Note 5)

public subroutine TPSTS(xi, eta, a0, b0, a, b)

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.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: xi

rectangular coordinates of star image (Note 2)

real(kind=wp), intent(in) :: eta

rectangular coordinates of star image (Note 2)

real(kind=wp), intent(in) :: a0

tangent point's spherical coordinates

real(kind=wp), intent(in) :: b0

tangent point's spherical coordinates

real(kind=wp), intent(out) :: a

star's spherical coordinates

real(kind=wp), intent(out) :: b

star's spherical coordinates

public subroutine TPSTV(xi, eta, v0, v)

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.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: xi

rectangular coordinates of star image (Note 2)

real(kind=wp), intent(in) :: eta

rectangular coordinates of star image (Note 2)

real(kind=wp), intent(in), dimension(3):: v0

tangent point's direction cosines (Note 4)

real(kind=wp), intent(out), dimension(3):: v

star's direction cosines

public subroutine TPXES(a, b, a0, b0, xi, eta, j)

In the tangent plane projection, given celestial spherical coordinates for a star and the tangent point, solve for the star's rectangular coordinates in the tangent plane.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: a

star's spherical coordinates

real(kind=wp), intent(in) :: b

star's spherical coordinates

real(kind=wp), intent(in) :: a0

tangent point's spherical coordinates

real(kind=wp), intent(in) :: b0

tangent point's spherical coordinates

real(kind=wp), intent(out) :: xi

rectangular coordinates of star image (Note 2)

real(kind=wp), intent(out) :: eta

rectangular coordinates of star image (Note 2)

integer, intent(out) :: jRead more…

public subroutine TPXEV(v, v0, xi, eta, j)

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.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in), dimension(3):: v

direction cosines of star (Note 4)

real(kind=wp), intent(in), dimension(3):: v0

direction cosines of tangent point (Note 4)

real(kind=wp), intent(out) :: xi

tangent plane coordinates of star

real(kind=wp), intent(out) :: eta

tangent plane coordinates of star

integer, intent(out) :: jRead more…

public subroutine TR(r, rt)

Transpose an r-matrix.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in), dimension(3,3):: r

r-matrix

real(kind=wp), intent(out), dimension(3,3):: rt

transpose

public subroutine TRXP(r, p, trp)

Multiply a p-vector by the transpose of an r-matrix.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in), dimension(3,3):: r

r-matrix

real(kind=wp), intent(in), dimension(3):: p

p-vector

real(kind=wp), intent(out), dimension(3):: trp

R * P

public subroutine TRXPV(r, pv, trpv)

Multiply a pv-vector by the transpose of an r-matrix.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in), dimension(3,3):: r

r-matrix

real(kind=wp), intent(in), dimension(3,2):: pv

pv-vector

real(kind=wp), intent(out), dimension(3,2):: trpv

R * PV

public subroutine TTTAI(tt1, tt2, tai1, tai2, j)

Time scale transformation: Terrestrial Time, TT, to International Atomic Time, TAI.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: tt1

TT as a 2-part Julian Date

real(kind=wp), intent(in) :: tt2

TT as a 2-part Julian Date

real(kind=wp), intent(out) :: tai1

TAI as a 2-part Julian Date

real(kind=wp), intent(out) :: tai2

TAI as a 2-part Julian Date

integer, intent(out) :: j

public subroutine TTTCG(tt1, tt2, tcg1, tcg2, j)

Time scale transformation: Terrestrial Time, TT, to Geocentric Coordinate Time, TCG.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: tt1

TT as a 2-part Julian Date

real(kind=wp), intent(in) :: tt2

TT as a 2-part Julian Date

real(kind=wp), intent(out) :: tcg1

TCG as a 2-part Julian Date

real(kind=wp), intent(out) :: tcg2

TCG as a 2-part Julian Date

integer, intent(out) :: j

public subroutine TTTDB(tt1, tt2, dtr, tdb1, tdb2, j)

Time scale transformation: Terrestrial Time, TT, to Barycentric Dynamical Time, TDB.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: tt1

TT as a 2-part Julian Date

real(kind=wp), intent(in) :: tt2

TT as a 2-part Julian Date

real(kind=wp), intent(in) :: dtr

TDB-TT in seconds

real(kind=wp), intent(out) :: tdb1

TDB as a 2-part Julian Date

real(kind=wp), intent(out) :: tdb2

TDB as a 2-part Julian Date

integer, intent(out) :: j

status: 0 = OK

public subroutine TTUT1(tt1, tt2, dt, ut11, ut12, j)

Time scale transformation: Terrestrial Time, TT, to Universal Time, UT1.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: tt1

TT as a 2-part Julian Date

real(kind=wp), intent(in) :: tt2

TT as a 2-part Julian Date

real(kind=wp), intent(in) :: dt

TT-UT1 in seconds

real(kind=wp), intent(out) :: ut11

UT1 as a 2-part Julian Date

real(kind=wp), intent(out) :: ut12

UT1 as a 2-part Julian Date

integer, intent(out) :: j

status: 0 = OK

public subroutine UT1TAI(ut11, ut12, dta, tai1, tai2, j)

Time scale transformation: Universal Time, UT1, to International Atomic Time, TAI.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: ut11

UT1 as a 2-part Julian Date

real(kind=wp), intent(in) :: ut12

UT1 as a 2-part Julian Date

real(kind=wp), intent(in) :: dta

UT1-TAI in seconds

real(kind=wp), intent(out) :: tai1

TAI as a 2-part Julian Date

real(kind=wp), intent(out) :: tai2

TAI as a 2-part Julian Date

integer, intent(out) :: j

status: 0 = OK

public subroutine UT1TT(ut11, ut12, dt, tt1, tt2, j)

Time scale transformation: Universal Time, UT1, to Terrestrial Time, TT.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: ut11

UT1 as a 2-part Julian Date

real(kind=wp), intent(in) :: ut12

UT1 as a 2-part Julian Date

real(kind=wp), intent(in) :: dt

TT-UT1 in seconds

real(kind=wp), intent(out) :: tt1

TT as a 2-part Julian Date

real(kind=wp), intent(out) :: tt2

TT as a 2-part Julian Date

integer, intent(out) :: j

status: 0 = OK

public subroutine UT1UTC(ut11, ut12, dut1, utc1, utc2, j)

Time scale transformation: Universal Time, UT1, to Coordinated Universal Time, UTC.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: ut11

UT1 as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: ut12

UT1 as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: dut1

Delta UT1: UT1-UTC in seconds (Note 2)

real(kind=wp), intent(out) :: utc1

UTC as a 2-part quasi Julian Date (Notes 3,4)

real(kind=wp), intent(out) :: utc2

UTC as a 2-part quasi Julian Date (Notes 3,4)

integer, intent(out) :: jRead more…

public subroutine UTCTAI(utc1, utc2, tai1, tai2, j)

Time scale transformation: Coordinated Universal Time, UTC, to International Atomic Time, TAI.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: utc1

UTC as a 2-part quasi Julian Date (Notes 1-4)

real(kind=wp), intent(in) :: utc2

UTC as a 2-part quasi Julian Date (Notes 1-4)

real(kind=wp), intent(out) :: tai1

TAI as a 2-part Julian Date (Note 5)

real(kind=wp), intent(out) :: tai2

TAI as a 2-part Julian Date (Note 5)

integer, intent(out) :: jRead more…

public subroutine UTCUT1(utc1, utc2, dut1, ut11, ut12, j)

Time scale transformation: Coordinated Universal Time, UTC, to Universal Time, UT1.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: utc1

UTC as a 2-part quasi Julian Date (Notes 1-4)

real(kind=wp), intent(in) :: utc2

UTC as a 2-part quasi Julian Date (Notes 1-4)

real(kind=wp), intent(in) :: dut1

Delta UT1 = UT1-UTC in seconds (Note 5)

real(kind=wp), intent(out) :: ut11

UT1 as a 2-part Julian Date (Note 6)

real(kind=wp), intent(out) :: ut12

UT1 as a 2-part Julian Date (Note 6)

integer, intent(out) :: jRead more…

public subroutine XY06(date1, date2, x, y)

X,Y coordinates of celestial intermediate pole from series based on IAU 2006 precession and IAU 2000A nutation.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(out) :: x

CIP X coordinate (Note 2)

real(kind=wp), intent(out) :: y

CIP Y coordinate (Note 2)

public subroutine XYS00A(date1, date2, x, y, s)

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.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(out) :: x

Celestial Intermediate Pole (Note 2)

real(kind=wp), intent(out) :: y

Celestial Intermediate Pole (Note 2)

real(kind=wp), intent(out) :: s

the CIO locator s (Note 2)

public subroutine XYS00B(date1, date2, x, y, s)

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.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(out) :: x

Celestial Intermediate Pole (Note 2)

real(kind=wp), intent(out) :: y

Celestial Intermediate Pole (Note 2)

real(kind=wp), intent(out) :: s

the CIO locator s (Note 2)

public subroutine XYS06A(date1, date2, x, y, s)

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.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(in) :: date1

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(in) :: date2

TT as a 2-part Julian Date (Note 1)

real(kind=wp), intent(out) :: x

Celestial Intermediate Pole (Note 2)

real(kind=wp), intent(out) :: y

Celestial Intermediate Pole (Note 2)

real(kind=wp), intent(out) :: s

the CIO locator s (Note 2)

public subroutine ZP(p)

Zero a p-vector.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(out), dimension(3):: p

p-vector

public subroutine ZPV(pv)

Zero a pv-vector.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(out), dimension(3,2):: pv

pv-vector

public subroutine ZR(r)

Initialize an r-matrix to the null matrix.

Read more…

Arguments

TypeIntentOptionalAttributesName
real(kind=wp), intent(out), dimension(3,3):: r

r-matrix