sbls_control_type structure#

#include <galahad_sbls.h>

struct sbls_control_type {
    // fields

    bool f_indexing;
    ipc_ error;
    ipc_ out;
    ipc_ print_level;
    ipc_ indmin;
    ipc_ valmin;
    ipc_ len_ulsmin;
    ipc_ itref_max;
    ipc_ maxit_pcg;
    ipc_ new_a;
    ipc_ new_h;
    ipc_ new_c;
    ipc_ preconditioner;
    ipc_ semi_bandwidth;
    ipc_ factorization;
    ipc_ max_col;
    ipc_ scaling;
    ipc_ ordering;
    rpc_ pivot_tol;
    rpc_ pivot_tol_for_basis;
    rpc_ zero_pivot;
    rpc_ static_tolerance;
    rpc_ static_level;
    rpc_ min_diagonal;
    rpc_ stop_absolute;
    rpc_ stop_relative;
    bool 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;
    char symmetric_linear_solver[31];
    char definite_linear_solver[31];
    char unsymmetric_linear_solver[31];
    char prefix[31];
    struct sls_control_type sls_control;
    struct uls_control_type uls_control;
};

detailed documentation#

control derived type as a C struct

components#

bool f_indexing

use C or Fortran sparse matrix indexing

ipc_ error

unit for error messages

ipc_ out

unit for monitor output

ipc_ print_level

controls level of diagnostic output

ipc_ indmin

initial estimate of integer workspace for SLS (obsolete)

ipc_ valmin

initial estimate of real workspace for SLS (obsolete)

ipc_ len_ulsmin

initial estimate of workspace for ULS (obsolete)

ipc_ itref_max

maximum number of iterative refinements with preconditioner allowed

ipc_ maxit_pcg

maximum number of projected CG iterations allowed

ipc_ new_a

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

ipc_ new_h

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

ipc_ new_c

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

ipc_ 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}\)

ipc_ semi_bandwidth

the semi-bandwidth for band(H)

ipc_ factorization

the explicit factorization used:

  • 0 selected automatically

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

  • 2 augmented system

  • 3 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

ipc_ max_col

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

ipc_ scaling

not used at present

ipc_ ordering

see scaling

rpc_ pivot_tol

the relative pivot tolerance used by ULS (obsolete)

rpc_ pivot_tol_for_basis

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

rpc_ zero_pivot

the absolute pivot tolerance used by ULS (obsolete)

rpc_ static_tolerance

not used at present

rpc_ static_level

see static_tolerance

rpc_ min_diagonal

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

rpc_ stop_absolute

the required absolute and relative accuracies

rpc_ 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 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]

the name of the symmetric-indefinite linear equation solver used. Possible choices are currently: ‘sils’, ‘ma27’, ‘ma57’, ‘ma77’, ‘ma86’, ‘ma97’, ‘ssids’, ‘mumps’, ‘pardiso’, ‘mkl_pardiso’, ‘pastix’, ‘wsmp’, and ‘sytr’, although only ‘sytr’ and, for OMP 4.0-compliant compilers, ‘ssids’ are installed by default; others are easily installed (see README.external). More details of the capabilities of each solver are provided in the documentation for galahad_sls.

char definite_linear_solver[31]

the name of the definite linear equation solver used. Possible choices are currently: ‘sils’, ‘ma27’, ‘ma57’, ‘ma77’, ‘ma86’, ‘ma87’, ‘ma97’, ‘ssids’, ‘mumps’, ‘pardiso’, ‘mkl_pardiso’, ‘pastix’, ‘wsmp’, ‘potr’, ‘sytr’ and ‘pbtr’, although only ‘potr’, ‘sytr’, ‘pbtr’ and, for OMP 4.0-compliant compilers, ‘ssids’ are installed by default; others are easily installed (see README.external). More details of the capabilities of each solver are provided in the documentation for galahad_sls.

char unsymmetric_linear_solver[31]

the name of the unsymmetric linear equation solver used. Possible choices are currently: ‘gls’, ‘ma48’ and ‘getr’, although only ‘getr’ is installed by default; others are easily installed (see README.external). More details of the capabilities of each solver are provided in the documentation for galahad_uls.

char prefix[31]

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