Commit 2b5aff50939361e7b0646a61b842cfb7454194ec
1 parent
41c930bc
Exists in
master
stereo added
Showing
6 changed files
with
386 additions
and
39 deletions
Show diff stats
Bin.py/makeRequest.py
... | ... | @@ -64,9 +64,9 @@ def writeXMLMission(XMLfilename,startTime,stopTime,plasmaVI,tgtVI,tgtRParam,tgtL |
64 | 64 | xml.write('\t<START>'+startTime+'</START>\n') |
65 | 65 | xml.write('\t<STOP>'+stopTime+'</STOP>\n') |
66 | 66 | xml.write('\t<PLASMA_VI>'+plasmaVI+'</PLASMA_VI>\n') |
67 | - xml.write('\t<SOURCE_VI>earth_orb_all</SOURCE_VI>\n') | |
68 | - xml.write('\t<SOURCE_R_PARAM>R</SOURCE_R_PARAM>\n') | |
69 | - xml.write('\t<SOURCE_LON_PARAM>LON_HCI</SOURCE_LON_PARAM>\n') | |
67 | + xml.write('\t<SOURCE_VI>'+srcVI+'</SOURCE_VI>\n') | |
68 | + xml.write('\t<SOURCE_R_PARAM>'+srcRParam+'</SOURCE_R_PARAM>\n') | |
69 | + xml.write('\t<SOURCE_LON_PARAM>'+srcLonParam+'</SOURCE_LON_PARAM>\n') | |
70 | 70 | xml.write('\t<TARGET_VI>'+tgtVI+'</TARGET_VI>\n') |
71 | 71 | xml.write('\t<TARGET_R_PARAM>'+tgtRParam+'</TARGET_R_PARAM>\n') |
72 | 72 | xml.write('\t<TARGET_LON_PARAM>'+tgtLonParam+'</TARGET_LON_PARAM>\n') |
... | ... | @@ -75,12 +75,18 @@ def writeXMLMission(XMLfilename,startTime,stopTime,plasmaVI,tgtVI,tgtRParam,tgtL |
75 | 75 | |
76 | 76 | |
77 | 77 | # In[8]: |
78 | - | |
79 | -tgtRParam = 'R_HCI' | |
80 | -if tgtVI == 'p67_orb_all': | |
81 | - tgtRParam = 'R' | |
78 | +if plasmaVI == 'sta_l2_pla' : | |
79 | + srcVI = 'sta_l2_orb' | |
80 | +elif plasmaVI == 'stb_l2_pla' : | |
81 | + srcVI = 'stb_l2_orb' | |
82 | +else : | |
83 | + srcVI = 'earth_orb_all' | |
82 | 84 | |
85 | +srcRParam = 'R_HCI' | |
86 | +srcLonParam = 'LON_HCI' | |
87 | +tgtRParam = 'R_HCI' | |
83 | 88 | tgtLonParam = 'LON_HCI' |
89 | + | |
84 | 90 | newMissionStart = missionStopTime |
85 | 91 | newMissionStop = omniStopTime |
86 | 92 | print "New mission start : " + newMissionStart.isoformat() |
... | ... | @@ -93,7 +99,7 @@ else: |
93 | 99 | print "Database has to be updated" |
94 | 100 | |
95 | 101 | if newMissionStart.year != newMissionStop.year and plasmaVI != 'ace_swepam_real': |
96 | - print "2 files will be producted" | |
102 | + print "2 files will be produced" | |
97 | 103 | newMissionxml1Start = datetime(newMissionStart.year,1,1,0,0) |
98 | 104 | newMissionxml1Stop = datetime(newMissionStop.year,1,1,0,0) |
99 | 105 | newMissionxml2Start = datetime(newMissionStop.year,1,1,0,0) |
... | ... | @@ -102,12 +108,12 @@ if newMissionStart.year != newMissionStop.year and plasmaVI != 'ace_swepam_real' |
102 | 108 | print 'XML 1 Stop : ' + newMissionxml1Stop.isoformat() |
103 | 109 | print 'XML 2 Start : ' + newMissionxml2Start.isoformat() |
104 | 110 | print 'XML 2 Stop : ' + newMissionxml2Stop.isoformat() |
105 | - XMLfilename = prefix+'_'+str(newMissionxml1Start.year)+'.xml' | |
111 | + XMLfilename = prefix + '_' + str(newMissionxml1Start.year) + '.xml' | |
106 | 112 | writeXMLMission(XMLfilename,newMissionxml1Start.isoformat(),newMissionxml1Stop.isoformat(),plasmaVI,tgtVI,tgtRParam,tgtLonParam) |
107 | - XMLfilename = prefix+'_'+str(newMissionxml2Start.year)+'.xml' | |
113 | + XMLfilename = prefix + '_' + str(newMissionxml2Start.year) + '.xml' | |
108 | 114 | writeXMLMission(XMLfilename,newMissionxml2Start.isoformat(),newMissionxml2Stop.isoformat(),plasmaVI,tgtVI,tgtRParam,tgtLonParam) |
109 | 115 | else: |
110 | - print "1 file will be producted" | |
116 | + print "1 file will be produced" | |
111 | 117 | if plasmaVI == "ace_swepam_real": |
112 | 118 | newMissionxmlStart = datetime(newMissionStart.year,newMissionStart.month,newMissionStart.day,0,0) |
113 | 119 | # Future !!! |
... | ... | @@ -119,5 +125,5 @@ else: |
119 | 125 | |
120 | 126 | print 'XML Start : ' + newMissionxmlStart.isoformat() |
121 | 127 | print 'XML Stop : ' + newMissionxmlStop.isoformat() |
122 | - XMLfilename = prefix+'_'+str(newMissionxmlStart.year)+'.xml' | |
128 | + XMLfilename = prefix + '_' + str(newMissionxmlStart.year) + '.xml' | |
123 | 129 | writeXMLMission(XMLfilename,newMissionxmlStart.isoformat(),newMissionxmlStop.isoformat(),plasmaVI,tgtVI,tgtRParam,tgtLonParam) | ... | ... |
Bin.py/run.py
... | ... | @@ -74,6 +74,8 @@ def main(): |
74 | 74 | # if run run.py 'alone' - for previous years |
75 | 75 | #plasmaStop = shiftedDate(stop, days=marginPlasma) |
76 | 76 | #plasmaStop = shiftedDate(swStop) |
77 | + print plasmaStop | |
78 | + | |
77 | 79 | plasmaDDStop = time2ddtime(plasmaStop) |
78 | 80 | ddTimeDeltaPlasma = DDTimeDelta(plasmaStart, plasmaStop) |
79 | 81 | |
... | ... | @@ -85,10 +87,16 @@ def main(): |
85 | 87 | |
86 | 88 | # GET DATA FROM DD BASE DEPENDING ON SW INPUT |
87 | 89 | if plasmaVi == 'omni_hour_all': |
88 | - plasmaCmd = ['get_OMNI_1H',MYDIR+'/plasma.csv',plasmaDDStart,ddTimeDeltaPlasma] | |
90 | + plasmaCmd = ['get_OMNI_1H',MYDIR + '/plasma.csv',plasmaDDStart,ddTimeDeltaPlasma] | |
89 | 91 | elif plasmaVi == 'ace_swepam_real': |
90 | - plasmaCmd = ['get_ACE_RT',MYDIR+'/plasma.csv',MYDIR+'/mag.csv',plasmaDDStart,ddTimeDeltaPlasma] | |
91 | - | |
92 | + plasmaCmd = ['get_ACE_RT',MYDIR + '/plasma.csv',MYDIR + '/mag.csv',plasmaDDStart,ddTimeDeltaPlasma] | |
93 | + elif plasmaVi == 'sta_l2_pla': | |
94 | + plasmaCmd = ['get_STEREO','a',MYDIR + '/plasma.csv',MYDIR + '/mag.csv',plasmaDDStart,ddTimeDeltaPlasma] | |
95 | + elif plasmaVi == 'stb_l2_pla': | |
96 | + plasmaCmd = ['get_STEREO','b',MYDIR + '/plasma.csv',MYDIR + '/mag.csv',plasmaDDStart,ddTimeDeltaPlasma] | |
97 | + elif plasmaVi == 'dsc_fc_1m': | |
98 | + plasmaCmd = ['get_DSCOVR', MYDIR + '/plasma.csv',MYDIR + '/mag.csv',plasmaDDStart,ddTimeDeltaPlasma] | |
99 | + | |
92 | 100 | print plasmaCmd |
93 | 101 | srcCmd = ['get_R_LON_HCI',MYDIR+'/source.csv',srcVi,srcR,srcLon,orbitsDDStart,ddTimeDeltaOrbit] |
94 | 102 | tgtCmd = ['get_R_LON_HCI',MYDIR+'/target.csv',tgtVi,tgtR,tgtLon,orbitsDDStart,ddTimeDeltaOrbit] |
... | ... | @@ -108,7 +116,7 @@ def main(): |
108 | 116 | |
109 | 117 | # PLASMA DATAFRAME |
110 | 118 | if plasmaVi == 'omni_hour_all': |
111 | - plasma = pd.read_csv(MYDIR+'/plasma.csv', dtype='S16,f4,f4,f4,f4,f4,f4,f4,f4') | |
119 | + plasma = pd.read_csv(MYDIR + '/plasma.csv', dtype='S16,f4,f4,f4,f4,f4,f4,f4,f4') | |
112 | 120 | elif plasmaVi == 'ace_swepam_real': |
113 | 121 | if os.path.getsize(MYDIR+'/mag.csv') == 0: |
114 | 122 | logger.error('Failed to load mag data') |
... | ... | @@ -116,11 +124,17 @@ def main(): |
116 | 124 | sw = pd.read_csv(MYDIR+'/plasma.csv', dtype='S16,f4,f4,f4') |
117 | 125 | mag = pd.read_csv(MYDIR+'/mag.csv', dtype='S16,f4,f4,f4') |
118 | 126 | plasma = sw.merge(mag, on='Time') |
127 | + elif plasmaVi == 'sta_l2_pla' or plasmaVi == 'stb_l2_pla' or plasmaVi == 'dsc_fc_1m': | |
128 | + if os.path.getsize(MYDIR+'/mag.csv') == 0: | |
129 | + logger.error('Failed to load mag data') | |
130 | + sys.exit(2) | |
131 | + sw = pd.read_csv(MYDIR+'/plasma.csv', dtype='S16,f4,f4,f4,f4,f4') | |
132 | + mag = pd.read_csv(MYDIR+'/mag.csv', dtype='S16,f4,f4,f4') | |
133 | + plasma = sw.merge(mag, on='Time') | |
119 | 134 | |
120 | 135 | plasma['Time'] = ddTime2Datetime(plasma['Time']) |
121 | 136 | plasma = plasma.set_index('Time') |
122 | - | |
123 | - | |
137 | + | |
124 | 138 | logger.info('Number of NaNs for plasma data before cleaning : %d' % plasma.isnull().sum().sum()) |
125 | 139 | plasma = plasma.interpolate().fillna(method='bfill') |
126 | 140 | logger.info('Number of NaNs for plasma data after cleaning : %d' % plasma.isnull().sum().sum()) |
... | ... | @@ -157,18 +171,31 @@ def main(): |
157 | 171 | target = pd.DataFrame(data=targetData,columns=targetColumns) |
158 | 172 | target = target.set_index('Time') |
159 | 173 | |
160 | - | |
161 | - # SPHERICAL TO CARTESIAN COORDS | |
162 | - if plasmaVi == 'omni_hour_all': | |
163 | - vlon = np.radians(plasma['Vlon']) | |
164 | - vlat = np.radians(plasma['Vlat']) | |
165 | - elif plasmaVi == 'ace_swepam_real': | |
166 | - vlon = np.radians(-2.0) | |
167 | - vlat = np.radians(1.0) | |
174 | + # TAO frame : RTN with t=-t | |
175 | + if plasmaVi == 'sta_l2_pla' or plasmaVi == 'stb_l2_pla' : | |
176 | + vx = plasma['Vr'] | |
177 | + vy = -plasma['Vt'] | |
178 | + vz = plasma['Vn'] | |
179 | + temperature = plasma['Vth']*plasma['Vth']*60.6 # v=sqrt(2kT/m) | |
180 | + elif plasmaVi == 'dsc_fc_1m': | |
181 | + vx = -plasma['Vx'] | |
182 | + vy = -plasma['Vy'] | |
183 | + vz = plasma['Vz'] | |
184 | + temperature = plasma.Temperature | |
185 | + else : | |
186 | + # SPHERICAL TO CARTESIAN COORDS | |
187 | + if plasmaVi == 'omni_hour_all': | |
188 | + vlon = np.radians(plasma['Vlon']) | |
189 | + vlat = np.radians(plasma['Vlat']) | |
190 | + elif plasmaVi == 'ace_swepam_real': | |
191 | + vlon = np.radians(-2.0) | |
192 | + vlat = np.radians(1.0) | |
193 | + | |
194 | + vx = plasma['V']*np.cos(vlat)*np.cos(vlon) | |
195 | + vy = -plasma['V']*np.cos(vlat)*np.sin(vlon) | |
196 | + vz = plasma['V']*np.sin(vlat) | |
168 | 197 | |
169 | - vx = plasma['V']*np.cos(vlat)*np.cos(vlon) | |
170 | - vy = -plasma['V']*np.cos(vlat)*np.sin(vlon) | |
171 | - vz = plasma['V']*np.sin(vlat) | |
198 | + temperature = plasma.Temperature | |
172 | 199 | |
173 | 200 | # ROTATION |
174 | 201 | bx = -np.array(plasma['Bx']) |
... | ... | @@ -176,7 +203,7 @@ def main(): |
176 | 203 | bz = np.array(plasma['Bz']) |
177 | 204 | |
178 | 205 | # FINAL PLASMA DATAFRAME |
179 | - plasmaData = np.array([plasma.index,plasma.Density,plasma.Temperature,vx,vy,vz,bx,by,bz]) | |
206 | + plasmaData = np.array([plasma.index,plasma.Density,temperature,vx,vy,vz,bx,by,bz]) | |
180 | 207 | plasmaColumns = ['Time','Density','Temperature','Vx','Vy','Vz','Bx','By','Bz'] |
181 | 208 | plasma = pd.DataFrame(data=plasmaData.T,columns=plasmaColumns) |
182 | 209 | plasma = plasma.set_index('Time') | ... | ... |
Sources/Makefile
... | ... | @@ -9,7 +9,7 @@ INCLUDE = -I${DD_DIR}/include/DDClientLibC -I${TINYDIR}/include |
9 | 9 | LIB = -L${DD_DIR}/lib -L${TINYDIR}/lib |
10 | 10 | LKLIBS = -lDDClientLibC -ltinyxml -lnetcdf -lm |
11 | 11 | LDFLAGS = -fPIC |
12 | -EXE = get_Orbit get_OMNI_1H get_ACE_RT get_R_LON_HCI | |
12 | +EXE = get_Orbit get_OMNI_1H get_ACE_RT get_STEREO get_DSCOVR get_R_LON_HCI | |
13 | 13 | # ********************* END OF COMPILER SETTINGS ***************************** |
14 | 14 | |
15 | 15 | # ******************************** LINKING ********************************* |
... | ... | @@ -26,6 +26,12 @@ get_OMNI_1H: get_OMNI_1H.o |
26 | 26 | get_ACE_RT: get_ACE_RT.o |
27 | 27 | ${CXX} -o $@ $^ ${LDFLAGS} ${LIB} ${LKLIBS} |
28 | 28 | |
29 | +get_STEREO: get_STEREO.o | |
30 | + ${CXX} -o $@ $^ ${LDFLAGS} ${LIB} ${LKLIBS} | |
31 | + | |
32 | +get_DSCOVR: get_DSCOVR.o | |
33 | + ${CXX} -o $@ $^ ${LDFLAGS} ${LIB} ${LKLIBS} | |
34 | + | |
29 | 35 | get_R_LON_HCI: get_R_LON_HCI.o |
30 | 36 | ${CXX} -o $@ $^ ${LDFLAGS} ${LIB} ${LKLIBS} |
31 | 37 | # ************************** END OF LINKING ********************************* |
... | ... | @@ -38,8 +44,14 @@ get_OMNI_1H.o: get_OMNI_1H.cpp |
38 | 44 | ${CXX} -c $< -o $@ ${INCLUDE} ${CXXFLAGS} |
39 | 45 | |
40 | 46 | get_ACE_RT.o: get_ACE_RT.cpp |
41 | - ${CXX} -c $< -o $@ ${INCLUDE} ${CXXFLAGS} | |
42 | - | |
47 | + ${CXX} -c $< -o $@ ${INCLUDE} ${CXXFLAGS} | |
48 | + | |
49 | +get_STEREO.o: get_STEREO.cpp | |
50 | + ${CXX} -c $< -o $@ ${INCLUDE} ${CXXFLAGS} | |
51 | + | |
52 | +get_DSCOVR.o: get_DSCOVR.cpp | |
53 | + ${CXX} -c $< -o $@ ${INCLUDE} ${CXXFLAGS} | |
54 | + | |
43 | 55 | get_R_LON_HCI.o: get_R_LON_HCI.cpp |
44 | 56 | ${CXX} -c $< -o $@ ${INCLUDE} ${CXXFLAGS} |
45 | 57 | # ************************* END OF COMPILING ******************************** | ... | ... |
Sources/get_ACE_RT.cpp
... | ... | @@ -15,12 +15,12 @@ |
15 | 15 | /////////////// |
16 | 16 | using namespace std; |
17 | 17 | |
18 | -int main(int argc, char const *argv[]) | |
18 | +int main (int argc, char const *argv[]) throw(std::string) | |
19 | 19 | { |
20 | 20 | if (argc != 5) |
21 | 21 | { |
22 | - cout << "[ERROR] Usage : ./get_ACE_RT (plasma filename) (mag filename) (ddStart) (ddInterval)" << endl; | |
23 | - exit(EXIT_FAILURE); | |
22 | + cout << "[ERROR] Usage : ./get_ACE_RT (plasma filename) (mag filename) (ddStart) (ddInterval)" << endl; | |
23 | + exit(EXIT_FAILURE); | |
24 | 24 | } |
25 | 25 | |
26 | 26 | string dataFilename = argv[1]; |
... | ... | @@ -50,14 +50,16 @@ int main(int argc, char const *argv[]) |
50 | 50 | if (error < 0) |
51 | 51 | { |
52 | 52 | std::string ddSetTimeErr = "[ERROR] Bad time pointer init in DD_SetTime SW -> err value : " + error; |
53 | - throw std::string(ddSetTimeErr); | |
53 | + printf(" bad time pointer plasma %d %d\n", id_sw, error); | |
54 | + throw ddSetTimeErr; | |
54 | 55 | } |
55 | 56 | error = DD_SetTime(id_mag, st); |
56 | 57 | |
57 | 58 | if (error < 0) |
58 | 59 | { |
59 | 60 | std::string ddSetTimeErr = "[ERROR] Bad time pointer init in DD_SetTime Mag -> err value : " + error; |
60 | - throw std::string(ddSetTimeErr); | |
61 | + printf(" bad time pointer mag %d\n", error); | |
62 | + throw ddSetTimeErr; | |
61 | 63 | } |
62 | 64 | // GET DATA |
63 | 65 | char *params[4]; |
... | ... | @@ -76,7 +78,7 @@ int main(int argc, char const *argv[]) |
76 | 78 | DD_data_t *data; |
77 | 79 | |
78 | 80 | int status = 0; |
79 | - | |
81 | + | |
80 | 82 | plasmaFile << "Time,Density,Temperature,V" << endl; |
81 | 83 | |
82 | 84 | do { | ... | ... |
... | ... | @@ -0,0 +1,155 @@ |
1 | +///////////////// | |
2 | +// CPP HEADERS // | |
3 | +///////////////// | |
4 | +#include <iostream> | |
5 | +#include <fstream> | |
6 | +#include <stdlib.h> | |
7 | + | |
8 | +//////////// | |
9 | +/// DDLIB // | |
10 | +//////////// | |
11 | +#include "DD.h" | |
12 | + | |
13 | +#define NAN (0.0/0.0) | |
14 | +//////////////// | |
15 | +// NAMESPACES // | |
16 | +/////////////// | |
17 | +using namespace std; | |
18 | + | |
19 | +int main (int argc, char const *argv[]) throw(std::string) | |
20 | +{ | |
21 | + if (argc != 5) | |
22 | + { | |
23 | + cout << "[ERROR] Usage : ./get_DSCOVR (plasma filename) (mag filename) (ddStart) (ddInterval)" << endl; | |
24 | + exit(EXIT_FAILURE); | |
25 | + } | |
26 | + | |
27 | + string dataFilename = argv[1]; | |
28 | + string dataFilename1 = argv[2]; | |
29 | + string ddStart = argv[3]; | |
30 | + string ddInterval = argv[4]; | |
31 | + string plasmaVi = "dsc_fc_1m"; | |
32 | + string timeParameter = "Time"; | |
33 | + string DensParameter = "proton_density"; | |
34 | + string TempParameter = "proton_temperature"; | |
35 | + string VNormParameter = "vp_gse"; | |
36 | + string magVi = "dsc_mag_1m"; | |
37 | + string magParameter = "b_gse"; | |
38 | + | |
39 | + ofstream plasmaFile(dataFilename.c_str(), ios::out); | |
40 | + ofstream magFile(dataFilename1.c_str(), ios::out); | |
41 | + | |
42 | + int id_sw = DD_SetVariable( const_cast<char*>( plasmaVi.c_str() ) ); | |
43 | + int id_mag = DD_SetVariable( const_cast<char*>( magVi.c_str() ) ); | |
44 | + | |
45 | + char *st = const_cast<char*>( ddStart.c_str() ); | |
46 | + | |
47 | + int error = DD_SetTime(id_sw, st); | |
48 | + | |
49 | + if (error < 0) | |
50 | + { | |
51 | + std::string ddSetTimeErr = "[ERROR] Bad time pointer init in DD_SetTime SW -> err value : " + error; | |
52 | + printf(" bad time pointer plasma %d %d\n", id_sw, error); | |
53 | + throw ddSetTimeErr; | |
54 | + } | |
55 | + error = DD_SetTime(id_mag, st); | |
56 | + | |
57 | + if (error < 0) | |
58 | + { | |
59 | + std::string ddSetTimeErr = "[ERROR] Bad time pointer init in DD_SetTime Mag -> err value : " + error; | |
60 | + printf(" bad time pointer mag %d\n", error); | |
61 | + throw ddSetTimeErr; | |
62 | + } | |
63 | + // GET DATA | |
64 | + char *params[4]; | |
65 | + | |
66 | + params[0] = const_cast<char*>( timeParameter.c_str() ); | |
67 | + params[1] = const_cast<char*>( DensParameter.c_str() ); | |
68 | + params[2] = const_cast<char*>( TempParameter.c_str() ); | |
69 | + params[3] = const_cast<char*>( VNormParameter.c_str() ); | |
70 | + | |
71 | + char *params_mag[2]; | |
72 | + params_mag[0] = const_cast<char*>( timeParameter.c_str() ); | |
73 | + params_mag[1] = const_cast<char*>( magParameter.c_str() ); | |
74 | + | |
75 | + char *timeIntervall = const_cast<char*>( ddInterval.c_str() ); | |
76 | + | |
77 | + DD_data_t *data; | |
78 | + | |
79 | + int status = 0; | |
80 | + | |
81 | + plasmaFile << "Time,Density,Temperature,Vx,Vy,Vz" << endl; | |
82 | + | |
83 | + do { | |
84 | + | |
85 | + status = DD_GetMultiData(id_sw, 4, static_cast<char**>(params), timeIntervall, &data, 1); | |
86 | + | |
87 | + if (status < 0) | |
88 | + { | |
89 | + std::string ddGetDataErr = "[ERROR] Failed to get SW data -> status : " + status; | |
90 | + throw std::string(ddGetDataErr); | |
91 | + } | |
92 | + | |
93 | + for (int j = 0; j < data->VarNumber; ++j) | |
94 | + { | |
95 | + float density = *(static_cast<float*>(data[1].Variables[j])); | |
96 | + if (density < -1000.) density = NAN; | |
97 | + float temperature = *(static_cast<float*>(data[2].Variables[j])); | |
98 | + if (temperature < -1000.) temperature = NAN; | |
99 | + float vx = static_cast<float*>(data[3].Variables[j])[0]; | |
100 | + float vy = static_cast<float*>(data[3].Variables[j])[1]; | |
101 | + float vz = static_cast<float*>(data[3].Variables[j])[2]; | |
102 | + if (vx < -9000.) { | |
103 | + vx = NAN; vy = NAN; vz = NAN; | |
104 | + } | |
105 | + plasmaFile << static_cast<char*>(data[0].Variables[j]) << "," | |
106 | + << density << "," | |
107 | + << temperature << "," | |
108 | + << vx << "," | |
109 | + << vy << "," | |
110 | + << vz << endl; | |
111 | + } | |
112 | + | |
113 | + } while (status == MOREDATA); | |
114 | + | |
115 | + DD_Close(id_sw); | |
116 | + | |
117 | + status = 0; | |
118 | + | |
119 | + magFile << "Time,Bx,By,Bz" << endl; | |
120 | + | |
121 | + do { | |
122 | + | |
123 | + status = DD_GetMultiData(id_mag, 2, static_cast<char**>(params_mag), timeIntervall, &data, 1); | |
124 | + | |
125 | + if (status < 0) | |
126 | + { | |
127 | + std::string ddGetDataErr = "[ERROR] Failed to get MAG data -> status : " + status; | |
128 | + throw std::string(ddGetDataErr); | |
129 | + } | |
130 | + | |
131 | + for (int j = 0; j < data->VarNumber; ++j) | |
132 | + { | |
133 | + float bx = static_cast<float*>(data[1].Variables[j])[0]; | |
134 | + float by = static_cast<float*>(data[1].Variables[j])[1]; | |
135 | + float bz = static_cast<float*>(data[1].Variables[j])[2]; | |
136 | + if (bx < -9000.) { | |
137 | + bx = NAN; by = NAN; bz = NAN; | |
138 | + } | |
139 | + magFile << static_cast<char*>(data[0].Variables[j]) << "," | |
140 | + << bx << "," | |
141 | + << by << "," | |
142 | + << bz << endl; | |
143 | + } | |
144 | + | |
145 | + } while (status == MOREDATA); | |
146 | + | |
147 | + | |
148 | + DD_Close(id_mag); | |
149 | + | |
150 | + plasmaFile.close(); | |
151 | + | |
152 | + magFile.close(); | |
153 | + | |
154 | + return 0; | |
155 | +} | |
0 | 156 | \ No newline at end of file | ... | ... |
... | ... | @@ -0,0 +1,145 @@ |
1 | +///////////////// | |
2 | +// CPP HEADERS // | |
3 | +///////////////// | |
4 | +#include <iostream> | |
5 | +#include <fstream> | |
6 | +#include <stdlib.h> | |
7 | +#include <string.h> | |
8 | + | |
9 | +//////////// | |
10 | +/// DDLIB // | |
11 | +//////////// | |
12 | +#include "DD.h" | |
13 | + | |
14 | +//////////////// | |
15 | +// NAMESPACES // | |
16 | +/////////////// | |
17 | +using namespace std; | |
18 | + | |
19 | +int main (int argc, char const *argv[]) throw(std::string) | |
20 | +{ | |
21 | + if (argc != 6) | |
22 | + { | |
23 | + cout << "[ERROR] Usage : ./get_STEREO [a,b] (plasma filename) (mag filename) (ddStart) (ddInterval)" << endl; | |
24 | + exit(EXIT_FAILURE); | |
25 | + } | |
26 | + | |
27 | + string stereo = argv[1]; | |
28 | + string dataFilename = argv[2]; | |
29 | + string dataFilename1 = argv[3]; | |
30 | + string ddStart = argv[4]; | |
31 | + string ddInterval = argv[5]; | |
32 | + | |
33 | + string plasmaVi = "sta_l2_pla"; | |
34 | + string timeParameter = "Time"; | |
35 | + string DensParameter = "Np"; | |
36 | + string TempParameter = "Vth"; | |
37 | + string VNormParameter = "Vrtn"; | |
38 | + string magVi = "sta_mag_mag"; | |
39 | + string magParameter = "B"; | |
40 | + | |
41 | + ofstream plasmaFile(dataFilename.c_str(), ios::out); | |
42 | + ofstream magFile(dataFilename1.c_str(), ios::out); | |
43 | + | |
44 | + memcpy(&(plasmaVi[2]),argv[1],1); | |
45 | + memcpy(&(magVi[2]),argv[1],1); | |
46 | + | |
47 | + printf("PlasmaVi %s\n", plasmaVi.c_str()); | |
48 | + int id_sw = DD_SetVariable( const_cast<char*>( plasmaVi.c_str() ) ); | |
49 | + int id_mag = DD_SetVariable( const_cast<char*>( magVi.c_str() ) ); | |
50 | + | |
51 | + char *st = const_cast<char*>( ddStart.c_str() ); | |
52 | + | |
53 | + int error = DD_SetTime(id_sw, st); | |
54 | + | |
55 | + if (error < 0) | |
56 | + { | |
57 | + std::string ddSetTimeErr = "[ERROR] Bad time pointer init in DD_SetTime SW -> err value : " + error; | |
58 | + printf(" bad time pointer plasma %d %d\n", id_sw, error); | |
59 | + throw ddSetTimeErr; | |
60 | + } | |
61 | + error = DD_SetTime(id_mag, st); | |
62 | + | |
63 | + if (error < 0) | |
64 | + { | |
65 | + std::string ddSetTimeErr = "[ERROR] Bad time pointer init in DD_SetTime Mag -> err value : " + error; | |
66 | + printf(" bad time pointer mag %d\n", error); | |
67 | + throw ddSetTimeErr; | |
68 | + } | |
69 | + // GET DATA | |
70 | + char *params[4]; | |
71 | + | |
72 | + params[0] = const_cast<char*>( timeParameter.c_str() ); | |
73 | + params[1] = const_cast<char*>( DensParameter.c_str() ); | |
74 | + params[2] = const_cast<char*>( TempParameter.c_str() ); | |
75 | + params[3] = const_cast<char*>( VNormParameter.c_str() ); | |
76 | + | |
77 | + char *params_mag[2]; | |
78 | + params_mag[0] = const_cast<char*>( timeParameter.c_str() ); | |
79 | + params_mag[1] = const_cast<char*>( magParameter.c_str() ); | |
80 | + | |
81 | + char *timeIntervall = const_cast<char*>( ddInterval.c_str() ); | |
82 | + | |
83 | + DD_data_t *data; | |
84 | + | |
85 | + int status = 0; | |
86 | + | |
87 | + plasmaFile << "Time,Density,Vth,Vr,Vt,Vn" << endl; | |
88 | + | |
89 | + do { | |
90 | + | |
91 | + status = DD_GetMultiData(id_sw, 4, static_cast<char**>(params), timeIntervall, &data, 1); | |
92 | + | |
93 | + if (status < 0) | |
94 | + { | |
95 | + std::string ddGetDataErr = "[ERROR] Failed to get SW data -> status : " + status; | |
96 | + throw std::string(ddGetDataErr); | |
97 | + } | |
98 | + | |
99 | + for (int j = 0; j < data->VarNumber; ++j) | |
100 | + { | |
101 | + plasmaFile << static_cast<char*>(data[0].Variables[j]) << "," | |
102 | + << *(static_cast<float*>(data[1].Variables[j])) << "," | |
103 | + << *(static_cast<float*>(data[2].Variables[j])) << "," | |
104 | + << static_cast<float*>(data[3].Variables[j])[0] << "," | |
105 | + << static_cast<float*>(data[3].Variables[j])[1] << "," | |
106 | + << static_cast<float*>(data[3].Variables[j])[2] << endl; | |
107 | + } | |
108 | + | |
109 | + } while (status == MOREDATA); | |
110 | + | |
111 | + DD_Close(id_sw); | |
112 | + | |
113 | + status = 0; | |
114 | + | |
115 | + magFile << "Time,Bx,By,Bz" << endl; | |
116 | + | |
117 | + do { | |
118 | + | |
119 | + status = DD_GetMultiData(id_mag, 2, static_cast<char**>(params_mag), timeIntervall, &data, 1); | |
120 | + | |
121 | + if (status < 0) | |
122 | + { | |
123 | + std::string ddGetDataErr = "[ERROR] Failed to get MAG data -> status : " + status; | |
124 | + throw std::string(ddGetDataErr); | |
125 | + } | |
126 | + | |
127 | + for (int j = 0; j < data->VarNumber; ++j) | |
128 | + { | |
129 | + magFile << static_cast<char*>(data[0].Variables[j]) << "," | |
130 | + << static_cast<float*>(data[1].Variables[j])[0] << "," | |
131 | + << static_cast<float*>(data[1].Variables[j])[1] << "," | |
132 | + << static_cast<float*>(data[1].Variables[j])[2] << endl; | |
133 | + } | |
134 | + | |
135 | + } while (status == MOREDATA); | |
136 | + | |
137 | + | |
138 | + DD_Close(id_mag); | |
139 | + | |
140 | + plasmaFile.close(); | |
141 | + | |
142 | + magFile.close(); | |
143 | + | |
144 | + return 0; | |
145 | +} | |
0 | 146 | \ No newline at end of file | ... | ... |