PURPOSE

To open a Matrix File for storing a matrix [A].

SYNOPSIS

CALL RSDI (LOWEQ, NUMEQ, NAME, LUA)
CALL RNDI (LOWEQ, NUMEQ, NAME, LUA)
CALL CHDI (LOWEQ, NUMEQ, NAME, LUA)
CALL CSDI (LOWEQ, NUMEQ, NAME, LUA)
CALL CNDI (LOWEQ, NUMEQ, NAME, LUA)

INPUT PARAMETERS

OUTPUT PARAMETERS

FMS PARAMETERS:

The following FMS Parameters are especially important to this routine:
Parameter Description
IPRI Initialization print code
MFMAT Matrix format type (PROFILE, BLOCK, SLAB)
LENSDF I/O record size (PROFILE format)
NEQBIO I/O block size (BLOCK & SLAB format)
NEQBLK Compute block size
NEQBLO Minimum compute block size
NEQBHI Maximum compute block size
IJSTEP Stride toward diagonal
INSIDE Blocking pattern (PROFILE format)
INCORE File location (disk or memory)
IEXIST Use existing file
NOOPEN Do not physically open the file
LSECTR Disk sector length (8-byte words)
IEXIST Use existing file

DESCRIPTION:

This subroutine opens files LUA(1), LUA(2), LUA(3), and LUA(4) for storing the lower triangle, diagonal, upper triangle, and Segment Table for matrix [A]. The file names are generated by appending 'L', 'D', 'U', and 'T' to the actual parameter NAME. No matrix data is written to files LUA(1), LUA(2) or LUA(3) at this time.

Depending on the FMS parameter IEXIST, FMS will use an existing file or create a new one. When using existing files, you must supply the file attribute list LUA(25) that was used when the file was created.

For new files, the attribute list LUA(25) is computed by FMS. This list contains all information necessary for performing data transfers to any of the four matrix files. The attribute list is supplied by you to the remaining FMS subroutines as an actual parameter to define the matrix files.

Memory resident matrix files can be created by setting the INCORE parameter prior to calling this subroutine.

The Segment Table on file LUA(4) contains all the pointers and addresses used by FMS for processing the profile matrix. This information is not altered by FMS subroutines. Therefore, unless the matrix profile contained in the vector {LOWEQ} is changed, this initialization subroutine should be called only once.

FMS determines the record size for files LUA(1) and LUA(3) based on the available memory, cpu and gpu hardware and matrix profile. If you require a specific size, use the LENSDF parameter for PROFILE matrices or the NEQBIO parameter for BLOCK and SLAB matrices. FMS may alter your specified value to satisfy other constraints.

The profile vector LOWEQ(NUMEQ) must be computed in your program prior to calling this subroutine. If the matrix is being assembled from submatrices, subroutine FMSPF or FMSWF may be used to compute LOWEQ(NUMEQ) automatically.

EXAMPLE

The following example illustrates how the profile vector could be computed for a matrix with constant bandwidth IBAND.
       SUBROUTINE PBAND (IBAND, LOWEQ, NUMEQ)
C      Profile vector for a constant band matrix:
       INTEGER IBAND, NUMEQ, LOWEQ(NUMEQ)
       DO I  =  1,NUMEQ
          LOWEQ(I)  =  MAX0(1,I-BAND+1)
       END DO
       RETURN
       END