[Paraview] Paraview binary format
Kharche, Sanjay
Sanjay.Kharche at liverpool.ac.uk
Fri Aug 17 10:45:30 EDT 2012
Hi David, All
Thanks for the suggestion. However, I cannot incorporate any dependencies into my code. Since posting my message, I have discovered that I can put a text header (similar to VTK ASCII) and then the data in binary into the output files. The problem (if there a problem!) has now evolved to getting the binary fwrite to be big endian - or is there another way? For completeness, the revised bit of code is here:
// write to file
if (fcnt == 40) {
str = malloc (64*sizeof(char));
sprintf (str, "fhn_2d_%d.vtk", cnt++);
// the ASCII works.
out1 = fopen (str, "wt");
free(str);
fprintf(out1, "# vtk DataFile Version 2.0\n");
fprintf(out1, "vtk output\n");
fprintf(out1, "ASCII\n");
fprintf(out1, "DATASET STRUCTURED_POINTS\n");
fprintf(out1, "DIMENSIONS %d %d 1\n",N+1,M+1); // N+1 columns, M+1+header rows
fprintf(out1, "SPACING 1 1 1\n");
fprintf(out1, "ORIGIN 0 0 0\n");
fprintf(out1, "POINT_DATA %d\n",(N+1)*(M+1)); // total number of points on structured data.
fprintf(out1, "SCALARS ImageFile float 1\n");
fprintf(out1, "LOOKUP_TABLE default\n");
for (m = 0; m <= M; m++) {
for (n = 0; n <= N; n++)
fprintf (out1, "%6.4f ", u[n][m]);
fprintf (out1, "\n");
}
fclose (out1);
// binary output of the same data. this does not work.
str = malloc(64*sizeof(char));
sprintf(str,"fhn2d%d.bin.vtk",cnt);
out1 = fopen(str,"wab");
free(str);
fprintf(out1, "# vtk DataFile Version 2.0\n");
fprintf(out1, "vtk output\n");
fprintf(out1, "BINARY\n");
fprintf(out1, "DATASET STRUCTURED_POINTS\n");
fprintf(out1, "DIMENSIONS %d %d 1\n",N+1,M+1); // N+1 columns, M+1+header rows
fprintf(out1, "SPACING 1 1 1\n");
fprintf(out1, "ORIGIN 0 0 0\n");
fprintf(out1, "POINT_DATA %d\n",(N+1)*(M+1)); // total number of points on structured data.
fprintf(out1, "SCALARS ImageFile float 1\n");
fprintf(out1, "LOOKUP_TABLE default\n");
fwrite(u,sizeof(float),(N+1)*(M+1),out1);
fclose(out1);
fcnt = 0;
}
________________________________________
From: David Doria [daviddoria at gmail.com]
Sent: 17 August 2012 14:02
To: Kharche, Sanjay
Cc: paraview at paraview.org
Subject: Re: [Paraview] Paraview binary format
On Fri, Aug 17, 2012 at 7:21 AM, Kharche, Sanjay
<Sanjay.Kharche at liverpool.ac.uk> wrote:
>
> Dear All
>
> I am new to ParaView. I need to write binary files from my C code for viz
> with ParaView. So far, I assign values to a M x N 2D array, and write legacy
> VTK files - that works fine. I used code as pasted below to see if I can get
> the binary output (which uses a simple fwrite) working, but was unable to
> viz the data in the binary output. Can someone suggest how to write ParaView
> raw binary files (hopefully with minimal headers), and how to viz them
> interactively using the GUI.
>
> thanks
> Sanjay
Why don't you construct VTK objects and use a VTK writer to write the file?
Something like this:
http://www.vtk.org/Wiki/VTK/Examples/Cxx/IO/XMLStructuredGridWriter
It seems like you are reinventing the wheel a little bit by actually
formatting the file to VTK file format specifications manually.
David
More information about the ParaView
mailing list