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