1st March 2008

# ME62: Sparse Hermitian or complex symmetric finite-element system: out-of-core frontal method

To solve one or more sets of sparse Hermitian or complex symmetric linear unassembled finite-element equations, $$\mathbf{AX} = \mathbf{B}$$, by the frontal method, optionally holding the matrix factor out-of-core in direct-access files. Numerical pivoting is not performed so for Hermitian matrices it is primarily designed for the positive-definite case. Use is made of high-level BLAS kernels. The coefficient matrix $$\mathbf{A}$$ must of the form

$\mathbf{A} = \sum _{ k=1} ^ m \mathbf{A} ^{(k)} ,$

with $$\mathbf{A} ^{(k)}$$ nonzero only in those rows and columns that correspond to variables in the $$k$$-th element.

The frontal method is a variant of Gaussian elimination and involves the factorization $\mathbf{A} = \mathbf{PLD} {(\mathbf{PL})} ^ H \mathrm{(Hermitian \; case)},$ or $\mathbf{A} = \mathbf{PLD} {(\mathbf{PL})} ^ T \mathrm{(symmetric \; case),}$ where $$\mathbf{P}$$ is a permutation matrix, $$\mathbf{D}$$ is a diagonal matrix, and $$\mathbf{L}$$ is a unit lower triangular matrix. The solution process is completed by performing the forward elimination $(\mathbf{PL})\mathbf{DY}\normalfont = \mathbf{B},$ followed by the back substitution $(\mathbf{PL}) ^H \mathbf{X}\normalfont = \mathbf{Y}\mathrm{ (Hermitian\; case)}$ or $(\mathbf{PL}) ^T \mathbf{X}\normalfont = \mathbf{Y} \mathrm{(symmetric\; case).}$ ME62 stores the values of the entries in the factors and their indices separately. A principal feature of ME62 is that, by holding the factors out-of-core, large problems can be solved using a predetermined and relatively small amount of in-core memory. At an intermediate stage of the solution, $$l$$ say, the ‘front’ contains those variables associated with one or more of $$\mathbf{A} ^{(k)}$$, $$k = 1, 2,..., l$$, which are also present in one or more of $$\mathbf{A} ^ {(k)}$$, $$k = l+1,..., m$$. For efficiency, the user should order the $$\mathbf{A} ^{(k)}$$ so that the number of variables in the front (the ‘front size’) is small. For example, a very rectangular grid should be ordered pagewise parallel to the short side of the rectangle. The elements may be preordered using the HSL routine MC63.