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