HP MLIB User's Guide Vol. 2 7th Ed.
Chapter 13 Sparse Linear Equations 883
What you need to know to use these subprograms
In the dense case, pivoting causes no difficulties. In the sparse case, pivoting
can interfere with the permutation chosen to reduce fill. This conflict is dealt
with in two ways in this sparse package. First, the effect of pivoting is localized
in its modification of the sparsity reordering. Second, a pivoting tolerance is
incorporated that allows the user to fine-tune the balance between sparsity and
guarantees of stability. This is effected through a parameter,
pvttol, to the
factorization subprogram.
pvttol is chosen in the range from 0 to 1. A choice of 0
gives a reordering based purely on sparsity. A choice of 1 gives the best
guarantee of stability.
Although a purely sparse reordering often works for indefinite matrices, you
should avoid using this option routinely for indefinite problems unless you have
already verified its effectiveness on your particular class of problems.
If pvttol = 0, a faster algorithm is used than when pvttol > 0. Therefore, you
should use pvttol = 0 if the matrix is known to be positive definite, or you know
it is safe not to pivot for your particular class of problems.
When A is unsymmetric, the LU factorization is computed without pivoting.
Therefore, it is the user’s responsibility to validate the solution.
It is recommend that you compute matrix condition numbers to assure that
sufficient accuracy can be obtained in the solution. Refer to the LAPACK Users’
Guide for more details.
Global communications array
All of the sparse solver subprograms use dynamic memory allocation
capabilities to free users from allocating storage for the factors of the matrix.
This array, called global in each of the calling sequences, is a fixed-length
double precision array of length 150. It must not be altered by the user because
it represents the essential knowledge of the problem. The address of global
may not change (i.e. users may not copy the global array and use the data from
the new array).
NOTE Global is always a double precision array, regardless of which data type
is in use.
Error convention
Each subprogram has an error return flag, ier, as one of its arguments. A zero
value returned in ier is the indication of successful processing. Fatal errors are
signaled through negative values. An option allows you to print error messages
in addition to returning an error flag. Refer to “Output controls” below.