SILS#
purpose#
The sils
package solves sparse symmetric systems of linear equations
using a multifrontal variant of Gaussian elimination.
Given a sparse symmetric matrix \(A = \{ a_{ij} \}_{n \times n}\), and an
\(n\)-vector \(b\), this function solves the system \(A x = b\).
The matrix \(A\) need not be definite. sils
is based upon a modern fortran
interface to the HSL Archive fortran 77 package MA27
.
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 sls
function.
See Section 4 of $GALAHAD/doc/sils.pdf for a brief description of the method employed and other details.
functions#
- sils.initialize()#
Set default option values and initialize private data
Returns:
- optionsdict
- dictionary containing default control options:
- ICNTLint
MA27
internal integer controls.- lpint
Unit for error messages.
- wpint
Unit for warning messages.
- mpint
Unit for monitor output.
- spint
Unit for statistical output.
- ldiagint
Controls level of diagnostic output.
- laint
Initial size for real array for the factors. If less than nrlnec, default size used.
- liwint
Initial size for integer array for the factors. If less than nirnec, default size used.
- maxlaint
Max. size for real array for the factors.
- maxliwint
Max. size for integer array for the factors.
- pivotingint
Controls pivoting. Possible values are
1
Numerical pivoting will be performed.
2
No pivoting will be performed and an error exit will occur immediately a pivot sign change is detected.
3
No pivoting will be performed and an error exit will occur if a zero pivot is detected.
4
No pivoting is performed but pivots are changed to all be.
- neminint
Minimum number of eliminations in a step (unused).
- factorblockingint
Level 3 blocking in factorize (unused).
- solveblockingint
Level 2 and 3 blocking in solve.
- threshint
Controls threshold for detecting full rows in analyse, registered as percentage of N, 100 Only fully dense rows detected (default).
- orderingint
Controls ordering: Possible values are
0
AMD using HSL’s MC47
1
User defined
2
AMD using HSL’s MC50
3
Minimum degreee as in HSL’s MA57
4
Metis_nodend ordering
5
Ordering chosen depending on matrix characteristics. At the moment choices are HSL’s MC50 or Metis_nodend
>5
Presently equivalent to 5 but may chnage.
- scalingint
Controls scaling: Possible values are
0
No scaling
>0
Scaling using HSL’s MC64 but may change for > 1.
- CNTLfloat
MA27 internal real controls.
- 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.
- static_tolerancefloat
used for setting static pivot level.
- static_levelfloat
used for switch to static.
- tolerancefloat
Anything less than this is considered zero.
- convergencefloat
used to monitor convergence in iterative refinement.
- [optional] sils.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.
- nstepsint
Number of elimination steps.
- nrltotint
Size for a without compression.
- nirtotint
Size for iw without compression.
- nrlnecint
Size for a with compression.
- nirnecint
Size for iw with compression.
- nrladuint
Number of reals to hold factors.
- niraduint
Number of integers to hold factors.
- ncmpaint
Number of compresses.
- oorint
Number of indices out-of-range.
- dupint
Number of duplicates.
- maxfrtint
Forecast maximum front size.
- statint
STAT value after allocate failure.
- faultyint
legacy component, now not used.
- opsafloat
Anticipated number of operations in assembly.
- opsefloat
Anticipated 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.
- maxfrtint
Largest front size.
- nebduint
Number of entries in factors.
- nrlbduint
Number of reals that hold factors.
- nirbduint
Number of integers that hold factors.
- nrltotint
Size for a without compression.
- nirtotint
Size for iw without compression.
- nrlnecint
Size for a with compression.
- nirnecint
Size for iw with compression.
- ncmpbrint
Number of compresses of real data.
- ncmpbiint
Number of compresses of integer data.
- ntwoint
Number of 2x2 pivots.
- neigint
Number of negative eigenvalues.
- delayint
Number of delayed pivots (total).
- signcint
Number of pivot sign changes when options[pivoting]=3.
- nstaticint
Number of static pivots chosen.
- modstepint
First pivot modification when options[pivoting]=4.
- rankint
Rank of original factorization.
- statint
STAT value after allocate failure.
- faultyint
legacy component, now not used.
- stepint
legacy component, now not used.
- opsafloat
# operations in assembly.
- opsefloat
number of operations in elimination.
- opsbfloat
Additional number of operations for BLAS.
- maxchangefloat
Largest options[pivoting]=4 modification.
- sminfloat
Minimum scaling factor.
- smaxfloat
Maximum scaling factor.
- sinfodict
- dictionary containing output information from the solve phase:
- flagint
Flags success or failure case.
- statint
STAT value after allocate failure.
- condfloat
Condition number of matrix (category 1 eqs).
- cond2float
Condition number of matrix (category 2 eqs).
- berrfloat
Backward error for the system (category 1 eqs).
- berr2float
Backward error for the system (category 2 eqs).
- errorfloat
Estimate of forward error.
- sils.finalize()#
Deallocate all internal private storage.