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
PC
s based on factorization,MATLU
,MATILU
, MATCHOLESKY,
MATICC`
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/ksp/ksp/tutorials/ex10.c
src/mat/tutorials/ex1.c
src/ksp/ksp/tutorials/ex18.c
Index of all MatOrderings routines
Table of Contents for all manual pages
Index of all manual pages