#include #include #include #include "cic.hpp" #include "loadGadget.hpp" #include "miniargs.hpp" #include #include "hdf5_array.hpp" using namespace CosmoTool; using namespace std; int main(int argc, char **argv) { typedef boost::multi_array array_type; uint32_t res; char *fname; int id; MiniArgDesc desc[] = { { "SNAPSHOT", &fname, MINIARG_STRING }, { 0, 0, MINIARG_NULL } }; if (!parseMiniArgs(argc, argv, desc)) return 1; H5::H5File f("density.h5", H5F_ACC_TRUNC); SimuData *p = loadGadgetMulti(fname, 0, 0); double L0 = p->BoxSize/1000; array_type parts(boost::extents[p->TotalNumPart][6]); uint64_t q = 0; try { for (int cpuid=0;;cpuid++) { p = loadGadgetMulti(fname, cpuid, NEED_POSITION|NEED_VELOCITY); for (uint32_t i = 0; i < p->NumPart; i++) { parts[q][0] = p->Pos[0][i]/1000; parts[q][1] = p->Pos[1][i]/1000; parts[q][2] = p->Pos[2][i]/1000; parts[q][3] = p->Vel[0][i]; parts[q][4] = p->Vel[1][i]; parts[q][5] = p->Vel[2][i]; q++; } delete p; } } catch (const NoSuchFileException& e) {} hdf5_write_array(f, "particles", parts); return 0; }