File: observationMisc.cpp

package info (click to toggle)
groops 0%2Bgit20240830%2Bds-1
  • links: PTS, VCS
  • area: non-free
  • in suites: trixie
  • size: 11,052 kB
  • sloc: cpp: 134,939; fortran: 1,569; makefile: 20
file content (123 lines) | stat: -rw-r--r-- 4,801 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
/***********************************************/
/**
* @file observationMisc.cpp
*
* @brief Right hand sides and calibration parameter.
*
* @author Torsten Mayer-Guerr
* @date 2008-07-28
*
*/
/***********************************************/

#define DOCSTRING_PodRightSide
#define DOCSTRING_SstRightSide
#define DOCSTRING_SggRightSide

#include "base/import.h"
#include "config/configRegister.h"
#include "files/fileInstrument.h"
#include "classes/tides/tides.h"
#include "classes/gravityfield/gravityfield.h"
#include "classes/miscAccelerations/miscAccelerations.h"
#include "observationMisc.h"

/***********************************************/

GROOPS_REGISTER_CLASS_WITHOUT_SUBS(PodRightSide, "podRightSideType")
GROOPS_READCONFIG_CLASS(PodRightSide, "podRightSideType")

PodRightSide::PodRightSide(Config &config, const std::string &name)
{
  try
  {
    FileName orbitName, accName;

    readConfigSequence(config, name, Config::MUSTSET, "", "");
    readConfig(config, "inputfileOrbit",         orbitName, Config::MUSTSET,  "", "kinematic positions of satellite as observations");
    readConfig(config, "inputfileAccelerometer", accName,   Config::OPTIONAL, "", "non-gravitational forces in satellite reference frame");
    readConfig(config, "forces",                 forces,    Config::MUSTSET,  "", "");
    endSequence(config);
    if(isCreateSchema(config)) return;

    orbitFile         = InstrumentFile::newFile(orbitName);
    accelerometerFile = InstrumentFile::newFile(accName);
  }
  catch(std::exception &e)
  {
    GROOPS_RETHROW(e)
  }
}

/***********************************************/
/***********************************************/

GROOPS_REGISTER_CLASS_WITHOUT_SUBS(SstRightSide, "sstRightSideType")
GROOPS_READCONFIG_CLASS(SstRightSide, "sstRightSideType")

SstRightSide::SstRightSide(Config &config, const std::string &name)
{
  try
  {
    std::vector<FileName> sstName;
    FileName              orbit1Name, acc1Name;
    FileName              orbit2Name, acc2Name;

    readConfigSequence(config, name, Config::MUSTSET, "", "");
    readConfig(config, "inputfileSatelliteTracking", sstName,      Config::OPTIONAL, "", "ranging observations and corrections");
    readConfig(config, "inputfileOrbit1",            orbit1Name,   Config::OPTIONAL, "", "kinematic positions of satellite A as observations");
    readConfig(config, "inputfileOrbit2",            orbit2Name,   Config::OPTIONAL, "", "kinematic positions of satellite B as observations");
    readConfig(config, "inputfileAccelerometer1",    acc1Name,     Config::OPTIONAL, "", "non-gravitational forces in satellite reference frame A");
    readConfig(config, "inputfileAccelerometer2",    acc2Name,     Config::OPTIONAL, "", "non-gravitational forces in satellite reference frame B");
    readConfig(config, "forces",                     forces,       Config::MUSTSET,  "", "");
    endSequence(config);
    if(isCreateSchema(config)) return;

    sstFile.resize(sstName.size());
    for(UInt i=0; i<sstName.size(); i++)
      sstFile.at(i) = InstrumentFile::newFile(sstName.at(i));
    orbit1File = InstrumentFile::newFile(orbit1Name);
    orbit2File = InstrumentFile::newFile(orbit2Name);
    accelerometer1File  = InstrumentFile::newFile(acc1Name);
    accelerometer2File  = InstrumentFile::newFile(acc2Name);
  }
  catch(std::exception &e)
  {
    GROOPS_RETHROW(e)
  }
}

/***********************************************/
/***********************************************/

GROOPS_REGISTER_CLASS_WITHOUT_SUBS(SggRightSide, "sggRightSideType")
GROOPS_READCONFIG_CLASS(SggRightSide, "sggRightSideType")

SggRightSide::SggRightSide(Config &config, const std::string &name)
{
  try
  {
    FileName              fileNameGradiometer;
    std::vector<FileName> fileNameReference;

    readConfigSequence(config, name, Config::MUSTSET, "", "");
    readConfig(config, "inputfileGradiometer",          fileNameGradiometer, Config::MUSTSET,  "", "observed gravity gradients");
    readConfig(config, "inputfileReferenceGradiometer", fileNameReference,   Config::OPTIONAL, "", "precomputed gradients at orbit positions");
    readConfig(config, "referencefield",                referencefield,      Config::DEFAULT,  "", "");
    readConfig(config, "tides",                         tides,               Config::DEFAULT,  "", "");
    endSequence(config);
    if(isCreateSchema(config)) return;

    gradiometerFile = InstrumentFile::newFile(fileNameGradiometer);
    referenceFile.resize(fileNameReference.size());
    for(UInt i=0; i<fileNameReference.size(); i++)
      referenceFile.at(i) = InstrumentFile::newFile(fileNameReference.at(i));
  }
  catch(std::exception &e)
  {
    GROOPS_RETHROW(e)
  }
}

/***********************************************/
/***********************************************/