<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Helvetica,sans-serif;" dir="ltr">
<p style="margin-top:0;margin-bottom:0">Hello,</p>
<p style="margin-top:0;margin-bottom:0"><br>
</p>
<p style="margin-top:0;margin-bottom:0">Thank you both for your advice. I will be sure to pursue both options and see if I can get them working.</p>
<p style="margin-top:0;margin-bottom:0"><br>
</p>
<p style="margin-top:0;margin-bottom:0">Thank you again,</p>
<p style="margin-top:0;margin-bottom:0">Nicholas Stegmeier</p>
</div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> David E DeMarle <dave.demarle@kitware.com><br>
<b>Sent:</b> Friday, December 1, 2017 8:35:45 AM<br>
<b>To:</b> Mark Olesen<br>
<b>Cc:</b> Stegmeier, Nicholas; paraview@paraview.org<br>
<b>Subject:</b> Re: [Paraview] Writing XML VTK Binary files from C++</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:10pt;">
<div class="PlainText">Another approach is to use VTK itself to write the files.<br>
<br>
Since VTK 6 it is straightforward to configure a VTK build consisting<br>
of only the IO/ParallelXML module and its required dependencies. To do<br>
so, in cmake, turn of testing, all groups and turn on<br>
Module_vtkIOParallelXML, and you should be set.<br>
<br>
David E DeMarle<br>
Kitware, Inc.<br>
Principal Engineer<br>
21 Corporate Drive<br>
Clifton Park, NY 12065-8662<br>
Phone: 518-881-4909<br>
<br>
<br>
On Fri, Dec 1, 2017 at 2:34 AM, Mark Olesen <Mark.Olesen@esi-group.com> wrote:<br>
> When you say "writing binary", you need to distinguish between three<br>
> possibilities.<br>
> 1) writing binary "inline" (actually base64 encoded)<br>
> 2) writing binary "append" (actually base64 encoded)<br>
> 3) writing raw binary "append" (really raw binary)<br>
><br>
> Since you already have ASCII writing working and its content is "inline", it<br>
> won't take much more to get binary inline working.<br>
> By "inline", I mean when the output is placed between the <xxx> </xxx><br>
> markers. Eg,<br>
>     <DataArray ...><br>
>         content<br>
>     </DataArray><br>
><br>
> For the binary case, the content is written as base64-encoded data, which<br>
> means that your output writer for these sections needs to pass the content<br>
> through a base64 layer to do the encoding for you.<br>
><br>
> If it helps as reference, we have the same thing in OpenFOAM, except that we<br>
> only write vtu and vtp files (we don't have rectilinear meshes).<br>
><br>
> In the repo <a href="https://develop.openfoam.com/Development/OpenFOAM-plus">https://develop.openfoam.com/Development/OpenFOAM-plus</a><br>
> we have a foamVtkBase64Formatter and a foamVtkBase64Layer (both under<br>
> src/fileFormats/vtk/format/) that add a base64Layer to encode and output as<br>
> base64 (src/OpenFOAM/db/IOstreams/hashes/base64Layer.[CH]).<br>
><br>
> You'll see that the foamVtkBase64Layer and base64Layer are quite low level<br>
> means of adding an tiny encoding buffer (3 chars size) to intercept output<br>
> prior to sending through to a std::ostream. It take very little effort to<br>
> adopt for your output and thus quite easy to drop in instead of your current<br>
> ASCII outputter.  For it too work easily, however, you should make sure that<br>
> you need to generate your output content with a write() method instead of<br>
> using '<<'. This allows somewhat easy switching between something like a<br>
> foamVtkAsciiFormatter and the binary version, but more importantly it makes<br>
> it easier to track the output state.<br>
><br>
> When browsing through the code, you may also notice that we have support for<br>
> writing in appended format (raw and base64). However, I would not advise you<br>
> to tackle that immediately. There are a few more things to watch out for<br>
> here, but more importantly it will change many more things on the calling<br>
> side.<br>
><br>
> I hope this information helps you.<br>
> /mark<br>
><br>
> --<br>
> Dr Mark OLESEN<br>
> Principal Engineer, ESI-OpenCFD<br>
> ESI GmbH | Einsteinring 24 | 85609 Munich | GERMANY<br>
> <a href="http://www.openfoam.com">www.openfoam.com</a> | <a href="http://www.esi-group.com">
www.esi-group.com</a> | mark.olesen@esi-group.com<br>
><br>
><br>
> On 11/30/17 18:00, Stegmeier, Nicholas wrote:<br>
>><br>
>> Hello,<br>
>><br>
>> I am new to Paraview and C++ coming from a mostly mathematics background.<br>
>> I am emailing to get resources or help on writing binary XML VTK files from<br>
>> C++.<br>
>><br>
>> I have finally succeeded in using the ASCII XML VTK format for a 2D<br>
>> rectilinear CFD application. My ".pvtr" file is shown below.<br>
>><br>
>> How can I write this file and my other XML VTK files in binary from C++?<br>
>> Do I need a special C++ library?<br>
><br>
> _______________________________________________<br>
> Powered by <a href="http://www.kitware.com">www.kitware.com</a><br>
><br>
> Visit other Kitware open-source projects at<br>
> <a href="http://www.kitware.com/opensource/opensource.html">http://www.kitware.com/opensource/opensource.html</a><br>
><br>
> Please keep messages on-topic and check the ParaView Wiki at:<br>
> <a href="http://paraview.org/Wiki/ParaView">http://paraview.org/Wiki/ParaView</a><br>
><br>
> Search the list archives at: <a href="http://markmail.org/search/?q=ParaView">http://markmail.org/search/?q=ParaView</a><br>
><br>
> Follow this link to subscribe/unsubscribe:<br>
> <a href="http://public.kitware.com/mailman/listinfo/paraview">http://public.kitware.com/mailman/listinfo/paraview</a><br>
</div>
</span></font></div>
</body>
</html>