| 1 | #include "slalib.h"
|
|---|
| 2 | #include "slamac.h"
|
|---|
| 3 | double slaDat ( double utc )
|
|---|
| 4 | /*
|
|---|
| 5 | ** - - - - - - -
|
|---|
| 6 | ** s l a D a t
|
|---|
| 7 | ** - - - - - - -
|
|---|
| 8 | **
|
|---|
| 9 | ** Increment to be applied to Coordinated Universal Time UTC to give
|
|---|
| 10 | ** International Atomic Time TAI.
|
|---|
| 11 | **
|
|---|
| 12 | ** (double precision)
|
|---|
| 13 | **
|
|---|
| 14 | ** Given:
|
|---|
| 15 | ** utc double UTC date as a modified JD (JD-2400000.5)
|
|---|
| 16 | **
|
|---|
| 17 | ** Result: TAI-UTC in seconds
|
|---|
| 18 | **
|
|---|
| 19 | ** Notes:
|
|---|
| 20 | **
|
|---|
| 21 | ** 1 The UTC is specified to be a date rather than a time to indicate
|
|---|
| 22 | ** that care needs to be taken not to specify an instant which lies
|
|---|
| 23 | ** within a leap second. Though in most cases the utc argument can
|
|---|
| 24 | ** include the fractional part, correct behaviour on the day of a
|
|---|
| 25 | ** leap second can only be guaranteed up to the end of the second
|
|---|
| 26 | ** 23:59:59.
|
|---|
| 27 | **
|
|---|
| 28 | ** 2 For epochs from 1961 January 1 onwards, the expressions from the
|
|---|
| 29 | ** file ftp://maia.usno.navy.mil/ser7/tai-utc.dat are used.
|
|---|
| 30 | **
|
|---|
| 31 | ** 3 The 5ms timestep at 1961 January 1 is taken from 2.58.1 (p87) of
|
|---|
| 32 | ** the 1992 Explanatory Supplement.
|
|---|
| 33 | **
|
|---|
| 34 | ** 4 UTC began at 1960 January 1.0 (JD 2436934.5) and it is improper
|
|---|
| 35 | ** to call the routine with an earlier epoch. However, if this
|
|---|
| 36 | ** is attempted, the TAI-UTC expression for the year 1960 is used.
|
|---|
| 37 | **
|
|---|
| 38 | ** :-----------------------------------------:
|
|---|
| 39 | ** : :
|
|---|
| 40 | ** : IMPORTANT :
|
|---|
| 41 | ** : :
|
|---|
| 42 | ** : This routine must be updated on each :
|
|---|
| 43 | ** : occasion that a leap second is :
|
|---|
| 44 | ** : announced :
|
|---|
| 45 | ** : :
|
|---|
| 46 | ** : Latest leap second: 1999 January 1 :
|
|---|
| 47 | ** : :
|
|---|
| 48 | ** :-----------------------------------------:
|
|---|
| 49 | **
|
|---|
| 50 | ** Last revision: 31 May 1999
|
|---|
| 51 | **
|
|---|
| 52 | ** Copyright 1999 P.T.Wallace. All rights reserved.
|
|---|
| 53 | */
|
|---|
| 54 | {
|
|---|
| 55 |
|
|---|
| 56 | /* - - - - - - - - - - - - - - - - - - - - - */
|
|---|
| 57 | /* Add new code here on each occasion that a */
|
|---|
| 58 | /* leap second is announced, and also update */
|
|---|
| 59 | /* the preamble comments appropriately. */
|
|---|
| 60 | /* - - - - - - - - - - - - - - - - - - - - - */
|
|---|
| 61 |
|
|---|
| 62 | /* 1999 January 1 */
|
|---|
| 63 | if ( utc >= 51179.0 ) return 32.0;
|
|---|
| 64 |
|
|---|
| 65 | /* 1997 July 1 */
|
|---|
| 66 | if ( utc >= 50630.0 ) return 31.0;
|
|---|
| 67 |
|
|---|
| 68 | /* 1996 January 1 */
|
|---|
| 69 | if ( utc >= 50083.0 ) return 30.0;
|
|---|
| 70 |
|
|---|
| 71 | /* 1994 July 1 */
|
|---|
| 72 | if ( utc >= 49534.0 ) return 29.0;
|
|---|
| 73 |
|
|---|
| 74 | /* 1993 July 1 */
|
|---|
| 75 | if ( utc >= 49169.0 ) return 28.0;
|
|---|
| 76 |
|
|---|
| 77 | /* 1992 July 1 */
|
|---|
| 78 | if ( utc >= 48804.0 ) return 27.0;
|
|---|
| 79 |
|
|---|
| 80 | /* 1991 January 1 */
|
|---|
| 81 | if ( utc >= 48257.0 ) return 26.0;
|
|---|
| 82 |
|
|---|
| 83 | /* 1990 January 1 */
|
|---|
| 84 | if ( utc >= 47892.0 ) return 25.0;
|
|---|
| 85 |
|
|---|
| 86 | /* 1988 January 1 */
|
|---|
| 87 | if ( utc >= 47161.0 ) return 24.0;
|
|---|
| 88 |
|
|---|
| 89 | /* 1985 July 1 */
|
|---|
| 90 | if ( utc >= 46247.0 ) return 23.0;
|
|---|
| 91 |
|
|---|
| 92 | /* 1983 July 1 */
|
|---|
| 93 | if ( utc >= 45516.0 ) return 22.0;
|
|---|
| 94 |
|
|---|
| 95 | /* 1982 July 1 */
|
|---|
| 96 | if ( utc >= 45151.0 ) return 21.0;
|
|---|
| 97 |
|
|---|
| 98 | /* 1981 July 1 */
|
|---|
| 99 | if ( utc >= 44786.0 ) return 20.0;
|
|---|
| 100 |
|
|---|
| 101 | /* 1980 January 1 */
|
|---|
| 102 | if ( utc >= 44239.0 ) return 19.0;
|
|---|
| 103 |
|
|---|
| 104 | /* 1979 January 1 */
|
|---|
| 105 | if ( utc >= 43874.0 ) return 18.0;
|
|---|
| 106 |
|
|---|
| 107 | /* 1978 January 1 */
|
|---|
| 108 | if ( utc >= 43509.0 ) return 17.0;
|
|---|
| 109 |
|
|---|
| 110 | /* 1977 January 1 */
|
|---|
| 111 | if ( utc >= 43144.0 ) return 16.0;
|
|---|
| 112 |
|
|---|
| 113 | /* 1976 January 1 */
|
|---|
| 114 | if ( utc >= 42778.0 ) return 15.0;
|
|---|
| 115 |
|
|---|
| 116 | /* 1975 January 1 */
|
|---|
| 117 | if ( utc >= 42413.0 ) return 14.0;
|
|---|
| 118 |
|
|---|
| 119 | /* 1974 January 1 */
|
|---|
| 120 | if ( utc >= 42048.0 ) return 13.0;
|
|---|
| 121 |
|
|---|
| 122 | /* 1973 January 1 */
|
|---|
| 123 | if ( utc >= 41683.0 ) return 12.0;
|
|---|
| 124 |
|
|---|
| 125 | /* 1972 July 1 */
|
|---|
| 126 | if ( utc >= 41499.0 ) return 11.0;
|
|---|
| 127 |
|
|---|
| 128 | /* 1972 January 1 */
|
|---|
| 129 | if ( utc >= 41317.0 ) return 10.0;
|
|---|
| 130 |
|
|---|
| 131 | /* 1968 February 1 */
|
|---|
| 132 | if ( utc >= 39887.0 ) return 4.2131700 + ( utc - 39126.0 ) * 0.002592;
|
|---|
| 133 |
|
|---|
| 134 | /* 1966 January 1 */
|
|---|
| 135 | if ( utc >= 39126.0 ) return 4.3131700 + ( utc - 39126.0 ) * 0.002592;
|
|---|
| 136 |
|
|---|
| 137 | /* 1965 September 1 */
|
|---|
| 138 | if ( utc >= 39004.0 ) return 3.8401300 + ( utc - 38761.0 ) * 0.001296;
|
|---|
| 139 |
|
|---|
| 140 | /* 1965 July 1 */
|
|---|
| 141 | if ( utc >= 38942.0 ) return 3.7401300 + ( utc - 38761.0 ) * 0.001296;
|
|---|
| 142 |
|
|---|
| 143 | /* 1965 March 1 */
|
|---|
| 144 | if ( utc >= 38820.0 ) return 3.6401300 + ( utc - 38761.0 ) * 0.001296;
|
|---|
| 145 |
|
|---|
| 146 | /* 1965 January 1 */
|
|---|
| 147 | if ( utc >= 38761.0 ) return 3.5401300 + ( utc - 38761.0 ) * 0.001296;
|
|---|
| 148 |
|
|---|
| 149 | /* 1964 September 1 */
|
|---|
| 150 | if ( utc >= 38639.0 ) return 3.4401300 + ( utc - 38761.0 ) * 0.001296;
|
|---|
| 151 |
|
|---|
| 152 | /* 1964 April 1 */
|
|---|
| 153 | if ( utc >= 38486.0 ) return 3.3401300 + ( utc - 38761.0 ) * 0.001296;
|
|---|
| 154 |
|
|---|
| 155 | /* 1964 January 1 */
|
|---|
| 156 | if ( utc >= 38395.0 ) return 3.2401300 + ( utc - 38761.0 ) * 0.001296;
|
|---|
| 157 |
|
|---|
| 158 | /* 1963 November 1 */
|
|---|
| 159 | if ( utc >= 38334.0 ) return 1.9458580 + ( utc - 37665.0 ) * 0.0011232;
|
|---|
| 160 |
|
|---|
| 161 | /* 1962 January 1 */
|
|---|
| 162 | if ( utc >= 37665.0 ) return 1.8458580 + ( utc - 37665.0 ) * 0.0011232;
|
|---|
| 163 |
|
|---|
| 164 | /* 1961 August 1 */
|
|---|
| 165 | if ( utc >= 37512.0 ) return 1.3728180 + ( utc - 37300.0 ) * 0.001296;
|
|---|
| 166 |
|
|---|
| 167 | /* 1961 January 1 */
|
|---|
| 168 | if ( utc >= 37300.0 ) return 1.4228180 + ( utc - 37300.0 ) * 0.001296;
|
|---|
| 169 |
|
|---|
| 170 | /* Before that. */
|
|---|
| 171 | return 1.4178180 + ( utc - 37300.0 ) * 0.001296;
|
|---|
| 172 |
|
|---|
| 173 | }
|
|---|