next up previous
Next: Parameter Arrays Up: ITPACKV 2D User's Guide Previous: Sparse Matrix Storage

   
Usage

The user is expected to provide the coefficient matrix, the right hand side, an initial guess to the solution, and various integer and real workspace arrays. The calling sequence is


CALL $\langle$ method $\rangle$ (N, NDIM, MAXNZ, JCOEF, COEF, RHS, U, IWKSP, NW,
WKSP, IPARM, RPARM, IER)


where $\langle$ method $\rangle$ is one of


JCG Jacobi Conjugate Gradient
JSI Jacobi Semi-Iteration
SOR Successive Overrelaxation
SSORCG Symmetric SOR Conjugate Gradient
SSORSI Symmetric SOR Semi-Iteration
RSCG Reduced System Conjugate Gradient
RSSI Reduced System Semi-Iteration


and where the remaining parameters are defined in the following. Here ``input" means that the subroutine expects the user to provide the necessary input data and ``output" means that the routine passes back information in the variable or array indicated. All parameters are arrays except variables N, NDIM, MAXNZ, NW, and IER. Moreover, all parameters may be altered by the subroutine call except variables N, NDIM, and NW. (See Section 9 for additional details.)


N
is the order of the linear system. [integer; input]
NDIM
is the row dimension of the arrays COEF(*,*) and JCOEF(*,*) in the routine first defining them. Note that ${\bf NDIM} \geq {\bf N}$. [integer; input]
MAXNZ
is the maximum number of nonzero elements per row over all rows in the matrix A. [integer; input]
JCOEF(*,*)
is a rectangular array of dimension NDIM by MAXNZ containing the column numbers of the matrix coefficients given in the corresponding locations in COEF(*,*). [integer array; input]

COEF(*,*)
is a rectangular array of dimension NDIM by MAXNZ containing the nonzero matrix coefficients. [real array; input]
RHS(*)
is a vector of length N containing the right-hand side of the linear system. [real array; input]

U(*)
is a vector of length N containing the initial guess to the solution of the linear system on input and the latest approximate solution on output. Note that U(*) may be filled with zeros if no initial guess is known by making a call to VFILL() prior to calling an ITPACKV solution module. See Section 8 for details. [real array; input/output]
IWKSP(*)
is a vector of length ${\bf 3*N}$ used for integer workspace. When reindexing for red-black ordering, the first N locations contain on output the permutation vector for the red-black indexing, the next N locations contain its inverse, and the last N are used for integer workspace.3 [integer array; output]

NW
is a scalar. On input, NW is the available length for WKSP(*). On output, IPARM(8) is the actual amount used (or needed). [integer; input]

WKSP(*)
is a vector used for real working space whose length depends on the iterative method being used. It must be at least NW entries long. (See Section 6 for the required amount of workspace for each method.) [real array]

IPARM(*)
is a vector of length 12 used to initialize various integer and logical parameters. Default values may be set by calling subroutine DFAULT() described in Section 5. On output, IPARM(*) contains the values of the parameters that were changed. (Further details are given later in Section 5.) [integer array; input/output]

RPARM(*)
is a vector of length 12 used to initialize various real parameters on input. Default values may be set by calling subroutine DFAULT() described in Section 5. On output, RPARM(*) contains the final values of the parameters that were changed. (Further details are given later in Section 5.) [real array; input/output]

IER
is the error flag which is set to zero for normal convergence and to a nonzero integer when an error condition is present. (See Section 7 for the meaning of nonzero values.) [integer; output]



next up previous
Next: Parameter Arrays Up: ITPACKV 2D User's Guide Previous: Sparse Matrix Storage