Commit afa22fae5d532a6d2590e6fe710533caba97eacb
1 parent
50365881
Exists in
master
and in
81 other branches
presque
Showing
7 changed files
with
381 additions
and
59 deletions
Show diff stats
@@ -0,0 +1,30 @@ | @@ -0,0 +1,30 @@ | ||
1 | +/* | ||
2 | + * To change this license header, choose License Headers in Project Properties. | ||
3 | + * To change this template file, choose Tools | Templates | ||
4 | + * and open the template in the editor. | ||
5 | + */ | ||
6 | +#include "ServicesServer.hh" | ||
7 | +#include "PluginManager.hh" | ||
8 | + | ||
9 | +#include "MLTProcess.hh" | ||
10 | + | ||
11 | +using namespace AMDA::Parameters; | ||
12 | + | ||
13 | +/** | ||
14 | + Retrieve the Plugin version we're going to expect | ||
15 | +*/ | ||
16 | +extern "C" const char* getPluginVersion() | ||
17 | +{ | ||
18 | + return "(Version)"; | ||
19 | +} | ||
20 | + | ||
21 | +/** | ||
22 | + Tells us to register our functionality to an engine kernel | ||
23 | +*/ | ||
24 | +extern "C" void registerPlugin(AMDA::Plugins::PluginManager & pm) | ||
25 | +{ | ||
26 | + ProcessFactory factMLTProcess = boost::factory<MLTProcess*>(); | ||
27 | + ServicesServer::getInstance()->addProcessFactory("maglib_mlt", factMLTProcess); | ||
28 | + ServicesServer::getInstance()->linkProcessWithPlugin("maglib_mlt", pm.getCurrentPluginPath()); | ||
29 | +} | ||
30 | + |
src/ExternLib/Maglib/CMakeLists.txt
@@ -29,6 +29,7 @@ ADD_LIBRARY( maglib SHARED ${source_files} ) | @@ -29,6 +29,7 @@ ADD_LIBRARY( maglib SHARED ${source_files} ) | ||
29 | target_link_libraries( | 29 | target_link_libraries( |
30 | maglib | 30 | maglib |
31 | ${LOG4CXX_LIBRARIES} | 31 | ${LOG4CXX_LIBRARIES} |
32 | + $(MAGLIBLIBRARIES) | ||
32 | Parameters | 33 | Parameters |
33 | InternLib | 34 | InternLib |
34 | TimeTableCatalog | 35 | TimeTableCatalog |
@@ -0,0 +1,56 @@ | @@ -0,0 +1,56 @@ | ||
1 | +/* | ||
2 | + * To change this license header, choose License Headers in Project Properties. | ||
3 | + * To change this template file, choose Tools | Templates | ||
4 | + * and open the template in the editor. | ||
5 | + */ | ||
6 | + | ||
7 | +/* | ||
8 | + * File: MLTProcess.cc | ||
9 | + * Author: hacene | ||
10 | + * | ||
11 | + * Created on July 23, 2020, 4:14 PM | ||
12 | + */ | ||
13 | +#include <stdlib.h> | ||
14 | +#include <string> | ||
15 | + | ||
16 | +#include "Operation.hh" | ||
17 | +#include "ParameterManager.hh" | ||
18 | +#include "ParameterCreatorFromExpression.hh" | ||
19 | +#include "MLTProcess.hh" | ||
20 | +#include "MaglibCreator.hh" | ||
21 | + | ||
22 | +namespace AMDA { | ||
23 | + namespace Parameters { | ||
24 | + | ||
25 | + MLTProcess::MLTProcess(Parameter& parameter) : SingleParamProcess_CRTP(parameter) { | ||
26 | + } | ||
27 | + | ||
28 | + MLTProcess::MLTProcess(const MLTProcess& pProcess, Parameter ¶meter) : SingleParamProcess_CRTP(pProcess, parameter) { | ||
29 | + } | ||
30 | + | ||
31 | + TimeStamp MLTProcess::init() { | ||
32 | + | ||
33 | + TimeStamp timeStamp = _parameterInput->init(this, _timeIntervalList); | ||
34 | + Parameter::InfoList lInfoList = _parameterInput->getInfoList(); | ||
35 | + _parameter.getInfoList().insert(lInfoList.begin(), lInfoList.end()); | ||
36 | + _paramInput = _parameterInput->getParamData(this).get(); | ||
37 | + | ||
38 | + std::string isatex_str = "0"; | ||
39 | + std::string magout_str = "2"; | ||
40 | + | ||
41 | + if (_attributList.size() == 2) { | ||
42 | + isatex_str = _attributList[0]; | ||
43 | + magout_str = _attributList[1]; | ||
44 | + } | ||
45 | + MaglibCreator lCreator(*this, *_paramInput, "mlt", isatex_str, isatex_str); | ||
46 | + _operation = lCreator.getOperation(); | ||
47 | + _paramData = ParamDataSPtr(_operation->getParamOutput()); | ||
48 | + _paramData->setMinSampling(_paramInput->getMinSampling()); | ||
49 | + return timeStamp; | ||
50 | + } | ||
51 | + | ||
52 | + MLTProcess::~MLTProcess() { | ||
53 | + } | ||
54 | + | ||
55 | + } | ||
56 | +} | ||
0 | \ No newline at end of file | 57 | \ No newline at end of file |
@@ -0,0 +1,38 @@ | @@ -0,0 +1,38 @@ | ||
1 | +/* | ||
2 | + * To change this license header, choose License Headers in Project Properties. | ||
3 | + * To change this template file, choose Tools | Templates | ||
4 | + * and open the template in the editor. | ||
5 | + */ | ||
6 | + | ||
7 | +/* | ||
8 | + * File: MLTProcess.hh | ||
9 | + * Author: hacene | ||
10 | + * | ||
11 | + * Created on July 23, 2020, 4:14 PM | ||
12 | + */ | ||
13 | + | ||
14 | +#ifndef MLTPROCESS_HH | ||
15 | +#define MLTPROCESS_HH | ||
16 | + | ||
17 | +#include "SingleParamProcess.hh" | ||
18 | + | ||
19 | +namespace AMDA { | ||
20 | + namespace Parameters { | ||
21 | + | ||
22 | + class MLTProcess : public AMDA::Parameters::SingleParamProcess_CRTP<MLTProcess> { | ||
23 | + public: | ||
24 | + MLTProcess(Parameter ¶meter); | ||
25 | + MLTProcess(const MLTProcess& pProcess, Parameter& pParameter); | ||
26 | + virtual ~MLTProcess(); | ||
27 | + | ||
28 | + /** | ||
29 | + * @overload DataWriter::init() | ||
30 | + */ | ||
31 | + TimeStamp init(); | ||
32 | + | ||
33 | + }; | ||
34 | + | ||
35 | + } | ||
36 | +} | ||
37 | +#endif /* MLTPROCESS_HH */ | ||
38 | + |
src/ExternLib/Maglib/MaglibCreator.hh
@@ -14,6 +14,189 @@ | @@ -14,6 +14,189 @@ | ||
14 | #ifndef MAGLIBCREATOR_HH | 14 | #ifndef MAGLIBCREATOR_HH |
15 | #define MAGLIBCREATOR_HH | 15 | #define MAGLIBCREATOR_HH |
16 | 16 | ||
17 | +#include "ParamData.hh" | ||
18 | +#include "VisitorOfParamData.hh" | ||
19 | +#include "Posmag.hh" | ||
20 | + | ||
21 | +namespace AMDA { | ||
22 | +namespace Parameters { | ||
23 | + | ||
24 | + class MaglibCreator : public VisitorOfParamData { | ||
25 | + public: | ||
26 | + | ||
27 | + MaglibCreator(Process& pProcess, ParamData& paramInput, std::string output, std::string isatex, std::string magout) : | ||
28 | + _process(pProcess), _paramData(paramInput), _operation(NULL), _output(output) { | ||
29 | + _paramData.accept(*this); | ||
30 | + | ||
31 | + if (std::stoi(isatex) == 0 || std::stoi(isatex) == 1) { | ||
32 | + _isatex = std::stoi(isatex); | ||
33 | + } else { | ||
34 | + BOOST_THROW_EXCEPTION(AMDA::AMDA_exception() << AMDA::errno_code(AMDA_ERROR_UNKNOWN) << AMDA::ex_msg(" Not handled in the Mablib")); | ||
35 | + } | ||
36 | + if (std::stoi(magout) >= 0 && std::stoi(magout) <= 3) { | ||
37 | + _magout = std::stoi(magout); | ||
38 | + } else { | ||
39 | + BOOST_THROW_EXCEPTION(AMDA::AMDA_exception() << AMDA::errno_code(AMDA_ERROR_UNKNOWN) << AMDA::ex_msg(" Not handled in the Mablib")); | ||
40 | + } | ||
41 | + } | ||
42 | + | ||
43 | + /** | ||
44 | + * @overload VisitorOfParamData::visit(ParamDataScalaireShort *) | ||
45 | + */ | ||
46 | + void visit(ParamDataScalaireShort *) { | ||
47 | + BOOST_THROW_EXCEPTION(AMDA::AMDA_exception() << AMDA::errno_code(AMDA_ERROR_UNKNOWN) << AMDA::ex_msg("ParamDataScalaireShort data not supported")); | ||
48 | + } | ||
49 | + | ||
50 | + /** | ||
51 | + * @overload VisitorOfParamData::visit(ParamDataScalaireFloat *) | ||
52 | + */ | ||
53 | + void visit(ParamDataScalaireFloat *) { | ||
54 | + BOOST_THROW_EXCEPTION(AMDA::AMDA_exception() << AMDA::errno_code(AMDA_ERROR_UNKNOWN) << AMDA::ex_msg("ParamDataScalaireFloat data not supported")); | ||
55 | + } | ||
56 | + | ||
57 | + /** | ||
58 | + * @overload VisitorOfParamData::visit(ParamDataScalaireDouble *) | ||
59 | + */ | ||
60 | + void visit(ParamDataScalaireDouble *) { | ||
61 | + BOOST_THROW_EXCEPTION(AMDA::AMDA_exception() << AMDA::errno_code(AMDA_ERROR_UNKNOWN) << AMDA::ex_msg("ParamDataScalaireDouble data not supported")); | ||
62 | + } | ||
63 | + | ||
64 | + /** | ||
65 | + * @overload VisitorOfParamData::visit(ParamDataScalaireLongDouble *) | ||
66 | + */ | ||
67 | + void visit(ParamDataScalaireLongDouble *) { | ||
68 | + BOOST_THROW_EXCEPTION(AMDA::AMDA_exception() << AMDA::errno_code(AMDA_ERROR_UNKNOWN) << AMDA::ex_msg("ParamDataScalaireLongDouble data not supported")); | ||
69 | + } | ||
70 | + | ||
71 | + /** | ||
72 | + * @overload VisitorOfParamData::visit(ParamDataScalaireInt *) | ||
73 | + */ | ||
74 | + void visit(ParamDataScalaireInt *) { | ||
75 | + BOOST_THROW_EXCEPTION(AMDA::AMDA_exception() << AMDA::errno_code(AMDA_ERROR_UNKNOWN) << AMDA::ex_msg("ParamDataScalaireInt data not supported")); | ||
76 | + } | ||
77 | + | ||
78 | + /** | ||
79 | + * @overload VisitorOfParamData::visit(ParamDataLogicalData *) | ||
80 | + */ | ||
81 | + void visit(ParamDataLogicalData *) { | ||
82 | + BOOST_THROW_EXCEPTION(AMDA::AMDA_exception() << AMDA::errno_code(AMDA_ERROR_UNKNOWN) << AMDA::ex_msg("ParamDataLogicalData data not supported")); | ||
83 | + } | ||
84 | + | ||
85 | + /** | ||
86 | + * @overload VisitorOfParamData::visit(ParamDataTab1DShort *) | ||
87 | + */ | ||
88 | + void visit(ParamDataTab1DShort *) { | ||
89 | + create<short>(); | ||
90 | + } | ||
91 | + | ||
92 | + /** | ||
93 | + * @overload VisitorOfParamData::visit(ParamDataTab1DFloat *) | ||
94 | + */ | ||
95 | + void visit(ParamDataTab1DFloat *) { | ||
96 | + create<float>(); | ||
97 | + } | ||
98 | + | ||
99 | + /** | ||
100 | + * @overload VisitorOfParamData::visit(ParamDataTab1DDouble *) | ||
101 | + */ | ||
102 | + void visit(ParamDataTab1DDouble *) { | ||
103 | + create<double>(); | ||
104 | + } | ||
105 | + | ||
106 | + /** | ||
107 | + * @overload VisitorOfParamData::visit(ParamDataTab1DLongDouble *) | ||
108 | + */ | ||
109 | + void visit(ParamDataTab1DLongDouble *) { | ||
110 | + create<long double>(); | ||
111 | + } | ||
112 | + | ||
113 | + /** | ||
114 | + * @overload VisitorOfParamData::visit(ParamDataTab1DInt *) | ||
115 | + */ | ||
116 | + void visit(ParamDataTab1DInt *) { | ||
117 | + create<int>(); | ||
118 | + } | ||
119 | + | ||
120 | + /** | ||
121 | + * @overload VisitorOfParamData::visit(ParamDataTab1DLogicalData *) | ||
122 | + */ | ||
123 | + void visit(ParamDataTab1DLogicalData *) { | ||
124 | + BOOST_THROW_EXCEPTION(AMDA::AMDA_exception() << AMDA::errno_code(AMDA_ERROR_UNKNOWN) << AMDA::ex_msg("ParamDataTab1DLogicalData data not supported")); | ||
125 | + } | ||
126 | + | ||
127 | + /** | ||
128 | + * @overload VisitorOfParamData::visit(ParamDataTab2DShort *) | ||
129 | + */ | ||
130 | + void visit(ParamDataTab2DShort *) { | ||
131 | + BOOST_THROW_EXCEPTION(AMDA::AMDA_exception() << AMDA::errno_code(AMDA_ERROR_UNKNOWN) << AMDA::ex_msg("ParamDataTab2DShort data not supported")); | ||
132 | + } | ||
133 | + | ||
134 | + /** | ||
135 | + * @overload VisitorOfParamData::visit(ParamDataTab2DFloat *) | ||
136 | + */ | ||
137 | + void visit(ParamDataTab2DFloat *) { | ||
138 | + BOOST_THROW_EXCEPTION(AMDA::AMDA_exception() << AMDA::errno_code(AMDA_ERROR_UNKNOWN) << AMDA::ex_msg("ParamDataTab2DFloat data not supported")); | ||
139 | + } | ||
140 | + | ||
141 | + /** | ||
142 | + * @overload VisitorOfParamData::visit(ParamDataTab2DDouble *) | ||
143 | + */ | ||
144 | + void visit(ParamDataTab2DDouble *) { | ||
145 | + BOOST_THROW_EXCEPTION(AMDA::AMDA_exception() << AMDA::errno_code(AMDA_ERROR_UNKNOWN) << AMDA::ex_msg("ParamDataTab2DDouble data not supported")); | ||
146 | + } | ||
147 | + | ||
148 | + /** | ||
149 | + * @overload VisitorOfParamData::visit(ParamDataTab2DLongDouble *) | ||
150 | + */ | ||
151 | + void visit(ParamDataTab2DLongDouble *) { | ||
152 | + BOOST_THROW_EXCEPTION(AMDA::AMDA_exception() << AMDA::errno_code(AMDA_ERROR_UNKNOWN) << AMDA::ex_msg("ParamDataTab2DLongDouble data not supported")); | ||
153 | + } | ||
154 | + | ||
155 | + /** | ||
156 | + * @overload VisitorOfParamData::visit(ParamDataTab2DInt *) | ||
157 | + */ | ||
158 | + void visit(ParamDataTab2DInt *) { | ||
159 | + BOOST_THROW_EXCEPTION(AMDA::AMDA_exception() << AMDA::errno_code(AMDA_ERROR_UNKNOWN) << AMDA::ex_msg("ParamDataTab2DInt data not supported")); | ||
160 | + } | ||
161 | + | ||
162 | + /** | ||
163 | + * @overload VisitorOfParamData::visit(ParamDataTab2DLogicalData *) | ||
164 | + */ | ||
165 | + void visit(ParamDataTab2DLogicalData *) { | ||
166 | + BOOST_THROW_EXCEPTION(AMDA::AMDA_exception() << AMDA::errno_code(AMDA_ERROR_UNKNOWN) << AMDA::ex_msg("ParamDataTab2DLogicalData data not supported")); | ||
167 | + } | ||
168 | + | ||
169 | + /** | ||
170 | + * @brief get the TimeShifted parameterized operation. | ||
171 | + */ | ||
172 | + Operation * getOperation() const { | ||
173 | + return _operation; | ||
174 | + } | ||
175 | + | ||
176 | + template <typename DataType> | ||
177 | + void create() { | ||
178 | + | ||
179 | + if (_output == "mlt") | ||
180 | + _operation = new MLT<DataType>(_process, dynamic_cast<ParamDataSpec<std::vector<DataType> >&> (_paramData), _isatex, _magout); | ||
181 | + else if (_output == "invlat") | ||
182 | + _operation = new InvLat<DataType>(_process, dynamic_cast<ParamDataSpec<std::vector<DataType> >&> (_paramData), _isatex, _magout); | ||
183 | + else if (_output == "lparam") | ||
184 | + _operation = new Lparam<DataType>(_process, dynamic_cast<ParamDataSpec<std::vector<DataType> >&> (_paramData), _isatex, _magout); | ||
185 | + else | ||
186 | + BOOST_THROW_EXCEPTION(AMDA::AMDA_exception() << AMDA::errno_code(AMDA_ERROR_UNKNOWN) << AMDA::ex_msg(" output type not supported")); | ||
187 | + | ||
188 | + } | ||
189 | + | ||
190 | + private: | ||
191 | + Process &_process; | ||
192 | + ParamData &_paramData; | ||
193 | + Operation *_operation; | ||
194 | + std::string _output; | ||
195 | + int _isatex; | ||
196 | + int _magout; | ||
197 | + }; | ||
198 | + } | ||
199 | +} | ||
17 | 200 | ||
18 | 201 | ||
19 | #endif /* MAGLIBCREATOR_HH */ | 202 | #endif /* MAGLIBCREATOR_HH */ |
src/ExternLib/Maglib/MaglibWarpper.hh
@@ -23,10 +23,9 @@ namespace AMDA { | @@ -23,10 +23,9 @@ namespace AMDA { | ||
23 | class maglibWarpper { | 23 | class maglibWarpper { |
24 | public: | 24 | public: |
25 | 25 | ||
26 | - static void getPosmag(int iyear, int imonth, int iday, int ihour, int imin, int isec, float* rrmag, float* thetr, float* phir, | ||
27 | - int* isatex, int* magout, float* xgsm, float* ygsm, float* zgsm, float* xgse, float* ygse, float* zgse, float* tgl, | ||
28 | - float* flg, float* xlambr, float* tglc, float* hsl, float* clatgmr, float* clongmr, float * iposmg[15], int* ifai) | ||
29 | - { | 26 | + static void getPosmag(int iyear, int imonth, int iday, int ihour, int imin, int isec, float& rrmag, float& thetr, float& phir, |
27 | + int& isatex, int& magout, float& xgsm, float& ygsm, float& zgsm, float& xgse, float& ygse, float& zgse, float& tgl, | ||
28 | + float& flg, float& xlambr, float& tglc, float& hsl, float& clatgmr, float& clongmr, std::vector<int>& iposmg, int& ifai) { | ||
30 | /** | 29 | /** |
31 | * | 30 | * |
32 | * @param iyear enre 2000 et 2015 | 31 | * @param iyear enre 2000 et 2015 |
@@ -44,17 +43,21 @@ i * isatex : 1 = satellite excentrique (apogee > | @@ -44,17 +43,21 @@ i * isatex : 1 = satellite excentrique (apogee > | ||
44 | // declaration | 43 | // declaration |
45 | 44 | ||
46 | int ifail; | 45 | int ifail; |
46 | + int iposmg_o [15]; | ||
47 | 47 | ||
48 | float rig[3][3], rgi[3][3], rgsm[3][3], rsmg[3][3], rggsm[3][3], rgsmg[3][3], rgse[3][3], rseg[3][3]; | 48 | float rig[3][3], rgi[3][3], rgsm[3][3], rsmg[3][3], rggsm[3][3], rgsmg[3][3], rgse[3][3], rseg[3][3]; |
49 | float rgdip[3][3], rdipg[3][3], rigsm[3][3], rgsmi[3][3]; | 49 | float rgdip[3][3], rdipg[3][3], rigsm[3][3], rgsmi[3][3]; |
50 | float alfag, alfas, deltas, tilt, tetdip, phidip, year; | 50 | float alfag, alfas, deltas, tilt, tetdip, phidip, year; |
51 | - | 51 | + |
52 | valfix_(ifail); | 52 | valfix_(ifail); |
53 | inigeom_(iyear, imonth, iday, ihour, imin, isec, year, alfag, tetdip, phidip, alfas, deltas, rig, rgi, rgdip, rdipg, rgsm, | 53 | inigeom_(iyear, imonth, iday, ihour, imin, isec, year, alfag, tetdip, phidip, alfas, deltas, rig, rgi, rgdip, rdipg, rgsm, |
54 | rsmg, tilt, rggsm, rgsmg, rgse, rseg, rigsm, rgsmi, ifail); | 54 | rsmg, tilt, rggsm, rgsmg, rgse, rseg, rigsm, rgsmi, ifail); |
55 | 55 | ||
56 | posmag_(magout, isatex, year, rrmag, thetr, phir, alfag, alfas, deltas, tilt, rgsm, rggsm, rgsmg, rgdip, rgse, tetdip, | 56 | posmag_(magout, isatex, year, rrmag, thetr, phir, alfag, alfas, deltas, tilt, rgsm, rggsm, rgsmg, rgdip, rgse, tetdip, |
57 | - phidip, xgsm, ygsm, zgsm, xgse, ygse, zgse, tgl, flg, xlambr, tglc, hsl, clatgmr, clongmr, iposmg, ifail); | 57 | + phidip, xgsm, ygsm, zgsm, xgse, ygse, zgse, tgl, flg, xlambr, tglc, hsl, clatgmr, clongmr, iposmg_o, ifail); |
58 | + | ||
59 | + for (int i = 0; i < iposmg_o.size(); i++) | ||
60 | + iposmg[i] = iposmg_o[i]; | ||
58 | 61 | ||
59 | } | 62 | } |
60 | }; | 63 | }; |
src/ExternLib/Maglib/Posmag.hh
@@ -19,12 +19,13 @@ | @@ -19,12 +19,13 @@ | ||
19 | #include "ParamData.hh" | 19 | #include "ParamData.hh" |
20 | #include "DataTypeMath.hh" | 20 | #include "DataTypeMath.hh" |
21 | #include "Operation.hh" | 21 | #include "Operation.hh" |
22 | -#include "SpiceKernelMgr.hh" | ||
23 | #include <vector> | 22 | #include <vector> |
24 | 23 | ||
25 | namespace AMDA { | 24 | namespace AMDA { |
26 | namespace Parameters { | 25 | namespace Parameters { |
27 | 26 | ||
27 | + using namespace std; | ||
28 | + | ||
28 | template<typename DataType, class TOutputParamData> | 29 | template<typename DataType, class TOutputParamData> |
29 | class Posmag : public Operation { | 30 | class Posmag : public Operation { |
30 | public: | 31 | public: |
@@ -68,7 +69,7 @@ namespace AMDA { | @@ -68,7 +69,7 @@ namespace AMDA { | ||
68 | 69 | ||
69 | vector<DataType> in = _paramInput.getDataList()[_index]; | 70 | vector<DataType> in = _paramInput.getDataList()[_index]; |
70 | double crtTime = _paramInput.getTime(_index); | 71 | double crtTime = _paramInput.getTime(_index); |
71 | - ime_t timestamp = crtTime; | 72 | + time_t timestamp = crtTime; |
72 | struct tm *tmp; | 73 | struct tm *tmp; |
73 | tmp = gmtime(×tamp); | 74 | tmp = gmtime(×tamp); |
74 | float i_rrmag = in[0]; | 75 | float i_rrmag = in[0]; |
@@ -101,25 +102,32 @@ namespace AMDA { | @@ -101,25 +102,32 @@ namespace AMDA { | ||
101 | */ | 102 | */ |
102 | 103 | ||
103 | float xgsm, ygsm, zgsm, xgse, ygse, zgse, tgl, | 104 | float xgsm, ygsm, zgsm, xgse, ygse, zgse, tgl, |
104 | - flg, xlambr, tglc, hsl, fclatgmr, clongmr, | ||
105 | - tgl, flg, xlambr, tglc, hsl, clatgmr, clongmr, xlamb, clatgm, clongm; | 105 | + flg, xlamb, tglc, hsl, clatgmr, clongmr; |
106 | + | ||
106 | int ifail; | 107 | int ifail; |
107 | - int iposmg[15]; | 108 | + std::vector<int> iposmg; |
109 | + iposmg.resize(15); | ||
108 | 110 | ||
109 | /** | 111 | /** |
110 | - static void getPosmag(int iyear, int imonth, int iday, int ihour, int imin, int isec, float* rrmag, float* thetr, float* phir, | ||
111 | - int* isatex, int* magout, float* xgsm, float* ygsm, float* zgsm, float* xgse, float* ygse, float* zgse, float* tgl, | ||
112 | - float* flg, float* xlambr, float* tglc, float* hsl, float* clatgmr, float* clongmr, float * iposmg[15], int* ifai) | 112 | + static void getPosmag(int iyear, int imonth, int iday, int ihour, int imin, int isec, |
113 | + * float* rrmag, float* thetr, float* phir, | ||
114 | + int* isatex, int* magout, float* | ||
115 | + * xgsm, float* ygsm, float* zgsm, | ||
116 | + * float* xgse, float* ygse, float* zgse, | ||
117 | + * float* tgl, float* flg, float* xlambr, float* tglc, float* hsl, float* clatgmr, float* clongmr, float * iposmg[15], int* ifai) | ||
113 | */ | 118 | */ |
114 | 119 | ||
115 | - maglib::maglibWarpper::getPosmag(1900 + tmp->tm_year, 1 + tmp->tm_yday, tmp->tm_hour, | ||
116 | - tmp->tm_min, tmp->tm_sec, i_rrmag, i_thetr, i_phir, _isatex, _magout, xgsm, ygsm, zgsm, xgse, ygse, zgse, tgl, | ||
117 | - flg, xlambr, tglc, hsl, fclatgmr, clongmr, iposmg, ifail); | ||
118 | - | 120 | + maglib::maglibWarpper::getPosmag(1900 + tmp->tm_year, 1 + tmp->tm_mon, tmp->tm_mday, tmp->tm_hour, tmp->tm_min, tmp->tm_sec, |
121 | + i_rrmag, i_thetr, i_phir, | ||
122 | + _isatex, _magout, | ||
123 | + xgsm, ygsm, zgsm, | ||
124 | + xgse, ygse, zgse, | ||
125 | + tgl, flg, xlamb, tglc, hsl, clatgmr, clongmr, iposmg, ifail); | ||
126 | + | ||
119 | DataType tgl_res = (DataType) tgl; | 127 | DataType tgl_res = (DataType) tgl; |
120 | DataType xlamb_res = (DataType) xlamb; | 128 | DataType xlamb_res = (DataType) xlamb; |
121 | DataType flg_res = (DataType) flg; | 129 | DataType flg_res = (DataType) flg; |
122 | - _paramOutput->pushTime(crtTime); | 130 | + _paramOutput->pushTime(crtTime); |
123 | pushData(tgl_res, xlamb_res, flg_res); | 131 | pushData(tgl_res, xlamb_res, flg_res); |
124 | } | 132 | } |
125 | 133 | ||
@@ -128,63 +136,66 @@ namespace AMDA { | @@ -128,63 +136,66 @@ namespace AMDA { | ||
128 | virtual void pushData(DataType tgl, DataType xlamb, DataType flg) = 0; | 136 | virtual void pushData(DataType tgl, DataType xlamb, DataType flg) = 0; |
129 | 137 | ||
130 | protected: | 138 | protected: |
139 | + ParamDataSpec<std::vector<DataType> >& _paramInput; | ||
140 | + ParamDataSpec<DataType>* _paramOutput; | ||
131 | int _isatex; | 141 | int _isatex; |
132 | int _magout; | 142 | int _magout; |
133 | - private: | ||
134 | - ParamDataSpec<std::vector<DataType> >& _paramInput; | ||
135 | - ParamDataSpec<DataType>* _paramOutput; | 143 | + |
136 | }; | 144 | }; |
137 | - | 145 | + |
138 | /** | 146 | /** |
139 | * Ecriture de temps geomagnetique local du satellite (heure fractionnée) | 147 | * Ecriture de temps geomagnetique local du satellite (heure fractionnée) |
140 | */ | 148 | */ |
141 | template<typename DataType> | 149 | template<typename DataType> |
142 | - class MLT : public Posmag<DataType, ParamDataSpec < DataType > >{ | ||
143 | - | ||
144 | - MLT(Process& pProcess, ParamDataSpec<vector<DataType> >& paramInput, int isatex, int magout): | ||
145 | - Posmag<DataType, ParamDataSpec < DataType > > :: Posmag(pProcess, paramInput, isatex, magout){ | ||
146 | - } | ||
147 | - | ||
148 | - void pushData(DataType tgl, DataType /*xlamb*/, DataType /*flg*/){ | ||
149 | - | ||
150 | - Posmag<DataType, ParamDataSpec < DataType > > :: _paramDataOutput.getDataList().push_back(tgl); | ||
151 | - } | 150 | + class MLT : public Posmag<DataType, ParamDataSpec < DataType > > { |
151 | + public: | ||
152 | + | ||
153 | + MLT(Process& pProcess, ParamDataSpec<vector<DataType> >& paramInput, int isatex, int magout) : | ||
154 | + Posmag<DataType, ParamDataSpec < DataType > > ::Posmag(pProcess, paramInput, isatex, magout) { | ||
155 | + } | ||
156 | + | ||
157 | + void pushData(DataType tgl, DataType /*xlamb*/, DataType /*flg*/) { | ||
158 | + | ||
159 | + Posmag<DataType, ParamDataSpec < DataType > > ::_paramOutput->getDataList().push_back(tgl); | ||
160 | + } | ||
152 | }; | 161 | }; |
153 | - | ||
154 | - /** | 162 | + |
163 | + /** | ||
155 | * Ecriture de invariant latitude | 164 | * Ecriture de invariant latitude |
156 | */ | 165 | */ |
157 | template<typename DataType> | 166 | template<typename DataType> |
158 | - class InvLat : public Posmag<DataType, ParamDataSpec < DataType > >{ | ||
159 | - | ||
160 | - InvLat(Process& pProcess, ParamDataSpec<vector<DataType> >& paramInput, int isatex, int magout): | ||
161 | - Posmag<DataType, ParamDataSpec < DataType > > :: Posmag(pProcess, paramInput, isatex, magout){ | ||
162 | - } | ||
163 | - | ||
164 | - void pushData(DataType /*tgl*/, DataType xlamb, DataType /*flg*/){ | ||
165 | - | ||
166 | - Posmag<DataType, ParamDataSpec < DataType > > :: _paramDataOutput.getDataList().push_back(xlamb); | ||
167 | - } | 167 | + class InvLat : public Posmag<DataType, ParamDataSpec < DataType > > { |
168 | + public: | ||
169 | + | ||
170 | + InvLat(Process& pProcess, ParamDataSpec<vector<DataType> >& paramInput, int isatex, int magout) : | ||
171 | + Posmag<DataType, ParamDataSpec < DataType > > ::Posmag(pProcess, paramInput, isatex, magout) { | ||
172 | + } | ||
173 | + | ||
174 | + void pushData(DataType /*tgl*/, DataType xlamb, DataType /*flg*/) { | ||
175 | + | ||
176 | + Posmag<DataType, ParamDataSpec < DataType > > ::_paramOutput->getDataList().push_back(xlamb); | ||
177 | + } | ||
168 | }; | 178 | }; |
169 | - | ||
170 | - /** | 179 | + |
180 | + /** | ||
171 | * Ecriture du parametre L | 181 | * Ecriture du parametre L |
172 | */ | 182 | */ |
173 | template<typename DataType> | 183 | template<typename DataType> |
174 | - class Lparam : public Posmag<DataType, ParamDataSpec < DataType > >{ | ||
175 | - | ||
176 | - Lparam(Process& pProcess, ParamDataSpec<vector<DataType> >& paramInput, int isatex, int magout): | ||
177 | - Posmag<DataType, ParamDataSpec < DataType > > :: Posmag(pProcess, paramInput, isatex, magout){ | ||
178 | - } | ||
179 | - | ||
180 | - void pushData(DataType /*tgl*/, DataType /*xlamb*/, DataType flg){ | ||
181 | - | ||
182 | - Posmag<DataType, ParamDataSpec < DataType > > :: _paramDataOutput.getDataList().push_back(flg); | ||
183 | - } | 184 | + class Lparam : public Posmag<DataType, ParamDataSpec < DataType > > { |
185 | + public: | ||
186 | + | ||
187 | + Lparam(Process& pProcess, ParamDataSpec<vector<DataType> >& paramInput, int isatex, int magout) : | ||
188 | + Posmag<DataType, ParamDataSpec < DataType > > ::Posmag(pProcess, paramInput, isatex, magout) { | ||
189 | + } | ||
190 | + | ||
191 | + void pushData(DataType /*tgl*/, DataType /*xlamb*/, DataType flg) { | ||
192 | + | ||
193 | + Posmag<DataType, ParamDataSpec < DataType > > ::_paramOutput->getDataList().push_back(flg); | ||
194 | + } | ||
184 | }; | 195 | }; |
185 | - | 196 | + |
186 | } | 197 | } |
187 | - | 198 | + |
188 | } | 199 | } |
189 | 200 | ||
190 | 201 |