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.