General Purpose Geodetic Library
SgVgosDbStoreScan.cpp
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 
24 #include <math.h>
25 #include <netcdf.h>
26 
27 
28 #include <SgIdentities.h>
29 #include <SgLogger.h>
30 #include <SgVgosDb.h>
31 
32 
33 
34 /*=====================================================================================================*/
35 /* */
36 /* SgVgosDb implementation (continue -- storeScan part of vgosDb data tree) */
37 /* */
38 /*=====================================================================================================*/
39 //
41 {
43  SgNetCdf ncdf(path2RootDir_ + "/" +
45  sessionCode_, "", "");
46  //
47  if (numOfScans_ != epochs.size())
48  {
50  "::storeEpochs4Scans(): size mismatch: " +
51  QString("").sprintf("%d vs %d", numOfScans_, epochs.size()));
52  return false;
53  };
58  //
59  if (!setupFormat(fcfTimeUTC, ncdf))
60  {
62  "::storeEpochs4Scans(): format description failed");
63  return false;
64  };
65  ncdf.setServiceVars(var.getStub(), "Data are extracted from correlator files", "", "");
67  fcYmdhm .setHave2hideLCode(false);
68  //
69  //
70  double dSec;
71  int nYear, nMonth, nDay, nHour, nMin;
72  double *pS=ncdf.lookupVar(fcSecond.name())->data2double();
73  short *pD=ncdf.lookupVar(fcYmdhm .name())->data2short();
74 // short *pU=ncdf.lookupVar(fcUtc4 .name())->data2short();
75  for (int i=0; i<numOfScans_; i++)
76  {
77  epochs.at(i).toYMDHMS_tr(nYear, nMonth, nDay, nHour, nMin, dSec);
78  pD[5*i + 0] = nYear;
79  pD[5*i + 1] = nMonth;
80  pD[5*i + 2] = nDay;
81  pD[5*i + 3] = nHour;
82  pD[5*i + 4] = nMin;
83  pS[i] = dSec;
84 /*
85  pU[6*i + 0] = nYear;
86  pU[6*i + 1] = nMonth;
87  pU[6*i + 2] = nDay;
88  pU[6*i + 3] = nHour;
89  pU[6*i + 4] = nMin;
90  pU[6*i + 5] = round(dSec);
91 */
92  };
93  // write data:
95  if (!ncdf.putData())
96  {
98  "::storeEpochs4Scans(): cannot put data into " + ncdf.getFileName());
99  return false;
100  };
103  "::storeEpochs4Scans(): the data were successfully stored in " + ncdf.getFileName());
104  return true;
105 };
106 
107 
108 
109 //
111 {
113  SgNetCdf ncdf(path2RootDir_ + "/" +
115  sessionCode_, "", "");
116  //
117  if (numOfScans_ != epochs.size())
118  {
120  "::storeScanTimeMjd(): size mismatch: " +
121  QString("").sprintf("%d vs %d", numOfScans_, epochs.size()));
122  return false;
123  };
127  fcYmdhm .setHave2hideLCode(true);
128  //
129  if (!setupFormat(fcfScanTimeMjd, ncdf))
130  {
132  "::storeScanTimeMjd(): format description failed");
133  return false;
134  };
135  ncdf.setServiceVars(var.getStub(), "Data are extracted from correlator files", "", "");
137  fcYmdhm .setHave2hideLCode(false);
138  //
139  //
140  int *pD=ncdf.lookupVar(fcMjd .name())->data2int();
141  double *pF=ncdf.lookupVar(fcDayFrac .name())->data2double();
142  for (int i=0; i<numOfScans_; i++)
143  {
144  pD[i] = epochs.at(i).getDate();
145  pF[i] = epochs.at(i).getTime();
146  };
147  // write data:
149  if (!ncdf.putData())
150  {
152  "::storeScanTimeMjd(): cannot put data into " + ncdf.getFileName());
153  return false;
154  };
157  "::storeScanTimeMjd(): the data were successfully stored in " + ncdf.getFileName());
158  return true;
159 };
160 
161 
162 
163 //
164 bool SgVgosDb::storeScanName(const QList<QString>& scanNames, const QList<QString>& scanFullNames)
165 {
167  SgNetCdf ncdf(path2RootDir_ + "/" +
169  sessionCode_, "", "");
170  //
171  if (numOfScans_ != scanNames.size())
172  {
174  "::storeScanName(): scanName size mismatch: " +
175  QString("").sprintf("%d vs %d", numOfScans_, scanNames.size()));
176  return false;
177  };
178  if (numOfScans_ != scanFullNames.size())
179  {
181  "::storeScanName(): scanFullName size mismatch: " +
182  QString("").sprintf("%d vs %d", numOfScans_, scanFullNames.size()));
183  return false;
184  };
187  if (!setupFormat(fcfScanName, ncdf))
188  {
190  "::storeScanName(): format description failed");
191  return false;
192  };
193  ncdf.setServiceVars(var.getStub(), "Data are extracted from correlator files", "Scan", "TimeUTC.nc");
194  //
195  //
196  int lN, lF;
197  char *pN=ncdf.lookupVar(fcScanName .name())->data2char();
198  char *pF=ncdf.lookupVar(fcScanNameFull.name())->data2char();
199  lN = fcScanName .dims().at(1);
200  lF = fcScanNameFull .dims().at(1);
201  for (int i=0; i<numOfScans_; i++)
202  {
203  strncpy(pN + lN*i, qPrintable(scanNames .at(i)), lN);
204  strncpy(pF + lF*i, qPrintable(scanFullNames .at(i)), lF);
205  };
206  // write data:
208  if (!ncdf.putData())
209  {
211  "::storeScanName(): cannot put data into " + ncdf.getFileName());
212  return false;
213  };
216  "::storeScanName(): the data were successfully stored in " + ncdf.getFileName());
217  return true;
218 };
219 
220 
221 
222 //
224 {
226  SgNetCdf ncdf(path2RootDir_ + "/" +
228  sessionCode_, "", "");
229  //
230  if (numOfScans_ != corrRootFnames.size())
231  {
233  "::storeScanCrootFname(): corrRootFnames size mismatch: " +
234  QString("").sprintf("%d vs %d", numOfScans_, corrRootFnames.size()));
235  return false;
236  };
237  if (!setupFormat(fcfCorrRootFile, ncdf))
238  {
240  "::storeScanCrootFname(): format description failed");
241  return false;
242  };
243  //
244  ncdf.setServiceVars(var.getStub(), "Data are extracted from correlator files", "Scan", "TimeUTC.nc");
245  //
246  //
247  int lN;
248  char *pN=ncdf.lookupVar(fcCROOTFIL.name())->data2char();
249  lN = fcCROOTFIL.dims().at(1);
250  for (int i=0; i<numOfScans_; i++)
251  strncpy(pN + lN*i, qPrintable(corrRootFnames.at(i)), lN);
252  // write data:
254  if (!ncdf.putData())
255  {
257  "::storeScanCrootFname(): cannot put data into " + ncdf.getFileName());
258  return false;
259  };
262  "::storeScanCrootFname(): the data were successfully stored in " + ncdf.getFileName());
263  return true;
264 };
265 
266 
267 
268 //
269 bool SgVgosDb::storeScanEphemeris(const SgMatrix* rSun, const SgMatrix* rMoon, const SgMatrix* rEarth,
270  const SgMatrix* vSun, const SgMatrix* vMoon, const SgMatrix* vEarth, const SgMatrix* aEarth,
271  const QString& kind)
272 {
274  var.setKind(kind); // empty is ok too
275  //
276  SgNetCdf ncdf(path2RootDir_ + "/" +
278  sessionCode_, "", "");
279  //
280  if (numOfScans_ != (int)rSun->nRow())
281  {
283  "::storeScanEphemeris(): r_sun's matrix size mismatch: " +
284  QString("").sprintf("%d vs %d", numOfScans_, rSun->nRow()));
285  return false;
286  };
287  if (!setupFormat(fcfEphemeris, ncdf))
288  {
290  "::storeScanEphemeris(): format description failed");
291  return false;
292  };
293  //
294  ncdf.setServiceVars(var.getStub(), "Data are provided by CALC or similar software",
295  "Scan", "TimeUTC.nc");
296  //
297  //
298  double *pS=ncdf.lookupVar(fcSunXyz.name())->data2double();
299  double *pM=ncdf.lookupVar(fcMoonXyz.name())->data2double();
300  double *pE=ncdf.lookupVar(fcEarthXyz.name())->data2double();
301  for (int i=0; i<numOfScans_; i++)
302  {
303  pS[6*i ] = rSun->getElement(i, 0);
304  pS[6*i + 1] = rSun->getElement(i, 1);
305  pS[6*i + 2] = rSun->getElement(i, 2);
306  pS[6*i + 3] = vSun->getElement(i, 0);
307  pS[6*i + 4] = vSun->getElement(i, 1);
308  pS[6*i + 5] = vSun->getElement(i, 2);
309 
310  pM[6*i ] = rMoon->getElement(i, 0);
311  pM[6*i + 1] = rMoon->getElement(i, 1);
312  pM[6*i + 2] = rMoon->getElement(i, 2);
313  pM[6*i + 3] = vMoon->getElement(i, 0);
314  pM[6*i + 4] = vMoon->getElement(i, 1);
315  pM[6*i + 5] = vMoon->getElement(i, 2);
316 
317  pE[9*i ] = rEarth->getElement(i, 0);
318  pE[9*i + 1] = rEarth->getElement(i, 1);
319  pE[9*i + 2] = rEarth->getElement(i, 2);
320  pE[9*i + 3] = vEarth->getElement(i, 0);
321  pE[9*i + 4] = vEarth->getElement(i, 1);
322  pE[9*i + 5] = vEarth->getElement(i, 2);
323  pE[9*i + 6] = aEarth->getElement(i, 0);
324  pE[9*i + 7] = aEarth->getElement(i, 1);
325  pE[9*i + 8] = aEarth->getElement(i, 2);
326  };
327  // write data:
329  if (!ncdf.putData())
330  {
332  "::storeScanEphemeris(): cannot put data into " + ncdf.getFileName());
333  return false;
334  };
337  "::storeScanEphemeris(): the data were successfully stored in " + ncdf.getFileName());
338  return true;
339 };
340 
341 
342 
343 //
344 bool SgVgosDb::storeScanNutationEqxWahr(const SgMatrix* pPsiEps, const SgMatrix* pPsiEps_rates)
345 {
347  SgNetCdf ncdf(path2RootDir_ + "/" +
349  sessionCode_, "", "");
350  //
351  if (numOfScans_ != (int)pPsiEps->nRow())
352  {
354  "::storeScanNutationEqxWahr(): val's matrix size mismatch: " +
355  QString("").sprintf("%d vs %d", numOfScans_, pPsiEps->nRow()));
356  return false;
357  };
358  if (numOfScans_ != (int)pPsiEps_rates->nRow())
359  {
361  "::storeScanNutationEqxWahr(): rate's matrix size mismatch: " +
362  QString("").sprintf("%d vs %d", numOfScans_, pPsiEps_rates->nRow()));
363  return false;
364  };
365  if (!setupFormat(fcfNutationEqxWahr, ncdf))
366  {
368  "::storeScanNutationEqxWahr(): format description failed");
369  return false;
370  };
371  //
372  ncdf.setServiceVars(var.getStub(), "Data are provided by CALC or similar software",
373  "Scan", "TimeUTC.nc");
374  //
375  //
376  double *p=ncdf.lookupVar(fcNutationEqxWahr.name())->data2double();
377  for (int i=0; i<numOfScans_; i++)
378  {
379  p[4*i ] = pPsiEps->getElement(i, 0);
380  p[4*i + 1] = pPsiEps->getElement(i, 1);
381  p[4*i + 2] = pPsiEps_rates->getElement(i, 0);
382  p[4*i + 3] = pPsiEps_rates->getElement(i, 1);
383  };
384  // write data:
386  if (!ncdf.putData())
387  {
389  "::storeScanNutationEqxWahr(): cannot put data into " + ncdf.getFileName());
390  return false;
391  };
394  "::storeScanNutationEqxWahr(): the data were successfully stored in " + ncdf.getFileName());
395  return true;
396 };
397 
398 
399 
400 //
401 bool SgVgosDb::storeScanNutationEqx(const SgMatrix* pPsiEps, const SgMatrix* pPsiEps_rates,
402  const QString& kind)
403 {
405  var.setKind(kind); // empty is ok too
406  //
407  SgNetCdf ncdf(path2RootDir_ + "/" +
409  sessionCode_, "", "");
410  //
411  if (numOfScans_ != (int)pPsiEps->nRow())
412  {
414  "::storeScanNutationEqx(): val's matrix size mismatch: " +
415  QString("").sprintf("%d vs %d", numOfScans_, pPsiEps->nRow()));
416  return false;
417  };
418  if (numOfScans_ != (int)pPsiEps_rates->nRow())
419  {
421  "::storeScanNutationEqx(): rate's matrix size mismatch: " +
422  QString("").sprintf("%d vs %d", numOfScans_, pPsiEps_rates->nRow()));
423  return false;
424  };
425  if (!setupFormat(fcfNutationEqx, ncdf))
426  {
428  "::storeScanNutationEqx(): format description failed");
429  return false;
430  };
431  //
432  ncdf.setServiceVars(var.getStub(), "Data are provided by CALC or similar software",
433  "Scan", "TimeUTC.nc");
434  //
435  //
436  double *p=ncdf.lookupVar(fcNutationEqx.name())->data2double();
437  for (int i=0; i<numOfScans_; i++)
438  {
439  p[4*i ] = pPsiEps->getElement(i, 0);
440  p[4*i + 1] = pPsiEps->getElement(i, 1);
441  p[4*i + 2] = pPsiEps_rates->getElement(i, 0);
442  p[4*i + 3] = pPsiEps_rates->getElement(i, 1);
443  };
444  // write data:
446  if (!ncdf.putData())
447  {
449  "::storeScanNutationEqx(): cannot put data into " + ncdf.getFileName());
450  return false;
451  };
454  "::storeScanNutationEqx(): the data were successfully stored in " + ncdf.getFileName());
455  return true;
456 };
457 
458 
459 
460 //
461 bool SgVgosDb::storeScanNutationNro(const SgMatrix* pXys, const SgMatrix* pXys_rates,
462  const QString& kind)
463 {
465  var.setKind(kind); // empty is ok too
466  //
467  SgNetCdf ncdf(path2RootDir_ + "/" +
469  sessionCode_, "", "");
470  //
471  if (numOfScans_ != (int)pXys->nRow())
472  {
474  "::storeScanNutationNro(): val's matrix size mismatch: " +
475  QString("").sprintf("%d vs %d", numOfScans_, pXys->nRow()));
476  return false;
477  };
478  if (numOfScans_ != (int)pXys_rates->nRow())
479  {
481  "::storeScanNutationNro(): rate's matrix size mismatch: " +
482  QString("").sprintf("%d vs %d", numOfScans_, pXys_rates->nRow()));
483  return false;
484  };
485  if (!setupFormat(fcfNutationNro, ncdf))
486  {
488  "::storeScanNutationNro(): format description failed");
489  return false;
490  };
491  //
492  ncdf.setServiceVars(var.getStub(), "Data are provided by CALC or similar software",
493  "Scan", "TimeUTC.nc");
494  //
495  //
496  double *p=ncdf.lookupVar(fcNutationNro.name())->data2double();
497  for (int i=0; i<numOfScans_; i++)
498  {
499  p[6*i ] = pXys->getElement(i, 0);
500  p[6*i + 1] = pXys->getElement(i, 1);
501  p[6*i + 2] = pXys->getElement(i, 2);
502  p[6*i + 3] = pXys_rates->getElement(i, 0);
503  p[6*i + 4] = pXys_rates->getElement(i, 1);
504  p[6*i + 5] = pXys_rates->getElement(i, 2);
505  };
506  // write data:
508  if (!ncdf.putData())
509  {
511  "::storeScanNutationNro(): cannot put data into " + ncdf.getFileName());
512  return false;
513  };
516  "::storeScanNutationNro(): the data were successfully stored in " + ncdf.getFileName());
517  return true;
518 };
519 
520 
521 
522 //
523 bool SgVgosDb::storeScanTrf2crf(const SgMatrix* val, const SgMatrix* rat, const SgMatrix* acc)
524 {
526  SgNetCdf ncdf(path2RootDir_ + "/" +
528  sessionCode_, "", "");
529  //
530  if (numOfScans_ != (int)val->nRow())
531  {
533  "::storeScanTrf2crf(): val's matrix size mismatch: " +
534  QString("").sprintf("%d vs %d", numOfScans_, val->nRow()));
535  return false;
536  };
537  if (numOfScans_ != (int)rat->nRow())
538  {
540  "::storeScanTrf2crf(): rate's matrix size mismatch: " +
541  QString("").sprintf("%d vs %d", numOfScans_, rat->nRow()));
542  return false;
543  };
544  if (numOfScans_ != (int)acc->nRow())
545  {
547  "::storeScanTrf2crf(): acc's matrix size mismatch: " +
548  QString("").sprintf("%d vs %d", numOfScans_, acc->nRow()));
549  return false;
550  };
551  if (!setupFormat(fcfRotCf2J2K, ncdf))
552  {
554  "::storeScanTrf2crf(): format description failed");
555  return false;
556  };
557  //
558  ncdf.setServiceVars(var.getStub(), "Data are provided by CALC or similar software",
559  "Scan", "TimeUTC.nc");
560  //
561  //
562  double *p=ncdf.lookupVar(fcRotCf2J2K.name())->data2double();
563  for (int i=0; i<numOfScans_; i++)
564  for (int j=0; j<9; j++)
565  {
566  p[27*i + j ] = val->getElement(i, j);
567  p[27*i + 9 + j ] = rat->getElement(i, j);
568  p[27*i +18 + j ] = acc->getElement(i, j);
569  };
570  // write data:
572  if (!ncdf.putData())
573  {
575  "::storeScanTrf2crf(): cannot put data into " + ncdf.getFileName());
576  return false;
577  };
580  "::storeScanTrf2crf(): the data were successfully stored in " + ncdf.getFileName());
581  return true;
582 };
583 
584 
585 
586 //
587 bool SgVgosDb::storeErpApriori(const SgVector* ut1_tai, const SgMatrix* pm)
588 {
590  SgNetCdf ncdf(path2RootDir_ + "/" +
592  sessionCode_, "", "");
593  //
594  if (numOfScans_ != (int)ut1_tai->n())
595  {
597  "::storeErpApriori(): ut1_tai vector size mismatch: " +
598  QString("").sprintf("%d vs %d", numOfScans_, ut1_tai->n()));
599  return false;
600  };
601  if (numOfScans_ != (int)pm->nRow())
602  {
604  "::storeErpApriori(): PM matrix size mismatch: " +
605  QString("").sprintf("%d vs %d", numOfScans_, pm->nRow()));
606  return false;
607  };
608  if (!setupFormat(fcfErpApriori, ncdf))
609  {
611  "::storeErpApriori(): format description failed");
612  return false;
613  };
614  //
615  ncdf.setServiceVars(var.getStub(), "Data are provided by CALC or similar software",
616  "Scan", "TimeUTC.nc");
617  //
618  //
619  double *pU=ncdf.lookupVar(fcUt1_Tai.name())->data2double();
620  double *pP=ncdf.lookupVar(fcPolarMotion.name())->data2double();
621  for (int i=0; i<numOfScans_; i++)
622  {
623  pU[i] = ut1_tai->getElement(i);
624  pP[2*i ] = pm->getElement(i, 0);
625  pP[2*i + 1] = pm->getElement(i, 1);
626  };
627  // write data:
629  if (!ncdf.putData())
630  {
632  "::storeErpApriori(): cannot put data into " + ncdf.getFileName());
633  return false;
634  };
637  "::storeErpApriori(): the data were successfully stored in " + ncdf.getFileName());
638  return true;
639 };
640 
641 
642 
643 
644 /*=====================================================================================================*/
645 
@ SD_NumScans
Definition: SgIoDriver.h:54
SgLogger * logger
Definition: SgLogger.cpp:231
SgVgosDb::FmtChkVar fcSecond("Second", NC_DOUBLE, true, QList< int >()<< SD_Any, "SEC TAG ", "Seconds part of UTC TAG.........", "second")
SgVgosDb::FmtChkVar fcYmdhm("YMDHM", NC_SHORT, true, QList< int >()<< SD_Any<< 5, "UTC TAG ", "Epoch UTC YMDHM.................")
QList< SgVgosDb::FmtChkVar * > fcfTimeUTC
Definition: SgVgosDb.cpp:2655
SgVgosDb::FmtChkVar fcMoonXyz
Definition: SgVgosDb.h:1976
QList< SgVgosDb::FmtChkVar * > fcfNutationEqxWahr
Definition: SgVgosDb.h:2058
QList< SgVgosDb::FmtChkVar * > fcfCorrRootFile
Definition: SgVgosDb.h:2059
QList< SgVgosDb::FmtChkVar * > fcfRotCf2J2K
Definition: SgVgosDb.h:2059
SgVgosDb::FmtChkVar fcScanNameFull
Definition: SgVgosDb.h:1979
SgVgosDb::FmtChkVar fcSunXyz
Definition: SgVgosDb.h:1976
SgVgosDb::FmtChkVar fcUt1_Tai
Definition: SgVgosDb.h:1980
SgVgosDb::FmtChkVar fcCROOTFIL
Definition: SgVgosDb.h:1980
SgVgosDb::FmtChkVar fcRotCf2J2K
Definition: SgVgosDb.h:1980
SgVgosDb::FmtChkVar fcPolarMotion
Definition: SgVgosDb.h:1981
QList< SgVgosDb::FmtChkVar * > fcfEphemeris
Definition: SgVgosDb.h:2059
QList< SgVgosDb::FmtChkVar * > fcfNutationEqx
Definition: SgVgosDb.h:2058
QList< SgVgosDb::FmtChkVar * > fcfNutationNro
Definition: SgVgosDb.h:2059
SgVgosDb::FmtChkVar fcEarthXyz
Definition: SgVgosDb.h:1977
QList< SgVgosDb::FmtChkVar * > fcfScanTimeMjd
Definition: SgVgosDb.h:2059
SgVgosDb::FmtChkVar fcNutationEqxWahr
Definition: SgVgosDb.h:1979
SgVgosDb::FmtChkVar fcNutationEqx
Definition: SgVgosDb.h:1980
SgVgosDb::FmtChkVar fcDayFrac
Definition: SgVgosDb.h:1980
SgVgosDb::FmtChkVar fcScanName
SgVgosDb::FmtChkVar fcNutationNro
Definition: SgVgosDb.h:1980
SgVgosDb::FmtChkVar fcMjd
Definition: SgVgosDb.h:1980
QList< SgVgosDb::FmtChkVar * > fcfScanName
QList< SgVgosDb::FmtChkVar * > fcfErpApriori
Definition: SgVgosDb.h:2060
const SgIdentities * currentIdentities_
Definition: SgIoDriver.h:133
virtual void write(LogLevel, quint32, const QString &, bool=false)
Definition: SgLogger.cpp:88
@ IO_NCDF
Definition: SgLogger.h:66
unsigned int nRow() const
Definition: SgMatrix.h:352
double getElement(unsigned int i, unsigned int j) const
Definition: SgMatrix.h:385
const char * data2char() const
Definition: SgNetCdf.cpp:459
const int * data2int() const
Definition: SgNetCdf.cpp:503
const short * data2short() const
Definition: SgNetCdf.cpp:481
const double * data2double() const
Definition: SgNetCdf.cpp:525
SgNcdfVariable * lookupVar(const QString &name) const
Definition: SgNetCdf.h:395
void setServiceVars(const QString &stub, const QString &dataOrigin, const QString &timeTag, const QString &timeTagFile)
Definition: SgNetCdf.cpp:1263
bool putData()
Definition: SgNetCdf.cpp:1357
const QString & getFileName() const
Definition: SgNetCdf.h:497
@ OM_REGULAR
Definition: SgNetCdf.h:324
void setOperationMode(OperationMode om)
Definition: SgNetCdf.h:381
QString name4export(const QString &rootDir, SgNetCdf::OperationMode om, const QString &aBand="")
Definition: SgVgosDb.cpp:167
void setKind(const QString &str)
Definition: SgVgosDb.h:104
const QString & getStub() const
Definition: SgVgosDb.h:93
unsigned int n() const
Definition: SgVector.h:327
double getElement(unsigned int i) const
Definition: SgVector.h:362
void setHave2hideLCode(bool have2)
Definition: SgVgosDb.h:225
const QList< int > & dims() const
Definition: SgVgosDb.h:217
const QString & name() const
Definition: SgVgosDb.h:213
void alternateDimension(int i, int num)
Definition: SgVgosDb.h:222
SgVdbVariable vErpApriori_
Definition: SgVgosDb.h:1453
SgVdbVariable vNutationNro_
Definition: SgVgosDb.h:1457
bool storeScanName(const QList< QString > &scanNames, const QList< QString > &scanFullNames)
static const QString className()
Definition: SgVgosDb.cpp:251
bool setupFormat(const QList< FmtChkVar * > &, SgNetCdf &, const QString &stationKey=QString(""), const QString &bandKey=QString(""))
Definition: SgVgosDb.cpp:2336
bool storeScanTimeMjd(const QList< SgMJD > &epochs)
SgVdbVariable vNutationEqx_
Definition: SgVgosDb.h:1456
SgNetCdf::OperationMode operationMode_
Definition: SgVgosDb.h:1530
bool storeScanEphemeris(const SgMatrix *rSun, const SgMatrix *rMoon, const SgMatrix *rEarth, const SgMatrix *vSun, const SgMatrix *vMoon, const SgMatrix *vEarth, const SgMatrix *aEarth, const QString &kind)
bool storeEpochs4Scans(const QList< SgMJD > &)
bool storeErpApriori(const SgVector *ut1_tai, const SgMatrix *pm)
bool storeScanNutationEqxWahr(const SgMatrix *pPsiEps, const SgMatrix *pPsiEps_rates)
bool storeScanTrf2crf(const SgMatrix *val, const SgMatrix *rat, const SgMatrix *acc)
bool storeScanCrootFname(const QList< QString > &corrRootFnames)
bool storeScanNutationNro(const SgMatrix *pXys, const SgMatrix *pXys_rates, const QString &kind)
bool storeScanNutationEqx(const SgMatrix *pPsiEps, const SgMatrix *pPsiEps_rates, const QString &kind)
SgVdbVariable vScanTimeUTC_
Definition: SgVgosDb.h:1451
SgVdbVariable vNutationEqx_kWahr_
Definition: SgVgosDb.h:1455
QString sessionCode_
Definition: SgVgosDb.h:1416
QString outputFormatId_
Definition: SgVgosDb.h:1402
ProgramSolveDescriptor progSolveDescriptor_
Definition: SgVgosDb.h:1524
SgVdbVariable vScanName_
Definition: SgVgosDb.h:1452
SgVdbVariable vRot_CF2J2K_
Definition: SgVgosDb.h:1458
QString path2RootDir_
Definition: SgVgosDb.h:1394
SgVdbVariable vEphemeris_
Definition: SgVgosDb.h:1454
int numOfScans_
Definition: SgVgosDb.h:1386
SgVdbVariable vCorrRootFile_
Definition: SgVgosDb.h:1459