Computes an action of a preconditioner which corresponds to the approximate matrix decompositionfor the system(see description below).
This routine computes an update for an iterative solution
xof the system
Ax=bby means of applying one iteration of an approximate preconditioner which is based on the following approximation:
Eis an approximate inverse of the diagonal (using exact inverse will result in Gauss-Seidel preconditioner),
Uare lower/upper triangular parts of
Dis the diagonal (block diagonal in case of BSR format) of
mkl_sparse_?_lu_smootherroutine performs these operations:
r = b - A*x /* 1. Computes the residual */ (L + D)*E*(U + D)*dx = r /* 2. Finds the update dx by solving the system */ y = x + dx /* 3. Performs an update */
This routine is supported only for sparse matrices in BSR format, non-transpose operation and real data types.
Both diagonal values and approximate diagonal inverse arrays should be passed explicitly.
- C_INT.Specifies the operation performed on matrixA.
- SPARSE_OPERATION_NON_TRANSPOSE, op(A) := A
- Transpose and conjugate transpose (SPARSE_OPERATION_TRANSPOSEandSPARSE_OPERATION_CONJUGATE_TRANSPOSE) are not supported.Non-transpose,op(=A)A.
- SPARSE_MATRIX_T.Handle which contains the sparse matrixA.
- MATRIX_DESCR.Structure specifying sparse matrix properties.sparse_matrix_type_ttype- Specifies the type of a sparse matrix:
sparse_fill_mode_tmode- Specifies the triangular matrix part for symmetric, Hermitian, triangular, and block-triangular matrices:
- The matrix is processed as is.
- The matrix is symmetric (only the requested triangle is processed).
- The matrix is Hermitian (only the requested triangle is processed).
- The matrix is triangular (only the requested triangle is processed).
- The matrix is diagonal (only diagonal elements are processed).
- The matrix is block-triangular (only the requested triangle is processed). Applies to BSR format only.
- The matrix is block-diagonal (only diagonal blocks are processed). Applies to BSR format only.
sparse_diag_type_tdiag- Specifies the diagonal type for non-general matrices:
- The lower triangular matrix part is processed.
- The upper triangular matrix part is processed.
Only SPARSE_MATRIX_TYPE_GENERAL is supported.
- Diagonal elements might not be equal to one.
- Diagonal elements are equal to one.