[Paraview] [Hdf-forum] Fortran wrapper of HDF5

Pradeep Jha pradeep at ccs.engg.nagoya-u.ac.jp
Fri Mar 15 21:22:51 EDT 2013


Hello everyone,

thanks for the responses. I want to confirm the following once with
ParaView users:
1) I write a 3D data in the file "data.dat" using Fortran.
2) I use HDF fortran wrapper to read and convert the file format to
"data.h5"
3) I use and XDMF file to visualize "data.h5" using ParaView
By doing this, will I be visualizing the original data written by Fortran?
Or some transposed form of it?

Regards,
Pradeep




2013/3/15 Elena Pourmal <epourmal at hdfgroup.org>

> John,
>
> I think you explained it well.
>
> Looks like Jason is not along. Let me try to explain one more time....
>
> To address Jason's
> "I'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't figure out
> whether the hdf5 format ordering is transparent to the application or not"
>
> Yes, it is transparent.
>
> 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.
>
> Dimensions of the user'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's array.
> File format is INDEPENDENT from which language an array is written (and
> yes, it is turned to be a C convention :-)
>
> 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.
>
> 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'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's data.
>
> 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!
>
> Is it even more confusing now? :-)
>
> Elena
>
>
>  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> Elena Pourmal  The HDF Group  http://hdfgroup.org
> 1800 So. Oak St., Suite 203, Champaign IL 61820
> 217.531.6112
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
>
>
> On Mar 13, 2013, at 2:28 PM, Biddiscombe, John A. wrote:
>
> I'm forwarding this to the hdf mailing list just in case someone can
> explain it better, or correct me
>
> 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
> 0 = 10
> 1 = 20
> 2 = 30
>
> The convention is simply that the dimensions are listed in row major
> order, so if you read the data in c into an array
> arr[z][y][x]
>
> then everything will look fine. nine times out of ten, I'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't say
> 'this is X, this is Y, this is Z' - 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 'should' be X/Y/Z if you wish.
>
> 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't go into coordinate
> transforms to achieve the same flipping at the graphics end).
>
> Did I get that right?
>
> JB
>
>
> -----Original Message-----
> From: paraview-bounces at paraview.org [mailto:paraview-bounces at paraview.org]
> On Behalf Of Jason Fleming
> Sent: 13 March 2013 19:51
> To: paraview at paraview.org
> Subject: Re: [Paraview] Fortran wrapper of HDF5
>
> I'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't figure out
> whether the hdf5 format ordering is transparent to the application or not.
>
> It seems really silly that hdf5 can take care of endianness so that app
> developers don'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
> hdf5 seems to work that way. Is that right?
>
> Cheers
> Jason
>
>
>
> On Thu, 2013-03-14 at 00:08 +0900, Pradeep Jha wrote:
>
> Are you implying that if I use the HDF5 fortran wrapper to convert the
>
> fortran binary data in h5 format and then visualize this h5 file using
>
> Paraview, I am looking at the the actual data with correct dimensions?
>
> Or I have to make some modifications so that I see the data correctly
>
> in Paraview?
>
>
>
> I dont want to transpose the data. I just want to visualize what I
>
> wrote using Fortran without any alterations.
>
>
>
> Pradeep
>
>
>
>
>
> 2013/3/13 Biddiscombe, John A. <biddisco at cscs.ch>
>
>        “How do I write the h5 file data in exactly the same way as it
>
>        was written in original binary file written by Fortran?”
>
>
>
>
>        It is writing the file the same, the problem is that fortran
>
>        stores arrays in column major, and C in row major order. You
>
>        state “it automatically transposes the matrix” – not true – it
>
>        transposes the dimensions so that the data is still stored the
>
>        same, but when you write array[z,y,x] from fortran, you want
>
>        to read it as array[x,y,z] from C. The actual data on disk is
>
>         the same as your binary fortran data, but the dimensions are
>
>        reversed compared to the same data from C.
>
>
>
>
>        Does that help? – the short answer is just swap the order of
>
>        the dimensions in your read function in the C version and then
>
>        things should appear the same. (but you must declare your
>
>        arrays with the dimensions flipped).
>
>
>
>
>        If you want to actually transpose the data, then I’m sure
>
>        google will provide a code snippet
>
>
>
>
>        I hope I’m not remembering this wrong.
>
>
>
>
>        JB
>
>
>
>
>
>
>
>
>
>
>        From: paraview-bounces at paraview.org
>
>        [mailto:paraview-bounces at paraview.org] On Behalf Of Pradeep
>
>        Jha
>
>        Sent: 13 March 2013 10:58
>
>        To: paraview at paraview.org
>
>        Subject: [Paraview] Fortran wrapper of HDF5
>
>
>
>
>        I recently noticed that when I am using the fortran wrapper of
>
>        HDF5 to convert a binary file written by fortran into the "h5"
>
>        format, it automatically transposes the matrix. Apparently,
>
>        this is because HDF5 uses the C convention for writing binary
>
>        files, as explained in section: 7.3.2.5. of this page.
>
>
>
>
>
>        Is anyone aware of this situation? And any solutions for this
>
>        problem? How do I write the h5 file data in exactly the same
>
>        way as it was written in original binary file written by
>
>         Fortran?
>
>
>
>
>
> _______________________________________________
>
> Powered by www.kitware.com
>
>
> Visit other Kitware open-source projects at
>
> http://www.kitware.com/opensource/opensource.html
>
>
> Please keep messages on-topic and check the ParaView Wiki at:
>
> http://paraview.org/Wiki/ParaView
>
>
> Follow this link to subscribe/unsubscribe:
>
> http://www.paraview.org/mailman/listinfo/paraview
>
>
> --
> Dr. Jason G. Fleming
> Chief Engineer, Seahorse Coastal Consulting
> 3103 Mandy Ln
> Morehead City, NC 28557
> Tel: (252) 726-6323
> Mobile: (252) 269-0962
> Web: http://www.seahorsecoastal.com
>
>
>
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the ParaView Wiki at:
> http://paraview.org/Wiki/ParaView
>
> Follow this link to subscribe/unsubscribe:
> http://www.paraview.org/mailman/listinfo/paraview
> _______________________________________________
> Hdf-forum is for HDF software users discussion.
> Hdf-forum at hdfgroup.org
> http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org
>
>
>
> _______________________________________________
> Hdf-forum is for HDF software users discussion.
> Hdf-forum at hdfgroup.org
> http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.paraview.org/pipermail/paraview/attachments/20130316/25129b3a/attachment.htm>


More information about the ParaView mailing list