nrek_control_type structure#

    struct nrek_control_type{T,INT}
      f_indexing::Bool
      error::INT
      out::INT
      print_level::INT
      eks_max::INT
      it_max::INT
      f::T
      increase::T
      stop_residual::T
      reorthogonalize::Bool
      s_version_52::Bool
      perturb_c::Bool
      stop_check_all_orders::Bool
      new_weight::Bool
      new_values::Bool
      space_critical::Bool
      deallocate_error_fatal::Bool
      linear_solver::NTuple{31,Cchar}
      linear_solver_for_s::NTuple{31,Cchar}
      prefix::NTuple{31,Cchar}
      sls_control::sls_control_type{T,INT}
      sls_s_control::sls_control_type{T,INT}
      rqs_control::ir_control_type{T,INT}

detailed documentation#

control derived type as a Julia structure

components#

Bool f_indexing

use C or Fortran sparse matrix indexing

INT error

unit for error messages

INT out

unit for monitor output

INT print_level

controls level of diagnostic output

INT eks_max

maximum dimension of the extended Krylov space employed. If a negative value is given, the value 100 will be used instead

INT it_max

the maximum number of iterations allowed. If a negative value is given, the value 100 will be used instead

T f

the value of \(f\) in the objective function. This value has no effect on the computed \(x\), and takes the value 0.0 by default

T increase

the value of the increase factor for a suggested subsequent regularization weight, see control[‘next_weight’]. The suggested weight will be increase times the current weight

T stop_residual

the value of the stopping tolerance used by the algorithm. The iteration stops as soon as \(x\) and \(\lambda\) are found to satisfy \(\| ( H + \lambda S ) x + c \| <\) stop_residual \(\times \max( 1, \|c\| )\)

Bool reorthogonalize

should be set to true if the generated basis of the extended-Krylov subspace is to be reorthogonalized at every iteration. This can be very expensive, and is generally not warranted

Bool s_version_52

should be set to true if Algorithm 5.2 in the paper is used to generate the extended Krylov space recurrences when a non-unit \(S\) is given, and false if those from Algorithm B.3 ares used instead. In practice, there is very little difference in performance and accuracy

Bool perturb_c

should be set to true if the user wishes to make a tiny pseudo-random perturbations to the components of the term \(c\) to try to protect from the so-called (probability zero) “hard” case. Perturbations are generally not needed, and should only be used in very exceptional cases

Bool stop_check_all_orders

should be set to true if the algorithm checks for termination for each new member of the extended Krylov space. Such checks incur some extra cost, and experience shows that testing every second member is sufficient

Bool new_weight

should be set to true if the call retains the previous \(H\), \(S\) and \(c\), but with a new, smaller weight

Bool new_values

should be set to true if the any of the values of \(H\), \(S\) and \(c\) has changed since a previous call

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 linear_solver[31]

the name of the linear equation solver used to solve any symmetric positive-definite linear system involving \(H\) that might arise. Possible choices are currently: ‘sils’, ‘ma27’, ‘ma57’, ‘ma77’, ‘ma86’, ‘ma87’, ‘ma97’, ssids, ‘pardiso’, ‘wsmp’, ‘sytr’, ‘potr’ and ‘pbtr’ although only ‘sytr’, ‘potr’, ‘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 linear_solver_for_s[31]

the name of the linear equation solver used to solve any symmetric positive-definite linear system involving the optional \(S\) that might arise. Possible choices are currently: ‘sils’, ‘ma27’, ‘ma57’, ‘ma77’, ‘ma86’, ‘ma87’, ‘ma97’, ssids, ‘pardiso’, ‘wsmp’, ‘sytr’, ‘potr’ and ‘pbtr’ although only ‘sytr’, ‘potr’, ‘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.

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 the Cholesky factorization and solution involving \(H\) (see sls_c documentation)

struct sls_control_type sls_s_control

control parameters for the Cholesky factorization and solution involving \(S\) (see sls_c documentation)

struct rqs_control_type rqs_control

control parameters for the solution of diagonal norm-regularization subproblems (see rqs_c documentation)