GLS#
purpose#
The gls
package solves sparse unsymmetric systems of linear equations
using a variant of Gaussian elimination.
Given a sparse symmetric matrix \(A = \{ a_{ij} \}_{m \times n}\), and an
\(n\)-vector \(b\), this function solves the system \(A x = b\). If instead
\(b\) is an \(m\)-vector, the function may solve instead \(A^T x = b\).
gls
is based upon a modern fortran interface to the HSL Archive
fortran 77 package MA28
, which itself relies on MA33
.
To obtain HSL Archive packages, see
Currently only the options and info dictionaries are exposed; these are
provided and used by other GALAHAD packages with Python interfaces.
Extended functionality is available with the uls
function.
See Section 4 of $GALAHAD/doc/gls.pdf for a brief description of the method employed and other details.
functions#
- gls.initialize()#
Set default option values and initialize private data
Returns:
- optionsdict
- dictionary containing default control options:
- lpint
Unit for error messages.
- wpint
Unit for warning messages.
- mpint
Unit for monitor output.
- ldiagint
Controls level of diagnostic output.
- btfint
Minimum block size for block-triangular form (BTF). Set to \(n\) to avoid using BTF.
- maxitint
Maximum number of iterations.
- factor_blockingint
Level 3 blocking in factorize.
- solve_blasint
Switch for using Level 1 or 2 BLAS in solve.
- laint
Initial size for real array for the factors.
- la_intint
Initial size for integer array for the factors.
- maxlaint
Maximum size for real array for the factors.
- pivotingint
Controls pivoting: Number of columns searched. Zero for Markowitz.
- fill_inint
Initially fill_in * ne space allocated for factors.
- multiplierfloat
Factor by which arrays sizes are to be increased if they are too small.
- reducefloat
if previously allocated internal workspace arrays are greater than reduce times the currently required sizes, they are reset to current requirment.
- ufloat
Pivot threshold.
- switch_fullfloat
Density for switch to full code.
- dropfloat
Drop tolerance.
- tolerancefloat
anything < this is considered zero.
- cgcefloat
Ratio for required reduction using IR.
- diagonal_pivotingbool
Set to 0 for diagonal pivoting.
- struct_abortbool
abort if \(A\) is structurally singular.
- [optional] gls.information()
Provide optional output information
Returns:
- ainfodict
- dictionary containing output information from the analysis phase:
- flagint
Flags success or failure case.
- moreint
More information on failure.
- len_analyseint
Size for analysis.
- len_factorizeint
Size for factorize.
- ncmpaint
Number of compresses.
- rankint
Estimated rank.
- dropint
Number of entries dropped.
- struc_rankint
Structural rank of matrix.
- oorint
Number of indices out-of-range.
- dupint
Number of duplicates.
- statint
STAT value after allocate failure.
- lblockint
Size largest non-triangular block.
- sblockint
Sum of orders of non-triangular blocks.
- tblockint
Total entries in all non-tringular blocks.
- opsfloat
Number of operations in elimination.
- finfodict
- dictionary containing output information from the factorization phase:
- flagint
Flags success or failure case.
- moreint
More information on failure.
- size_factorint
Number of words to hold factors.
- len_factorizeint
Size for subsequent factorization.
- dropint
Number of entries dropped.
- rankint
Estimated rank.
- statint
Status value after allocate failure.
- opsfloat
Number of operations in elimination.
- sinfodict
- dictionary containing output information from the solve phase:
- flagint
Flags success or failure case.
- moreint
More information on failure.
- statint
Status value after allocate failure.
- gls.finalize()#
Deallocate all internal private storage.