|
1 | 1 | # This file is a part of AstroLib.jl. License is MIT "Expat".
|
2 | 2 |
|
3 |
| -const dcfel = [ 1.7400353 6.2833195099091e2 5.2796e-6 ; |
4 |
| - 6.2565836 6.2830194572674e2 -2.6180e-6 ; |
5 |
| - 4.7199666 8.3997091449254e3 -1.9780e-5 ; |
6 |
| - 0.19636505 8.4334662911720e3 -5.6044e-5 ; |
7 |
| - 4.1547339 5.2993466764997e1 5.8845e-6 ; |
8 |
| - 4.6524223 2.1354275911213e1 5.6797e-6 ; |
9 |
| - 4.2620486 7.5025342197656 5.5317e-6 ; |
10 |
| - 1.4740694 3.8377331909193 5.6093e-6 ] |
11 |
| - |
12 |
| -const ccsel = [ 1.675104e-2 -4.179579e-5 -1.260516e-7 ; |
13 |
| - 2.220221e-1 2.809917e-2 1.852532e-5 ; |
14 |
| - 1.589963 3.418075e-2 1.430200e-5 ; |
15 |
| - 2.994089 2.590824e-2 4.155840e-6 ; |
16 |
| - 8.155457e-1 2.486352e-2 6.836840e-6 ; |
17 |
| - 1.735614 1.763719e-2 6.370440e-6 ; |
18 |
| - 1.968564 1.524020e-2 -2.517152e-6 ; |
19 |
| - 1.282417 8.703393e-3 2.289292e-5 ; |
20 |
| - 2.28082 1.918010e-2 4.484520e-6 ; |
21 |
| - 4.833473e-2 1.641773e-4 -4.654200e-7 ; |
22 |
| - 5.589232e-2 -3.455092e-4 -7.388560e-7 ; |
23 |
| - 4.634443e-2 -2.658234e-5 7.757000e-8 ; |
24 |
| - 8.997041e-3 6.329728e-6 -1.939256e-9 ; |
25 |
| - 2.284178e-2 -9.941590e-5 6.787400e-8 ; |
26 |
| - 4.350267e-2 -6.839749e-5 -2.714956e-7 ; |
27 |
| - 1.348204e-2 1.091504e-5 6.903760e-7 ; |
28 |
| - 3.106570e-2 -1.665665e-4 -1.590188e-7 ] |
29 |
| - |
30 |
| -const dcargs = [ 5.0974222 -7.8604195454652e2 ; |
31 |
| - 3.9584962 -5.7533848094674e2 ; |
32 |
| - 1.633807 -1.1506769618935e3 ; |
33 |
| - 2.5487111 -3.9302097727326e2 ; |
34 |
| - 4.9255514 -5.8849265665348e2 ; |
35 |
| - 1.3363463 -5.5076098609303e2 ; |
36 |
| - 1.6072053 -5.2237501616674e2 ; |
37 |
| - 1.362948 -1.1790629318198e3 ; |
38 |
| - 5.5657014 -1.0977134971135e3 ; |
39 |
| - 5.0708205 -1.5774000881978e2 ; |
40 |
| - 3.9318944 5.296346478e1 ; |
41 |
| - 4.8989497 3.9809289073258e1 ; |
42 |
| - 1.3097446 7.7540959633708e1 ; |
43 |
| - 3.5147141 7.9618578146517e1 ; |
44 |
| - 3.5413158 -5.4868336758022e2 ] |
45 |
| - |
46 |
| -const ccamps = [-2.279594e-5 1.407414e-5 8.273188e-6 1.340565e-5 -2.490817e-7 ; |
47 |
| - -3.494537e-5 2.860401e-7 1.289448e-7 1.627237e-5 -1.823138e-7 ; |
48 |
| - 6.593466e-7 1.322572e-5 9.258695e-6 -4.674248e-7 -3.646275e-7 ; |
49 |
| - 1.140767e-5 -2.049792e-5 -4.747930e-6 -2.638763e-6 -1.245408e-7 ; |
50 |
| - 9.516893e-6 -2.748894e-6 -1.319381e-6 -4.549908e-6 -1.864821e-7 ; |
51 |
| - 7.310990e-6 -1.924710e-6 -8.772849e-7 -3.334143e-6 -1.745256e-7 ; |
52 |
| - -2.603449e-6 7.359472e-6 3.168357e-6 1.119056e-6 -1.655307e-7 ; |
53 |
| - -3.228859e-6 1.308997e-7 1.013137e-7 2.403899e-6 -3.736225e-7 ; |
54 |
| - 3.442177e-7 2.671323e-6 1.832858e-6 -2.394688e-7 -3.478444e-7 ; |
55 |
| - 8.702406e-6 -8.421214e-6 -1.372341e-6 -1.455234e-6 -4.998479e-8 ; |
56 |
| - -1.488378e-6 -1.251789e-5 5.226868e-7 -2.049301e-7 0 ; |
57 |
| - -8.043059e-6 -2.991300e-6 1.473654e-7 -3.154542e-7 0 ; |
58 |
| - 3.699128e-6 -3.316126e-6 2.901257e-7 3.407826e-7 0 ; |
59 |
| - 2.550120e-6 -1.241123e-6 9.901116e-8 2.210482e-7 0 ; |
60 |
| - -6.351059e-7 2.341650e-6 1.061492e-6 2.878231e-7 0 ] |
61 |
| - |
62 |
| -const ccsec = [ 1.289600e-6 5.550147e-1 2.076942 ; |
63 |
| - 3.102810e-5 4.035027 3.525565e-1 ; |
64 |
| - 9.124190e-6 9.990265e-1 2.622706 ; |
65 |
| - 9.793240e-7 5.508259 1.559103e01 ] |
66 |
| - |
67 |
| -const dcargm = [5.1679830 8.3286911095275e3 ; |
68 |
| - 5.4913150 -7.2140632838100e3 ; |
69 |
| - 5.9598530 1.5542754389685e4 ] |
70 |
| - |
71 |
| -const ccampm = [ 1.097594e-1 2.896773e-7 5.450474e-2 1.438491E-7 ; |
72 |
| - -2.223581e-2 5.083103e-8 1.002548e-2 -2.291823E-8 ; |
73 |
| - 1.148966e-2 5.658888e-8 8.249439e-3 4.063015E-8 ] |
74 |
| - |
75 |
| -const ccpamv = [8.326827e-11, 1.843484e-11, 1.988712e-12, 1.881276e-12] |
| 3 | +const dcfel = @SMatrix [ 1.7400353 6.2833195099091e2 5.2796e-6 ; |
| 4 | + 6.2565836 6.2830194572674e2 -2.6180e-6 ; |
| 5 | + 4.7199666 8.3997091449254e3 -1.9780e-5 ; |
| 6 | + 0.19636505 8.4334662911720e3 -5.6044e-5 ; |
| 7 | + 4.1547339 5.2993466764997e1 5.8845e-6 ; |
| 8 | + 4.6524223 2.1354275911213e1 5.6797e-6 ; |
| 9 | + 4.2620486 7.5025342197656 5.5317e-6 ; |
| 10 | + 1.4740694 3.8377331909193 5.6093e-6 ] |
| 11 | + |
| 12 | +const ccsel = @SMatrix [ 1.675104e-2 -4.179579e-5 -1.260516e-7 ; |
| 13 | + 2.220221e-1 2.809917e-2 1.852532e-5 ; |
| 14 | + 1.589963 3.418075e-2 1.430200e-5 ; |
| 15 | + 2.994089 2.590824e-2 4.155840e-6 ; |
| 16 | + 8.155457e-1 2.486352e-2 6.836840e-6 ; |
| 17 | + 1.735614 1.763719e-2 6.370440e-6 ; |
| 18 | + 1.968564 1.524020e-2 -2.517152e-6 ; |
| 19 | + 1.282417 8.703393e-3 2.289292e-5 ; |
| 20 | + 2.28082 1.918010e-2 4.484520e-6 ; |
| 21 | + 4.833473e-2 1.641773e-4 -4.654200e-7 ; |
| 22 | + 5.589232e-2 -3.455092e-4 -7.388560e-7 ; |
| 23 | + 4.634443e-2 -2.658234e-5 7.757000e-8 ; |
| 24 | + 8.997041e-3 6.329728e-6 -1.939256e-9 ; |
| 25 | + 2.284178e-2 -9.941590e-5 6.787400e-8 ; |
| 26 | + 4.350267e-2 -6.839749e-5 -2.714956e-7 ; |
| 27 | + 1.348204e-2 1.091504e-5 6.903760e-7 ; |
| 28 | + 3.106570e-2 -1.665665e-4 -1.590188e-7 ] |
| 29 | + |
| 30 | +const dcargs = @SMatrix [ 5.0974222 -7.8604195454652e2 ; |
| 31 | + 3.9584962 -5.7533848094674e2 ; |
| 32 | + 1.633807 -1.1506769618935e3 ; |
| 33 | + 2.5487111 -3.9302097727326e2 ; |
| 34 | + 4.9255514 -5.8849265665348e2 ; |
| 35 | + 1.3363463 -5.5076098609303e2 ; |
| 36 | + 1.6072053 -5.2237501616674e2 ; |
| 37 | + 1.362948 -1.1790629318198e3 ; |
| 38 | + 5.5657014 -1.0977134971135e3 ; |
| 39 | + 5.0708205 -1.5774000881978e2 ; |
| 40 | + 3.9318944 5.296346478e1 ; |
| 41 | + 4.8989497 3.9809289073258e1 ; |
| 42 | + 1.3097446 7.7540959633708e1 ; |
| 43 | + 3.5147141 7.9618578146517e1 ; |
| 44 | + 3.5413158 -5.4868336758022e2 ] |
| 45 | + |
| 46 | +const ccamps = @SMatrix [-2.279594e-5 1.407414e-5 8.273188e-6 1.340565e-5 -2.490817e-7 ; |
| 47 | + -3.494537e-5 2.860401e-7 1.289448e-7 1.627237e-5 -1.823138e-7 ; |
| 48 | + 6.593466e-7 1.322572e-5 9.258695e-6 -4.674248e-7 -3.646275e-7 ; |
| 49 | + 1.140767e-5 -2.049792e-5 -4.747930e-6 -2.638763e-6 -1.245408e-7 ; |
| 50 | + 9.516893e-6 -2.748894e-6 -1.319381e-6 -4.549908e-6 -1.864821e-7 ; |
| 51 | + 7.310990e-6 -1.924710e-6 -8.772849e-7 -3.334143e-6 -1.745256e-7 ; |
| 52 | + -2.603449e-6 7.359472e-6 3.168357e-6 1.119056e-6 -1.655307e-7 ; |
| 53 | + -3.228859e-6 1.308997e-7 1.013137e-7 2.403899e-6 -3.736225e-7 ; |
| 54 | + 3.442177e-7 2.671323e-6 1.832858e-6 -2.394688e-7 -3.478444e-7 ; |
| 55 | + 8.702406e-6 -8.421214e-6 -1.372341e-6 -1.455234e-6 -4.998479e-8 ; |
| 56 | + -1.488378e-6 -1.251789e-5 5.226868e-7 -2.049301e-7 0 ; |
| 57 | + -8.043059e-6 -2.991300e-6 1.473654e-7 -3.154542e-7 0 ; |
| 58 | + 3.699128e-6 -3.316126e-6 2.901257e-7 3.407826e-7 0 ; |
| 59 | + 2.550120e-6 -1.241123e-6 9.901116e-8 2.210482e-7 0 ; |
| 60 | + -6.351059e-7 2.341650e-6 1.061492e-6 2.878231e-7 0 ] |
| 61 | + |
| 62 | +const ccsec = @SMatrix [ 1.289600e-6 5.550147e-1 2.076942 ; |
| 63 | + 3.102810e-5 4.035027 3.525565e-1 ; |
| 64 | + 9.124190e-6 9.990265e-1 2.622706 ; |
| 65 | + 9.793240e-7 5.508259 1.559103e01 ] |
| 66 | + |
| 67 | +const dcargm = @SMatrix [5.1679830 8.3286911095275e3 ; |
| 68 | + 5.4913150 -7.2140632838100e3 ; |
| 69 | + 5.9598530 1.5542754389685e4 ] |
| 70 | + |
| 71 | +const ccampm = @SMatrix [ 1.097594e-1 2.896773e-7 5.450474e-2 1.438491E-7 ; |
| 72 | + -2.223581e-2 5.083103e-8 1.002548e-2 -2.291823E-8 ; |
| 73 | + 1.148966e-2 5.658888e-8 8.249439e-3 4.063015E-8 ] |
| 74 | + |
| 75 | +const ccpamv = @SVector [8.326827e-11, 1.843484e-11, 1.988712e-12, 1.881276e-12] |
76 | 76 |
|
77 | 77 | function _baryvel(dje::T) where {T<:AbstractFloat}
|
78 | 78 | # Time arguments.
|
79 | 79 | dt = (dje - 2415020) / JULIANCENTURY
|
80 |
| - tvec = [1; dt; dt*dt] |
| 80 | + tvec = SVector(1, dt, dt * dt) |
81 | 81 |
|
82 | 82 | temp = rem.(dcfel * tvec, 2 * T(pi))
|
83 |
| - dml, g = temp[1:2] |
84 |
| - forbel = temp[2:8] |
85 |
| - deps = rem.(dot(tvec, [0.4093198; -2.271110e-4; -2.860401e-8]), 2 * T(pi)) |
| 83 | + dml, g = @view temp[1:2] |
| 84 | + forbel = @view temp[2:8] |
| 85 | + deps = rem.(dot(tvec, SVector(0.4093198, -2.271110e-4, -2.860401e-8)), 2 * T(pi)) |
86 | 86 | sorbel = rem.(ccsel * tvec, 2 * T(pi))
|
87 | 87 | e = sorbel[1]
|
88 | 88 |
|
89 | 89 | # Secular perturbations in longitude.
|
90 |
| - sn = sin.(rem.(ccsec[:,2:3] * tvec[1:2], 2 * T(pi))) |
| 90 | + sn = sin.(rem.(@view(ccsec[:,2:3]) * @view(tvec[1:2]), 2 * T(pi))) |
91 | 91 |
|
92 | 92 | # Periodic perturbations of the emb (earth-moon barycenter).
|
93 |
| - pertl = dot(ccsec[:,1], sn) + dt * sn[3] * -7.757020e-8 |
| 93 | + pertl = dot(@view(ccsec[:,1]), sn) + dt * sn[3] * -7.757020e-8 |
94 | 94 | pertr = zero(T)
|
95 | 95 | pertld = zero(T)
|
96 | 96 | pertrd = zero(T)
|
@@ -166,7 +166,7 @@ function _baryvel(dje::T) where {T<:AbstractFloat}
|
166 | 166 | dyabd = dcosep * dybd - dsinep * dzbd
|
167 | 167 | dzabd = dsinep * dybd + dcosep * dzbd
|
168 | 168 |
|
169 |
| - return [dxhd, dyahd, dzahd], [dxbd, dyabd, dzabd] |
| 169 | + return SVector(dxhd, dyahd, dzahd), SVector(dxbd, dyabd, dzabd) |
170 | 170 | end
|
171 | 171 |
|
172 | 172 | """
|
@@ -216,17 +216,17 @@ baryvel(dje::Real) = _baryvel(float(dje))
|
216 | 216 |
|
217 | 217 | function baryvel(dje::AbstractFloat)
|
218 | 218 | v1, v2 = _baryvel(dje)
|
219 |
| - dvelh = AU / 1000 * v1 |
220 |
| - dvelb = AU / 1000 * v2 |
| 219 | + dvelh = AU ./ 1000 .* v1 |
| 220 | + dvelb = AU ./ 1000 .* v2 |
221 | 221 | return dvelh, dvelb
|
222 | 222 | end
|
223 | 223 |
|
224 | 224 | function baryvel(dje::T, deq::T) where {T<:AbstractFloat}
|
225 | 225 | v1, v2 = _baryvel(dje)
|
226 | 226 | deqdat = ((dje - 2415020.313) / 365.24219572) + 1900
|
227 | 227 | prema = premat(deqdat, deq, FK4 = true)
|
228 |
| - dvelh = (prema * v1) * AU / 1000 |
229 |
| - dvelb = (prema * v2) * AU / 1000 |
| 228 | + dvelh = (prema * v1) .* AU ./ 1000 |
| 229 | + dvelb = (prema * v2) .* AU ./ 1000 |
230 | 230 | return dvelh, dvelb
|
231 | 231 | end
|
232 | 232 |
|
|
0 commit comments