HDF5 is extremely flexible in the sense that it allows the user to define a higher level data model to describe domain-specific data relationships. This flexibility however makes it necessary to develop an agreement on the logical layout of the data.
An H5hut file consists of a series of "time steps," which are HDF5 groups that are added sequentially to the file root. Attributes can be attached to the file or to an individual time step. Each time step can hold multiple datasets of either 32- or 64-bit integer or floating point values. These datasets can be written as 1D particle or 3D field data using the H5Part or H5Block modules, respectively.
The H5Fed module of H5hut provides a data model for adaptive refined tetrahedral and triangle meshes. Key features of H5Fed are tags, i.e. data associated with entities, and access to all up- and downward adjacencies. No intrinsic limits exist on the number of vertices, elements and level of refinements and multiple meshes can be stored in the same H5hut file. H5Fed is aggressively optimized for minimal memory and disk usage. Information that can be computed efficiently from other data is neither stored on disk nor kept in memory. Currently, H5Fed only supports serial access, but a parallel version is in development.
The following groups are allowed as children of the root group /:
First level groups to store (particle) data with rank 1 or block structured data with rank 3. In H5hut these groups are called steps. All datasets in the same step should have the same dimension. Steps are enumerated whereby NUMBER is an integer greater or equal zero. The enumeration must not be consecutive. The format of NUMBER is (in C-slang) %d. In a future version of H5hut it is planed to implement user definable step names.
Group to store files in a H5hut file as binary blob.
Group to store tetrahedral or triangle meshes.
File- and step Attributes
HDF5 attributes can be attached to the root group or to step groups. In H5hut slang these are 'file attributes' respective 'step attributes'. The name of attributes is restricted to 64 octets. The value of an attribute must be an array of one of the following HDF5 data types:
used for string attributes
array of 32bit floating point number with rank 1
array of 64bit floating point number with rank 1
array of 32bit integer number with rank 1
array of 64bit integer number with rank 1
Attribute names starting with double underscore are for internal use only!
For the time being the following attributes are pre-defined:
All above names are enclosed in double underscore! There seems to be a problem with the rendering engine in Gitlab.