STFC Website

part of UK Research & Innovation

Version 3.3.0

7th April 2022

HSL_OF01: Fortran virtual memory

This package provides read/write facilities for one or more direct-access files through a single in-core buffer, so that actual input-output operations are often avoided. The buffer is divided into fixed-length pages and all input-output is performed by transferring a single page to or from a single record of a file (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 file, in which case HSL_OF01 opens secondary files with names that it constructs from the name of the primary file by appending ‘1’, ‘2’, ... . We refer to the set of files as a superfile. Each superfile is identified by the name of its primary file or the index that it is given when it is opened. To allow the secondary files to reside on different devices, the user is required to supply an array of path names; the full name of a file is the concatenation of a path name with the file name.

To facilitate finite-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.