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: 2009 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 | /* 2009 January 1 */
|
---|
63 | if ( utc >= 54832.0 ) return 34.0;
|
---|
64 |
|
---|
65 | /* 2006 January 1 */
|
---|
66 | if ( utc >= 53736.0 ) return 33.0;
|
---|
67 |
|
---|
68 | /* 1999 January 1 */
|
---|
69 | if ( utc >= 51179.0 ) return 32.0;
|
---|
70 |
|
---|
71 | /* 1997 July 1 */
|
---|
72 | if ( utc >= 50630.0 ) return 31.0;
|
---|
73 |
|
---|
74 | /* 1996 January 1 */
|
---|
75 | if ( utc >= 50083.0 ) return 30.0;
|
---|
76 |
|
---|
77 | /* 1994 July 1 */
|
---|
78 | if ( utc >= 49534.0 ) return 29.0;
|
---|
79 |
|
---|
80 | /* 1993 July 1 */
|
---|
81 | if ( utc >= 49169.0 ) return 28.0;
|
---|
82 |
|
---|
83 | /* 1992 July 1 */
|
---|
84 | if ( utc >= 48804.0 ) return 27.0;
|
---|
85 |
|
---|
86 | /* 1991 January 1 */
|
---|
87 | if ( utc >= 48257.0 ) return 26.0;
|
---|
88 |
|
---|
89 | /* 1990 January 1 */
|
---|
90 | if ( utc >= 47892.0 ) return 25.0;
|
---|
91 |
|
---|
92 | /* 1988 January 1 */
|
---|
93 | if ( utc >= 47161.0 ) return 24.0;
|
---|
94 |
|
---|
95 | /* 1985 July 1 */
|
---|
96 | if ( utc >= 46247.0 ) return 23.0;
|
---|
97 |
|
---|
98 | /* 1983 July 1 */
|
---|
99 | if ( utc >= 45516.0 ) return 22.0;
|
---|
100 |
|
---|
101 | /* 1982 July 1 */
|
---|
102 | if ( utc >= 45151.0 ) return 21.0;
|
---|
103 |
|
---|
104 | /* 1981 July 1 */
|
---|
105 | if ( utc >= 44786.0 ) return 20.0;
|
---|
106 |
|
---|
107 | /* 1980 January 1 */
|
---|
108 | if ( utc >= 44239.0 ) return 19.0;
|
---|
109 |
|
---|
110 | /* 1979 January 1 */
|
---|
111 | if ( utc >= 43874.0 ) return 18.0;
|
---|
112 |
|
---|
113 | /* 1978 January 1 */
|
---|
114 | if ( utc >= 43509.0 ) return 17.0;
|
---|
115 |
|
---|
116 | /* 1977 January 1 */
|
---|
117 | if ( utc >= 43144.0 ) return 16.0;
|
---|
118 |
|
---|
119 | /* 1976 January 1 */
|
---|
120 | if ( utc >= 42778.0 ) return 15.0;
|
---|
121 |
|
---|
122 | /* 1975 January 1 */
|
---|
123 | if ( utc >= 42413.0 ) return 14.0;
|
---|
124 |
|
---|
125 | /* 1974 January 1 */
|
---|
126 | if ( utc >= 42048.0 ) return 13.0;
|
---|
127 |
|
---|
128 | /* 1973 January 1 */
|
---|
129 | if ( utc >= 41683.0 ) return 12.0;
|
---|
130 |
|
---|
131 | /* 1972 July 1 */
|
---|
132 | if ( utc >= 41499.0 ) return 11.0;
|
---|
133 |
|
---|
134 | /* 1972 January 1 */
|
---|
135 | if ( utc >= 41317.0 ) return 10.0;
|
---|
136 |
|
---|
137 | /* 1968 February 1 */
|
---|
138 | if ( utc >= 39887.0 ) return 4.2131700 + ( utc - 39126.0 ) * 0.002592;
|
---|
139 |
|
---|
140 | /* 1966 January 1 */
|
---|
141 | if ( utc >= 39126.0 ) return 4.3131700 + ( utc - 39126.0 ) * 0.002592;
|
---|
142 |
|
---|
143 | /* 1965 September 1 */
|
---|
144 | if ( utc >= 39004.0 ) return 3.8401300 + ( utc - 38761.0 ) * 0.001296;
|
---|
145 |
|
---|
146 | /* 1965 July 1 */
|
---|
147 | if ( utc >= 38942.0 ) return 3.7401300 + ( utc - 38761.0 ) * 0.001296;
|
---|
148 |
|
---|
149 | /* 1965 March 1 */
|
---|
150 | if ( utc >= 38820.0 ) return 3.6401300 + ( utc - 38761.0 ) * 0.001296;
|
---|
151 |
|
---|
152 | /* 1965 January 1 */
|
---|
153 | if ( utc >= 38761.0 ) return 3.5401300 + ( utc - 38761.0 ) * 0.001296;
|
---|
154 |
|
---|
155 | /* 1964 September 1 */
|
---|
156 | if ( utc >= 38639.0 ) return 3.4401300 + ( utc - 38761.0 ) * 0.001296;
|
---|
157 |
|
---|
158 | /* 1964 April 1 */
|
---|
159 | if ( utc >= 38486.0 ) return 3.3401300 + ( utc - 38761.0 ) * 0.001296;
|
---|
160 |
|
---|
161 | /* 1964 January 1 */
|
---|
162 | if ( utc >= 38395.0 ) return 3.2401300 + ( utc - 38761.0 ) * 0.001296;
|
---|
163 |
|
---|
164 | /* 1963 November 1 */
|
---|
165 | if ( utc >= 38334.0 ) return 1.9458580 + ( utc - 37665.0 ) * 0.0011232;
|
---|
166 |
|
---|
167 | /* 1962 January 1 */
|
---|
168 | if ( utc >= 37665.0 ) return 1.8458580 + ( utc - 37665.0 ) * 0.0011232;
|
---|
169 |
|
---|
170 | /* 1961 August 1 */
|
---|
171 | if ( utc >= 37512.0 ) return 1.3728180 + ( utc - 37300.0 ) * 0.001296;
|
---|
172 |
|
---|
173 | /* 1961 January 1 */
|
---|
174 | if ( utc >= 37300.0 ) return 1.4228180 + ( utc - 37300.0 ) * 0.001296;
|
---|
175 |
|
---|
176 | /* Before that. */
|
---|
177 | return 1.4178180 + ( utc - 37300.0 ) * 0.001296;
|
---|
178 |
|
---|
179 | }
|
---|