sha_control_type structure#

#include <galahad_sha.h>

struct sha_control_type {
    // fields

    bool f_indexing;
    ipc_ error;
    ipc_ out;
    ipc_ print_level;
    ipc_ approximation_algorithm;
    ipc_ dense_linear_solver;
    ipc_ extra_differences;
    ipc_ sparse_row;
    ipc_ recursion_max;
    ipc_ recursion_entries_required;
    bool average_off_diagonals;
    bool space_critical;
    bool deallocate_error_fatal;
    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

error and warning diagnostics occur on stream error

ipc_ out

general output occurs on stream out

ipc_ print_level

the level of output required. <= 0 gives no output, = 1 gives a one-line summary for every iteration, = 2 gives a summary of the inner iteration for each iteration, >= 3 gives increasingly verbose (debugging) output

ipc_ approximation_algorithm

which approximation algorithm should be used?

  • 1 : unsymmetric, parallel (Alg 2.1 in paper)

  • 2 : symmetric (Alg 2.2 in pape)

  • 3 : composite, parallel (Alg 2.3 in paper)

  • 4 : composite, block parallel (Alg 2.4 in paper)

ipc_ dense_linear_solver

which dense linear equation solver should be used?

  • 1 : Gaussian elimination

  • 2 : QR factorization

  • 3 : singular-value decomposition

  • 4 : singular-value decomposition with divide-and-conquer

ipc_ extra_differences

if available use an addition extra_differences differences

ipc_ sparse_row

a row is considered sparse if it has no more than .sparse_row entries

    ipc_ recursion_max

limit on the maximum number of levels of recursion (Alg. 2.4)

    ipc_ recursion_entries_required

the minimum number of entries in a reduced row that are required if a further level of recuresion is allowed (Alg. 2.4)

bool average_off_diagonals

select if pairs of off-diagonal Hessian estimates are to be averaged on return. Otherwise pick the value from the upper triangle

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 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’