FACT++  1.0
prec76.c
Go to the documentation of this file.
1 #include "erfa.h"
2 
3 void eraPrec76(double date01, double date02, double date11, double date12,
4  double *zeta, double *z, double *theta)
5 /*
6 ** - - - - - - - - - -
7 ** e r a P r e c 7 6
8 ** - - - - - - - - - -
9 **
10 ** IAU 1976 precession model.
11 **
12 ** This function forms the three Euler angles which implement general
13 ** precession between two dates, using the IAU 1976 model (as for the
14 ** FK5 catalog).
15 **
16 ** Given:
17 ** date01,date02 double TDB starting date (Note 1)
18 ** date11,date12 double TDB ending date (Note 1)
19 **
20 ** Returned:
21 ** zeta double 1st rotation: radians cw around z
22 ** z double 3rd rotation: radians cw around z
23 ** theta double 2nd rotation: radians ccw around y
24 **
25 ** Notes:
26 **
27 ** 1) The dates date01+date02 and date11+date12 are Julian Dates,
28 ** apportioned in any convenient way between the arguments daten1
29 ** and daten2. For example, JD(TDB)=2450123.7 could be expressed in
30 ** any of these ways, among others:
31 **
32 ** daten1 daten2
33 **
34 ** 2450123.7 0.0 (JD method)
35 ** 2451545.0 -1421.3 (J2000 method)
36 ** 2400000.5 50123.2 (MJD method)
37 ** 2450123.5 0.2 (date & time method)
38 **
39 ** The JD method is the most natural and convenient to use in cases
40 ** where the loss of several decimal digits of resolution is
41 ** acceptable. The J2000 method is best matched to the way the
42 ** argument is handled internally and will deliver the optimum
43 ** optimum resolution. The MJD method and the date & time methods
44 ** are both good compromises between resolution and convenience.
45 ** The two dates may be expressed using different methods, but at
46 ** the risk of losing some resolution.
47 **
48 ** 2) The accumulated precession angles zeta, z, theta are expressed
49 ** through canonical polynomials which are valid only for a limited
50 ** time span. In addition, the IAU 1976 precession rate is known to
51 ** be imperfect. The absolute accuracy of the present formulation
52 ** is better than 0.1 arcsec from 1960AD to 2040AD, better than
53 ** 1 arcsec from 1640AD to 2360AD, and remains below 3 arcsec for
54 ** the whole of the period 500BC to 3000AD. The errors exceed
55 ** 10 arcsec outside the range 1200BC to 3900AD, exceed 100 arcsec
56 ** outside 4200BC to 5600AD and exceed 1000 arcsec outside 6800BC to
57 ** 8200AD.
58 **
59 ** 3) The three angles are returned in the conventional order, which
60 ** is not the same as the order of the corresponding Euler
61 ** rotations. The precession matrix is
62 ** R_3(-z) x R_2(+theta) x R_3(-zeta).
63 **
64 ** Reference:
65 **
66 ** Lieske, J.H., 1979, Astron.Astrophys. 73, 282, equations
67 ** (6) & (7), p283.
68 **
69 ** Copyright (C) 2013-2015, NumFOCUS Foundation.
70 ** Derived, with permission, from the SOFA library. See notes at end of file.
71 */
72 {
73  double t0, t, tas2r, w;
74 
75 /* Interval between fundamental epoch J2000.0 and start date (JC). */
76  t0 = ((date01 - ERFA_DJ00) + date02) / ERFA_DJC;
77 
78 /* Interval over which precession required (JC). */
79  t = ((date11 - date01) + (date12 - date02)) / ERFA_DJC;
80 
81 /* Euler angles. */
82  tas2r = t * ERFA_DAS2R;
83  w = 2306.2181 + (1.39656 - 0.000139 * t0) * t0;
84 
85  *zeta = (w + ((0.30188 - 0.000344 * t0) + 0.017998 * t) * t) * tas2r;
86 
87  *z = (w + ((1.09468 + 0.000066 * t0) + 0.018203 * t) * t) * tas2r;
88 
89  *theta = ((2004.3109 + (-0.85330 - 0.000217 * t0) * t0)
90  + ((-0.42665 - 0.000217 * t0) - 0.041833 * t) * t) * tas2r;
91 
92  return;
93 
94 }
95 /*----------------------------------------------------------------------
96 **
97 **
98 ** Copyright (C) 2013-2015, NumFOCUS Foundation.
99 ** All rights reserved.
100 **
101 ** This library is derived, with permission, from the International
102 ** Astronomical Union's "Standards of Fundamental Astronomy" library,
103 ** available from http://www.iausofa.org.
104 **
105 ** The ERFA version is intended to retain identical functionality to
106 ** the SOFA library, but made distinct through different function and
107 ** file names, as set out in the SOFA license conditions. The SOFA
108 ** original has a role as a reference standard for the IAU and IERS,
109 ** and consequently redistribution is permitted only in its unaltered
110 ** state. The ERFA version is not subject to this restriction and
111 ** therefore can be included in distributions which do not support the
112 ** concept of "read only" software.
113 **
114 ** Although the intent is to replicate the SOFA API (other than
115 ** replacement of prefix names) and results (with the exception of
116 ** bugs; any that are discovered will be fixed), SOFA is not
117 ** responsible for any errors found in this version of the library.
118 **
119 ** If you wish to acknowledge the SOFA heritage, please acknowledge
120 ** that you are using a library derived from SOFA, rather than SOFA
121 ** itself.
122 **
123 **
124 ** TERMS AND CONDITIONS
125 **
126 ** Redistribution and use in source and binary forms, with or without
127 ** modification, are permitted provided that the following conditions
128 ** are met:
129 **
130 ** 1 Redistributions of source code must retain the above copyright
131 ** notice, this list of conditions and the following disclaimer.
132 **
133 ** 2 Redistributions in binary form must reproduce the above copyright
134 ** notice, this list of conditions and the following disclaimer in
135 ** the documentation and/or other materials provided with the
136 ** distribution.
137 **
138 ** 3 Neither the name of the Standards Of Fundamental Astronomy Board,
139 ** the International Astronomical Union nor the names of its
140 ** contributors may be used to endorse or promote products derived
141 ** from this software without specific prior written permission.
142 **
143 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
144 ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
145 ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
146 ** FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
147 ** COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
148 ** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
149 ** BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
150 ** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
151 ** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
152 ** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
153 ** ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
154 ** POSSIBILITY OF SUCH DAMAGE.
155 **
156 */
#define ERFA_DJ00
Definition: erfam.h:87
#define ERFA_DAS2R
Definition: erfam.h:60
void eraPrec76(double date01, double date02, double date11, double date12, double *zeta, double *z, double *theta)
Definition: prec76.c:3
#define ERFA_DJC
Definition: erfam.h:81
TT t
Definition: test_client.c:26