1 /*
2  *  - - - - - - - - - - -
3  *   g a l _ n u t 0 0 a
4  *  - - - - - - - - - - -
5  *
6  *  This routine is part of the General Astrodynamics Library
7  *
8  *  Description:
9  *
10  *  Nutation, IAU 2000A model (MHB2000 luni-solar and planetary nutation
11  *  with free core nutation omitted).
12  *
13  *  This routine is an independent translation of a FORTRAN routine
14  *  that is part of IAU's SOFA software collection.
15  *
16  *  Status:
17  *
18  *     canonical model.
19  *
20  *  Given:
21  *
22  *     date1,date2         d        TT as a 2-part Julian Date (Note 1)
23  *
24  *  Returned:
25  *
26  *     *dpsi,*deps         d        nutation, luni-solar + planetary (Note 2)
27  *
28  *  Notes:
29  *
30  *  1) The TT date date1+date2 is a Julian Date, apportioned in any
31  *     convenient way between the two arguments.  For example,
32  *     JD(TT)=2450123.7 could be expressed in any of these ways,
33  *     among others:
34  *
35  *            date1         date2
36  *
37  *         2450123.7          0.0        (JD method)
38  *         2451545.0      -1421.3        (J2000 method)
39  *         2400000.5      50123.2        (MJD method)
40  *         2450123.5          0.2        (date & time method)
41  *
42  *     The JD method is the most natural and convenient to use in
43  *     cases where the loss of several decimal digits of resolution
44  *     is acceptable.  The J2000 method is best matched to the way
45  *     the argument is handled internally and will deliver the
46  *     optimum resolution.  The MJD method and the date & time methods
47  *     are both good compromises between resolution and convenience.
48  *
49  *  2) The nutation components in longitude and obliquity are in radians
50  *     and with respect to the equinox and ecliptic of date.  The
51  *     obliquity at J2000 is assumed to be the Lieske et al. (1977) value
52  *     of 84381.448 arcsec.
53  *
54  *     Both the luni-solar and planetary nutations are included.  The
55  *     latter are due to direct planetary nutations and the perturbations
56  *     of the lunar and terrestrial orbits.
57  *
58  *  3) The routine computes the MHB2000 nutation series with the
59  *     associated corrections for planetary nutations.  It is an
60  *     implementation of the nutation part of the IAU 2000A precession-
61  *     nutation model, formally adopted by the IAU General Assembly in
62  *     2000, namely MHB2000 (Mathews et al. 2002), but with the free core
63  *     nutation (FCN - see Note 4) omitted.
64  *
65  *  4) The full MHB2000 model also contains contributions to the
66  *     nutations in longitude and obliquity due to the free-excitation of
67  *     the free-core-nutation during the period 1979-2000.  These FCN
68  *     terms, which are time-dependent and unpredictable, are NOT
69  *     included in the present routine and, if required, must be
70  *     independently computed.  With the FCN corrections included, the
71  *     present routine delivers a pole which is at current epochs
72  *     accurate to a few hundred microarcseconds.  The omission of FCN
73  *     introduces further errors of about that size.
74  *
75  *  5) The present routine provides classical nutation.  The MHB2000
76  *     algorithm, from which it is adapted, deals also with (i) the
77  *     offsets between the GCRS and mean poles and (ii) the adjustments
78  *     in longitude and obliquity due to the changed precession rates.
79  *     These additional functions, namely frame bias and precession
80  *     adjustments, are supported by the SOFA routines gal_bi00 and
81  *     gal_pr00.
82  *
83  *  6) The MHB2000 algorithm also provides "total" nutations, comprising
84  *     the arithmetic sum of the frame bias, precession adjustments,
85  *     luni-solar nutation and planetary nutation.  These total nutations
86  *     can be used in combination with an existing IAU 1976 precession
87  *     implementation, such as gal_pmat76, to deliver GCRS-to-true
88  *     predictions of sub-mas accuracy at current epochs.  However, there
89  *     are three shortcomings in the MHB2000 model that must be taken
90  *     into account if more accurate or definitive results are required
91  *     (see Wallace 2002):
92  *
93  *       (i) The MHB2000 total nutations are simply arithmetic sums,
94  *           yet in reality the various components are successive Euler
95  *           rotations.  This slight lack of rigor leads to cross terms
96  *           that exceed 1 mas after a century.  The rigorous procedure
97  *           is to form the GCRS-to-true rotation matrix by applying the
98  *           bias, precession and nutation in that order.
99  *
100  *      (ii) Although the precession adjustments are stated to be with
101  *           respect to Lieske et al. (1977), the MHB2000 model does
102  *           not specify which set of Euler angles are to be used and
103  *           how the adjustments are to be applied.  The most literal and
104  *           straightforward procedure is to adopt the 4-rotation
105  *           epsilon_0, psi_A, omega_A, xi_A option, and to add dpsipr to
106  *           psi_A and depspr to both omega_A and eps_A.
107  *
108  *     (iii) The MHB2000 model predates the determination by Chapront
109  *           et al. (2002) of a 14.6 mas displacement between the J2000
110  *           mean equinox and the origin of the ICRS frame.  It should,
111  *           however, be noted that neglecting this displacement when
112  *           calculating star coordinates does not lead to a 14.6 mas
113  *           change in right ascension, only a small second-order
114  *           distortion in the pattern of the precession-nutation effect.
115  *
116  *     For these reasons, the SOFA routines do not generate the "total
117  *     nutations" directly, though they can of course easily be generated
118  *     by calling gal_bi00, gal_pr00 and the present routine and adding
119  *     the results.
120  *
121  *  Called:
122  *
123  *     gal_fal03          mean anomaly of the Moon
124  *     gal_faf03          mean argument of the latitude of the Moon
125  *     gal_faom03         mean longitude of the Moon's ascending node
126  *     gal_fame03         mean longitude of Mercury
127  *     gal_fave03         mean longitude of Venus
128  *     gal_fae03          mean longitude of Earth
129  *     gal_fama03         mean longitude of Mars
130  *     gal_faju03         mean longitude of Jupiter
131  *     gal_fasa03         mean longitude of Saturn
132  *     gal_faur03         mean longitude of Uranus
133  *     gal_fapa03         general accumulated precession in longitude
134  *
135  *  References:
136  *
137  *     Chapront, J., Chapront-Touze, M. & Francou, G. 2002,
138  *     Astron.Astrophys. 387, 700
139  *
140  *     Lieske, J.H., Lederle, T., Fricke, W. & Morando, B. 1977,
141  *     Astron.Astrophys. 58, 1-16
142  *
143  *     Mathews, P.M., Herring, T.A., Buffet, B.A. 2002, J.Geophys.Res.
144  *     107, B4.  The MHB_2000 code itself was obtained on 9th September
145  *     2002 from ftp//maia.usno.navy.mil/conv2000/chapter5/IAU2000A.
146  *
147  *     Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M.,
148  *     Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683
149  *
150  *     Souchay, J., Loysel, B., Kinoshita, H., Folgueira, M. 1999,
151  *     Astron.Astrophys.Supp.Ser. 135, 111
152  *
153  *     Wallace, P.T., "Software for Implementing the IAU 2000
154  *     Resolutions", in IERS Workshop 5.1 (2002)
155  *
156  *  This revision:
157  *
158  *     2007 February 9 ( c version 2008 January 19 )
159  *
160  *
161  *  Copyright (C) 2008 Paul C. L. Willmott. See notes at end.
162  *
163  *-----------------------------------------------------------------------
164  */
165 
166 #ifndef _GAL_NUT00A_H_
167 #define _GAL_NUT00A_H_ 1
168 
169 #undef __BEGIN_DECLS
170 #undef __END_DECLS
171 #ifdef __cplusplus
172 #define __BEGIN_DECLS extern "C" {
173 #define __END_DECLS }
174 #else
175 #define __BEGIN_DECLS /* empty */
176 #define __END_DECLS   /* empty */
177 #endif
178 
179 __BEGIN_DECLS
180 
181 void
182 gal_nut00a
183  (
184     double date1,
185     double date2,
186     double *dpsi,
187     double *deps
188  ) ;
189 
190 __END_DECLS
191 
192 #endif /* !_GAL_NUT00A_H_ */
193 
194 /*
195  *  gal - General Astrodynamics Library
196  *  Copyright (C) 2008 Paul C. L. Willmott
197  *
198  *  This program is free software; you can redistribute it and/or modify
199  *  it under the terms of the GNU General Public License as published by
200  *  the Free Software Foundation; either version 2 of the License, or
201  *  (at your option) any later version.
202  *
203  *  This program is distributed in the hope that it will be useful,
204  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
205  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
206  *  GNU General Public License for more details.
207  *
208  *  You should have received a copy of the GNU General Public License along
209  *  with this program; if not, write to the Free Software Foundation, Inc.,
210  *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
211  *
212  *  Contact:
213  *
214  *  Paul Willmott
215  *  vp9mu@amsat.org
216  */
217