Developer Reference

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

mkl_sparse_?_lu_smoother

Computes an action of a preconditioner which corresponds to the approximate matrix decomposition
for the system
(see description below).

Syntax

status =
mkl_sparse_s_lu_smoother
(
op
,
A
,
indx
,
descr
,
diag
,
approx_diag_inverse
,
x
,
b
)
status =
mkl_sparse_d_lu_smoother
(
op
,
A
,
indx
,
descr
,
diag
,
approx_diag_inverse
,
x
,
b
)
status =
mkl_sparse_c_lu_smoother
(
op
,
A
,
indx
,
descr
,
diag
,
approx_diag_inverse
,
x
,
b
)
status =
mkl_sparse_z_lu_smoother
(
op
,
A
,
indx
,
descr
,
diag
,
approx_diag_inverse
,
x
,
b
)
Include Files
  • mkl_spblas.f90
Description
This routine computes an update for an iterative solution
x
of the system
Ax=b
by means of applying one iteration of an approximate preconditioner which is based on the following approximation:
, where
E
is an approximate inverse of the diagonal (using exact inverse will result in Gauss-Seidel preconditioner),
L
and
U
are lower/upper triangular parts of
A
,
D
is the diagonal (block diagonal in case of BSR format) of
A
.
The
mkl_sparse_?_lu_smoother
routine 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.
Input Parameters
operation
C_INT
.
Specifies the operation performed on matrix
A
.
SPARSE_OPERATION_NON_TRANSPOSE, op(A) := A
Transpose and conjugate transpose (
SPARSE_OPERATION_TRANSPOSE
and
SPARSE_OPERATION_CONJUGATE_TRANSPOSE
) are not supported.
Non-transpose,
op(
A
)
=
A
.
A
SPARSE_MATRIX_T
.
Handle which contains the sparse matrix
A
.
descr
MATRIX_DESCR
.
Structure specifying sparse matrix properties.
sparse_matrix_type_t
type
- Specifies the type of a sparse matrix:
SPARSE_MATRIX_TYPE_GENERAL
The matrix is processed as is.
SPARSE_MATRIX_TYPE_SYMMETRIC
The matrix is symmetric (only the requested triangle is processed).
SPARSE_MATRIX_TYPE_HERMITIAN
The matrix is Hermitian (only the requested triangle is processed).
SPARSE_MATRIX_TYPE_TRIANGULAR
The matrix is triangular (only the requested triangle is processed).
SPARSE_MATRIX_TYPE_DIAGONAL
The matrix is diagonal (only diagonal elements are processed).
SPARSE_MATRIX_TYPE_BLOCK_TRIANGULAR
The matrix is block-triangular (only the requested triangle is processed). Applies to BSR format only.
SPARSE_MATRIX_TYPE_BLOCK_DIAGONAL
The matrix is block-diagonal (only diagonal blocks are processed). Applies to BSR format only.
sparse_fill_mode_t
mode
- Specifies the triangular matrix part for symmetric, Hermitian, triangular, and block-triangular matrices:
SPARSE_FILL_MODE_LOWER
The lower triangular matrix part is processed.
SPARSE_FILL_MODE_UPPER
The upper triangular matrix part is processed.
sparse_diag_type_t
diag
- Specifies the diagonal type for non-general matrices:
SPARSE_DIAG_NON_UNIT
Diagonal elements might not be equal to one.
SPARSE_DIAG_UNIT
Diagonal elements are equal to one.
Only SPARSE_MATRIX_TYPE_GENERAL is supported.
diag
C_FLOAT
for
mkl_sparse_s_lu_smoother