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
of
square roots of the diagonal entries of the linear system, that is,
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
. 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
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,
, 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: ITPACK History
Up: ITPACK 2C: A FORTRAN
Previous: Numerical Results