Actual source code: sregis.c
petsc-3.14.6 2021-03-30
2: #include <petsc/private/matimpl.h>
4: PETSC_INTERN PetscErrorCode MatGetOrdering_Natural(Mat,MatOrderingType,IS*,IS*);
5: PETSC_INTERN PetscErrorCode MatGetOrdering_ND(Mat,MatOrderingType,IS*,IS*);
6: PETSC_INTERN PetscErrorCode MatGetOrdering_1WD(Mat,MatOrderingType,IS*,IS*);
7: PETSC_INTERN PetscErrorCode MatGetOrdering_QMD(Mat,MatOrderingType,IS*,IS*);
8: PETSC_INTERN PetscErrorCode MatGetOrdering_RCM(Mat,MatOrderingType,IS*,IS*);
9: PETSC_INTERN PetscErrorCode MatGetOrdering_RowLength(Mat,MatOrderingType,IS*,IS*);
10: PETSC_INTERN PetscErrorCode MatGetOrdering_DSC(Mat,MatOrderingType,IS*,IS*);
11: PETSC_INTERN PetscErrorCode MatGetOrdering_WBM(Mat,MatOrderingType,IS*,IS*);
12: PETSC_INTERN PetscErrorCode MatGetOrdering_Spectral(Mat,MatOrderingType,IS*,IS*);
13: #if defined(PETSC_HAVE_SUITESPARSE)
14: PETSC_INTERN PetscErrorCode MatGetOrdering_AMD(Mat,MatOrderingType,IS*,IS*);
15: #endif
17: /*@C
18: MatOrderingRegisterAll - Registers all of the matrix
19: reordering routines in PETSc.
21: Not Collective
23: Level: developer
25: Adding new methods:
26: To add a new method to the registry. Copy this routine and
27: modify it to incorporate a call to MatReorderRegister() for
28: the new method, after the current list.
30: Restricting the choices: To prevent all of the methods from being
31: registered and thus save memory, copy this routine and comment out
32: those orderigs you do not wish to include. Make sure that the
33: replacement routine is linked before libpetscmat.a.
35: .seealso: MatOrderingRegister(), MatOrderingRegisterDestroy()
36: @*/
37: PetscErrorCode MatOrderingRegisterAll(void)
38: {
42: if (MatOrderingRegisterAllCalled) return(0);
43: MatOrderingRegisterAllCalled = PETSC_TRUE;
45: MatOrderingRegister(MATORDERINGNATURAL, MatGetOrdering_Natural);
46: MatOrderingRegister(MATORDERINGND, MatGetOrdering_ND);
47: MatOrderingRegister(MATORDERING1WD, MatGetOrdering_1WD);
48: MatOrderingRegister(MATORDERINGRCM, MatGetOrdering_RCM);
49: MatOrderingRegister(MATORDERINGQMD, MatGetOrdering_QMD);
50: MatOrderingRegister(MATORDERINGROWLENGTH,MatGetOrdering_RowLength);
51: #if defined(PETSC_HAVE_SUPERLU_DIST)
52: MatOrderingRegister(MATORDERINGWBM, MatGetOrdering_WBM);
53: #endif
54: MatOrderingRegister(MATORDERINGSPECTRAL, MatGetOrdering_Spectral);
55: #if defined(PETSC_HAVE_SUITESPARSE)
56: MatOrderingRegister(MATORDERINGAMD, MatGetOrdering_AMD);
57: #endif
58: return(0);
59: }