General Purpose Geodetic Library
SgMappingFunction.h
Go to the documentation of this file.
1 /*
2  *
3  * This file is a part of Space Geodetic Library. The library is used by
4  * nuSolve, a part of CALC/SOLVE system, and designed to make analysis of
5  * geodetic VLBI observations.
6  * Copyright (C) 2010-2020 Sergei Bolotin.
7  *
8  * This program is free software: you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation, either version 3 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program. If not, see <http://www.gnu.org/licenses/>.
20  *
21  */
22 
23 #ifndef SG_MAPPING_FUNCTION_H
24 #define SG_MAPPING_FUNCTION_H
25 
26 
27 #ifdef HAVE_CONFIG_H
28 # include <config.h>
29 #endif
30 
31 
32 #include <QtCore/QString>
33 
34 #include <SgMJD.h>
35 #include <SgMeteoData.h>
36 
37 
38 
39 
40 class SgVlbiStationInfo;
41 /***===================================================================================================*/
48 {
49 public:
50  //
51  // constructors/destructors:
52  //
56  inline SgMappingFunction();
57 
61  inline virtual ~SgMappingFunction();
62 
63  //
64  // Interfaces:
65  //
66  inline double m() const {return m_;};
67  inline double dM_dE() const {return dM_dE_;};
68 
69  //
70  // Functions:
71  //
74  static const QString className();
75 
83  virtual double calc(const SgMeteoData& meteo, double e,
84  const SgVlbiStationInfo* stnInfo, const SgMJD& epoch);
85 
86  //
87  // Friends:
88  //
89 
90  //
91  // I/O:
92  //
93  // ...
94 
95 protected:
96  double m_; // mapping function
97  double dM_dE_; // mapping function partial with resp. to elevation ang
98 };
99 /*=====================================================================================================*/
100 
101 
102 
103 
104 
105 
106 /*=====================================================================================================*/
110 /*=====================================================================================================*/
112 {
113 public:
114  //
115  // Functions:
116  //
119  static const QString className();
120 
128  virtual double calc(const SgMeteoData& meteo, double e,
129  const SgVlbiStationInfo* stnInfo, const SgMJD& epoch);
130 
133 
134 private:
135  static const double modelArg_[5];
136  static const double modelA_avg_[5];
137  static const double modelB_avg_[5];
138  static const double modelC_avg_[5];
139  static const double modelA_amp_[5];
140  static const double modelB_amp_[5];
141  static const double modelC_amp_[5];
142  double linterpolate(double, double, double, double, double);
143 };
144 /*=====================================================================================================*/
145 
146 
147 
148 
149 
150 
151 /*=====================================================================================================*/
155 /*=====================================================================================================*/
157 {
158 public:
159  //
160  // Functions:
161  //
164  static const QString className();
165 
173  virtual double calc(const SgMeteoData& meteo, double e,
174  const SgVlbiStationInfo* stnInfo, const SgMJD& epoch);
175 
178 
179 private:
180  static const double modelArg_[5];
181  static const double modelA_avg_[5];
182  static const double modelB_avg_[5];
183  static const double modelC_avg_[5];
184  double linterpolate(double, double, double, double, double);
185 };
186 /*=====================================================================================================*/
187 
188 
189 
190 
191 
192 
193 /*=====================================================================================================*/
197 /*=====================================================================================================*/
199 {
200 public:
201  //
202  // Functions:
203  //
206  static const QString className();
207 
215  virtual double calc(const SgMeteoData& meteo, double e,
216  const SgVlbiStationInfo* stnInfo, const SgMJD& epoch);
217 };
218 /*=====================================================================================================*/
219 
220 
221 
222 
223 
224 
225 /*=====================================================================================================*/
229 /*=====================================================================================================*/
231 {
232 public:
233  //
234  // Functions:
235  //
238  static const QString className();
239 
242 
243 
251  virtual double calc(const SgMeteoData& meteo, double e, const SgVlbiStationInfo* stnInfo,
252  const SgMJD& epoch);
253 };
254 /*=====================================================================================================*/
255 
256 
257 
258 /*=====================================================================================================*/
262 /*=====================================================================================================*/
264 {
265 public:
266  //
267  // Functions:
268  //
271  static const QString className();
272 
275 
283  virtual double calc(const SgMeteoData& meteo, double e, const SgVlbiStationInfo* stnInfo,
284  const SgMJD& epoch);
285 };
286 /*=====================================================================================================*/
287 
288 
289 
290 
291 
292 
293 
294 
295 
296 
297 /*=====================================================================================================*/
298 /* */
299 /* SgMappingFunction inline members: */
300 /* */
301 /*=====================================================================================================*/
302 //
303 //
304 // CONSTRUCTORS:
305 //
306 // An empty constructor:
308 {
309  m_ = dM_dE_ = 0.0;
310 };
311 
312 
313 
314 // A destructor:
316 {
317  // nothing to do
318 };
319 
320 
321 
322 //
323 // INTERFACES:
324 //
325 
326 //
327 // FUNCTIONS:
328 //
329 //
330 //
331 
332 // FRIENDS:
333 //
334 //
335 //
336 /*=====================================================================================================*/
337 
338 
339 
340 
341 
342 
343 
344 
345 /*=====================================================================================================*/
346 //
347 // aux functions:
348 //
349 
350 
351 /*=====================================================================================================*/
352 #endif //SG_MAPPING_FUNCTION_H
virtual double calc(const SgMeteoData &meteo, double e, const SgVlbiStationInfo *stnInfo, const SgMJD &epoch)
static const QString className()
static const double modelArg_[5]
static const double modelA_avg_[5]
static const double modelC_amp_[5]
static const QString className()
static const double modelA_amp_[5]
static const double modelB_amp_[5]
static const double modelC_avg_[5]
double linterpolate(double, double, double, double, double)
static const double modelB_avg_[5]
virtual double calc(const SgMeteoData &meteo, double e, const SgVlbiStationInfo *stnInfo, const SgMJD &epoch)
static const QString className()
virtual double calc(const SgMeteoData &meteo, double e, const SgVlbiStationInfo *stnInfo, const SgMJD &epoch)
Definition: SgMJD.h:59
virtual double calc(const SgMeteoData &meteo, double e, const SgVlbiStationInfo *stnInfo, const SgMJD &epoch)
double dM_dE() const
virtual ~SgMappingFunction()
double m() const
static const QString className()
virtual double calc(const SgMeteoData &meteo, double e, const SgVlbiStationInfo *stnInfo, const SgMJD &epoch)
static const QString className()
static const double modelArg_[5]
static const double modelC_avg_[5]
virtual double calc(const SgMeteoData &meteo, double e, const SgVlbiStationInfo *stnInfo, const SgMJD &epoch)
double linterpolate(double, double, double, double, double)
static const double modelA_avg_[5]
static const double modelB_avg_[5]
static const QString className()