|
2 | 2 | ******************************************************************************
|
3 | 3 | *
|
4 | 4 | * @file worldmagmodel.cpp
|
5 |
| - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. |
| 5 | + * @author The LibrePilot Project, http://www.librepilot.org Copyright (C) 2019. |
| 6 | + * The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. |
6 | 7 | * @brief Utilities to find the location of openpilot GCS files:
|
7 | 8 | * - Plugins Share directory path
|
8 | 9 | *
|
9 | 10 | * @brief Source file for the World Magnetic Model
|
10 | 11 | * This is a port of code available from the US NOAA.
|
11 | 12 | *
|
12 |
| - * The hard coded coefficients should be valid until 2015. |
| 13 | + * The hard coded coefficients should be valid until 2020. |
13 | 14 | *
|
14 | 15 | * Updated coeffs from ..
|
15 | 16 | * http://www.ngdc.noaa.gov/geomag/WMM/wmm_ddownload.shtml
|
|
55 | 56 | // updated coeffs available from http://www.ngdc.noaa.gov/geomag/WMM/wmm_ddownload.shtml
|
56 | 57 | const double CoeffFile[91][6] = {
|
57 | 58 | { 0, 0, 0, 0, 0, 0 },
|
58 |
| - { 1, 0, -29496.6, 0.0, 11.6, 0.0 }, |
59 |
| - { 1, 1, -1586.3, 4944.4, 16.5, -25.9 }, |
60 |
| - { 2, 0, -2396.6, 0.0, -12.1, 0.0 }, |
61 |
| - { 2, 1, 3026.1, -2707.7, -4.4, -22.5 }, |
62 |
| - { 2, 2, 1668.6, -576.1, 1.9, -11.8 }, |
63 |
| - { 3, 0, 1340.1, 0.0, 0.4, 0.0 }, |
64 |
| - { 3, 1, -2326.2, -160.2, -4.1, 7.3 }, |
65 |
| - { 3, 2, 1231.9, 251.9, -2.9, -3.9 }, |
66 |
| - { 3, 3, 634.0, -536.6, -7.7, -2.6 }, |
67 |
| - { 4, 0, 912.6, 0.0, -1.8, 0.0 }, |
68 |
| - { 4, 1, 808.9, 286.4, 2.3, 1.1 }, |
69 |
| - { 4, 2, 166.7, -211.2, -8.7, 2.7 }, |
70 |
| - { 4, 3, -357.1, 164.3, 4.6, 3.9 }, |
71 |
| - { 4, 4, 89.4, -309.1, -2.1, -0.8 }, |
72 |
| - { 5, 0, -230.9, 0.0, -1.0, 0.0 }, |
73 |
| - { 5, 1, 357.2, 44.6, 0.6, 0.4 }, |
74 |
| - { 5, 2, 200.3, 188.9, -1.8, 1.8 }, |
75 |
| - { 5, 3, -141.1, -118.2, -1.0, 1.2 }, |
76 |
| - { 5, 4, -163.0, 0.0, 0.9, 4.0 }, |
77 |
| - { 5, 5, -7.8, 100.9, 1.0, -0.6 }, |
78 |
| - { 6, 0, 72.8, 0.0, -0.2, 0.0 }, |
79 |
| - { 6, 1, 68.6, -20.8, -0.2, -0.2 }, |
80 |
| - { 6, 2, 76.0, 44.1, -0.1, -2.1 }, |
81 |
| - { 6, 3, -141.4, 61.5, 2.0, -0.4 }, |
82 |
| - { 6, 4, -22.8, -66.3, -1.7, -0.6 }, |
83 |
| - { 6, 5, 13.2, 3.1, -0.3, 0.5 }, |
84 |
| - { 6, 6, -77.9, 55.0, 1.7, 0.9 }, |
85 |
| - { 7, 0, 80.5, 0.0, 0.1, 0.0 }, |
86 |
| - { 7, 1, -75.1, -57.9, -0.1, 0.7 }, |
87 |
| - { 7, 2, -4.7, -21.1, -0.6, 0.3 }, |
88 |
| - { 7, 3, 45.3, 6.5, 1.3, -0.1 }, |
89 |
| - { 7, 4, 13.9, 24.9, 0.4, -0.1 }, |
90 |
| - { 7, 5, 10.4, 7.0, 0.3, -0.8 }, |
91 |
| - { 7, 6, 1.7, -27.7, -0.7, -0.3 }, |
92 |
| - { 7, 7, 4.9, -3.3, 0.6, 0.3 }, |
93 |
| - { 8, 0, 24.4, 0.0, -0.1, 0.0 }, |
94 |
| - { 8, 1, 8.1, 11.0, 0.1, -0.1 }, |
95 |
| - { 8, 2, -14.5, -20.0, -0.6, 0.2 }, |
96 |
| - { 8, 3, -5.6, 11.9, 0.2, 0.4 }, |
97 |
| - { 8, 4, -19.3, -17.4, -0.2, 0.4 }, |
98 |
| - { 8, 5, 11.5, 16.7, 0.3, 0.1 }, |
99 |
| - { 8, 6, 10.9, 7.0, 0.3, -0.1 }, |
100 |
| - { 8, 7, -14.1, -10.8, -0.6, 0.4 }, |
101 |
| - { 8, 8, -3.7, 1.7, 0.2, 0.3 }, |
102 |
| - { 9, 0, 5.4, 0.0, 0.0, 0.0 }, |
103 |
| - { 9, 1, 9.4, -20.5, -0.1, 0.0 }, |
104 |
| - { 9, 2, 3.4, 11.5, 0.0, -0.2 }, |
105 |
| - { 9, 3, -5.2, 12.8, 0.3, 0.0 }, |
106 |
| - { 9, 4, 3.1, -7.2, -0.4, -0.1 }, |
107 |
| - { 9, 5, -12.4, -7.4, -0.3, 0.1 }, |
108 |
| - { 9, 6, -0.7, 8.0, 0.1, 0.0 }, |
109 |
| - { 9, 7, 8.4, 2.1, -0.1, -0.2 }, |
110 |
| - { 9, 8, -8.5, -6.1, -0.4, 0.3 }, |
111 |
| - { 9, 9, -10.1, 7.0, -0.2, 0.2 }, |
| 59 | + { 1, 0, -29438.2, 0.0, 7.0, 0.0 }, |
| 60 | + { 1, 1, -1493.5, 4796.3, 9.0, -30.2 }, |
| 61 | + { 2, 0, -2444.5, 0.0, -11.0, 0.0 }, |
| 62 | + { 2, 1, 3014.7, -2842.4, -6.2, -29.6 }, |
| 63 | + { 2, 2, 1679.0, -638.8, 0.3, -17.3 }, |
| 64 | + { 3, 0, 1351.8, 0.0, 2.4, 0.0 }, |
| 65 | + { 3, 1, -2351.6, -113.7, -5.7, 6.5 }, |
| 66 | + { 3, 2, 1223.6, 246.5, 2.0, -0.8 }, |
| 67 | + { 3, 3, 582.3, -537.4, -11.0, -2.0 }, |
| 68 | + { 4, 0, 907.5, 0.0, -0.8, 0.0 }, |
| 69 | + { 4, 1, 814.8, 283.3, -0.9, -0.4 }, |
| 70 | + { 4, 2, 117.8, -188.6, -6.5, 5.8 }, |
| 71 | + { 4, 3, -335.6, 180.7, 5.2, 3.8 }, |
| 72 | + { 4, 4, 69.7, -330.0, -4.0, -3.5 }, |
| 73 | + { 5, 0, -232.9, 0.0, -0.3, 0.0 }, |
| 74 | + { 5, 1, 360.1, 46.9, 0.6, 0.2 }, |
| 75 | + { 5, 2, 191.7, 196.5, -0.8, 2.3 }, |
| 76 | + { 5, 3, -141.3, -119.9, 0.1, -0.0 }, |
| 77 | + { 5, 4, -157.2, 16.0, 1.2, 3.3 }, |
| 78 | + { 5, 5, 7.7, 100.6, 1.4, -0.6 }, |
| 79 | + { 6, 0, 69.4, 0.0, -0.8, 0.0 }, |
| 80 | + { 6, 1, 67.7, -20.1, -0.5, 0.3 }, |
| 81 | + { 6, 2, 72.3, 32.8, -0.1, -1.5 }, |
| 82 | + { 6, 3, -129.1, 59.1, 1.6, -1.2 }, |
| 83 | + { 6, 4, -28.4, -67.1, -1.6, 0.4 }, |
| 84 | + { 6, 5, 13.6, 8.1, 0.0, 0.2 }, |
| 85 | + { 6, 6, -70.3, 61.9, 1.2, 1.3 }, |
| 86 | + { 7, 0, 81.7, 0.0, -0.3, 0.0 }, |
| 87 | + { 7, 1, -75.9, -54.3, -0.2, 0.6 }, |
| 88 | + { 7, 2, -7.1, -19.5, -0.3, 0.5 }, |
| 89 | + { 7, 3, 52.2, 6.0, 0.9, -0.8 }, |
| 90 | + { 7, 4, 15.0, 24.5, 0.1, -0.2 }, |
| 91 | + { 7, 5, 9.1, 3.5, -0.6, -1.1 }, |
| 92 | + { 7, 6, -3.0, -27.7, -0.9, 0.1 }, |
| 93 | + { 7, 7, 5.9, -2.9, 0.7, 0.2 }, |
| 94 | + { 8, 0, 24.2, 0.0, -0.1, 0.0 }, |
| 95 | + { 8, 1, 8.9, 10.1, 0.2, -0.4 }, |
| 96 | + { 8, 2, -16.9, -18.3, -0.2, 0.6 }, |
| 97 | + { 8, 3, -3.1, 13.3, 0.5, -0.1 }, |
| 98 | + { 8, 4, -20.7, -14.5, -0.1, 0.6 }, |
| 99 | + { 8, 5, 13.3, 16.2, 0.4, -0.2 }, |
| 100 | + { 8, 6, 11.6, 6.0, 0.4, -0.5 }, |
| 101 | + { 8, 7, -16.3, -9.2, -0.1, 0.5 }, |
| 102 | + { 8, 8, -2.1, 2.4, 0.4, 0.1 }, |
| 103 | + { 9, 0, 5.5, 0.0, -0.1, 0.0 }, |
| 104 | + { 9, 1, 8.8, -21.8, -0.1, -0.3 }, |
| 105 | + { 9, 2, 3.0, 10.7, -0.0, 0.1 }, |
| 106 | + { 9, 3, -3.2, 11.8, 0.4, -0.4 }, |
| 107 | + { 9, 4, 0.6, -6.8, -0.4, 0.3 }, |
| 108 | + { 9, 5, -13.2, -6.9, 0.0, 0.1 }, |
| 109 | + { 9, 6, -0.1, 7.9, 0.3, -0.0 }, |
| 110 | + { 9, 7, 8.7, 1.0, 0.0, -0.1 }, |
| 111 | + { 9, 8, -9.1, -3.9, -0.0, 0.5 }, |
| 112 | + { 9, 9, -10.4, 8.5, -0.3, 0.2 }, |
112 | 113 | { 10, 0, -2.0, 0.0, 0.0, 0.0 },
|
113 |
| - { 10, 1, -6.3, 2.8, 0.0, 0.1 }, |
114 |
| - { 10, 2, 0.9, -0.1, -0.1, -0.1 }, |
115 |
| - { 10, 3, -1.1, 4.7, 0.2, 0.0 }, |
116 |
| - { 10, 4, -0.2, 4.4, 0.0, -0.1 }, |
117 |
| - { 10, 5, 2.5, -7.2, -0.1, -0.1 }, |
118 |
| - { 10, 6, -0.3, -1.0, -0.2, 0.0 }, |
119 |
| - { 10, 7, 2.2, -3.9, 0.0, -0.1 }, |
120 |
| - { 10, 8, 3.1, -2.0, -0.1, -0.2 }, |
121 |
| - { 10, 9, -1.0, -2.0, -0.2, 0.0 }, |
122 |
| - { 10, 10, -2.8, -8.3, -0.2, -0.1 }, |
123 |
| - { 11, 0, 3.0, 0.0, 0.0, 0.0 }, |
124 |
| - { 11, 1, -1.5, 0.2, 0.0, 0.0 }, |
125 |
| - { 11, 2, -2.1, 1.7, 0.0, 0.1 }, |
126 |
| - { 11, 3, 1.7, -0.6, 0.1, 0.0 }, |
127 |
| - { 11, 4, -0.5, -1.8, 0.0, 0.1 }, |
128 |
| - { 11, 5, 0.5, 0.9, 0.0, 0.0 }, |
129 |
| - { 11, 6, -0.8, -0.4, 0.0, 0.1 }, |
130 |
| - { 11, 7, 0.4, -2.5, 0.0, 0.0 }, |
131 |
| - { 11, 8, 1.8, -1.3, 0.0, -0.1 }, |
132 |
| - { 11, 9, 0.1, -2.1, 0.0, -0.1 }, |
133 |
| - { 11, 10, 0.7, -1.9, -0.1, 0.0 }, |
134 |
| - { 11, 11, 3.8, -1.8, 0.0, -0.1 }, |
135 |
| - { 12, 0, -2.2, 0.0, 0.0, 0.0 }, |
136 |
| - { 12, 1, -0.2, -0.9, 0.0, 0.0 }, |
137 |
| - { 12, 2, 0.3, 0.3, 0.1, 0.0 }, |
138 |
| - { 12, 3, 1.0, 2.1, 0.1, 0.0 }, |
139 |
| - { 12, 4, -0.6, -2.5, -0.1, 0.0 }, |
140 |
| - { 12, 5, 0.9, 0.5, 0.0, 0.0 }, |
141 |
| - { 12, 6, -0.1, 0.6, 0.0, 0.1 }, |
142 |
| - { 12, 7, 0.5, 0.0, 0.0, 0.0 }, |
143 |
| - { 12, 8, -0.4, 0.1, 0.0, 0.0 }, |
144 |
| - { 12, 9, -0.4, 0.3, 0.0, 0.0 }, |
145 |
| - { 12, 10, 0.2, -0.9, 0.0, 0.0 }, |
146 |
| - { 12, 11, -0.8, -0.2, -0.1, 0.0 }, |
147 |
| - { 12, 12, 0.0, 0.9, 0.1, 0.0 } |
| 114 | + { 10, 1, -6.1, 3.3, -0.0, 0.0 }, |
| 115 | + { 10, 2, 0.2, -0.4, -0.1, 0.1 }, |
| 116 | + { 10, 3, 0.6, 4.6, 0.2, -0.2 }, |
| 117 | + { 10, 4, -0.5, 4.4, -0.1, 0.1 }, |
| 118 | + { 10, 5, 1.8, -7.9, -0.2, -0.1 }, |
| 119 | + { 10, 6, -0.7, -0.6, -0.0, 0.1 }, |
| 120 | + { 10, 7, 2.2, -4.2, -0.1, -0.0 }, |
| 121 | + { 10, 8, 2.4, -2.9, -0.2, -0.1 }, |
| 122 | + { 10, 9, -1.8, -1.1, -0.1, 0.2 }, |
| 123 | + { 10, 10, -3.6, -8.8, -0.0, -0.0 }, |
| 124 | + { 11, 0, 3.0, 0.0, -0.0, 0.0 }, |
| 125 | + { 11, 1, -1.4, -0.0, 0.0, 0.0 }, |
| 126 | + { 11, 2, -2.3, 2.1, -0.0, 0.1 }, |
| 127 | + { 11, 3, 2.1, -0.6, 0.0, 0.0 }, |
| 128 | + { 11, 4, -0.8, -1.1, -0.0, 0.1 }, |
| 129 | + { 11, 5, 0.6, 0.7, -0.1, -0.0 }, |
| 130 | + { 11, 6, -0.7, -0.2, 0.0, -0.0 }, |
| 131 | + { 11, 7, 0.1, -2.1, -0.0, 0.1 }, |
| 132 | + { 11, 8, 1.7, -1.5, -0.0, -0.0 }, |
| 133 | + { 11, 9, -0.2, -2.6, -0.1, -0.1 }, |
| 134 | + { 11, 10, 0.4, -2.0, -0.0, -0.0 }, |
| 135 | + { 11, 11, 3.5, -2.3, -0.1, -0.1 }, |
| 136 | + { 12, 0, -2.0, 0.0, 0.0, 0.0 }, |
| 137 | + { 12, 1, -0.1, -1.0, 0.0, -0.0 }, |
| 138 | + { 12, 2, 0.5, 0.3, -0.0, 0.0 }, |
| 139 | + { 12, 3, 1.2, 1.8, 0.0, -0.1 }, |
| 140 | + { 12, 4, -0.9, -2.2, -0.1, 0.1 }, |
| 141 | + { 12, 5, 0.9, 0.3, -0.0, -0.0 }, |
| 142 | + { 12, 6, 0.1, 0.7, 0.0, 0.0 }, |
| 143 | + { 12, 7, 0.6, -0.1, -0.0, -0.0 }, |
| 144 | + { 12, 8, -0.4, 0.3, 0.0, 0.0 }, |
| 145 | + { 12, 9, -0.5, 0.2, -0.0, 0.0 }, |
| 146 | + { 12, 10, 0.2, -0.9, -0.0, -0.0 }, |
| 147 | + { 12, 11, -0.9, -0.2, -0.0, 0.0 }, |
| 148 | + { 12, 12, -0.0, 0.8, -0.1, -0.1 } |
148 | 149 | };
|
149 | 150 |
|
150 | 151 | namespace Utils {
|
@@ -232,10 +233,10 @@ void WorldMagModel::Initialize()
|
232 | 233 | MagneticModel.nMaxSecVar = WMM_MAX_SECULAR_VARIATION_MODEL_DEGREES;
|
233 | 234 | MagneticModel.SecularVariationUsed = 0;
|
234 | 235 |
|
235 |
| - // Really, Really needs to be read from a file - out of date in 2015 at latest |
| 236 | + // Really, Really needs to be read from a file - out of date in 2020 at latest |
236 | 237 | MagneticModel.EditionDate = 5.7863328170559505e-307;
|
237 |
| - MagneticModel.epoch = 2010.0; |
238 |
| - sprintf(MagneticModel.ModelName, "WMM-2010"); |
| 238 | + MagneticModel.epoch = 2015.0; |
| 239 | + sprintf(MagneticModel.ModelName, "WMM-2015v2"); |
239 | 240 | }
|
240 | 241 |
|
241 | 242 |
|
|
0 commit comments