|
2 | 2 | ******************************************************************************
|
3 | 3 | *
|
4 | 4 | * @file WorldMagModel.c
|
5 |
| - * @author The LibrePilot Project, http://www.librepilot.org Copyright (C) 2015. |
| 5 | + * @author The LibrePilot Project, http://www.librepilot.org Copyright (C) 2015-2019. |
6 | 6 | * The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010.
|
7 | 7 | * @brief Source file for the World Magnetic Model
|
8 | 8 | * This is a port of code available from the US NOAA.
|
|
61 | 61 | // first column not used but it will be optimized out by compiler
|
62 | 62 | static const float CoeffFile[91][6] = {
|
63 | 63 | { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f },
|
64 |
| - { 1.0f, 0.0f, -29438.5f, 0.0f, 10.7f, 0.0f }, |
65 |
| - { 1.0f, 1.0f, -1501.1f, 4796.2f, 17.9f, -26.8f }, |
66 |
| - { 2.0f, 0.0f, -2445.3f, 0.0f, -8.6f, 0.0f }, |
67 |
| - { 2.0f, 1.0f, 3012.5f, -2845.6f, -3.3f, -27.1f }, |
68 |
| - { 2.0f, 2.0f, 1676.6f, -642.0f, 2.4f, -13.3f }, |
69 |
| - { 3.0f, 0.0f, 1351.1f, 0.0f, 3.1f, 0.0f }, |
70 |
| - { 3.0f, 1.0f, -2352.3f, -115.3f, -6.2f, 8.4f }, |
71 |
| - { 3.0f, 2.0f, 1225.6f, 245.0f, -0.4f, -0.4f }, |
72 |
| - { 3.0f, 3.0f, 581.9f, -538.3f, -10.4f, 2.3f }, |
73 |
| - { 4.0f, 0.0f, 907.2f, 0.0f, -0.4f, 0.0f }, |
74 |
| - { 4.0f, 1.0f, 813.7f, 283.4f, 0.8f, -0.6f }, |
75 |
| - { 4.0f, 2.0f, 120.3f, -188.6f, -9.2f, 5.3f }, |
76 |
| - { 4.0f, 3.0f, -335.0f, 180.9f, 4.0f, 3.0f }, |
77 |
| - { 4.0f, 4.0f, 70.3f, -329.5f, -4.2f, -5.3f }, |
78 |
| - { 5.0f, 0.0f, -232.6f, 0.0f, -0.2f, 0.0f }, |
79 |
| - { 5.0f, 1.0f, 360.1f, 47.4f, 0.1f, 0.4f }, |
80 |
| - { 5.0f, 2.0f, 192.4f, 196.9f, -1.4f, 1.6f }, |
81 |
| - { 5.0f, 3.0f, -141.0f, -119.4f, 0.0f, -1.1f }, |
82 |
| - { 5.0f, 4.0f, -157.4f, 16.1f, 1.3f, 3.3f }, |
83 |
| - { 5.0f, 5.0f, 4.3f, 100.1f, 3.8f, 0.1f }, |
84 |
| - { 6.0f, 0.0f, 69.5f, 0.0f, -0.5f, 0.0f }, |
85 |
| - { 6.0f, 1.0f, 67.4f, -20.7f, -0.2f, 0.0f }, |
86 |
| - { 6.0f, 2.0f, 72.8f, 33.2f, -0.6f, -2.2f }, |
87 |
| - { 6.0f, 3.0f, -129.8f, 58.8f, 2.4f, -0.7f }, |
88 |
| - { 6.0f, 4.0f, -29.0f, -66.5f, -1.1f, 0.1f }, |
89 |
| - { 6.0f, 5.0f, 13.2f, 7.3f, 0.3f, 1.0f }, |
90 |
| - { 6.0f, 6.0f, -70.9f, 62.5f, 1.5f, 1.3f }, |
91 |
| - { 7.0f, 0.0f, 81.6f, 0.0f, 0.2f, 0.0f }, |
92 |
| - { 7.0f, 1.0f, -76.1f, -54.1f, -0.2f, 0.7f }, |
93 |
| - { 7.0f, 2.0f, -6.8f, -19.4f, -0.4f, 0.5f }, |
94 |
| - { 7.0f, 3.0f, 51.9f, 5.6f, 1.3f, -0.2f }, |
95 |
| - { 7.0f, 4.0f, 15.0f, 24.4f, 0.2f, -0.1f }, |
96 |
| - { 7.0f, 5.0f, 9.3f, 3.3f, -0.4f, -0.7f }, |
97 |
| - { 7.0f, 6.0f, -2.8f, -27.5f, -0.9f, 0.1f }, |
98 |
| - { 7.0f, 7.0f, 6.7f, -2.3f, 0.3f, 0.1f }, |
99 |
| - { 8.0f, 0.0f, 24.0f, 0.0f, 0.0f, 0.0f }, |
100 |
| - { 8.0f, 1.0f, 8.6f, 10.2f, 0.1f, -0.3f }, |
101 |
| - { 8.0f, 2.0f, -16.9f, -18.1f, -0.5f, 0.3f }, |
102 |
| - { 8.0f, 3.0f, -3.2f, 13.2f, 0.5f, 0.3f }, |
103 |
| - { 8.0f, 4.0f, -20.6f, -14.6f, -0.2f, 0.6f }, |
104 |
| - { 8.0f, 5.0f, 13.3f, 16.2f, 0.4f, -0.1f }, |
105 |
| - { 8.0f, 6.0f, 11.7f, 5.7f, 0.2f, -0.2f }, |
106 |
| - { 8.0f, 7.0f, -16.0f, -9.1f, -0.4f, 0.3f }, |
107 |
| - { 8.0f, 8.0f, -2.0f, 2.2f, 0.3f, 0.0f }, |
108 |
| - { 9.0f, 0.0f, 5.4f, 0.0f, 0.0f, 0.0f }, |
109 |
| - { 9.0f, 1.0f, 8.8f, -21.6f, -0.1f, -0.2f }, |
110 |
| - { 9.0f, 2.0f, 3.1f, 10.8f, -0.1f, -0.1f }, |
111 |
| - { 9.0f, 3.0f, -3.1f, 11.7f, 0.4f, -0.2f }, |
112 |
| - { 9.0f, 4.0f, 0.6f, -6.8f, -0.5f, 0.1f }, |
113 |
| - { 9.0f, 5.0f, -13.3f, -6.9f, -0.2f, 0.1f }, |
114 |
| - { 9.0f, 6.0f, -0.1f, 7.8f, 0.1f, 0.0f }, |
115 |
| - { 9.0f, 7.0f, 8.7f, 1.0f, 0.0f, -0.2f }, |
116 |
| - { 9.0f, 8.0f, -9.1f, -3.9f, -0.2f, 0.4f }, |
117 |
| - { 9.0f, 9.0f, -10.5f, 8.5f, -0.1f, 0.3f }, |
118 |
| - { 10.0f, 0.0f, -1.9f, 0.0f, 0.0f, 0.0f }, |
119 |
| - { 10.0f, 1.0f, -6.5f, 3.3f, 0.0f, 0.1f }, |
120 |
| - { 10.0f, 2.0f, 0.2f, -0.3f, -0.1f, -0.1f }, |
121 |
| - { 10.0f, 3.0f, 0.6f, 4.6f, 0.3f, 0.0f }, |
122 |
| - { 10.0f, 4.0f, -0.6f, 4.4f, -0.1f, 0.0f }, |
123 |
| - { 10.0f, 5.0f, 1.7f, -7.9f, -0.1f, -0.2f }, |
124 |
| - { 10.0f, 6.0f, -0.7f, -0.6f, -0.1f, 0.1f }, |
125 |
| - { 10.0f, 7.0f, 2.1f, -4.1f, 0.0f, -0.1f }, |
126 |
| - { 10.0f, 8.0f, 2.3f, -2.8f, -0.2f, -0.2f }, |
127 |
| - { 10.0f, 9.0f, -1.8f, -1.1f, -0.1f, 0.1f }, |
128 |
| - { 10.0f, 10.0f, -3.6f, -8.7f, -0.2f, -0.1f }, |
129 |
| - { 11.0f, 0.0f, 3.1f, 0.0f, 0.0f, 0.0f }, |
130 |
| - { 11.0f, 1.0f, -1.5f, -0.1f, 0.0f, 0.0f }, |
131 |
| - { 11.0f, 2.0f, -2.3f, 2.1f, -0.1f, 0.1f }, |
132 |
| - { 11.0f, 3.0f, 2.1f, -0.7f, 0.1f, 0.0f }, |
133 |
| - { 11.0f, 4.0f, -0.9f, -1.1f, 0.0f, 0.1f }, |
134 |
| - { 11.0f, 5.0f, 0.6f, 0.7f, 0.0f, 0.0f }, |
135 |
| - { 11.0f, 6.0f, -0.7f, -0.2f, 0.0f, 0.0f }, |
136 |
| - { 11.0f, 7.0f, 0.2f, -2.1f, 0.0f, 0.1f }, |
137 |
| - { 11.0f, 8.0f, 1.7f, -1.5f, 0.0f, 0.0f }, |
138 |
| - { 11.0f, 9.0f, -0.2f, -2.5f, 0.0f, -0.1f }, |
139 |
| - { 11.0f, 10.0f, 0.4f, -2.0f, -0.1f, 0.0f }, |
| 64 | + { 1.0f, 0.0f, -29438.2f, 0.0f, 7.0f, 0.0f }, |
| 65 | + { 1.0f, 1.0f, -1493.5f, 4796.3f, 9.0f, -30.2f }, |
| 66 | + { 2.0f, 0.0f, -2444.5f, 0.0f, -11.0f, 0.0f }, |
| 67 | + { 2.0f, 1.0f, 3014.7f, -2842.4f, -6.2f, -29.6f }, |
| 68 | + { 2.0f, 2.0f, 1679.0f, -638.8f, 0.3f, -17.3f }, |
| 69 | + { 3.0f, 0.0f, 1351.8f, 0.0f, 2.4f, 0.0f }, |
| 70 | + { 3.0f, 1.0f, -2351.6f, -113.7f, -5.7f, 6.5f }, |
| 71 | + { 3.0f, 2.0f, 1223.6f, 246.5f, 2.0f, -0.8f }, |
| 72 | + { 3.0f, 3.0f, 582.3f, -537.4f, -11.0f, -2.0f }, |
| 73 | + { 4.0f, 0.0f, 907.5f, 0.0f, -0.8f, 0.0f }, |
| 74 | + { 4.0f, 1.0f, 814.8f, 283.3f, -0.9f, -0.4f }, |
| 75 | + { 4.0f, 2.0f, 117.8f, -188.6f, -6.5f, 5.8f }, |
| 76 | + { 4.0f, 3.0f, -335.6f, 180.7f, 5.2f, 3.8f }, |
| 77 | + { 4.0f, 4.0f, 69.7f, -330.0f, -4.0f, -3.5f }, |
| 78 | + { 5.0f, 0.0f, -232.9f, 0.0f, -0.3f, 0.0f }, |
| 79 | + { 5.0f, 1.0f, 360.1f, 46.9f, 0.6f, 0.2f }, |
| 80 | + { 5.0f, 2.0f, 191.7f, 196.5f, -0.8f, 2.3f }, |
| 81 | + { 5.0f, 3.0f, -141.3f, -119.9f, 0.1f, -0.0f }, |
| 82 | + { 5.0f, 4.0f, -157.2f, 16.0f, 1.2f, 3.3f }, |
| 83 | + { 5.0f, 5.0f, 7.7f, 100.6f, 1.4f, -0.6f }, |
| 84 | + { 6.0f, 0.0f, 69.4f, 0.0f, -0.8f, 0.0f }, |
| 85 | + { 6.0f, 1.0f, 67.7f, -20.1f, -0.5f, 0.3f }, |
| 86 | + { 6.0f, 2.0f, 72.3f, 32.8f, -0.1f, -1.5f }, |
| 87 | + { 6.0f, 3.0f, -129.1f, 59.1f, 1.6f, -1.2f }, |
| 88 | + { 6.0f, 4.0f, -28.4f, -67.1f, -1.6f, 0.4f }, |
| 89 | + { 6.0f, 5.0f, 13.6f, 8.1f, 0.0f, 0.2f }, |
| 90 | + { 6.0f, 6.0f, -70.3f, 61.9f, 1.2f, 1.3f }, |
| 91 | + { 7.0f, 0.0f, 81.7f, 0.0f, -0.3f, 0.0f }, |
| 92 | + { 7.0f, 1.0f, -75.9f, -54.3f, -0.2f, 0.6f }, |
| 93 | + { 7.0f, 2.0f, -7.1f, -19.5f, -0.3f, 0.5f }, |
| 94 | + { 7.0f, 3.0f, 52.2f, 6.0f, 0.9f, -0.8f }, |
| 95 | + { 7.0f, 4.0f, 15.0f, 24.5f, 0.1f, -0.2f }, |
| 96 | + { 7.0f, 5.0f, 9.1f, 3.5f, -0.6f, -1.1f }, |
| 97 | + { 7.0f, 6.0f, -3.0f, -27.7f, -0.9f, 0.1f }, |
| 98 | + { 7.0f, 7.0f, 5.9f, -2.9f, 0.7f, 0.2f }, |
| 99 | + { 8.0f, 0.0f, 24.2f, 0.0f, -0.1f, 0.0f }, |
| 100 | + { 8.0f, 1.0f, 8.9f, 10.1f, 0.2f, -0.4f }, |
| 101 | + { 8.0f, 2.0f, -16.9f, -18.3f, -0.2f, 0.6f }, |
| 102 | + { 8.0f, 3.0f, -3.1f, 13.3f, 0.5f, -0.1f }, |
| 103 | + { 8.0f, 4.0f, -20.7f, -14.5f, -0.1f, 0.6f }, |
| 104 | + { 8.0f, 5.0f, 13.3f, 16.2f, 0.4f, -0.2f }, |
| 105 | + { 8.0f, 6.0f, 11.6f, 6.0f, 0.4f, -0.5f }, |
| 106 | + { 8.0f, 7.0f, -16.3f, -9.2f, -0.1f, 0.5f }, |
| 107 | + { 8.0f, 8.0f, -2.1f, 2.4f, 0.4f, 0.1f }, |
| 108 | + { 9.0f, 0.0f, 5.5f, 0.0f, -0.1f, 0.0f }, |
| 109 | + { 9.0f, 1.0f, 8.8f, -21.8f, -0.1f, -0.3f }, |
| 110 | + { 9.0f, 2.0f, 3.0f, 10.7f, -0.0f, 0.1f }, |
| 111 | + { 9.0f, 3.0f, -3.2f, 11.8f, 0.4f, -0.4f }, |
| 112 | + { 9.0f, 4.0f, 0.6f, -6.8f, -0.4f, 0.3f }, |
| 113 | + { 9.0f, 5.0f, -13.2f, -6.9f, 0.0f, 0.1f }, |
| 114 | + { 9.0f, 6.0f, -0.1f, 7.9f, 0.3f, -0.0f }, |
| 115 | + { 9.0f, 7.0f, 8.7f, 1.0f, 0.0f, -0.1f }, |
| 116 | + { 9.0f, 8.0f, -9.1f, -3.9f, -0.0f, 0.5f }, |
| 117 | + { 9.0f, 9.0f, -10.4f, 8.5f, -0.3f, 0.2f }, |
| 118 | + { 10.0f, 0.0f, -2.0f, 0.0f, 0.0f, 0.0f }, |
| 119 | + { 10.0f, 1.0f, -6.1f, 3.3f, -0.0f, 0.0f }, |
| 120 | + { 10.0f, 2.0f, 0.2f, -0.4f, -0.1f, 0.1f }, |
| 121 | + { 10.0f, 3.0f, 0.6f, 4.6f, 0.2f, -0.2f }, |
| 122 | + { 10.0f, 4.0f, -0.5f, 4.4f, -0.1f, 0.1f }, |
| 123 | + { 10.0f, 5.0f, 1.8f, -7.9f, -0.2f, -0.1f }, |
| 124 | + { 10.0f, 6.0f, -0.7f, -0.6f, -0.0f, 0.1f }, |
| 125 | + { 10.0f, 7.0f, 2.2f, -4.2f, -0.1f, -0.0f }, |
| 126 | + { 10.0f, 8.0f, 2.4f, -2.9f, -0.2f, -0.1f }, |
| 127 | + { 10.0f, 9.0f, -1.8f, -1.1f, -0.1f, 0.2f }, |
| 128 | + { 10.0f, 10.0f, -3.6f, -8.8f, -0.0f, -0.0f }, |
| 129 | + { 11.0f, 0.0f, 3.0f, 0.0f, -0.0f, 0.0f }, |
| 130 | + { 11.0f, 1.0f, -1.4f, -0.0f, 0.0f, 0.0f }, |
| 131 | + { 11.0f, 2.0f, -2.3f, 2.1f, -0.0f, 0.1f }, |
| 132 | + { 11.0f, 3.0f, 2.1f, -0.6f, 0.0f, 0.0f }, |
| 133 | + { 11.0f, 4.0f, -0.8f, -1.1f, -0.0f, 0.1f }, |
| 134 | + { 11.0f, 5.0f, 0.6f, 0.7f, -0.1f, -0.0f }, |
| 135 | + { 11.0f, 6.0f, -0.7f, -0.2f, 0.0f, -0.0f }, |
| 136 | + { 11.0f, 7.0f, 0.1f, -2.1f, -0.0f, 0.1f }, |
| 137 | + { 11.0f, 8.0f, 1.7f, -1.5f, -0.0f, -0.0f }, |
| 138 | + { 11.0f, 9.0f, -0.2f, -2.6f, -0.1f, -0.1f }, |
| 139 | + { 11.0f, 10.0f, 0.4f, -2.0f, -0.0f, -0.0f }, |
140 | 140 | { 11.0f, 11.0f, 3.5f, -2.3f, -0.1f, -0.1f },
|
141 |
| - { 12.0f, 0.0f, -2.0f, 0.0f, 0.1f, 0.0f }, |
142 |
| - { 12.0f, 1.0f, -0.3f, -1.0f, 0.0f, 0.0f }, |
143 |
| - { 12.0f, 2.0f, 0.4f, 0.5f, 0.0f, 0.0f }, |
144 |
| - { 12.0f, 3.0f, 1.3f, 1.8f, 0.1f, -0.1f }, |
145 |
| - { 12.0f, 4.0f, -0.9f, -2.2f, -0.1f, 0.0f }, |
146 |
| - { 12.0f, 5.0f, 0.9f, 0.3f, 0.0f, 0.0f }, |
147 |
| - { 12.0f, 6.0f, 0.1f, 0.7f, 0.1f, 0.0f }, |
148 |
| - { 12.0f, 7.0f, 0.5f, -0.1f, 0.0f, 0.0f }, |
| 141 | + { 12.0f, 0.0f, -2.0f, 0.0f, 0.0f, 0.0f }, |
| 142 | + { 12.0f, 1.0f, -0.1f, -1.0f, 0.0f, -0.0f }, |
| 143 | + { 12.0f, 2.0f, 0.5f, 0.3f, -0.0f, 0.0f }, |
| 144 | + { 12.0f, 3.0f, 1.2f, 1.8f, 0.0f, -0.1f }, |
| 145 | + { 12.0f, 4.0f, -0.9f, -2.2f, -0.1f, 0.1f }, |
| 146 | + { 12.0f, 5.0f, 0.9f, 0.3f, -0.0f, -0.0f }, |
| 147 | + { 12.0f, 6.0f, 0.1f, 0.7f, 0.0f, 0.0f }, |
| 148 | + { 12.0f, 7.0f, 0.6f, -0.1f, -0.0f, -0.0f }, |
149 | 149 | { 12.0f, 8.0f, -0.4f, 0.3f, 0.0f, 0.0f },
|
150 |
| - { 12.0f, 9.0f, -0.4f, 0.2f, 0.0f, 0.0f }, |
151 |
| - { 12.0f, 10.0f, 0.2f, -0.9f, 0.0f, 0.0f }, |
152 |
| - { 12.0f, 11.0f, -0.9f, -0.2f, 0.0f, 0.0f }, |
153 |
| - { 12.0f, 12.0f, 0.0f, 0.7f, 0.0f, 0.0f } |
| 150 | + { 12.0f, 9.0f, -0.5f, 0.2f, -0.0f, 0.0f }, |
| 151 | + { 12.0f, 10.0f, 0.2f, -0.9f, -0.0f, -0.0f }, |
| 152 | + { 12.0f, 11.0f, -0.9f, -0.2f, -0.0f, 0.0f }, |
| 153 | + { 12.0f, 12.0f, -0.0f, 0.8f, -0.1f, -0.1f } |
154 | 154 | };
|
155 | 155 |
|
156 | 156 | static WMMtype_Ellipsoid *Ellip = NULL;
|
@@ -194,7 +194,7 @@ int WMM_Initialize()
|
194 | 194 | // Really, Really needs to be read from a file - out of date in 2020 at latest
|
195 | 195 | MagneticModel->EditionDate = 0.0f; /* OP change. Originally 5.7863328170559505e-307, truncates to 0.0f */
|
196 | 196 | MagneticModel->epoch = 2015.0f;
|
197 |
| - sprintf(MagneticModel->ModelName, "WMM-2015"); |
| 197 | + sprintf(MagneticModel->ModelName, "WMM-2015v2"); |
198 | 198 |
|
199 | 199 | return 0; // OK
|
200 | 200 | }
|
|
0 commit comments