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
- LOCI(NUMEQ) = Integer array.
Row location vector. - LOCJ(JCOL1:JCOL2,2) = Integer array.
Column location vector. - LUFLAG(NUMEQ) = Integer array.
LU flag vector.
=1 for rows in the upper triangle,
=2 for rows in the lower triangle. - JCOL1 = Integer.
First column in the slab - JCOL2 = Integer.
Last column in the slab - NUMEQ = Integer.
Number of equations.
OUTPUT PARAMETERS
- A(0:1) = Real array (RNUSLB).
A(0:1) = Complex array (CNUSLB).
Matrix data array which is addressed by
A( LOCI(I) + LOCJ(J,LUFLAG(I)) ) = AIJ
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.
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.