<div dir="ltr">Hi Georg,<div><br></div><div>You are correct that a more efficient solution is possible. After reading the Ensight Gold binary format ( <a href="http://www-vis.lbl.gov/NERSC/Software/ensight/doc/OnlineHelp/UM-C11.pdf">http://www-vis.lbl.gov/NERSC/Software/ensight/doc/OnlineHelp/UM-C11.pdf</a> ) I have discovered how you can do this more efficiently.</div>
<div><br></div><div style>If you are start at 11-37 you will see that they state:</div><div style><br></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div style><div style>"Note 3: Efficient reading of each file (especially binary) is facilitated by </div>
</div><div style><div style>appending each file with a file index. A file index contains appropriate </div></div><div style><div style>information to access the file byte positions of each time step in the file. (EnSight </div>
</div><div style><div style>automatically appends a file index to each file when exporting in transient single </div></div><div style><div style>file format.) If used, the file index must follow the last END TIME STEP</div>
</div><div style><div style>wrapper in each file."</div></div><div style><div style><br></div></div><div style><div style>File Index Usage:</div></div><div style><div style>ASCII, Binary, Item, Description</div></div>
<div style><div style>“%20d\n”, sizeof(int), n, Total number of data time steps in the file.</div></div><div style><div style>“%20d\n”, sizeof(long), fb1, File byte loc for contents of 1st time step*</div></div><div style>
<div style>“%20d\n”, sizeof(long), fb2, File byte loc for contents of 2nd time step*</div></div><div style><div style><div style>. . ., . . ., . . ., . . .</div></div></div><div style><div style><div style>“%20d\n”, sizeof(long), fbn, File byte loc for contents of nth time step*</div>
</div></div><div style><div style><div style>“%20d\n”, sizeof(int), flag, Miscellaneous flag (= 0 for now)</div></div></div><div style><div style><div style>“%20d\n”, sizeof(long), fb, of item n File byte loc for Item n above</div>
</div></div><div style><div style><div style>“%s\n”, sizeof(char)*80, “FILE_INDEX”, File index keyword</div></div></div><div style><div style>* Each file byte location is the first byte that follows the BEGIN TIME STEP record</div>
</div></blockquote><div><br></div><div style>To me the best way is to read the file in reverse looking for FILE_INDEX as the last 80 characters. From that you parse the previous long as</div><div style>the new seek position which jumps you to the start of the file index records. After reading the file index records you have a lookup table for all seek positions of the time steps in that ensight file.</div>
</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Mar 6, 2013 at 4:23 AM, Georg Hammerl <span dir="ltr"><<a href="mailto:hammerl@lnm.mw.tum.de" target="_blank">hammerl@lnm.mw.tum.de</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello,<br>
<br>
I have already posted this issue on the paraview mailing list, but then I realized that it is more of a VTK problem.<br>
I can load the first time step of my results but when I switch to the next step (in which 4 points are added), paraview freezes and htop shows 100% load for this process. Surprisingly, this only happens when I use binary ensight gold format. The same results written in ascii ensight gold format work. The ens_checker tells me for both cases that I have valid output files.<br>
<br>
Meanwhile I had a look into the source code and discovered the issue. Whenever the variable-files are read for a time steps greater than 1, Paraview has to jump in the binary file to the desired timestep. This is done by partially parsing and skipping blocks until the correct "BEGIN TIME STEP" is found. In order to skip the correct block length, Paraview uses the number of points (numPts) from the current geometry step. This breaks with a varying number of points per timestep.<br>
As an example my first step contains 2 points and the second step 6 points, therefore when Paraview skips the first time step, it skips a block length equivalent to 6 points. The correct number would be 2 points. It therefore skips past the next "BEGIN TIME STEP".<br>
<br>
In order to verify my theory I have implemented a little hack which looks for the next "BEGIN TIME STEP" by brute force. In case someone wants to try this I have attached a patch which can be used in conjunction with the attached examples.<br>
<br>
A clean solution would be to skip the correct number of points for every given timestep. Unfortunately I do not have enough insight into the VTK ensight reader to implement this and would appreciate any help in finding a clean solution to this.<br>
<br>
Cheers,<br>
<br>
Georg<span class="HOEnZb"><font color="#888888"><br>
<br>
-- <br>
Dipl.-Ing. Georg Hammerl<br>
Lehrstuhl für Numerische Mechanik<br>
Technische Universität München<br>
Boltzmannstrasse 15, D-85747 Garching b. München<br>
phone <a href="tel:%2B49%2089%20289%2015237" value="+498928915237" target="_blank">+49 89 289 15237</a><br>
fax <a href="tel:%2B49%2089%20289%2015301" value="+498928915301" target="_blank">+49 89 289 15301</a><br>
<a href="mailto:hammerl@lnm.mw.tum.de" target="_blank">hammerl@lnm.mw.tum.de</a><br>
<a href="http://www.lnm.mw.tum.de" target="_blank">http://www.lnm.mw.tum.de</a><br>
<br>
</font></span><br>_______________________________________________<br>
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Please keep messages on-topic and check the VTK FAQ at: <a href="http://www.vtk.org/Wiki/VTK_FAQ" target="_blank">http://www.vtk.org/Wiki/VTK_FAQ</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://www.vtk.org/mailman/listinfo/vtkusers" target="_blank">http://www.vtk.org/mailman/listinfo/vtkusers</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br>Robert Maynard
</div>