#ifndef TURING_VTK_HH #define TURING_VTK_HH #include #include #include #include #include #include "grid.hh" class vtk_writer { unsigned int cnt; const std::string basename; const structured_grid & grid; const std::vector & data; public: vtk_writer (std::string _basename, const structured_grid & _grid, const std::vector &_data) : cnt(0), basename(_basename), grid(_grid), data(_data) {} void write(int c=-1) { if (c == -1) c = cnt; // create filename char fname[256]; snprintf(fname,255,"%s-%05i.vtk", basename.c_str(), c); // create file FILE *out=fopen(fname, "w"); // write header fprintf(out,"# vtk DataFile Version 2.0\n"); fprintf(out,"vtk output\n"); fprintf(out,"BINARY\n "); fprintf(out," \n"); fprintf(out," \n"); fprintf(out,"DATASET STRUCTURED_POINTS\n"); fprintf(out,"DIMENSIONS %d %d %d\n", grid.size(0), grid.size(1), grid.size(2)); fprintf(out,"ORIGIN %f %f %f\n", 0.0, 0.0, 0.0); fprintf(out,"SPACING %f %f %f\n", grid.meshwidth(), grid.meshwidth(), grid.meshwidth()); fprintf(out," \n"); fprintf(out,"POINT_DATA %d\n", grid.size()); fprintf(out,"SCALARS %s float 1\n", basename.c_str()); fprintf(out,"LOOKUP_TABLE default\n"); // parallel: Daten an Prozess 0 schicken, damit dieser schreiben kann // write data unsigned int i[3]; for (i[2]=0; i[2](&f); static const int n = sizeof(float); for (int i=0; i