PURPOSE

To provide a user interface for defining or modifying matrix data for SLAB format matrices.
This is a subroutine you provide.

SYNOPSIS

SUBROUTINE RNUSLB (A, LOCI, LOCJ, LUFLAG, JCOL1, JCOL2, NUMEQ)
SUBROUTINE CNUSLB (A, LOCI, LOCJ, LUFLAG, JCOL1, JCOL2, NUMEQ)

INPUT PARAMETERS

OUTPUT PARAMETERS

FMS PARAMETERS

The following FMS Parameters are especially important to this routine:
Parameter Description
MDATAU Call this subroutine to define or modify matrix data
MFMAT Matrix format (PROFILE, BLOCK, SLAB)

DESCRIPTION:

These subroutines, which are written by you, provide an interface to the FMS global matrix file when the data is stored in SLAB format. The RNUSLB subroutine is used for real data and CNUSLB for complex data.

To use this feature, FMS must be directed to call your subroutines. The MDATAU parameter provides this function. The default value of 0 results in skipping all calls to these subroutines.

When MDATAU is 1, FMS calls these subroutines during the assembly process. When MDATAU is 2, FMS calls these subroutines during the factoring process. If MDATAU is 1 or 2, these subroutines are called during the assembly-factor process.

If the entire matrix does not fit in memory, these subroutines are called several times. Each call defines a slab of the matrix, bound by rows 1 through NUMEQ and columns JCOL1 through JCOL2 as shown in the figure below.

xxUBLK Image

The location vectors {LOCI}, {LOCJ} and {LUFLAG} are used to address matrix data in the array A as follows:

A(I,J) = A(LOCI(I) + LOCJ(J,LUFLAG(I)) 

The row I ranges from 1 through NUMEQ and the column J ranges from JCOL1 through JCOL2.

FMS is distributed with user-supplied subroutines for populating test matrices with integer and random numbers. If your program supplies its own subroutines, they must be explicitly named on the link command to avoid using the subroutines supplied in the library.