HP MLIB User's Guide Vol. 2 7th Ed.

Chapter 15 Sparse Eigenvalues and Eigenvectors 1005
What you need to know to use these subprograms
Unfortunately, there is no general and sparse algorithm for determining the
necessary scalars α and β for a general pair of matrices A and B. The
transformations used in this package require explicit knowledge of C, so this
package is restricted to cases where the user can explicitly transform the
problem to be in terms of C, or to the two standard cases where C is obvious;
that is, when B or A alone is a positive definite matrix.
The standard names associated with these cases in structural engineering are:
Vibration analysis—B is positive definite (A=K, the stiffness matrix; B=M,
the mass matrix)
Buckling analysis—A is positive definite and B is indefinite (A=K, the
stiffness matrix; B=K
δ
, the geometric or differential stiffness matrix)
In both cases, the package allows the matrix subject to the definiteness
condition to be a semi definite matrix. For example, the mass matrix in
vibration analysis is required only to have non negative masses, not positive
masses.
Allowing semi definiteness makes the package more generally useful, but also
allows the user to specify a problem that is not a well-posed generalized
symmetric eigenproblem. In most contexts, the user knows from scientific
considerations that this is or is not a problem. Well-posed vibration problems
with singular mass matrices are common. Normally, the package returns
warnings about inconsistent inertia counts in ill-posed cases. However,
supplying an indefinite matrix (for example, a mass matrix with negative
masses) usually results in a fatal message describing a failure in the
reorthogonalization modules or in inconsistent inertia counts.
Sparsity and storage formats
Sparse matrices are matrices in which most of the entries are zero. The goal of
sparse matrix software is to take maximum advantage of these zero entries to
reduce storage and arithmetic. Storage is reduced by not storing zero entries,
and arithmetic is reduced by not performing operations on entries that are
known to be zero.
It is easiest to see how to economize on storage. Suppose that an n-by-n matrix
A has only nz nonzero entries. Then A could be specified completely by storing
each of the nonzero values in an array of length nz that was accompanied by
two integer arrays of length nz holding the corresponding row and column
indices. Thus, 3nz storage suffices where n
2
storage is required for the
corresponding dense matrix format.