Version 3.5.0

3rd January 2012

Recent Changes

Code Download

  • Single
  • Double

HSL_MA78 Sparse unsymmetric finite-element system: multifrontal out of core

HSL_MA78 solves one or more sets of sparse unsymmetric equations AX = B or ATX = B using an out-of-core multifrontal method. The n × n matrix A must be in unassembled element form, that is,

A = k=1mA(k)

where the summation is over elements and A(k) is nonzero only in those rows and columns that correspond to variables in the kth element. 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. It is permissible for some of the rows and corresponding columns to be empty, that is, to appear in none of the matrices A(k); such rows and columns are ignored in determining whether the matrix is singular.

The multifrontal method is a variant of sparse Gaussian elimination. It involves the factorization

A = PLDUQ

where P and Q are a permutation matrices, L and U are unit lower and upper triangular matrices, respectively, and D is a diagonal matrix. The factorization is performed by the subroutine MA78_factor and is controlled by an elimination tree that is constructed by the subroutine MA78_analyse, which needs the lists of variables in elements and an elimination sequence. Once a matrix has been factorized, any number of calls to the subroutine MA78_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_MA78 is dependent on the elimination order that the user supplies. A suitable ordering may be obtained by first assembling the sparsity pattern of the matrix A (MC57 can be used to do this) and then calling the HSL package HSL_MA68.