next up previous
Next: ITPACK History Up: ITPACK 2C: A FORTRAN Previous: Numerical Results

   
Notes on Use

Before an iterative algorithm is called to solve a linear system, the values in the array A(*) are permuted and scaled. Afterwards, these values are unpermuted and unscaled. Consequently, the values in arrays A(*) and RHS(*) may change slightly due to roundoff errors in the computer arithmetic. Moreover, since entries in each row of the linear system may be stored in any order within a contiguous block of data, the locations of elements of A(*) and of corresponding ones in JA(*) may change from those given before the permuting and unpermuting was done. The same linear system is defined by the arrays A(*), JA(*), and IA(*) whether or not corresponding elements in A(*) and JA(*) have changed locations within contiguous blocks. Scaling of the linear system is done as follows to reduce the number of arithmetic operations. The diagonal entries of the linear system are checked for positivity and are moved to the first N locations of the array A(*). The nonzero off-diagonal entries of the linear system Au=b are scaled. The scaling involves the diagonal matrix $D^{\frac{1}{2}}$ of square roots of the diagonal entries of the linear system, that is,

\begin{displaymath}(D^{-\frac{1}{2}}AD^{-\frac{1}{2}})(D^{\frac{1}{2}}u) = (D^{-\frac{1}{2}}b). \end{displaymath}

The algorithms iterate until convergence is reached based on the relative accuracy requested via the stopping criterion set in RPARM(1) for the scaled solution vector $(D^{\frac{1}{2}}u)$. Unscaling solves for u and returns the linear system to its original form subject to roundoff errors in the arithmetic and to possible movement of entries within contiguous blocks of data. When requested, a red-black permutation of the data will be done before and after the iterative algorithm is called. Otherwise, the linear system is used in the order it is given which we call the ``natural ordering." The Successive Overrelaxation (SOR) method has been shown to be more effective with the red-black ordering than with the natural ordering for some problems [18]. In the SOR algorithm, the first iteration uses $\omega= 1$ and the stopping criterion is set to a large value so that at least one Gauss-Seidel iteration is performed before an approximate value for the optimum relaxation parameter is computed. Optional features of this package are red-black ordering, effective removal of rows and columns when the diagonal entry is extremely large, and error analysis. In the event that one is not using some of these options and needs additional memory space for a very large linear system, the relevant subroutines which can be replaced with dummy subroutines are as follows: red-black ordering [PRBNDX(), PERMAT(), PERVEC(), QSORT()], removal of rows [SBELM()], error analysis [PERROR()]. The timing routine TIMER() should call a routine which returns the run time in seconds. The value of the machine relative precision is contained in the variable SRELPR which is set in the subroutine DFAULT() and in the test program. This and other default values may be permanently changed when the code is installed by changing their values in the subroutine DFAULT(). SRELPR must be changed when moving the code to another computer. If the installer of this package does not know its value, an approximate value can be determined from a simple FORTRAN program given in the comment statements of subroutine DFAULT(). Since the amount of precision may change from computer to computer, the relative accuracy requested in the stopping criterion ZETA must not be less than about 500 times the machine relative precision SRELPR. If a value of ZETA is requested that is too small then the code resets it to this value. The current default value for ZETA, $5 \times 10^{-6}$, is set by the routine DFAULT() into RPARM(1). The distribution tape contains the ITPACK 2C software package of 71subprograms and a testing program MAIN() together with its 27subprograms. The routines DFAULT() and TIMER() in ITPACK and the program MAIN() are the only ones requiring editing by the installer of the package. ITPACK can be made into a compiled program library although not all of it would normally be used in a particular application.
next up previous
Next: ITPACK History Up: ITPACK 2C: A FORTRAN Previous: Numerical Results