Developer Reference

  • 2020.2
  • 07/15/2020
  • Public Content
Contents

dcsrilut

ILUT preconditioner based on the incomplete LU factorization with a threshold of a sparse matrix.

Syntax

call dcsrilut
(
n
,
a
,
ia
,
ja
,
bilut
,
ibilut
,
jbilut
,
tol
,
maxfil
,
ipar
,
dpar
,
ierr
)
Include Files
  • Fortran:
    mkl_rci.fi
    ,
    mkl_rci.f90
Description
The routine
dcsrilut
computes a preconditioner
B
[ Saad03 ] of a given sparse matrix
A
stored in the format accepted in the direct sparse solvers:
A
~
B
=
L
*
U
, where
L
is a lower triangular matrix with unit diagonal and
U
is an upper triangular matrix with non-unit diagonal.
The following threshold criteria are used to generate the incomplete factors
L
and
U
:
1) the resulting entry must be greater than the matrix current row norm multiplied by the parameter
tol
, and
2) the number of the non-zero elements in each row of the resulting
L
and
U
factors must not be greater than the value of the parameter
maxfil
.
This routine supports only one-based indexing of the array parameters.
Input Parameters
n
INTEGER
.
Size (number of rows or columns) of the original square
n
-by-
n
matrix
A
.
a
DOUBLE PRECISION
.
Array containing all non-zero elements of the matrix
A
. The length of the array is equal to their number. Refer to
values
array description in the Sparse Matrix Storage Format section for more details.
ia
INTEGER
.
Array of size
(
n
+1)
containing indices of non-zero elements in the array
a
.
ia
(i)
is the index of the first non-zero element from the row
i
. The value of the last element
ia
(
n
+1)
is equal to the number of non-zeros in the matrix
A
, plus one. Refer to the
rowIndex
array description in the Sparse Matrix Storage Format for more details.
ja
INTEGER
.
Array of size equal to the size of the array
a
. This array contains the column numbers for each non-zero element of the matrix
A
. It is important that the indices are in increasing order per row. Refer to the
columns
array description in the Sparse Matrix Storage Format for more details.
If column indices are not stored in ascending order for each row of matrix, the result of the routine might not be correct.
tol
DOUBLE PRECISION
.
Tolerance for threshold criterion for the resulting entries of the preconditioner.
maxfil
INTEGER
.
Maximum fill-in, which is half of the preconditioner bandwidth. The number of non-zero elements in the rows of the preconditioner cannot exceed
(2*
maxfil
+1)
.
ipar
INTEGER
.
Array of size
128
. This parameter is used to specify the integer set of data for both the ILUT and RCI FGMRES computations. Refer to the
ipar
array description in the FGMRES Common Parameters for more details on FGMRES parameter entries. The entries specific to ILUT are listed below.
ipar
(31)
specifies how the routine operates if the value of the computed diagonal element is less than the current matrix row norm multiplied by the value of the parameter
tol
. If
ipar
(31)
= 0, then the calculation is stopped and the routine returns non-zero error value. Otherwise, the value of the diagonal element is set to a value determined by
dpar
(31)
(see its description below), and the calculations continue.
There is no default value for
ipar
(31)
even if the preconditioner is used within the RCI ISS context. Always set the value of this entry.
You must declare the array
ipar
with length 128. While defining the array in the code as
INTEGER
ipar
(31)
works, there is no guarantee of future compatibility with
Intel® MKL
.
dpar