MatGetOrdering#
Gets a reordering for a matrix to reduce fill or to improve numerical stability of LU factorization.
Synopsis#
#include "petscmat.h" 
PetscErrorCode MatGetOrdering(Mat mat, MatOrderingType type, IS *rperm, IS *cperm)
Collective
Input Parameters#
- mat - the matrix 
- type - type of reordering, one of the following 
      MATORDERINGNATURAL_OR_ND - Nested dissection unless matrix is SBAIJ then it is natural
      MATORDERINGNATURAL - Natural
      MATORDERINGND - Nested Dissection
      MATORDERING1WD - One-way Dissection
      MATORDERINGRCM - Reverse Cuthill-McKee
      MATORDERINGQMD - Quotient Minimum Degree
      MATORDERINGEXTERNAL - Use an ordering internal to the factorzation package and do not compute or use PETSc's
Output Parameters#
- rperm - row permutation indices 
- cperm - column permutation indices 
Options Database Key#
- -mat_view_ordering draw - plots matrix nonzero structure in new ordering 
- -pc_factor_mat_ordering_type <nd,natural,..> - ordering to use with - PCs based on factorization,- PCLU,- PCILU,- PCCHOLESKY,- PCICC
Notes#
This DOES NOT actually reorder the matrix; it merely returns two index sets
that define a reordering. This is usually not used directly, rather use the
options PCFactorSetMatOrderingType()
The user can define additional orderings; see MatOrderingRegister().
These are generally only implemented for sequential sparse matrices.
Some external packages that PETSc can use for direct factorization such as SuperLU_DIST do not accept orderings provided by this call.
If MATORDERINGEXTERNAL is used then PETSc does not compute an ordering and utilizes one built into the factorization package
See Also#
MatOrderingRegister(), PCFactorSetMatOrderingType(), MatColoring, MatColoringCreate(), MatOrderingType, Mat
Level#
intermediate
Location#
Examples#
src/mat/tutorials/ex1.c
src/ksp/ksp/tutorials/ex18.c
src/ksp/ksp/tutorials/ex10.c
Index of all MatGraphOperations routines
Table of Contents for all manual pages
Index of all manual pages