This package provides read/write facilities for one or more direct-access ﬁles through a single in-core buﬀer, so that actual input-output operations are often avoided. The buﬀer is divided into ﬁxed-length pages and all input-output is performed by transferring a single page to or from a single record of a ﬁle (the length of a record is equal to the length of a page).
Each set of data is addressed as a virtual array, that is, as if it were a very large array. The lower bound of the virtual array is 1. Each element of the virtual array has initial value zero. Any contiguous section of the virtual array may be read or written, without regard to page boundaries.
The virtual array is permitted to be too large to be accommodated in a single ﬁle, in which case HSL_OF01 opens secondary ﬁles with names that it constructs from the name of the primary ﬁle by appending ‘1’, ‘2’, ... . We refer to the set of ﬁles as a superﬁle. Each superﬁle is identiﬁed by the name of its primary ﬁle or the index that it is given when it is opened. To allow the secondary ﬁles to reside on diﬀerent devices, the user is required to supply an array of path names; the full name of a ﬁle is the concatenation of a path name with the ﬁle name.
To facilitate ﬁnite-element assembly and the multifrontal method, there is an option to add data from the virtual array to a given array under the control of a map.