Larus glider flight sensor system 3.9.2024
Software-In-The-Loop test and validation system
Loading...
Searching...
No Matches
earth_induction_model.cpp
Go to the documentation of this file.
2
3ROM induction_model_area_t earth_induction_model_t::induction_model_area[N_AREAS]=
4 {
5 { // DACH
6 5.0, 17.0, // left, right
7 45.5, 54.5, // bottom, top
8 { // declination
9 6.484968023424757e-05,
10 3.604728604727705e-04,
11 -1.336631317399705e-02,
12 4.889050343589380e-05,
13 -2.518514818513759e-02,
14 7.773881035432078e-01,
15 3.234265734262655e-05,
16 -5.884959737228114e-03,
17 6.761925158171979e-01,
18 -1.258303844027981e+01
19 },
20 { // inclination
21 2.100890562426442e-04,
22 1.581751581705888e-05,
23 -4.628525320828570e-02,
24 1.761874489119027e-05,
25 -5.288711288658317e-03,
26 3.919445685819016e+00,
27 -2.156177156192702e-05,
28 8.834347472689526e-05,
29 2.775942807177114e-01,
30 -4.126846312074665e+01
31 },
32 },
33 { // europe
34 -15.0, 30.0, // left, right
35 25.0, 70, // bottom, top
36 { // declination
37 5.121784702900829e-05,
38 2.624098034879970e-04,
39 -9.419552924210621e-03,
40 5.343918890002500e-05,
41 -1.631811030378127e-02,
42 4.986530342769596e-01,
43 1.713583700195904e-05,
44 -5.343808350939929e-03,
45 4.744005367709492e-01,
46 -6.919556947352653e+00
47 },
48 { // inclination
49 2.238116112917459e-04,
50 2.208613842153091e-05,
51 -4.838904340786659e-02,
52 -2.229902111583445e-05,
53 -4.774809334262235e-03,
54 4.023802474337383e+00,
55 -1.682245906466733e-05,
56 2.375176076700740e-03,
57 2.306371479408610e-01,
58 -4.296960683967160e+01
59 },
60 },
61 { // africa
62 -20.0, 60.0, // left, right
63 -35.0, 40, // bottom, top
64 { // declination
65 1.120219493186473e-04,
66 -1.225698952752873e-04,
67 -7.129961078385496e-03,
68 4.931655990117274e-05,
69 1.665170371891766e-03,
70 2.727567451221284e-01,
71 2.910501686112947e-05,
72 -7.035073356032582e-03,
73 3.204208774791076e-01,
74 -3.647158038091194e+00
75 },
76 { // inclination
77 -5.433127444135837e-04,
78 -1.137350438537858e-04,
79 1.706516490386623e-02,
80 -4.511218757889591e-05,
81 2.879877325512916e-03,
82 2.267568526704758e+00,
83 -1.087813989819037e-04,
84 8.725656228245442e-03,
85 9.743230657776267e-02,
86 -2.939792941166480e+01
87 },
88 },
89 { // australia
90 110.0, 155.0, // left, right
91 -40.0, -10.0, // bottom, top
92 { // declination
93 5.546403635333835e-05,
94 5.314915232219207e-04,
95 -6.849943856443287e-02,
96 2.958100087894962e-04,
97 -6.622137658688818e-02,
98 3.447689949284927e+00,
99 -1.756972044942521e-05,
100 1.504216579312397e-02,
101 -2.809034281885659e+00,
102 1.496901011293250e+02
103 },
104 { // inclination
105 1.515805621426717e-04,
106 -6.343899008870405e-05,
107 3.528378997526102e-02,
108 1.696309522522108e-05,
109 -9.470688732882490e-03,
110 3.205317922018218e+00,
111 7.111255870608101e-05,
112 -2.686844631767804e-02,
113 3.351232420712531e+00,
114 -1.530444949539504e+02
115 },
116 },
117 { // usa
118 -125.00, -70.0, // left, right
119 25.0, 70.0, // bottom, top
120 { // declination
121 -2.224233201399186e-04,
122 -2.670316634833714e-04,
123 -3.074590220552326e-04,
124 2.130731708230263e-05,
125 1.579370819172795e-02,
126 3.789060809334363e-01,
127 3.173990524545548e-04,
128 8.721041713129403e-02,
129 7.211047791637301e+00,
130 1.825984054809143e+02
131 },
132 { // inclination
133 -3.849560141354113e-06,
134 -2.177788276836292e-05,
135 -7.379103859208931e-03,
136 5.034913907563424e-05,
137 1.093250782229599e-02,
138 1.821453913909042e+00,
139 -4.095350585248441e-05,
140 -1.878072768345651e-02,
141 -2.436546108993555e+00,
142 -7.074741045769397e+01
143 },
144 },
145 { // south america
146 -80.0, -35.0, // left, right
147 -40.0, 0.0, // bottom, top
148 { // declination
149 -8.916044734793926e-05,
150 1.908992736525847e-04,
151 1.652392774122049e-02,
152 1.398940528909979e-04,
153 3.388131087247316e-02,
154 1.583093751030807e+00,
155 1.856740161715831e-04,
156 4.598409447651635e-02,
157 3.046289860366367e+00,
158 4.088154472938876e+01
159 },
160 { // inclination
161 -1.286255971474346e-04,
162 2.781668984274968e-04,
163 2.629059668574044e-02,
164 -1.218543392258984e-04,
165 -1.875065502578563e-02,
166 1.252153998646948e+00,
167 3.690416840339815e-04,
168 5.105259785530584e-02,
169 1.123874609725794e+00,
170 -2.658596083317213e+01
171 },
172 },
173 { // new zealand
174 165.0, 179.0, // left, right
175 -48.0, -34.0, // bottom, top
176 { // declination
177 -4.681582034523041e-04,
178 -1.557738480006262e-04,
179 -1.268994777399856e-02,
180 1.296230030474883e-04,
181 -5.826325838030581e-02,
182 4.597818314678237e+00,
183 5.920060331854854e-05,
184 -3.095091690537255e-02,
185 5.258586646991417e+00,
186 -2.986056257634996e+02
187 },
188 { // inclination
189 -4.681582034523041e-04,
190 -1.557738480006262e-04,
191 -1.268994777399856e-02,
192 1.296230030474883e-04,
193 -5.826325838030581e-02,
194 4.597818314678237e+00,
195 5.920060331854854e-05,
196 -3.095091690537255e-02,
197 5.258586646991417e+00,
198 -2.986056257634996e+02
199 }
200 },
201 { // iceland
202 -27.0, -10, // left, right
203 62.0, 67.0, // bottom, top
204 { // declination
205 3.395061728377397e-04,
206 2.189296771339499e-04,
207 -6.009662636950348e-02,
208 8.948842694970172e-05,
209 -1.297184136811914e-02,
210 3.430077823894929e+00,
211 -4.013301226923895e-05,
212 -7.373095729518413e-03,
213 4.381600590526588e-01,
214 -6.269987586975348e+01
215 },
216 { // inclination
217 9.259259259281425e-05,
218 7.371369600481330e-05,
219 -2.444978868744518e-02,
220 -5.757039657957875e-05,
221 -1.281947515849284e-02,
222 2.559575585207323e+00,
223 -7.023277147074459e-06,
224 4.725287483409718e-03,
225 5.309824459025138e-01,
226 -1.288763260689519e+01
227 }
228 }
229 };
230
232 {
233 induction_values retv={ 0.0, 0.0, false};
234
235 // try to find parameter set for given coordinates
237 {
238 if( latitude < induction_model_area[parameter_set].latitude__limit_south)
239 continue;
240 if( latitude > induction_model_area[parameter_set].latitude__limit_north)
241 continue;
242 if( longitude < induction_model_area[parameter_set].longitude_limit_west)
243 continue;
244 if( longitude > induction_model_area[parameter_set].longitude_limit_east)
245 continue;
246
247 // valid parameter set found, now evaluate induction data
248 retv.declination =
249 induction_model_area[parameter_set].coefficients_declination[9] +
250 induction_model_area[parameter_set].coefficients_declination[8] * longitude +
251 induction_model_area[parameter_set].coefficients_declination[7] * longitude * longitude +
252 induction_model_area[parameter_set].coefficients_declination[6] * longitude * longitude * longitude +
253 induction_model_area[parameter_set].coefficients_declination[5] * latitude +
254 induction_model_area[parameter_set].coefficients_declination[4] * latitude * longitude +
255 induction_model_area[parameter_set].coefficients_declination[3] * latitude * longitude * longitude +
256 induction_model_area[parameter_set].coefficients_declination[2] * latitude * latitude +
257 induction_model_area[parameter_set].coefficients_declination[1] * latitude * latitude * longitude +
258 induction_model_area[parameter_set].coefficients_declination[0] * latitude * latitude * latitude;
259
260 retv.inclination =
261 induction_model_area[parameter_set].coefficients_inclination[9] +
262 induction_model_area[parameter_set].coefficients_inclination[8] * longitude +
263 induction_model_area[parameter_set].coefficients_inclination[7] * longitude * longitude +
264 induction_model_area[parameter_set].coefficients_inclination[6] * longitude * longitude * longitude +
265 induction_model_area[parameter_set].coefficients_inclination[5] * latitude +
266 induction_model_area[parameter_set].coefficients_inclination[4] * latitude * longitude +
267 induction_model_area[parameter_set].coefficients_inclination[3] * latitude * longitude * longitude +
268 induction_model_area[parameter_set].coefficients_inclination[2] * latitude * latitude +
269 induction_model_area[parameter_set].coefficients_inclination[1] * latitude * latitude * longitude +
270 induction_model_area[parameter_set].coefficients_inclination[0] * latitude * latitude * latitude;
271
272 retv.valid = true;
273 return retv;
274 }
275
276 // no area found
277 retv.valid = false;
278 return retv;
279 }
280
282
Providing worldwide magnetic induction data.
induction_values get_induction_data_at(double longitude, double latitude)
mathematical vector of arbitrary type and size
Definition vector.h:40
earth_induction_model_t earth_induction_model
one singleton object of this type
find position-dependent data for magnetic declination and magnetic inclination
#define ROM
struct containing magnetic induction data for a regional region
struct containing magnetic induction data for a point