Developer Reference for Intel® oneAPI Math Kernel Library for Fortran
dcsrilu0
ILU0 preconditioner based on incomplete LU factorization of a sparse matrix.
Syntax
SUBROUTINE dcsrilu0 (n, a, ia, ja, bilu0, ipar, dpar, ierr)
INTEGER n, ierr, ipar(128)
INTEGER ia(*), ja(*)
DOUBLE PRECISION a(*), bilu0(*), dpar(128)
Include Files
Fortran: mkl_rci.fi , mkl_rci.f90
Description
The routine dcsrilu0 computes a preconditioner B [Saad03] of a given sparse matrix A stored in the format accepted in the direct sparse solvers:
\[A\approx B=L\cdot U,\]
where \(L\) is a lower triangular matrix with a unit diagonal, \(U\) is an upper triangular matrix with a non-unit diagonal, and the portrait of the original matrix A is used to store the incomplete factors L and U .
Input Parameters
n
INTEGER.
Size (number of rows or columns) of the original square n -by- n matrix A .
a
DOUBLE PRECISION.
Array containing the set of elements of the matrix A . Its length is equal to the number of non-zero elements in the matrix A . Refer to the values array description in the Sparse Matrix Storage Format for more details.
ia
INTEGER. Array of size (n+1) containing begin indices of rows of the matrix A such that ia(i) is the index in the array a of the first non-zero element from the row i . The value of the last element minus one ia(n+1)-1, is equal to the number of non-zero elements in the matrix A. (Owing to the API only supporting one-based indexing.)
Refer to the rowIndex array description in the Sparse Matrix Storage Format for more details.
ja
INTEGER.
Array containing the column indices for each non-zero element of the matrix A . It is important that the indices are in increasing order per row. The matrix size is equal to the size of the array a . Refer to the columns array description in the Sparse Matrix Storage Format for more details.
ipar
INTEGER.
Array of size 128 . This parameter specifies the integer set of data for both the ILU0 and RCI FGMRES computations. Refer to the ipar array description in the FGMRES Common Parameters for more details on FGMRES parameter entries. The entries that are specific to ILU0 are listed below.
dpar
DOUBLE PRECISION.
Array of size 128 . This parameter specifies the double precision set of data for both the ILU0 and RCI FGMRES computations. Refer to the dpar array description in the FGMRES Common Parameters for more details on FGMRES parameter entries. The entries specific to ILU0 are listed below.
Output Parameters
bilu0
DOUBLE PRECISION.
Array B containing non-zero elements of the resulting preconditioning matrix B , stored in the format accepted in direct sparse solvers. Its size is equal to the number of non-zero elements in the matrix A . Refer to the values array description in the Sparse Matrix Storage Format section for more details.
ierr
INTEGER.
Error flag, gives information about the routine completion.
Return Values
- ierr=0
-
Indicates that the task completed normally.
- ierr=-101
-
Indicates that the routine was interrupted and that error occurred: at least one diagonal element is omitted from the matrix in CSR3 format (see Sparse Matrix Storage Format ).
- ierr=-102
-
Indicates that the routine was interrupted because the matrix contains a diagonal element with the value of zero.
- ierr=-103
-
Indicates that the routine was interrupted because the matrix contains a diagonal element which is so small that it could cause an overflow, or that it would cause a bad approximation to ILU0.
- ierr=-104
-
Indicates that the routine was interrupted because the memory is insufficient for the internal work array.
- ierr=-105
-
Indicates that the routine was interrupted because the input matrix size n is less than or equal to 0.
- ierr=-106
-
Indicates that the routine was interrupted because the column indices ja are not in the ascending order.