Version 2.1.1
16th September 2024- User documentation
- Recent Changes
-
Code Download
- Single
- Double
HSL_MP48: Sparse unsymmetric system: parallel direct method
The module HSL_MP48
solves sets of \(n \times n\) unsymmetric linear systems of equations \(\mathbf{Ax} = \mathbf{b}\), in parallel using Gaussian elimination. The matrix \(\mathbf{A}\) must have been preordered to singly-bordered block-diagonal form
\[\left ( \begin{array}{cccccc} \mathbf{A} _{11} &&&&& \mathbf{C} _1 \\ & \mathbf{A} _{22} &&&& \mathbf{C} _2 \\ && \ldots &&& \ldots \\ &&& \ldots && \ldots \\ &&&&\mathbf{A} _{NN} & \mathbf{C} _N \end{array} \right ) .\] MPI is used for message passing.
A partial \(\mathbf{LU}\) decomposition is performed on each of the submatrices \((\mathbf{A} _{ll} \mathbf{C} _L)\) separately. Once all possible eliminations have been performed, for each submatrix there remains a Schur complement matrix \(\mathbf{F} _l\). The variables that remain are called interface variables and the interface matrix \(\mathbf{F}\) is formed by summing the matrices \(\mathbf{F} _l\). Gaussian elimination is used to factorize \(\mathbf{F}\), using the HSL sparse direct solver MA48
. Block forward elimination and back substitution completes the solution.
The user’s matrix data may optionally be held in unformatted sequential files. In addition, \(\mathbf{L}\) and \(\mathbf{U}\) factors for the submatrices may optionally be written to sequential files. This reduces main memory requirements when the number \(N\) of submatrices is greater than the number of processes used.
The HSL package HSL_MC66
may be used for preordering the matrix to singly-bordered block-diagonal form.