Actual source code: sregis.c
petsc-3.8.4 2018-03-24
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: .keywords: matrix, reordering, register, all
37: .seealso: MatOrderingRegister(), MatOrderingRegisterDestroy()
38: @*/
39: PetscErrorCode MatOrderingRegisterAll(void)
40: {
44: if (MatOrderingRegisterAllCalled) return(0);
45: MatOrderingRegisterAllCalled = PETSC_TRUE;
47: MatOrderingRegister(MATORDERINGNATURAL, MatGetOrdering_Natural);
48: MatOrderingRegister(MATORDERINGND, MatGetOrdering_ND);
49: MatOrderingRegister(MATORDERING1WD, MatGetOrdering_1WD);
50: MatOrderingRegister(MATORDERINGRCM, MatGetOrdering_RCM);
51: MatOrderingRegister(MATORDERINGQMD, MatGetOrdering_QMD);
52: MatOrderingRegister(MATORDERINGROWLENGTH,MatGetOrdering_RowLength);
53: #if defined(PETSC_HAVE_SUPERLU_DIST)
54: MatOrderingRegister(MATORDERINGWBM, MatGetOrdering_WBM);
55: #endif
56: MatOrderingRegister(MATORDERINGSPECTRAL, MatGetOrdering_Spectral);
57: #if defined(PETSC_HAVE_SUITESPARSE)
58: MatOrderingRegister(MATORDERINGAMD, MatGetOrdering_AMD);
59: #endif
60: return(0);
61: }