psls_control_type structure#

    struct psls_control_type{T}
      f_indexing::Bool
      error::Int32
      out::Int32
      print_level::Int32
      preconditioner::Int32
      semi_bandwidth::Int32
      scaling::Int32
      ordering::Int32
      max_col::Int32
      icfs_vectors::Int32
      mi28_lsize::Int32
      mi28_rsize::Int32
      min_diagonal::T
      new_structure::Bool
      get_semi_bandwidth::Bool
      get_norm_residual::Bool
      space_critical::Bool
      deallocate_error_fatal::Bool
      definite_linear_solver::NTuple{31,Cchar}
      prefix::NTuple{31,Cchar}
      sls_control::sls_control_type{T}
      mi28_control::mi28_control{T}

detailed documentation#

control derived type as a Julia structure

components#

Bool f_indexing

use C or Fortran sparse matrix indexing

Int32 error

unit for error messages

Int32 out

unit for monitor output

Int32 print_level

controls level of diagnostic output

Int32 preconditioner

which preconditioner to use:

  • <0 no preconditioning occurs, \(P = I\)

  • 0 the preconditioner is chosen automatically (forthcoming, and currently defaults to 1).

  • 1 \(A\) is replaced by the diagonal, \(P\) = diag( max(\(A\), .min_diagonal ) ).

  • 2 \(A\) is replaced by the band \(P\) = band(\(A\)) with semi-bandwidth .semi_bandwidth.

  • 3 \(A\) is replaced by the reordered band \(P\) = band( order(\(A\)) ) with semi-bandwidth .semi_bandwidth, where order is chosen by the HSL package MC61 to move entries closer to the diagonal.

  • 4 \(P\) is a full factorization of \(A\) using Schnabel-Eskow modifications, in which small or negative diagonals are made sensibly positive during the factorization.

  • 5 \(P\) is a full factorization of \(A\) due to Gill, Murray, Ponceleon and Saunders, in which an indefinite factorization is altered to give a positive definite one.

  • 6 \(P\) is an incomplete Cholesky factorization of \(A\) using the package ICFS due to Lin and More’.

  • 7 \(P\) is an incomplete factorization of \(A\) implemented as HSL_MI28 from HSL.

  • 8 \(P\) is an incomplete factorization of \(A\) due to Munskgaard (forthcoming).

  • >8 treated as 0.

N.B. Options 3-8 may require additional external software that is not part of the package, and that must be obtained separately.

Int32 semi_bandwidth

the semi-bandwidth for band(H) when .preconditioner = 2,3

Int32 scaling

not used at present

Int32 ordering

see scaling

Int32 max_col

maximum number of nonzeros in a column of \(A\) for Schur-complement factorization to accommodate newly deleted rpws and columns

Int32 icfs_vectors

number of extra vectors of length n required by the Lin-More’ incomplete Cholesky preconditioner when .preconditioner = 6

Int32 mi28_lsize

the maximum number of fill entries within each column of the incomplete factor L computed by HSL_MI28 when .preconditioner = 7. In general, increasing mi28_lsize improve the quality of the preconditioner but increases the time to compute and then apply the preconditioner. Values less than 0 are treated as 0

Int32 mi28_rsize

the maximum number of entries within each column of the strictly lower triangular matrix \(R\) used in the computation of the preconditioner by HSL_MI28 when .preconditioner = 7. Rank-1 arrays of size .mi28_rsize \* n are allocated internally to hold \(R\). Thus the amount of memory used, as well as the amount of work involved in computing the preconditioner, depends on mi28_rsize. Setting mi28_rsize > 0 generally leads to a higher quality preconditioner than using mi28_rsize = 0, and choosing mi28_rsize >= mi28_lsize is generally recommended

T min_diagonal

the minimum permitted diagonal in diag(max(H,.min_diagonal))

Bool new_structure

set new_structure true if the storage structure for the input matrix has changed, and false if only the values have changed

Bool get_semi_bandwidth

set get_semi_bandwidth true if the semi-bandwidth of the submatrix is to be calculated

Bool get_norm_residual

set get_norm_residual true if the residual when applying the preconditioner are to be calculated

Bool space_critical

if space is critical, ensure allocated arrays are no bigger than needed

Bool deallocate_error_fatal

exit if any deallocation fails

NTuple{31,Cchar} definite_linear_solver

the definite linear equation solver package used when .preconditioner = 3,4. Possible choices are currently: sils, ma27, ma57, ma77, ma86, ma87, ma97, ssids, mumps, pardiso, mkl_pardiso,pastix, wsmp, potr and pbtr, although only sils, potr, pbtr and, for OMP 4.0-compliant compilers, ssids are installed by default.

NTuple{31,Cchar} prefix

all output lines will be prefixed by prefix(2:LEN(TRIM(.prefix))-1) where prefix contains the required string enclosed in quotes, e.g. “string” or ‘string’

struct sls_control_type sls_control

control parameters for SLS

struct mi28_control mi28_control

control parameters for HSL_MI28