ParametricGeoMagChange.cc
Go to the documentation of this file.
2 
3 namespace fwk {
4 
5  ParametricGeoMagChange::ParametricGeoMagChange(size_t order, double g[], double h[]) :
6  fOrder(order), fG(std::valarray<double> (g,order*(order+1)/2)), fH(std::valarray<double> (h, order*(order+1) / 2))
7  {}
8 
9 
12  const ParametricGeoMagneticField &baseModel)
13  {
14  // new_coefficients = old_coefficients + dt * change_coefficients
15  //
16  // If change and base model differ in size, resize accordingly.
17  // That should be a corner case, but its implementation is trivial.
18 
19  ParametricGeoMagneticField model = baseModel; //copy constructor
20 
21  // we are friends ...
22  if (fOrder > model.fOrder)
23  {
24  model.Grow(fOrder);
25  }
26 
27  if (model.fOrder == fOrder)
28  {
29  model.fG += years * fG;
30  model.fH += years * fH;
31  }
32  else // unlikely and maybe senseless case
33  {
34  size_t order = model.fOrder;
35  std::valarray<double> g = fG;
36  std::valarray<double> h = fH;
37  g.resize(order*(order+1) / 2, 0.0);
38  h.resize(order*(order+1) / 2, 0.0);
39 
40  model.fG += years * g;
41  model.fH += years * h;
42  }
43 
44  return model;
45  }
46 
47 
48  /* Meant for testing
49  Parameters should rather be read from file/db.
50  */
53  {
54  double g[] ={
55  11.40,
56  16.70,
57  -11.30,
58  -3.90,
59  2.70,
60  1.30,
61  -3.90,
62  -2.90,
63  -8.10,
64  -1.40,
65  2.00,
66  -8.90,
67  4.40,
68  -2.30,
69  -0.50,
70  0.50,
71  -1.50,
72  -0.70,
73  1.30,
74  1.40,
75  -0.30,
76  -0.30,
77  -0.30,
78  1.90,
79  -1.60,
80  -0.20,
81  1.80,
82  0.20,
83  -0.10,
84  -0.60,
85  1.40,
86  0.30,
87  0.10,
88  -0.80,
89  0.40,
90  -0.10,
91  0.10,
92  -0.50,
93  0.30,
94  -0.30,
95  0.30,
96  0.20,
97  -0.50,
98  0.20,
99  0.00,
100  0.00,
101  0.00,
102  0.00,
103  0.00,
104  0.00,
105  0.00,
106  0.00,
107  0.00,
108  0.00,
109  0.00,
110  0.00,
111  0.00,
112  0.00,
113  0.00,
114  0.00,
115  0.00,
116  0.00,
117  0.00,
118  0.00,
119  0.00,
120  0.00,
121  0.00,
122  0.00,
123  0.00,
124  0.00,
125  0.00,
126  0.00,
127  0.00,
128  0.00,
129  0.00,
130  0.00,
131  0.00,
132  0.00,
133  0.00,
134  0.00,
135  0.00,
136  0.00,
137  0.00,
138  0.00,
139  0.00,
140  0.00,
141  0.00,
142  0.00,
143  0.00,
144  0.00,
145  0.00,
146  0.00,
147  0.00,
148  0.00,
149  0.00,
150  0.00,
151  0.00,
152  0.00,
153  0.00,
154  0.00,
155  0.00,
156  0.00,
157  0.00,
158  0.00
159  };
160 
161  double h[] = {
162  0.00,
163  -28.80,
164  0.00,
165  -23.00,
166  -12.90,
167  0.00,
168  8.60,
169  -2.90,
170  -2.10,
171  0.00,
172  0.40,
173  3.20,
174  3.60,
175  -0.80,
176  0.00,
177  0.50,
178  1.50,
179  0.90,
180  3.70,
181  -0.60,
182  0.00,
183  -0.10,
184  -2.10,
185  -0.40,
186  -0.50,
187  0.80,
188  0.50,
189  0.00,
190  0.60,
191  0.30,
192  -0.20,
193  -0.10,
194  -0.80,
195  -0.30,
196  0.20,
197  0.00,
198  0.00,
199  0.20,
200  0.50,
201  0.40,
202  0.10,
203  -0.10,
204  0.40,
205  0.40,
206  0.00,
207  0.00,
208  0.00,
209  0.00,
210  0.00,
211  0.00,
212  0.00,
213  0.00,
214  0.00,
215  0.00,
216  0.00,
217  0.00,
218  0.00,
219  0.00,
220  0.00,
221  0.00,
222  0.00,
223  0.00,
224  0.00,
225  0.00,
226  0.00,
227  0.00,
228  0.00,
229  0.00,
230  0.00,
231  0.00,
232  0.00,
233  0.00,
234  0.00,
235  0.00,
236  0.00,
237  0.00,
238  0.00,
239  0.00,
240  0.00,
241  0.00,
242  0.00,
243  0.00,
244  0.00,
245  0.00,
246  0.00,
247  0.00,
248  0.00,
249  0.00,
250  0.00,
251  0.00,
252  0.00,
253  0.00,
254  0.00,
255  0.00,
256  0.00,
257  0.00,
258  0.00,
259  0.00,
260  0.00,
261  0.00,
262  0.00,
263  0.00,
264  0.00,
265  0.00
266  };
267 
268  return ParametricGeoMagChange (14, g, h);
269  }
270 
271 
272 }
ParametricGeoMagneticField Extrapolate(double years, const ParametricGeoMagneticField &baseModel)
Rate-of-change model for spherical harmonics parametrisation of geomagnetic field.
ParametricGeoMagChange(size_t order, double g[], double h[])
static ParametricGeoMagChange SV2010_2015()
Named constructor for 2010 to 2015 SV change model.
constexpr double g
Definition: AugerUnits.h:200
Spherical harmonics parametrisation of geomagnetic field.

, generated on Tue Sep 26 2023.