# smi keywords

ScaLAPACK parameters

## smi.abstol

The absolute error tolerance for the eigenvalues. An approximate
eigenvalue is accepted as converged when it is determined to lie in an
interval \[a,b\] of width less than or equal to ABSTOL + EPS \*
max(\|a\|,\|b\|), where EPS is the machine precision. If ABSTOL is less
than or equal to zero, then EPS\*norm(T) will be used in its place,
where norm(T) is the 1-norm of the tridiagonal matrix obtained by
reducing A to tridiagonal form.

**type**: `scalar`

**example**: `smi.abstol = 1e-8`

## smi.lwork

Size of the WORK array. When LWORK is too small: If LWORK is too small
to guarantee orthogonality, PDSYGVX attempts to maintain orthogonality
in the clusters with the smallest spacing between the eigenvalues. If
LWORK is too small to compute all the eigenvectors requested, no
computation is performed and INFO=-23 is returned. Note that when
RANGE=\'V\', PDSYGVX does not know how many eigenvectors are requested
until the eigenvalues are computed. Therefore, when RANGE=\'V\' and as
long as LWORK is large enough to allow PDSYGVX to compute the
eigenvalues, PDSYGVX will compute the eigenvalues and as many
eigenvectors as it can. If LWORK = -1, then LWORK is global input and a
workspace query is assumed; the routine only calculates the size
required for optimal performance on all work arrays. Each of these
values is returned in the first entry of the corresponding work array,
and no error message is issued by PXERBLA.

**type**: `scalar`

**example**: `smi.lwork = 1e8`

## smi.mb

Number of rows in the blocks (see
<http://netlib.org/scalapack/slug/node75.html>).

**type**: `scalar`

**default**: `64`

**example**: `smi.mb = 128`

## smi.mp

Number of rows in the process grid (see
<http://netlib.org/scalapack/slug/node75.html>).

**type**: `scalar`

**default**: `automatically generated from the number of processes`

**example**: `smi.mp = 4`

## smi.nb

Number of columns in the blocks (see
<http://netlib.org/scalapack/slug/node75.html>).

**type**: `scalar`

**default**: `64`

**example**: `smi.nb = 192`

## smi.np

Number of columns in the process grid (see
<http://netlib.org/scalapack/slug/node75.html>).

**type**: `scalar`

**default**: `automatically generated from the number of processes`

**example**: `smi.np = 12`

## smi.orfac

Specifies which eigenvectors should be reorthogonalized. Eigenvectors
that correspond to eigenvalues which are within tol=ORFAC\*norm(A) of
each other are to be reorthogonalized. However, if the workspace is
insufficient (see LWORK), tol may be decreased until all eigenvectors to
be reorthogonalized can be stored in one process. No reorthogonalization
will be done if ORFAC equals zero. A default value of 10\^-3 is used if
ORFAC is negative. ORFAC should be identical on all processes.

**type**: `scalar`

**example**: `smi.orfac = 1e-8`

## smi.status

Perform a parallelized calculation and use ScaLAPACK if smi.status =
true.

**type**: `scalar`

**default**: `false`

**allowed**: `true,false`

**example**: `smi.status = true`
