///////////////// // CPP HEADERS // ///////////////// #include #include #include //////////// /// DDLIB // //////////// #include "DD.h" //////////////// // NAMESPACES // /////////////// using namespace std; int main(int argc, char const *argv[]) { if (argc != 5) { cout << "[ERROR] Usage : ./get_ACE_RT (plasma filename) (mag filename) (ddStart) (ddInterval)" << endl; exit(EXIT_FAILURE); } string dataFilename = argv[1]; string dataFilename1 = argv[2]; string ddStart = argv[3]; string ddInterval = argv[4]; string plasmaVi = "ace_swepam_real"; string timeParameter = "Time"; string DensParameter = "Dens"; string TempParameter = "Temp"; string VNormParameter = "Vel"; ///string VLonParameter = "Vlon"; //string VLatParameter = "Vlat"; string magVi = "ace_mag_real"; string magParameter = "Bgsm"; ofstream plasmaFile(dataFilename.c_str(), ios::out); ofstream magFile(dataFilename1.c_str(), ios::out); int id_sw = DD_SetVariable( const_cast( plasmaVi.c_str() ) ); int id_mag = DD_SetVariable( const_cast( magVi.c_str() ) ); char *st = const_cast( ddStart.c_str() ); int error = DD_SetTime(id_sw, st); if (error < 0) { std::string ddSetTimeErr = "[ERROR] Bad time pointer init in DD_SetTime SW -> err value : " + error; throw std::string(ddSetTimeErr); } error = DD_SetTime(id_mag, st); if (error < 0) { std::string ddSetTimeErr = "[ERROR] Bad time pointer init in DD_SetTime Mag -> err value : " + error; throw std::string(ddSetTimeErr); } // GET DATA char *params[4]; params[0] = const_cast( timeParameter.c_str() ); params[1] = const_cast( DensParameter.c_str() ); params[2] = const_cast( TempParameter.c_str() ); params[3] = const_cast( VNormParameter.c_str() ); char *params_mag[2]; params_mag[0] = const_cast( timeParameter.c_str() ); params_mag[1] = const_cast( magParameter.c_str() ); char *timeIntervall = const_cast( ddInterval.c_str() ); DD_data_t *data; int status = 0; plasmaFile << "Time,Density,Temperature,V" << endl; do { status = DD_GetMultiData(id_sw, 4, static_cast(params), timeIntervall, &data, 1); if (status < 0) { std::string ddGetDataErr = "[ERROR] Failed to get SW data -> status : " + status; throw std::string(ddGetDataErr); } for (int j = 0; j < data->VarNumber; ++j) { plasmaFile << static_cast(data[0].Variables[j]) << "," << *(static_cast(data[1].Variables[j])) << "," << *(static_cast(data[2].Variables[j])) << "," << *(static_cast(data[3].Variables[j])) << endl; } } while (status == MOREDATA); DD_Close(id_sw); status = 0; magFile << "Time,Bx,By,Bz" << endl; do { status = DD_GetMultiData(id_mag, 2, static_cast(params_mag), timeIntervall, &data, 1); if (status < 0) { std::string ddGetDataErr = "[ERROR] Failed to get MAG data -> status : " + status; throw std::string(ddGetDataErr); } for (int j = 0; j < data->VarNumber; ++j) { magFile << static_cast(data[0].Variables[j]) << "," << static_cast(data[1].Variables[j])[0] << "," << static_cast(data[1].Variables[j])[1] << "," << static_cast(data[1].Variables[j])[2] << endl; } } while (status == MOREDATA); DD_Close(id_mag); plasmaFile.close(); magFile.close(); return 0; }