<div dir="ltr">Hello everyone,<div><br></div><div>thanks for the responses. I want to confirm the following once with ParaView users: </div><div>1) I write a 3D data in the file &quot;data.dat&quot; using Fortran.</div><div>

2) I use HDF fortran wrapper to read and convert the file format to &quot;data.h5&quot;<br></div><div style>3) I use and XDMF file to visualize &quot;data.h5&quot; using ParaView</div><div style>By doing this, will I be visualizing the original data written by Fortran? Or some transposed form of it? </div>

<div style><br></div><div style>Regards,</div><div style>Pradeep</div><div style><br></div><div style><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/3/15 Elena Pourmal <span dir="ltr">&lt;<a href="mailto:epourmal@hdfgroup.org" target="_blank">epourmal@hdfgroup.org</a>&gt;</span><br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">John,<div><br></div><div>I think you explained it well. </div><div><br></div><div>Looks like Jason is not along. Let me try to explain one more time....</div>

<div><br></div><div>To address Jason&#39;s </div><div class="im"><div>&quot;I&#39;ve read the section of the hdf5 page that Pradeep linked to (C vs Fortran ordering) several times, and for the life of me, I can&#39;t figure out whether the hdf5 format ordering is transparent to the application or not&quot; </div>

<div><br></div></div><div>Yes, it is transparent. </div><div><br></div><div>Think about N-dim array in any language as 1-dim flatten array. Transparency means that one always gets the same 1-dim flatten array of data in any programming language used. </div>

<div><br></div><div>Dimensions of the user&#39;s array (dataset dimensions) are stored in HDF5 file as 1-dim array following a convention that the last element of that array has the size of the fastest changing dimension of the user&#39;s array. File format is INDEPENDENT from which language an array is written (and yes, it is turned to be a C convention :-) </div>

<div><br></div><div>When an array is written from Fortran, the value of its first dimension is stored in the last element of the 1-dim array in the HDF5 file. </div><div><br></div><div>When Fortran library queries dimensions for an array (dataset dimensions), it knows as does the C library, that the last element of the 1-dim array in the file is the size of the fastest changing dimension of the user&#39;s array. It will be the first dimension for the Fortran array and the last dimension for the C array. I.e., Fortran wrappers flip dimensions, but NEVER touch user&#39;s data. </div>

<div><br></div><div>If one reads data written by a Fortran application using a C application (and vice versa), data will appear to be transposed, but it will be same data if you think about it as 1-dim flatten array! </div>

<div><br></div><div>Is it even more confusing now? :-) </div><div><br></div><div>Elena<br><blockquote type="cite"><div><br></div></blockquote><div>
<span style="text-indent:0px;letter-spacing:normal;font-variant:normal;text-align:-webkit-auto;font-style:normal;font-weight:normal;line-height:normal;border-collapse:separate;text-transform:none;font-size:medium;white-space:normal;font-family:Monaco;word-spacing:0px"><span style="text-indent:0px;letter-spacing:normal;font-variant:normal;text-align:-webkit-auto;font-style:normal;font-weight:normal;line-height:normal;border-collapse:separate;text-transform:none;font-size:medium;white-space:normal;font-family:Monaco;word-spacing:0px"><div style="word-wrap:break-word">

<div>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>Elena Pourmal  The HDF Group  <a href="http://hdfgroup.org" target="_blank">http://hdfgroup.org</a>   <br>1800 So. Oak St., Suite 203, Champaign IL 61820<br><a href="tel:217.531.6112" value="+12175316112" target="_blank">217.531.6112</a><br>

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~</div></div></span><br></span><br>
</div>
<br><div><div><div class="h5"><div>On Mar 13, 2013, at 2:28 PM, Biddiscombe, John A. wrote:</div><br></div></div><blockquote type="cite"><div><div><div class="h5">I&#39;m forwarding this to the hdf mailing list just in case someone can explain it better, or correct me<br>

<br>You write a Fortran array with dimensions say arr[10,20,30] {x=10,y=20,z=30}, and this goes onto disk as an array with dimension sizes<br>0 = 10<br>1 = 20<br>2 = 30<br><br>The convention is simply that the dimensions are listed in row major order, so if you read the data in c into an array<br>

