HSL_MA78 solves one or more sets of sparse unsymmetric equations or using an out-of-core multifrontal method. The matrix must be in unassembled element form, that is,
where the summation is over elements and is nonzero only in those rows and columns that correspond to variables in the th element. For each , the user must supply a list specifying which columns of are associated with , and an array containing 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 ; 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
where and are a permutation matrices, and are unit lower and upper triangular matrices, respectively, and 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 diﬀerent right-hand sides . An option exists for computing the residuals. For large problems, the matrix data and the computed factors are held in direct-access ﬁles.
The eﬃciency of HSL_MA78 is dependent on the elimination order that the user supplies. A suitable ordering may be obtained by ﬁrst assembling the sparsity pattern of the matrix (MC57 can be used to do this) and then calling the HSL package HSL_MA68.