Skip to main content
`Ctrl`+`K`

# 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 type - ordering to use with `PC`s based on factorization see `MatOrderingType`

## 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

src/mat/graphops/order/sorder.c

## Examples

src/ksp/ksp/tutorials/ex10.c
src/mat/tutorials/ex1.c
src/ksp/ksp/tutorials/ex18.c

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