### HSL_MA78 Sparse unsymmetric ﬁnite-element system: multifrontal out of
core

HSL_MA78 solves one or more sets of sparse unsymmetric equations
$AX=B$ or
${A}^{T}X=B$ using an out-of-core
multifrontal method. The $n\times n$
matrix $A$
must be in unassembled element form, that is,

$$A=\sum _{k=1}^{m}{A}^{\left(k\right)}$$

where the summation is over elements and
${A}^{\left(k\right)}$ is
nonzero only in those rows and columns that correspond to variables in the
$k$th element.
For each $k$,
the user must supply a list specifying which columns of
$A$ are associated
with ${A}^{\left(k\right)}$, and an
array containing ${A}^{\left(k\right)}$
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}^{\left(k\right)}$;
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 diﬀerent 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 ﬁ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 $A$
(MC57 can be used to do this) and then calling the HSL package HSL_MA68.