Introduction

FlexIO borrows its terminology and storage-style from HDF and NetCDF. The file stores a sequence of multidimesional arrays which are referred to generically as datasets. The rank of the dataset is the number of dimensions the data array has. The dimensions themselves are stored as an array of integers. The dataset has a datatype which identifies the type of data stored in the array {32-bit float, 64-bit float, 32-bit integer, 64-bit integer, character}. The datasets are stored sequentially in the file and can be accessed by their index which ranges from 0 to (<number of datasets> - 1).

It is important to note that the data is always stored in Fortan order. That is, the first element of the dimensions array always refers to the number of elements that are most closely packed in the array (eg. stride = 1). The next dimension has a stride equal to the product of the lower dimensions. This is opposite of default C/C++ array indexing order but can be accomodated easily in those languages.

In addition to raw dataset storage, you can attach additional descriptions to the data using annotations and attributes.

An annotation is a text-string description of a dataset which can be attached to dataset. You can use it to add comments or other such information to the file.

An attribute is a named vector of data (of any type) attached to a dataset. This can function like an annotation but it is primarily intended to add more information to a dataset that can be interpreted by visualization system or other such programs that would read the datafile. The type of data attached in an attribute can be the origin in 3D space of the dataset or a list of floating point coordinates. coordinates or a componentname etc... The name identifies the semantic meaning of the array's contents and readers can be configured to look for particular names to add descriptive information to the dataset.

.


Documentation


John Shalf
Last modified: Thu Feb 4 21:38:53 CST 1999