arr[z][y][x]<br><br>then everything will look fine. nine times out of ten, I&#39;ve found that fortran arrays are declared as arr[x,y,z] and c arrays as arr[z][y][x] so the programmer has already flipped the orders of the dimensions and everything works out. All hdf does is say that the dimensions are listed in row major order, you can interpret the data how you like. Hdf doesn&#39;t say &#39;this is X, this is Y, this is Z&#39; - it only says, dim 0 is size 10, dim 1 size 20, dim 2 size 30 - you may add metadata yourself to tell the user which &#39;should&#39; be X/Y/Z if you wish.<br>

<br>If the OP has data physically stored as fortran array[z,y,x] then the data will be written out transposed relative to what we expect when reading into paraview, then transposing will be necessary (we won&#39;t go into coordinate transforms to achieve the same flipping at the graphics end).<br>

<br>Did I get that right?<br><br>JB<br><br><br>-----Original Message-----<br>From: <a href="mailto:paraview-bounces@paraview.org" target="_blank">paraview-bounces@paraview.org</a> [mailto:<a href="mailto:paraview-bounces@paraview.org" target="_blank">paraview-bounces@paraview.org</a>] On Behalf Of Jason Fleming<br>

Sent: 13 March 2013 19:51<br>To: <a href="mailto:paraview@paraview.org" target="_blank">paraview@paraview.org</a><br>Subject: Re: [Paraview] Fortran wrapper of HDF5<br><br>I&#39;ve read the section of the hdf5 page that Pradeep linked to (C vs Fortran ordering) several times, and for the life of me, I can&#39;t figure out whether the hdf5 format ordering is transparent to the application or not. <br>

<br>It seems really silly that hdf5 can take care of endianness so that app developers don&#39;t have to worry about it, but on the other hand, app developers now have to know whether a particular hdf5 file was written by a C or Fortran app in order to be able to read it properly. And yet<br>

hdf5 seems to work that way. Is that right?<br><br>Cheers<br>Jason<br><br><br><br>On Thu, 2013-03-14 at 00:08 +0900, Pradeep Jha wrote:<br><blockquote type="cite">Are you implying that if I use the HDF5 fortran wrapper to convert the <br>

</blockquote><blockquote type="cite">fortran binary data in h5 format and then visualize this h5 file using <br></blockquote><blockquote type="cite">Paraview, I am looking at the the actual data with correct dimensions?<br>

</blockquote><blockquote type="cite">Or I have to make some modifications so that I see the data correctly <br></blockquote><blockquote type="cite">in Paraview?<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">

<br></blockquote><blockquote type="cite">I dont want to transpose the data. I just want to visualize what I <br></blockquote><blockquote type="cite">wrote using Fortran without any alterations.<br></blockquote><blockquote type="cite">

<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Pradeep<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote>

<blockquote type="cite"><br></blockquote><blockquote type="cite">2013/3/13 Biddiscombe, John A. &lt;<a href="mailto:biddisco@cscs.ch" target="_blank">biddisco@cscs.ch</a>&gt;<br></blockquote><blockquote type="cite">        “How do I write the h5 file data in exactly the same way as it<br>

</blockquote><blockquote type="cite">        was written in original binary file written by Fortran?”<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">

<br></blockquote><blockquote type="cite">        It is writing the file the same, the problem is that fortran<br></blockquote><blockquote type="cite">        stores arrays in column major, and C in row major order. You<br>

</blockquote><blockquote type="cite">        state “it automatically transposes the matrix” – not true – it<br></blockquote><blockquote type="cite">        transposes the dimensions so that the data is still stored the<br>

</blockquote><blockquote type="cite">        same, but when you write array[z,y,x] from fortran, you want<br></blockquote><blockquote type="cite">        to read it as array[x,y,z] from C. The actual data on disk is<br></blockquote>

<blockquote type="cite">        the same as your binary fortran data, but the dimensions are<br></blockquote><blockquote type="cite">        reversed compared to the same data from C.<br></blockquote><blockquote type="cite">

<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">        Does that help? – the short answer is just swap the order of<br></blockquote><blockquote type="cite">

        the dimensions in your read function in the C version and then<br></blockquote><blockquote type="cite">        things should appear the same. (but you must declare your<br></blockquote><blockquote type="cite">        arrays with the dimensions flipped).<br>

</blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">        If you want to actually transpose the data, then I’m sure<br>

</blockquote><blockquote type="cite">        google will provide a code snippet<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">

        I hope I’m not remembering this wrong.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">        JB<br>

</blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">

<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">        From: <a href="mailto:paraview-bounces@paraview.org" target="_blank">paraview-bounces@paraview.org</a><br>

</blockquote><blockquote type="cite">        [mailto:<a href="mailto:paraview-bounces@paraview.org" target="_blank">paraview-bounces@paraview.org</a>] On Behalf Of Pradeep<br></blockquote><blockquote type="cite">        Jha<br>

</blockquote><blockquote type="cite">        Sent: 13 March 2013 10:58<br></blockquote><blockquote type="cite">        To: <a href="mailto:paraview@paraview.org" target="_blank">paraview@paraview.org</a><br></blockquote>
<blockquote type="cite">
        Subject: [Paraview] Fortran wrapper of HDF5<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">        I recently noticed that when I am using the fortran wrapper of<br>

</blockquote><blockquote type="cite">        HDF5 to convert a binary file written by fortran into the &quot;h5&quot;<br></blockquote><blockquote type="cite">        format, it automatically transposes the matrix. Apparently,<br>

</blockquote><blockquote type="cite">        this is because HDF5 uses the C convention for writing binary<br></blockquote><blockquote type="cite">        files, as explained in section: 7.3.2.5. of this page.<br></blockquote>

<blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">        Is anyone aware of this situation? And any solutions for this<br>

</blockquote><blockquote type="cite">        problem? How do I write the h5 file data in exactly the same<br></blockquote><blockquote type="cite">        way as it was written in original binary file written by<br></blockquote>

<blockquote type="cite">        Fortran?<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote>

<blockquote type="cite">_______________________________________________<br></blockquote><blockquote type="cite">Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br></blockquote><blockquote type="cite">

<br></blockquote><blockquote type="cite">Visit other Kitware open-source projects at <br></blockquote><blockquote type="cite"><a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>

</blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Please keep messages on-topic and check the ParaView Wiki at: <br></blockquote><blockquote type="cite"><a href="http://paraview.org/Wiki/ParaView" target="_blank">http://paraview.org/Wiki/ParaView</a><br>

</blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Follow this link to subscribe/unsubscribe:<br></blockquote><blockquote type="cite"><a href="http://www.paraview.org/mailman/listinfo/paraview" target="_blank">http://www.paraview.org/mailman/listinfo/paraview</a><br>

</blockquote><br>--<br>Dr. Jason G. Fleming<br>Chief Engineer, Seahorse Coastal Consulting<br>3103 Mandy Ln<br>Morehead City, NC 28557<br>Tel: <a href="tel:%28252%29%20726-6323" value="+12527266323" target="_blank">(252) 726-6323</a><br>

Mobile: <a href="tel:%28252%29%20269-0962" value="+12522690962" target="_blank">(252) 269-0962</a><br>Web: <a href="http://www.seahorsecoastal.com" target="_blank">http://www.seahorsecoastal.com</a><br><br><br><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 ParaView Wiki at: <a href="http://paraview.org/Wiki/ParaView" target="_blank">http://paraview.org/Wiki/ParaView</a><br><br>Follow this link to subscribe/unsubscribe:<br><a href="http://www.paraview.org/mailman/listinfo/paraview" target="_blank">http://www.paraview.org/mailman/listinfo/paraview</a><br>

_______________________________________________<br></div></div>Hdf-forum is for HDF software users discussion.<br><a href="mailto:Hdf-forum@hdfgroup.org" target="_blank">Hdf-forum@hdfgroup.org</a><br><a href="http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org" target="_blank">http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org</a><br>

</div></blockquote></div><br></div></div><br>_______________________________________________<br>
Hdf-forum is for HDF software users discussion.<br>
<a href="mailto:Hdf-forum@hdfgroup.org">Hdf-forum@hdfgroup.org</a><br>
<a href="http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org" target="_blank">http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org</a><br>
<br></blockquote></div><br></div>