Blame view

Sources/get_OMNI_1H.cpp 2.62 KB
4921d9e8   Elena.Budnik   src
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
/////////////////
// CPP HEADERS //
/////////////////
#include <iostream>
#include <fstream>
#include <stdlib.h> 

////////////
/// DDLIB //
////////////
#include "DD.h"

////////////////
// NAMESPACES //
///////////////
using namespace std;

int main(int argc, char const *argv[])
{
	if (argc != 4)
	{
		cout << "[ERROR] Usage : ./get_OMNI_1H (data filename) (ddStart) (ddInterval)" << endl;
		exit(EXIT_FAILURE);
	}

	string dataFilename   = argv[1];
	string ddStart        = argv[2];
	string ddInterval     = argv[3];
	string plasmaVi       = "omni_hour_all";
	string timeParameter  = "Time";
	string DensParameter  = "N";
	string TempParameter  = "T";
	string VNormParameter = "V";
	string VLonParameter  = "Vlon";
	string VLatParameter  = "Vlat";
	string magParameter   = "B";
	
	ofstream plasmaFile(dataFilename.c_str(), ios::out); 

	int id = DD_SetVariable( const_cast<char*>( plasmaVi.c_str() ) );
	
	char *st = const_cast<char*>( ddStart.c_str() );
	
	int error = DD_SetTime(id, st);
	
	if (error < 0)
	{
		std::string ddSetTimeErr = "[ERROR] Bad time pointer init in DD_SetTime -> err value : " +  error;
		throw std::string(ddSetTimeErr);
	}

	// GET DATA
	char *params[7];
	
	params[0] = const_cast<char*>( timeParameter.c_str() );
	params[1] = const_cast<char*>( DensParameter.c_str() );
	params[2] = const_cast<char*>( TempParameter.c_str() );
	params[3] = const_cast<char*>( VNormParameter.c_str() );
	params[4] = const_cast<char*>( VLonParameter.c_str() );
	params[5] = const_cast<char*>( VLatParameter.c_str() );
	params[6] = const_cast<char*>( magParameter.c_str() );
	
	char *timeIntervall = const_cast<char*>( ddInterval.c_str() );
	
	DD_data_t *data;

	int status = 0;

	plasmaFile << "Time,Density,Temperature,V,Vlon,Vlat,Bx,By,Bz" << endl;

	do {

		status = DD_GetMultiData(id, 7, static_cast<char**>(params), timeIntervall, &data, 1);
		
		if (status < 0)
		{
			std::string ddGetDataErr = "[ERROR] Failed to get data -> status : " + status;
			throw std::string(ddGetDataErr);
		}
		

		for (int j = 0; j < data->VarNumber; ++j)
		{
			plasmaFile << static_cast<char*>(data[0].Variables[j]) << ","
			<< *(static_cast<float*>(data[1].Variables[j])) << ","
			<< *(static_cast<float*>(data[2].Variables[j])) << ","
			<< *(static_cast<float*>(data[3].Variables[j])) << ","
			<< *(static_cast<float*>(data[4].Variables[j])) << ","
			<< *(static_cast<float*>(data[5].Variables[j])) << ","
			<< static_cast<float*>(data[6].Variables[j])[0] << ","
			<< static_cast<float*>(data[6].Variables[j])[1] << ","
			<< static_cast<float*>(data[6].Variables[j])[2] << endl; 
		}


	} while (status == MOREDATA);
	
    DD_Close(id);

    plasmaFile.close();

	return 0;
}