1 | #include "slalib.h"
|
---|
2 | #include "slamac.h"
|
---|
3 | void slaNutc ( double date, double *dpsi, double *deps, double *eps0 )
|
---|
4 | /*
|
---|
5 | ** - - - - - - - -
|
---|
6 | ** s l a N u t c
|
---|
7 | ** - - - - - - - -
|
---|
8 | **
|
---|
9 | ** Nutation: longitude & obliquity components and
|
---|
10 | ** mean obliquity (IAU 1980 theory).
|
---|
11 | **
|
---|
12 | ** (double precision)
|
---|
13 | **
|
---|
14 | ** References:
|
---|
15 | ** Final report of the IAU working group on nutation,
|
---|
16 | ** chairman P.K.Seidelmann, 1980.
|
---|
17 | ** Kaplan,G.H., 1981, USNO circular No. 163, pa3-6.
|
---|
18 | **
|
---|
19 | ** Given:
|
---|
20 | ** date double TDB (loosely ET) as Modified Julian Date
|
---|
21 | ** (JD-2400000.5)
|
---|
22 | **
|
---|
23 | ** Returned:
|
---|
24 | ** *dpsi,*deps double nutation in longitude,obliquity
|
---|
25 | ** *eps0 double mean obliquity
|
---|
26 | **
|
---|
27 | ** Called: slaDrange
|
---|
28 | **
|
---|
29 | ** Defined in slamac.h: DAS2R, dmod
|
---|
30 | **
|
---|
31 | ** Last revision: 19 March 1996
|
---|
32 | **
|
---|
33 | ** Copyright P.T.Wallace. All rights reserved.
|
---|
34 | */
|
---|
35 |
|
---|
36 | #define T2AS 1296000.0 /* Turns to arc seconds */
|
---|
37 | #define U2R 0.4848136811095359949e-9 /* Units of 0.0001 arcsec to radians */
|
---|
38 |
|
---|
39 | {
|
---|
40 | double t, el, el2, el3, elp, elp2,
|
---|
41 | f, f2, f4,
|
---|
42 | d, d2, d4,
|
---|
43 | om, om2,
|
---|
44 | dp, de, a;
|
---|
45 |
|
---|
46 | /* Interval between basic epoch J2000.0 and current epoch (JC) */
|
---|
47 | t = ( date - 51544.5 ) / 36525.0;
|
---|
48 |
|
---|
49 | /* Fundamental arguments in the FK5 reference system */
|
---|
50 |
|
---|
51 | /* Mean longitude of the Moon minus mean longitude of the Moon's perigee */
|
---|
52 | el = slaDrange ( DAS2R * dmod ( 485866.733 + ( 1325.0 * T2AS + 715922.633
|
---|
53 | + ( 31.310 + 0.064 * t ) * t ) * t , T2AS ) );
|
---|
54 |
|
---|
55 | /* Mean longitude of the Sun minus mean longitude of the Sun's perigee */
|
---|
56 | elp = slaDrange ( DAS2R * dmod ( 1287099.804 + ( 99.0 * T2AS + 1292581.224
|
---|
57 | + ( -0.577 - 0.012 * t ) * t ) * t, T2AS ) );
|
---|
58 |
|
---|
59 | /* Mean longitude of the Moon minus mean longitude of the Moon's node */
|
---|
60 | f = slaDrange ( DAS2R * dmod ( 335778.877 + ( 1342.0 * T2AS + 295263.137
|
---|
61 | + ( -13.257 + 0.011 * t ) * t ) * t, T2AS ) );
|
---|
62 |
|
---|
63 | /* Mean elongation of the Moon from the Sun */
|
---|
64 | d = slaDrange ( DAS2R * dmod ( 1072261.307 + ( 1236.0 * T2AS + 1105601.328
|
---|
65 | + ( -6.891 + 0.019 * t ) * t ) * t, T2AS ) );
|
---|
66 |
|
---|
67 | /* Longitude of the mean ascending node of the lunar orbit on the
|
---|
68 | ecliptic, measured from the mean equinox of date */
|
---|
69 | om = slaDrange ( DAS2R * dmod ( 450160.280 + ( -5.0 * T2AS - 482890.539
|
---|
70 | + ( 7.455 + 0.008 * t ) * t ) * t, T2AS ) );
|
---|
71 |
|
---|
72 | /* Multiples of arguments */
|
---|
73 | el2 = el + el;
|
---|
74 | el3 = el2 + el;
|
---|
75 | elp2 = elp + elp;
|
---|
76 | f2 = f + f;
|
---|
77 | f4 = f2 + f2;
|
---|
78 | d2 = d + d;
|
---|
79 | d4 = d2 + d2;
|
---|
80 | om2 = om + om;
|
---|
81 |
|
---|
82 | /* Series for the nutation */
|
---|
83 | dp = 0.0;
|
---|
84 | de = 0.0;
|
---|
85 |
|
---|
86 | dp += sin ( elp + d ); /* 106 */
|
---|
87 |
|
---|
88 | dp -= sin ( f2 + d4 + om2 ); /* 105 */
|
---|
89 |
|
---|
90 | dp += sin ( el2 + d2 ); /* 104 */
|
---|
91 |
|
---|
92 | dp -= sin ( el - f2 + d2 ); /* 103 */
|
---|
93 |
|
---|
94 | dp -= sin ( el + elp - d2 + om ); /* 102 */
|
---|
95 |
|
---|
96 | dp -= sin ( - elp + f2 + om ); /* 101 */
|
---|
97 |
|
---|
98 | dp -= sin ( el - f2 - d2 ); /* 100 */
|
---|
99 |
|
---|
100 | dp -= sin ( elp + d2 ); /* 99 */
|
---|
101 |
|
---|
102 | dp -= sin ( f2 - d + om2 ); /* 98 */
|
---|
103 |
|
---|
104 | dp -= sin ( - f2 + om ); /* 97 */
|
---|
105 |
|
---|
106 | dp += sin ( - el - elp + d2 + om ); /* 96 */
|
---|
107 |
|
---|
108 | dp += sin ( elp + f2 + om ); /* 95 */
|
---|
109 |
|
---|
110 | dp -= sin ( el + f2 - d2 ); /* 94 */
|
---|
111 |
|
---|
112 | dp += sin ( el3 + f2 - d2 + om2 ); /* 93 */
|
---|
113 |
|
---|
114 | dp += sin ( f4 - d2 + om2 ); /* 92 */
|
---|
115 |
|
---|
116 | dp -= sin ( el + d2 + om ); /* 91 */
|
---|
117 |
|
---|
118 | dp -= sin ( el2 + f2 + d2 + om2 ); /* 90 */
|
---|
119 |
|
---|
120 | a = el2 + f2 - d2 + om; /* 89 */
|
---|
121 | dp += sin ( a );
|
---|
122 | de -= cos ( a );
|
---|
123 |
|
---|
124 | dp += sin ( el - elp - d2 ); /* 88 */
|
---|
125 |
|
---|
126 | dp += sin ( - el + f4 + om2 ); /* 87 */
|
---|
127 |
|
---|
128 | a = - el2 + f2 + d4 + om2; /* 86 */
|
---|
129 | dp -= sin ( a );
|
---|
130 | de += cos ( a );
|
---|
131 |
|
---|
132 | a = el + f2 + d2 + om; /* 85 */
|
---|
133 | dp -= sin ( a );
|
---|
134 | de += cos ( a );
|
---|
135 |
|
---|
136 | a = el + elp + f2 - d2 + om2; /* 84 */
|
---|
137 | dp += sin ( a );
|
---|
138 | de -= cos ( a );
|
---|
139 |
|
---|
140 | dp -= sin ( el2 - d4 ); /* 83 */
|
---|
141 |
|
---|
142 | a = - el + f2 + d4 + om2; /* 82 */
|
---|
143 | dp -= 2.0 * sin ( a );
|
---|
144 | de += cos ( a );
|
---|
145 |
|
---|
146 | a = - el2 + f2 + d2 + om2; /* 81 */
|
---|
147 | dp += sin ( a );
|
---|
148 | de = de - cos ( a );
|
---|
149 |
|
---|
150 | dp -= sin ( el - d4 ); /* 80 */
|
---|
151 |
|
---|
152 | a = - el + om2; /* 79 */
|
---|
153 | dp += sin ( a );
|
---|
154 | de = de - cos ( a );
|
---|
155 |
|
---|
156 | a = f2 + d + om2; /* 78 */
|
---|
157 | dp += 2.0 * sin ( a );
|
---|
158 | de = de - cos ( a );
|
---|
159 |
|
---|
160 | dp += 2.0 * sin ( el3 ); /* 77 */
|
---|
161 |
|
---|
162 | a = el + om2; /* 76 */
|
---|
163 | dp -= 2.0 * sin ( a );
|
---|
164 | de += cos ( a );
|
---|
165 |
|
---|
166 | a = el2 + om; /* 75 */
|
---|
167 | dp += 2.0 * sin ( a );
|
---|
168 | de -= cos ( a );
|
---|
169 |
|
---|
170 | a = - el + f2 - d2 + om; /* 74 */
|
---|
171 | dp -= 2.0 * sin ( a );
|
---|
172 | de += cos ( a );
|
---|
173 |
|
---|
174 | a = el + elp + f2 + om2; /* 73 */
|
---|
175 | dp += 2.0 * sin ( a );
|
---|
176 | de = de - cos ( a );
|
---|
177 |
|
---|
178 | a = - elp + f2 + d2 + om2; /* 72 */
|
---|
179 | dp -= 3.0 * sin ( a );
|
---|
180 | de += cos ( a );
|
---|
181 |
|
---|
182 | a = el3 + f2 + om2; /* 71 */
|
---|
183 | dp -= 3.0 * sin ( a );
|
---|
184 | de += cos ( a );
|
---|
185 |
|
---|
186 | a = - el2 + om; /* 70 */
|
---|
187 | dp -= 2.0 * sin ( a );
|
---|
188 | de += cos ( a );
|
---|
189 |
|
---|
190 | a = - el - elp + f2 + d2 + om2; /* 69 */
|
---|
191 | dp -= 3.0 * sin ( a );
|
---|
192 | de += cos ( a );
|
---|
193 |
|
---|
194 | a = el - elp + f2 + om2; /* 68 */
|
---|
195 | dp -= 3.0 * sin ( a );
|
---|
196 | de += cos ( a );
|
---|
197 |
|
---|
198 | dp += 3.0 * sin ( el + f2 ); /* 67 */
|
---|
199 |
|
---|
200 | dp -= 3.0 * sin ( el + elp ); /* 66 */
|
---|
201 |
|
---|
202 | dp -= 4.0 * sin ( d ); /* 65 */
|
---|
203 |
|
---|
204 | dp += 4.0 * sin ( el - f2 ); /* 64 */
|
---|
205 |
|
---|
206 | dp -= 4.0 * sin ( elp - d2 ); /* 63 */
|
---|
207 |
|
---|
208 | a = el2 + f2 + om; /* 62 */
|
---|
209 | dp -= 5.0 * sin ( a );
|
---|
210 | de += 3.0 * cos ( a );
|
---|
211 |
|
---|
212 | dp += 5.0 * sin ( el - elp ); /* 61 */
|
---|
213 |
|
---|
214 | a = - d2 + om; /* 60 */
|
---|
215 | dp -= 5.0 * sin ( a );
|
---|
216 | de += 3.0 * cos ( a );
|
---|
217 |
|
---|
218 | a = el + f2 - d2 + om; /* 59 */
|
---|
219 | dp += 6.0 * sin ( a );
|
---|
220 | de -= 3.0 * cos ( a );
|
---|
221 |
|
---|
222 | a = f2 + d2 + om; /* 58 */
|
---|
223 | dp -= 7.0 * sin ( a );
|
---|
224 | de += 3.0 * cos ( a );
|
---|
225 |
|
---|
226 | a = d2 + om; /* 57 */
|
---|
227 | dp -= 6.0 * sin ( a );
|
---|
228 | de += 3.0 * cos ( a );
|
---|
229 |
|
---|
230 | a = el2 + f2 - d2 + om2; /* 56 */
|
---|
231 | dp += 6.0 * sin ( a );
|
---|
232 | de -= 3.0 * cos ( a );
|
---|
233 |
|
---|
234 | dp += 6.0 * sin ( el + d2); /* 55 */
|
---|
235 |
|
---|
236 | a = el + f2 + d2 + om2; /* 54 */
|
---|
237 | dp -= 8.0 * sin ( a );
|
---|
238 | de += 3.0 * cos ( a );
|
---|
239 |
|
---|
240 | a = - elp + f2 + om2; /* 53 */
|
---|
241 | dp -= 7.0 * sin ( a );
|
---|
242 | de += 3.0 * cos ( a );
|
---|
243 |
|
---|
244 | a = elp + f2 + om2; /* 52 */
|
---|
245 | dp += 7.0 * sin ( a );
|
---|
246 | de -= 3.0 * cos ( a );
|
---|
247 |
|
---|
248 | dp -= 7.0 * sin ( el + elp - d2 ); /* 51 */
|
---|
249 |
|
---|
250 | a = - el + f2 + d2 + om; /* 50 */
|
---|
251 | dp -= 10.0 * sin ( a );
|
---|
252 | de += 5.0 * cos ( a );
|
---|
253 |
|
---|
254 | a = el - d2 + om; /* 49 */
|
---|
255 | dp -= 13.0 * sin ( a );
|
---|
256 | de += 7.0 * cos ( a );
|
---|
257 |
|
---|
258 | a = - el + d2 + om; /* 48 */
|
---|
259 | dp += 16.0 * sin ( a );
|
---|
260 | de -= 8.0 * cos ( a );
|
---|
261 |
|
---|
262 | a = - el + f2 + om; /* 47 */
|
---|
263 | dp += 21.0 * sin ( a );
|
---|
264 | de -= 10.0 * cos ( a );
|
---|
265 |
|
---|
266 | dp += 26.0 * sin ( f2 ); /* 46 */
|
---|
267 | de -= cos( f2 );
|
---|
268 |
|
---|
269 | a = el2 + f2 + om2; /* 45 */
|
---|
270 | dp -= 31.0 * sin ( a );
|
---|
271 | de += 13.0 * cos ( a );
|
---|
272 |
|
---|
273 | a = el + f2 - d2 + om2; /* 44 */
|
---|
274 | dp += 29.0 * sin ( a );
|
---|
275 | de -= 12.0 * cos ( a );
|
---|
276 |
|
---|
277 | dp += 29.0 * sin ( el2 ); /* 43 */
|
---|
278 | de -= cos( el2 );
|
---|
279 |
|
---|
280 | a = f2 + d2 + om2; /* 42 */
|
---|
281 | dp -= 38.0 * sin ( a );
|
---|
282 | de += 16.0 * cos ( a );
|
---|
283 |
|
---|
284 | a = el + f2 + om; /* 41 */
|
---|
285 | dp -= 51.0 * sin ( a );
|
---|
286 | de += 27.0 * cos ( a );
|
---|
287 |
|
---|
288 | a = - el + f2 + d2 + om2; /* 40 */
|
---|
289 | dp -= 59.0 * sin ( a );
|
---|
290 | de += 26.0 * cos ( a );
|
---|
291 |
|
---|
292 | a = - el + om; /* 39 */
|
---|
293 | dp += ( - 58.0 - 0.1 * t ) * sin ( a );
|
---|
294 | de += 32.0 * cos ( a );
|
---|
295 |
|
---|
296 | a = el + om; /* 38 */
|
---|
297 | dp += ( 63.0 + 0.1 * t ) * sin ( a );
|
---|
298 | de -= 33.0 * cos ( a );
|
---|
299 |
|
---|
300 | dp += 63.0 * sin ( d2 ); /* 37 */
|
---|
301 | de -= 2.0 * cos( d2 );
|
---|
302 |
|
---|
303 | a = - el + f2 + om2; /* 36 */
|
---|
304 | dp += 123.0 * sin ( a );
|
---|
305 | de -= 53.0 * cos ( a );
|
---|
306 |
|
---|
307 | a = el - d2; /* 35 */
|
---|
308 | dp -= 158.0 * sin ( a );
|
---|
309 | de -= cos ( a );
|
---|
310 |
|
---|
311 | a = el + f2 + om2; /* 34 */
|
---|
312 | dp -= 301.0 * sin ( a );
|
---|
313 | de += ( 129.0 - 0.1 * t ) * cos ( a );
|
---|
314 |
|
---|
315 | a = f2 + om; /* 33 */
|
---|
316 | dp += ( - 386.0 - 0.4 * t ) * sin ( a );
|
---|
317 | de += 200.0 * cos ( a );
|
---|
318 |
|
---|
319 | dp += ( 712.0 + 0.1 * t ) * sin ( el ); /* 32 */
|
---|
320 | de -= 7.0 * cos( el );
|
---|
321 |
|
---|
322 | a = f2 + om2; /* 31 */
|
---|
323 | dp += ( -2274.0 - 0.2 * t ) * sin ( a );
|
---|
324 | de += ( 977.0 - 0.5 * t ) * cos ( a );
|
---|
325 |
|
---|
326 | dp -= sin ( elp + f2 - d2 ); /* 30 */
|
---|
327 |
|
---|
328 | dp += sin ( - el + d + om ); /* 29 */
|
---|
329 |
|
---|
330 | dp += sin ( elp + om2 ); /* 28 */
|
---|
331 |
|
---|
332 | dp -= sin ( elp - f2 + d2 ); /* 27 */
|
---|
333 |
|
---|
334 | dp += sin ( - f2 + d2 + om ); /* 26 */
|
---|
335 |
|
---|
336 | dp += sin ( el2 + elp - d2 ); /* 25 */
|
---|
337 |
|
---|
338 | dp -= 4.0 * sin ( el - d ); /* 24 */
|
---|
339 |
|
---|
340 | a = elp + f2 - d2 + om; /* 23 */
|
---|
341 | dp += 4.0 * sin ( a );
|
---|
342 | de -= 2.0 * cos ( a );
|
---|
343 |
|
---|
344 | a = el2 - d2 + om; /* 22 */
|
---|
345 | dp += 4.0 * sin ( a );
|
---|
346 | de -= 2.0 * cos ( a );
|
---|
347 |
|
---|
348 | a = - elp + f2 - d2 + om; /* 21 */
|
---|
349 | dp -= 5.0 * sin ( a );
|
---|
350 | de += 3.0 * cos ( a );
|
---|
351 |
|
---|
352 | a = - el2 + d2 + om; /* 20 */
|
---|
353 | dp -= 6.0 * sin ( a );
|
---|
354 | de += 3.0 * cos ( a );
|
---|
355 |
|
---|
356 | a = - elp + om; /* 19 */
|
---|
357 | dp -= 12.0 * sin ( a );
|
---|
358 | de += 6.0 * cos ( a );
|
---|
359 |
|
---|
360 | a = elp2 + f2 - d2 + om2; /* 18 */
|
---|
361 | dp += ( - 16.0 + 0.1 * t) * sin ( a );
|
---|
362 | de += 7.0 * cos ( a );
|
---|
363 |
|
---|
364 | a = elp + om; /* 17 */
|
---|
365 | dp -= 15.0 * sin ( a );
|
---|
366 | de += 9.0 * cos ( a );
|
---|
367 |
|
---|
368 | dp += ( 17.0 - 0.1 * t ) * sin ( elp2 ); /* 16 */
|
---|
369 |
|
---|
370 | dp -= 22.0 * sin ( f2 - d2 ); /* 15 */
|
---|
371 |
|
---|
372 | a = el2 - d2; /* 14 */
|
---|
373 | dp += 48.0 * sin ( a );
|
---|
374 | de += cos ( a );
|
---|
375 |
|
---|
376 | a = f2 - d2 + om; /* 13 */
|
---|
377 | dp += ( 129.0 + 0.1 * t ) * sin ( a );
|
---|
378 | de -= 70.0 * cos ( a );
|
---|
379 |
|
---|
380 | a = - elp + f2 - d2 + om2; /* 12 */
|
---|
381 | dp += ( 217.0 - 0.5 * t ) * sin ( a );
|
---|
382 | de += ( -95.0 + 0.3 * t ) * cos ( a );
|
---|
383 |
|
---|
384 | a = elp + f2 - d2 + om2; /* 11 */
|
---|
385 | dp += ( - 517.0 + 1.2 * t ) * sin ( a );
|
---|
386 | de += ( 224.0 - 0.6 * t ) * cos ( a );
|
---|
387 |
|
---|
388 | dp += ( 1426.0 - 3.4 * t ) * sin ( elp ); /* 10 */
|
---|
389 | de += ( 54.0 - 0.1 * t) * cos ( elp );
|
---|
390 |
|
---|
391 | a = f2 - d2 + om2; /* 9 */
|
---|
392 | dp += ( - 13187.0 - 1.6 * t ) * sin ( a );
|
---|
393 | de += ( 5736.0 - 3.1 * t ) * cos ( a );
|
---|
394 |
|
---|
395 | dp += sin ( el2 - f2 + om ); /* 8 */
|
---|
396 |
|
---|
397 | a = - elp2 + f2 - d2 + om; /* 7 */
|
---|
398 | dp -= 2.0 * sin ( a );
|
---|
399 | de += cos ( a );
|
---|
400 |
|
---|
401 | dp -= 3.0 * sin ( el - elp - d ); /* 6 */
|
---|
402 |
|
---|
403 | a = - el2 + f2 + om2; /* 5 */
|
---|
404 | dp -= 3.0 * sin ( a );
|
---|
405 | de += cos ( a );
|
---|
406 |
|
---|
407 | dp += 11.0 * sin ( el2 - f2 ); /* 4 */
|
---|
408 |
|
---|
409 | a = - el2 + f2 + om; /* 3 */
|
---|
410 | dp += 46.0 * sin ( a );
|
---|
411 | de -= 24.0 * cos ( a );
|
---|
412 |
|
---|
413 | dp += ( 2062.0 + 0.2 * t ) * sin ( om2 ); /* 2 */
|
---|
414 | de += ( - 895.0 + 0.5 * t ) * cos ( om2 );
|
---|
415 |
|
---|
416 | dp += ( - 171996.0 - 174.2 * t) * sin ( om ); /* 1 */
|
---|
417 | de += ( 92025.0 + 8.9 * t ) * cos ( om );
|
---|
418 |
|
---|
419 | /* Convert results to radians */
|
---|
420 | *dpsi = dp * U2R;
|
---|
421 | *deps = de * U2R;
|
---|
422 |
|
---|
423 | /* Mean obliquity */
|
---|
424 | *eps0 = DAS2R * ( 84381.448 +
|
---|
425 | ( - 46.8150 +
|
---|
426 | ( - 0.00059 + 0.001813 * t ) * t ) * t );
|
---|
427 | }
|
---|