sbls_control_type structure#

    struct sbls_control_type{T}
      f_indexing::Bool
      error::Int32
      out::Int32
      print_level::Int32
      indmin::Int32
      valmin::Int32
      len_ulsmin::Int32
      itref_max::Int32
      maxit_pcg::Int32
      new_a::Int32
      new_h::Int32
      new_c::Int32
      preconditioner::Int32
      semi_bandwidth::Int32
      factorization::Int32
      max_col::Int32
      scaling::Int32
      ordering::Int32
      pivot_tol::T
      pivot_tol_for_basis::T
      zero_pivot::T
      static_tolerance::T
      static_level::T
      min_diagonal::T
      stop_absolute::T
      stop_relative::T
      remove_dependencies::Bool
      find_basis_by_transpose::Bool
      affine::Bool
      allow_singular::Bool
      perturb_to_make_definite::Bool
      get_norm_residual::Bool
      check_basis::Bool
      space_critical::Bool
      deallocate_error_fatal::Bool
      symmetric_linear_solver::NTuple{31,Cchar}
      definite_linear_solver::NTuple{31,Cchar}
      unsymmetric_linear_solver::NTuple{31,Cchar}
      prefix::NTuple{31,Cchar}
      sls_control::sls_control_type{T}
      uls_control::uls_control_type{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 indmin

initial estimate of integer workspace for SLS (obsolete)

Int32 valmin

initial estimate of real workspace for SLS (obsolete)

Int32 len_ulsmin

initial estimate of workspace for ULS (obsolete)

Int32 itref_max

maximum number of iterative refinements with preconditioner allowed

Int32 maxit_pcg

maximum number of projected CG iterations allowed

Int32 new_a

how much has \(A\) changed since last factorization: 0 = not changed, 1 = values changed, 2 = structure changed

Int32 new_h

how much has \(H\) changed since last factorization: 0 = not changed, 1 = values changed, 2 = structure changed

Int32 new_c

how much has \(C\) changed since last factorization: 0 = not changed, 1 = values changed, 2 = structure changed

Int32 preconditioner

which preconditioner to use:

  • 0 selected automatically

  • 1 explicit with \(G = I\)

  • 2 explicit with \(G = H\)

  • 3 explicit with \(G =\) diag(max(\(H\),min_diag))

  • 4 explicit with \(G =\) band \((H)\)

  • 5 explicit with \(G =\) (optional, diagonal) \(D\)

  • 11 explicit with \(G_{11} = 0\), \(G_{21} = 0\), \(G_{22} = H_{22}\)

  • 12 explicit with \(G_{11} = 0\), \(G_{21} = H_{21}\), \(G_{22} = H_{22}\)

  • -1 implicit with \(G_{11} = 0\), \(G_{21} = 0\), \(G_{22} = I\)

  • -2 implicit with \(G_{11} = 0\), \(G_{21} = 0\), \(G_{22} = H_{22}\)

Int32 semi_bandwidth

the semi-bandwidth for band(H)

Int32 factorization

the explicit factorization used:

  • 0 selected automatically

  • 1 Schur-complement if \(G\) is diagonal and successful otherwise augmented system

  • 2 augmented system

  • 3 C_NULL-space

  • 4 Schur-complement if \(G\) is diagonal and successful otherwise failure

  • 5 Schur-complement with pivoting if \(G\) is diagonal and successful otherwise failure

Int32 max_col

maximum number of nonzeros in a column of \(A\) for Schur-complement factorization

Int32 scaling

not used at present

Int32 ordering

see scaling

T pivot_tol

the relative pivot tolerance used by ULS (obsolete)

T pivot_tol_for_basis

the relative pivot tolerance used by ULS when determining the basis matrix

T zero_pivot

the absolute pivot tolerance used by ULS (obsolete)

T static_tolerance

not used at present

T static_level

see static_tolerance

T min_diagonal

the minimum permitted diagonal in diag(max(\(H\),min_diag))

T stop_absolute

the required absolute and relative accuracies

T stop_relative

see stop_absolute

Bool remove_dependencies

preprocess equality constraints to remove linear dependencies

Bool find_basis_by_transpose

determine implicit factorization preconditioners using a basis of A found by examining A’s transpose

Bool affine

can the right-hand side \(c\) be assumed to be zero?

Bool allow_singular

do we tolerate “singular” preconditioners?

Bool perturb_to_make_definite

if the initial attempt at finding a preconditioner is unsuccessful, should the diagonal be perturbed so that a second attempt succeeds?

Bool get_norm_residual

compute the residual when applying the preconditioner?

Bool check_basis

if an implicit or C_NULL-space preconditioner is used, assess and correct for ill conditioned basis matrices

Bool space_critical

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

Bool deallocate_error_fatal

exit if any deallocation fails

char symmetric_linear_solver[31]

indefinite linear equation solver

char definite_linear_solver[31]

definite linear equation solver

char unsymmetric_linear_solver[31]

unsymmetric linear equation solver

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 uls_control_type uls_control

control parameters for ULS