Version 6.2.0

18th March 2021

Recent Changes

Code Download

  • Single
  • Double

HSL_MA77 Sparse symmetric system: multifrontal out of core

HSL_MA77 solves one or more sets of sparse symmetric equations AX = B using an out-of-core multifrontal method. The symmetric matrix A may be either positive definite or indefinite. It may be input by the user in either of the following ways:

(i) by square symmetric elements, such as in a finite-element calculation, or
(ii) by rows.

In both cases, the coefficient matrix is of order n and is of the form

A = k=1mA(k).

In (i), the summation is over elements and A(k) is nonzero only in those rows and columns that correspond to variables in the kth element. In (ii), the summation is over rows and A(k) is nonzero only in row k. In both cases, for each k, the user must supply a list specifying which columns of A are associated with A(k), and an array containing A(k) in packed form.

The multifrontal method is a variant of sparse Gaussian elimination. In the positive-definite case, it involves the Cholesky factorization

A = (PL)(PL)T

where P is a permutation matrix and L is lower triangular. In the indefinite case, it involves the factorization

A = (PL)D(PL)T

where P is a permutation matrix, L is unit lower triangular, and D is block diagonal with blocks of size 1 × 1 and 2 × 2. The factorization is performed by the subroutine MA77_factor and is controlled by an elimination tree that is constructed by the subroutine MA77_analyse, which needs the lists of variables in elements or rows and an elimination sequence. Once a matrix has been factorized, any number of calls to the subroutine MA77_solve may be made for different right-hand sides B. An option exists for computing the residuals. For large problems, the matrix data and the computed factors are held in direct-access files.

The efficiency of HSL_MA77 is dependent on the elimination order that the user supplies. The HSL routine HSL_MC68 may be used to obtain a suitable ordering.