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@paraview.org [mailto:paraview-bounces@paraview.org] On Behalf Of Jason Fleming
Sent: 13 March 2013 19:51
To: paraview@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@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@paraview.org
[mailto:paraview-bounces@paraview.org] On Behalf Of Pradeep
Jha
Sent: 13 March 2013 10:58
To: paraview@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.comVisit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.htmlPlease keep messages on-topic and check the ParaView Wiki at:
http://paraview.org/Wiki/ParaViewFollow 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