sls_control_type structure#

#include <galahad_sls.h>

struct sls_control_type {
    // fields

    bool f_indexing;
    ipc_ error;
    ipc_ warning;
    ipc_ out;
    ipc_ statistics;
    ipc_ print_level;
    ipc_ print_level_solver;
    ipc_ bits;
    ipc_ block_size_kernel;
    ipc_ block_size_elimination;
    ipc_ blas_block_size_factorize;
    ipc_ blas_block_size_solve;
    ipc_ node_amalgamation;
    ipc_ initial_pool_size;
    ipc_ min_real_factor_size;
    ipc_ min_integer_factor_size;
    int64_t max_real_factor_size;
    int64_t max_integer_factor_size;
    int64_t max_in_core_store;
    rpc_ array_increase_factor;
    rpc_ array_decrease_factor;
    ipc_ pivot_control;
    ipc_ ordering;
    ipc_ full_row_threshold;
    ipc_ row_search_indefinite;
    ipc_ scaling;
    ipc_ scale_maxit;
    rpc_ scale_thresh;
    rpc_ relative_pivot_tolerance;
    rpc_ minimum_pivot_tolerance;
    rpc_ absolute_pivot_tolerance;
    rpc_ zero_tolerance;
    rpc_ zero_pivot_tolerance;
    rpc_ negative_pivot_tolerance;
    rpc_ static_pivot_tolerance;
    rpc_ static_level_switch;
    rpc_ consistency_tolerance;
    ipc_ max_iterative_refinements;
    rpc_ acceptable_residual_relative;
    rpc_ acceptable_residual_absolute;
    bool multiple_rhs;
    bool generate_matrix_file;
    ipc_ matrix_file_device;
    char matrix_file_name[31];
    char out_of_core_directory[401];
    char out_of_core_integer_factor_file[401];
    char out_of_core_real_factor_file[401];
    char out_of_core_real_work_file[401];
    char out_of_core_indefinite_file[401];
    char out_of_core_restart_file[501];
    char prefix[31];
};

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_ warning

unit for warning messages

ipc_ out

unit for monitor output

ipc_ statistics

unit for statistical output

ipc_ print_level

controls level of diagnostic output

ipc_ print_level_solver

controls level of diagnostic output from external solver

ipc_ bits

number of bits used in architecture

ipc_ block_size_kernel

the target blocksize for kernel factorization

ipc_ block_size_elimination

the target blocksize for parallel elimination

ipc_ blas_block_size_factorize

level 3 blocking in factorize

ipc_ blas_block_size_solve

level 2 and 3 blocking in solve

ipc_ node_amalgamation

a child node is merged with its parent if they both involve fewer than node_amalgamation eliminations

ipc_ initial_pool_size

initial size of task-pool arrays for parallel elimination

ipc_ min_real_factor_size

initial size for real array for the factors and other data

ipc_ min_integer_factor_size

initial size for integer array for the factors and other data

int64_t max_real_factor_size

maximum size for real array for the factors and other data

int64_t max_integer_factor_size

maximum size for integer array for the factors and other data

int64_t max_in_core_store

amount of in-core storage to be used for out-of-core factorization

rpc_ array_increase_factor

factor by which arrays sizes are to be increased if they are too small

rpc_ array_decrease_factor

if previously allocated internal workspace arrays are greater than array_decrease_factor times the currently required sizes, they are reset to current requirements

ipc_ pivot_control

pivot control:

  • 1 Numerical pivoting will be performed.

  • 2 No pivoting will be performed and an error exit will occur immediately a pivot sign change is detected.

  • 3 No pivoting will be performed and an error exit will occur if a zero pivot is detected.

  • 4 No pivoting is performed but pivots are changed to all be positive

ipc_ ordering

controls ordering (ignored if explicit PERM argument present)

  • <0 chosen by the specified solver with its own ordering-selected value -ordering

  • 0 chosen package default (or the AMD ordering if no package default)

  • 1 Approximate minimum degree (AMD) with provisions for “dense” rows/col

  • 2 Minimum degree

  • 3 Nested disection

  • 4 indefinite ordering to generate a combination of 1x1 and 2x2 pivots

  • 5 Profile/Wavefront reduction

  • 6 Bandwidth reduction

  • >6 ordering chosen depending on matrix characteristics (not yet implemented)

ipc_ full_row_threshold

controls threshold for detecting full rows in analyse, registered as percentage of matrix order. If 100, only fully dense rows detected (defa

ipc_ row_search_indefinite

number of rows searched for pivot when using indefinite ordering

ipc_ scaling

controls scaling (ignored if explicit SCALE argument present)

  • <0 chosen by the specified solver with its own scaling-selected value -scaling

  • 0 No scaling

  • 1 Scaling using HSL’s MC64

  • 2 Scaling using HSL’s MC77 based on the row one-norm

  • 3 Scaling using HSL’s MC77 based on the row infinity-norm

ipc_ scale_maxit

the number of scaling iterations performed (default 10 used if .scale_maxit < 0)

rpc_ scale_thresh

the scaling iteration stops as soon as the row/column norms are less than 1+/-.scale_thresh

rpc_ relative_pivot_tolerance

pivot threshold

rpc_ minimum_pivot_tolerance

smallest permitted relative pivot threshold

rpc_ absolute_pivot_tolerance

any pivot small than this is considered zero

rpc_ zero_tolerance

any entry smaller than this is considered zero

rpc_ zero_pivot_tolerance

any pivot smaller than this is considered zero for positive-definite sol

rpc_ negative_pivot_tolerance

any pivot smaller than this is considered to be negative for p-d solvers

rpc_ static_pivot_tolerance

used for setting static pivot level

rpc_ static_level_switch

used for switch to static

rpc_ consistency_tolerance

used to determine whether a system is consistent when seeking a Fredholm alternative

ipc_ max_iterative_refinements

maximum number of iterative refinements allowed

rpc_ acceptable_residual_relative

refinement will cease as soon as the residual ||Ax-b|| falls below max( acceptable_residual_relative * ||b||, acceptable_residual_absolute

rpc_ acceptable_residual_absolute

see acceptable_residual_relative

bool multiple_rhs

set .multiple_rhs to .true. if there is possibility that the solver will be required to solve systems with more than one right-hand side. More efficient execution may be possible when .multiple_rhs = .false.

bool generate_matrix_file

if .generate_matrix_file is .true. if a file describing the current matrix is to be generated

ipc_ matrix_file_device

specifies the unit number to write the input matrix (in co-ordinate form

char matrix_file_name[31]

name of generated matrix file containing input problem

char out_of_core_directory[401]

directory name for out of core factorization and additional real workspace in the indefinite case, respectively

char out_of_core_integer_factor_file[401]

out of core superfile names for integer and real factor data, real works and additional real workspace in the indefinite case, respectively

char out_of_core_real_factor_file[401]

see out_of_core_integer_factor_file

char out_of_core_real_work_file[401]

see out_of_core_integer_factor_file

char out_of_core_indefinite_file[401]

see out_of_core_integer_factor_file

char out_of_core_restart_file[501]

see out_of_core_integer_factor_file

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’