PCILU#

Incomplete factorization preconditioners [DKR68], [Oli61], [CVDV97]

Options Database Keys#

  • -pc_factor_levels - number of levels of fill for ILU(k)

  • -pc_factor_in_place - only for ILU(0) with natural ordering, reuses the space of the matrix for its factorization (overwrites original matrix)

  • -pc_factor_diagonal_fill - fill in a zero diagonal even if levels of fill indicate it wouldn’t be fill

  • -pc_factor_reuse_ordering - reuse ordering of factorized matrix from previous factorization

  • -pc_factor_fill - expected amount of fill in factored matrix compared to original matrix, nfill > 1

  • -pc_factor_nonzeros_along_diagonal - reorder the matrix before factorization to remove zeros from the diagonal, this decreases the chance of getting a zero pivot

  • -pc_factor_mat_ordering_type <natural,nd,1wd,rcm,qmd> - set the row/column ordering of the factored matrix

  • -pc_factor_pivot_in_blocks - for block ILU(k) factorization, i.e. with MATBAIJ matrices with block size larger than 1 the diagonal blocks are factored with partial pivoting (this increases the stability of the ILU factorization

Notes#

Only implemented for some matrix format and sequential. For parallel see PCHYPRE for hypre’s ILU

For MATSEQBAIJ matrices this implements a point block ILU

The “symmetric” application of this preconditioner is not actually symmetric since L is not transpose(U) even when the matrix is not symmetric since the U stores the diagonals of the factorization.

If you are using MATSEQAIJCUSPARSE matrices (or MATMPIAIJCUSPARSE matrices with block Jacobi), factorization is never done on the GPU).

References#

[CVDV97]

Tony F Chan and Henk A Van Der Vorst. Approximate and incomplete factorizations. In Parallel numerical algorithms, pages 167–202. Springer, 1997.

[DKR68]

Todd Dupont, Richard P Kendall, and HH Rachford, Jr. An approximate factorization procedure for solving self-adjoint elliptic difference equations. SIAM Journal on Numerical Analysis, 5(3):559–573, 1968.

[Oli61]

Thomas A Oliphant. An implicit, numerical method for solving two-dimensional time-dependent diffusion problems. Quarterly of Applied mathematics, 19(3):221–229, 1961.

See Also#

KSP: Linear System Solvers, PCCreate(), PCSetType(), PCType, PC, PCSOR, MatOrderingType, PCLU, PCICC, PCCHOLESKY, PCFactorSetZeroPivot(), PCFactorSetShiftSetType(), PCFactorSetAmount(), PCFactorSetDropTolerance(), PCFactorSetFill(), PCFactorSetMatOrderingType(), PCFactorSetReuseOrdering(), PCFactorSetLevels(), PCFactorSetUseInPlace(), PCFactorSetAllowDiagonalFill(), PCFactorSetPivotInBlocks(), PCFactorGetAllowDiagonalFill(), PCFactorGetUseInPlace()

Level#

beginner

Location#

src/ksp/pc/impls/factor/ilu/ilu.c

Examples#

src/ksp/ksp/tutorials/ex62.c
src/ksp/pc/tutorials/ex4.c
src/ksp/ksp/tutorials/ex7.c
src/ksp/ksp/tutorials/ex52.c
src/ksp/ksp/tutorials/ex8.c
src/ksp/pc/tutorials/ex1.c


Index of all PC routines
Table of Contents for all manual pages
Index of all manual pages