Hello all,
Sorry for not giving a faster answer and be sure we are not trying to
discourage anyone from using this file format.
Concerning float point storing in Amelet-HDF. A specification is here to define
how data must be stored for any one can understand this data without
ambiguity. At this first point, some goals could be added (memory usage,
accuracy, portability, etc). The specification must define just what is the
need, not too mush.
The usage of 64bit has not dramatic consequence because HDF5 cast the data into
the right kind automatically. So a data written in 64bit keep compatible with a
32bit application (without modification) and vice versa.
Then, why encourage the 32bit usage? At beginning, Amelet-HDF have been define
for store input/output data for EM numerical simulation. In the main case, the
32bit provide an acceptable accuracy and have the good property to save memory
(good property for exchange file format).
Concerning the accuracy. As a reminder, the machine epsilon for 32bit
architecture is near to 10^-7 and it is 10^-16 for 64bit. It is not so easy to
have a measurement procedure that guarantees an accuracy of 10^-7. It is also
hard for a numerical calculation to provided 64bit accuracy with a 64bit
calculation (numerical noise). It's for all this points than the 32bit accuracy
is usually good enough for input and output data.
Even so, in some specific cases, for example for storing intermediate data for
computation restart. In this case, the 64bit storage is required.
For all this reasons soften the Amelet-HDF specification is a good idea because
there are not consequence in existing software, keeping back compatibility and
enlarging file format perimeter. But the 32bit floating point storage is
encouraged because in many applications is enough and save memory.
I do not know when you have tested the Paraview plug-in. Today the plug-in
Paraview have been rewritten for used the last Amelet-HDF c library (most
stable). Amelet-HDF c library API has changed between previous versions so all
functionalities have not been re-implemented yet. At this time, the Paraview
plug-in can read mesh and data on a mesh.
Concerning geometry. I think in Amelet-hdf the 'category' name is related to
the data kind and not to define the data usage. For example, mesh is used to
store triangles, polygons, (discrete geometry representation). 'geometry' is
for us considered as reserve name to define most general geometrical notions
like b-spline, NURBS, geometrical boolean operation and so on. But as this
time no one needs to have this capability into Amelet-HDF.
To finish, the last point. You say right, HDF5 have hierarchical structure and
compression. However, using a single technology and a single file have some
drawback. It is not flexible and seems complex. But I do not know all your
requirements. However, it is possible to define all yours data into one
file. If you define two level in yours data file hierarchical. The first level
is used for manage your process, history and so on. The leaf of this first
level are stored into Amelet-HDF strict and you can use the link at the first
level. I try to give an example:
projects.h5
|-- first_project[@attribut decorator]
| |-- metadata
| |-- pres[@attribut decorator]
| | |-- metadata
| | `-- data[@FILEFORMAT=AMELET_HDF] # Start an Amelet-HDF node
| `-- mesh[@attribut decorator]
| |-- metadata
| `-- data[@FILEFORMAT=AMELET_HDF]
`-- second_project[@attribut decorator]
|-- metadata
|-- pres[@attribut decorator]
| |-- metadata
| `-- data[@FILEFORMAT=AMELET_HDF]
`-- mesh[@attribut decorator]
|-- metadata
`-- data[@FILEFORMAT=AMELET_HDF] -> link to /first_project/mesh