HDF5 based field reader and writer

The handling of large data sets has been greatly improved with the addition a field reader and writer based on the HDF5 library. HDF5 (Hierarchical Data Format) can be used to store large amounts of data. The new HDF5 based reader and writer is intended as a successor for MODS.Read_Field and MODS.Read_UCD (.fld and .inp files respectively). The data models for these older formats are not an exact match to AVS/Express fields. The new HDF5 based format has been explicitly designed around AVS/Express fields and allows the user to have data files that take advantage of virtually all the features of AVS/Express fields. Additionally, this format can represent both structured and unstructured fields, thus providing a single unified file format. This will reduce learning time and enhance opportunities for software reuse.

AVS/Express takes advantage of HDF5's abilities to select subsets of the data file. The reader has an integrated crop and downsize facility. This dramatically reduces the amount of memory required by allowing the user to select a subset of the data before it is read in. The reader can also be configured to only read selected node data components and selected cell data components, effectively giving the area an integrated extract_component and extract_cell_component.

For more information about HDF5, HDF5 documentation and HDf5 tools and utility programs can be found at http://hdf.ncsa.uiuc.edu/HDF5/.

You may load in your data into AVS/Express through preexisting means and then write out HDF5 format using the new write macros/modules. However, to import a dataset that is in a new format, you may wish to write a translator from the new format to AVS/Express-compatible HDF5. To do this, you will need to download your own copy of the HDF5 library and documentation. Example source code is provided with AVS/Express to help you get started.

There are 4 high level macros:

Rd_HDF5_Field and Rd_HDF5_Time_Field
Rd_HDF5_Field reads an AVS/Express field out of an HDF5 file. Rd_HDF5_Time_Field reads in all time steps of a time dependent field.

Wr_HDF5_Field and Wr_HDF5_Time_Field.
Wr_HDF5_Field writes out an AVS/Express field to an HDF5. Wr_HDF5_Time_Field writes out time-dependent fields.

There are 7 new low level Modules.

H5read_array
H5read_array is used to read in a single array from an HDF5 field. It is different from the other modules in that it does not assume that it is input into an Express field

H5write_array
H5write_array is used to write a single array to an HDF5 file.

H5read_field and H5read_time_field
H5read_field is the basic field reading module. It reads an AVS/Express field out of an HDF5 file. H5read_Time_Field reads in all the timesteps of a time-dependent field.

H5write_field and H5write_time_field
H5write_field is the basic field writing module. The resulting files can be read back in with H5read_File or Rd_HDF5_Field. H5write_time_field writes out time dependent fields.

H5list_vars
H5list_vars is a utility that is used in the user interface for Rd_HDF5_Field. It scans the input HDF5 file and then generates lists of node data variables, cell data variables and dimentions that are used in the Rd_HDF5_Field UI.