File Coverage

erfasrc/src/aticq.c
Criterion Covered Total %
statement 0 42 0.0
branch 0 20 0.0
condition n/a
subroutine n/a
pod n/a
total 0 62 0.0


line stmt bran cond sub pod time code
1             #include "erfa.h"
2              
3 0           void eraAticq(double ri, double di, eraASTROM *astrom,
4             double *rc, double *dc)
5             /*
6             ** - - - - - - - - -
7             ** e r a A t i c q
8             ** - - - - - - - - -
9             **
10             ** Quick CIRS RA,Dec to ICRS astrometric place, given the star-
11             ** independent astrometry parameters.
12             **
13             ** Use of this function is appropriate when efficiency is important and
14             ** where many star positions are all to be transformed for one date.
15             ** The star-independent astrometry parameters can be obtained by
16             ** calling one of the functions eraApci[13], eraApcg[13], eraApco[13]
17             ** or eraApcs[13].
18             **
19             ** Given:
20             ** ri,di double CIRS RA,Dec (radians)
21             ** astrom eraASTROM* star-independent astrometry parameters:
22             ** pmt double PM time interval (SSB, Julian years)
23             ** eb double[3] SSB to observer (vector, au)
24             ** eh double[3] Sun to observer (unit vector)
25             ** em double distance from Sun to observer (au)
26             ** v double[3] barycentric observer velocity (vector, c)
27             ** bm1 double sqrt(1-|v|^2): reciprocal of Lorenz factor
28             ** bpn double[3][3] bias-precession-nutation matrix
29             ** along double longitude + s' (radians)
30             ** xpl double polar motion xp wrt local meridian (radians)
31             ** ypl double polar motion yp wrt local meridian (radians)
32             ** sphi double sine of geodetic latitude
33             ** cphi double cosine of geodetic latitude
34             ** diurab double magnitude of diurnal aberration vector
35             ** eral double "local" Earth rotation angle (radians)
36             ** refa double refraction constant A (radians)
37             ** refb double refraction constant B (radians)
38             **
39             ** Returned:
40             ** rc,dc double ICRS astrometric RA,Dec (radians)
41             **
42             ** Notes:
43             **
44             ** 1) Only the Sun is taken into account in the light deflection
45             ** correction.
46             **
47             ** 2) Iterative techniques are used for the aberration and light
48             ** deflection corrections so that the functions eraAtic13 (or
49             ** eraAticq) and eraAtci13 (or eraAtciq) are accurate inverses;
50             ** even at the edge of the Sun's disk the discrepancy is only about
51             ** 1 nanoarcsecond.
52             **
53             ** Called:
54             ** eraS2c spherical coordinates to unit vector
55             ** eraTrxp product of transpose of r-matrix and p-vector
56             ** eraZp zero p-vector
57             ** eraAb stellar aberration
58             ** eraLdsun light deflection by the Sun
59             ** eraC2s p-vector to spherical
60             ** eraAnp normalize angle into range +/- pi
61             **
62             ** Copyright (C) 2013-2020, NumFOCUS Foundation.
63             ** Derived, with permission, from the SOFA library. See notes at end of file.
64             */
65             {
66             int j, i;
67             double pi[3], ppr[3], pnat[3], pco[3], w, d[3], before[3], r2, r,
68             after[3];
69              
70              
71             /* CIRS RA,Dec to Cartesian. */
72 0           eraS2c(ri, di, pi);
73              
74             /* Bias-precession-nutation, giving GCRS proper direction. */
75 0           eraTrxp(astrom->bpn, pi, ppr);
76              
77             /* Aberration, giving GCRS natural direction. */
78 0           eraZp(d);
79 0 0         for (j = 0; j < 2; j++) {
80             r2 = 0.0;
81 0 0         for (i = 0; i < 3; i++) {
82 0           w = ppr[i] - d[i];
83 0           before[i] = w;
84 0           r2 += w*w;
85             }
86 0           r = sqrt(r2);
87 0 0         for (i = 0; i < 3; i++) {
88 0           before[i] /= r;
89             }
90 0           eraAb(before, astrom->v, astrom->em, astrom->bm1, after);
91             r2 = 0.0;
92 0 0         for (i = 0; i < 3; i++) {
93 0           d[i] = after[i] - before[i];
94 0           w = ppr[i] - d[i];
95 0           pnat[i] = w;
96 0           r2 += w*w;
97             }
98 0           r = sqrt(r2);
99 0 0         for (i = 0; i < 3; i++) {
100 0           pnat[i] /= r;
101             }
102             }
103              
104             /* Light deflection by the Sun, giving BCRS coordinate direction. */
105 0           eraZp(d);
106 0 0         for (j = 0; j < 5; j++) {
107             r2 = 0.0;
108 0 0         for (i = 0; i < 3; i++) {
109 0           w = pnat[i] - d[i];
110 0           before[i] = w;
111 0           r2 += w*w;
112             }
113 0           r = sqrt(r2);
114 0 0         for (i = 0; i < 3; i++) {
115 0           before[i] /= r;
116             }
117 0           eraLdsun(before, astrom->eh, astrom->em, after);
118             r2 = 0.0;
119 0 0         for (i = 0; i < 3; i++) {
120 0           d[i] = after[i] - before[i];
121 0           w = pnat[i] - d[i];
122 0           pco[i] = w;
123 0           r2 += w*w;
124             }
125 0           r = sqrt(r2);
126 0 0         for (i = 0; i < 3; i++) {
127 0           pco[i] /= r;
128             }
129             }
130              
131             /* ICRS astrometric RA,Dec. */
132 0           eraC2s(pco, &w, dc);
133 0           *rc = eraAnp(w);
134              
135             /* Finished. */
136              
137 0           }
138             /*----------------------------------------------------------------------
139             **
140             **
141             ** Copyright (C) 2013-2020, NumFOCUS Foundation.
142             ** All rights reserved.
143             **
144             ** This library is derived, with permission, from the International
145             ** Astronomical Union's "Standards of Fundamental Astronomy" library,
146             ** available from http://www.iausofa.org.
147             **
148             ** The ERFA version is intended to retain identical functionality to
149             ** the SOFA library, but made distinct through different function and
150             ** file names, as set out in the SOFA license conditions. The SOFA
151             ** original has a role as a reference standard for the IAU and IERS,
152             ** and consequently redistribution is permitted only in its unaltered
153             ** state. The ERFA version is not subject to this restriction and
154             ** therefore can be included in distributions which do not support the
155             ** concept of "read only" software.
156             **
157             ** Although the intent is to replicate the SOFA API (other than
158             ** replacement of prefix names) and results (with the exception of
159             ** bugs; any that are discovered will be fixed), SOFA is not
160             ** responsible for any errors found in this version of the library.
161             **
162             ** If you wish to acknowledge the SOFA heritage, please acknowledge
163             ** that you are using a library derived from SOFA, rather than SOFA
164             ** itself.
165             **
166             **
167             ** TERMS AND CONDITIONS
168             **
169             ** Redistribution and use in source and binary forms, with or without
170             ** modification, are permitted provided that the following conditions
171             ** are met:
172             **
173             ** 1 Redistributions of source code must retain the above copyright
174             ** notice, this list of conditions and the following disclaimer.
175             **
176             ** 2 Redistributions in binary form must reproduce the above copyright
177             ** notice, this list of conditions and the following disclaimer in
178             ** the documentation and/or other materials provided with the
179             ** distribution.
180             **
181             ** 3 Neither the name of the Standards Of Fundamental Astronomy Board,
182             ** the International Astronomical Union nor the names of its
183             ** contributors may be used to endorse or promote products derived
184             ** from this software without specific prior written permission.
185             **
186             ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
187             ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
188             ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
189             ** FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
190             ** COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
191             ** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
192             ** BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
193             ** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
194             ** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
195             ** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
196             ** ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
197             ** POSSIBILITY OF SUCH DAMAGE.
198             **
199             */