HB_IO
Harwell Boeing Matrix File
Read and Write Utilities
HB_IO
is a FORTRAN90 library which
reads and writes files in the Harwell Boeing sparse matrix format.
A special feature of HB_IO is the routine HB_FILE_READ,
which can read all the information from an HBSMC file of arbitrary
size. The data can then be accessed by the user by "using"
the module HB_FILE_MODULE. Suggestions on how to compile,
store and access the module are sketched out in the sample problem
source code and in the command files.
Note that the most common "flavor" of HBSMC file is an assembled
sparse matrix, but that there are some lesser used options,
including storage of the matrix as unassembled finite element
matrices, and corresponding storage of vectors. These secondary
options are less well documented, and are only marginally supported
in this package.
Licensing:
The computer code and data files described and made available on this web page
are distributed under
the GNU LGPL license.
Languages:
HB_IO is available in
a C version and
a C++ version and
a FORTRAN90 version and
a MATLAB version.
Related Data and Programs:
CC_IO,
a FORTRAN90 library which
reads and writes sparse linear systems
stored in the Compressed Column (CC) format.
DLAP_IO,
a FORTRAN90 library which
reads and writes matrices in a variety of formats, and includes a
routine for reading matrices in HB format.
HB,
a dataset directory which
contains a collection of sparse matrices in the HB format.
HB_READ,
a FORTRAN90 library which
reads files
in the Harwell Boeing (HB) sparse matrix format;
This is a simplified interface intended to handle only the
most common format, complex unsymmetric assembled (CUA)
or real unsymmetric assembled (RUA).
HB_TO_MSM,
a MATLAB program which
reads an HB file and converts the matrix to MATLAB's sparse matrix format.
HB_TO_ST,
a FORTRAN90 program which
converts the sparse matrix information stored in a HarwellBoeing
file into a sparse triplet file.
HBSMC,
a dataset directory which
contains the Harwell Boeing Sparse Matrix Collection;
LINPLUS,
a FORTRAN90 library which
contains some routines to manipulate matrices stored in the HB sparse matrix
format.
MM_IO,
a FORTRAN90 library which
reads and writes matrices in the Matrix Market format.
MSM_TO_HB,
a MATLAB program which
takes a matrix in MATLAB's sparse
matrix format and writes it out in the HB format.
ST_IO,
a FORTRAN90 library which
reads and writes sparse linear systems
stored in the Sparse Triplet (ST) format.
SUPERLU,
FORTRAN90 programs which
illustrate how to use the SUPERLU library,
which applies a fast direct solution method to solve
sparse linear systems,
by James Demmel, John Gilbert, and Xiaoye Li.
Reference:

Iain Duff, Roger Grimes, John Lewis,
User's Guide for the HarwellBoeing Sparse Matrix Collection,
Technical Report TR/PA/92/86, CERFACS,
October 1992.

Iain Duff, Roger Grimes, John Lewis,
The RutherfordBoeing Sparse Matrix Collection,
Technical Report RALTR97031,
Rutherford Appleton Laboratory, 1997.

Iain Duff, Roger Grimes, John Lewis,
Sparse Matrix Test Problems,
ACM Transactions on Mathematical Software,
Volume 15, pages 114, March 1989.

http://math.nist.gov/MatrixMarket/data/HarwellBoeing/
the HarwellBoeing area of the MatrixMarket web site.
Source Code:
Examples and Tests:

hb_io_prb.f90,
a sample calling program.

hb_io_prb_output.txt,
the output from a run of the sample program.

rse_5.txt,
a sample HBSMC symmetric unassembled "element" matrix file.

rua_32.txt,
a sample HBSMC unsymmetric assembled sparse matrix file.

rua_32_file.txt,
a full version of "rua_32.txt" written by HB_FILE_WRITE.

rua_32_header.txt,
the header of "rua_32.txt" written by HB_HEADER_WRITE.

rua_32_rhs.txt,
the headers, structure, values and right hand side of
"rua_32.txt".

rua_32_structure.txt,
the headers and structure of "rua_32.txt".

rua_32_values.txt,
the headers, structure, and values of "rua_32.txt".

rua_32_ax.txt,
a sample HBSMC unsymmetric assembled sparse matrix file,
with exact solutions, and two right hand side vectors
computed from the exact solutions by calling HB_MATVEC_A_MEM.
List of Routines:

HB_FILE_MODULE is a module which can store data from an HB file.

GET_UNIT returns a free FORTRAN unit number.

HB_EXACT_READ reads the exact solution vectors in an HB file.

HB_EXACT_WRITE writes the exact solution vectors to an HB file.

HB_FILE_READ reads an HB file.

HB_FILE_WRITE writes an HB file.

HB_GUESS_READ reads the starting guess vectors in an HB file.

HB_GUESS_WRITE writes the starting guess vectors to an HB file.

HB_HEADER_PRINT prints the header of an HB file.

HB_HEADER_READ reads the header of an HB file.

HB_HEADER_WRITE writes the header of an HB file.

HB_MATVEC_A_MEM multiplies an assembled Harwell Boeing matrix times a vector.

HB_RHS_READ reads the right hand side information in an HB file.

HB_RHS_WRITE writes the right hand side information to an HB file.

HB_STRUCTURE_PRINT prints the structure of an HB matrix.

HB_STRUCTURE_READ reads the structure of an HB matrix.

HB_STRUCTURE_WRITE writes the structure of an HB matrix.

HB_UA_COLUMN_INDEX creates a column index for an unsymmetric assembled matrix.

HB_VALUES_PRINT prints the values of an HB matrix.

HB_VALUES_READ reads the values of an HB matrix.

HB_VALUES_WRITE writes the values of an HB matrix.

HB_VECMAT_A_MEM multiplies a vector times an assembled Harwell Boeing matrix.

I4VEC_PRINT prints an I4VEC.

I4VEC_PRINT_SOME prints "some" of an I4VEC.

R8MAT_PRINT prints an R8MAT.

R8MAT_PRINT_SOME prints some of an R8MAT.

R8VEC_PRINT prints an R8VEC.

R8VEC_PRINT_SOME prints "some" of an R8VEC.

TIMESTAMP prints the current YMDHMS date as a time stamp.
You can go up one level to
the FORTRAN90 source codes.
Last revised on 01 January 2011.