Actual source code: sregis.c
petsc-3.3-p7 2013-05-11
2: #include <petsc-private/matimpl.h> /*I "petscmat.h" I*/
4: EXTERN_C_BEGIN
5: extern PetscErrorCode MatGetOrdering_Natural(Mat,const MatOrderingType,IS*,IS*);
6: extern PetscErrorCode MatGetOrdering_ND(Mat,const MatOrderingType,IS*,IS*);
7: extern PetscErrorCode MatGetOrdering_1WD(Mat,const MatOrderingType,IS*,IS*);
8: extern PetscErrorCode MatGetOrdering_QMD(Mat,const MatOrderingType,IS*,IS*);
9: extern PetscErrorCode MatGetOrdering_RCM(Mat,const MatOrderingType,IS*,IS*);
10: extern PetscErrorCode MatGetOrdering_RowLength(Mat,const MatOrderingType,IS*,IS*);
11: extern PetscErrorCode MatGetOrdering_DSC(Mat,const MatOrderingType,IS*,IS*);
12: #if defined(PETSC_HAVE_UMFPACK)
13: extern PetscErrorCode MatGetOrdering_AMD(Mat,const MatOrderingType,IS*,IS*);
14: #endif
16: EXTERN_C_END
20: /*@C
21: MatOrderingRegisterAll - Registers all of the matrix
22: reordering routines in PETSc.
24: Not Collective
26: Level: developer
28: Adding new methods:
29: To add a new method to the registry. Copy this routine and
30: modify it to incorporate a call to MatReorderRegister() for
31: the new method, after the current list.
33: Restricting the choices: To prevent all of the methods from being
34: registered and thus save memory, copy this routine and comment out
35: those orderigs you do not wish to include. Make sure that the
36: replacement routine is linked before libpetscmat.a.
38: .keywords: matrix, reordering, register, all
40: .seealso: MatOrderingRegisterDynamic(), MatOrderingRegisterDestroy()
41: @*/
42: PetscErrorCode MatOrderingRegisterAll(const char path[])
43: {
47: MatOrderingRegisterAllCalled = PETSC_TRUE;
49: MatOrderingRegisterDynamic(MATORDERINGNATURAL, path,"MatGetOrdering_Natural" ,MatGetOrdering_Natural);
50: MatOrderingRegisterDynamic(MATORDERINGND, path,"MatGetOrdering_ND" ,MatGetOrdering_ND);
51: MatOrderingRegisterDynamic(MATORDERING1WD, path,"MatGetOrdering_1WD" ,MatGetOrdering_1WD);
52: MatOrderingRegisterDynamic(MATORDERINGRCM, path,"MatGetOrdering_RCM" ,MatGetOrdering_RCM);
53: MatOrderingRegisterDynamic(MATORDERINGQMD, path,"MatGetOrdering_QMD" ,MatGetOrdering_QMD);
54: MatOrderingRegisterDynamic(MATORDERINGROWLENGTH,path,"MatGetOrdering_RowLength",MatGetOrdering_RowLength);
55: #if defined(PETSC_HAVE_UMFPACK)
56: MatOrderingRegisterDynamic(MATORDERINGAMD, path,"MatGetOrdering_AMD",MatGetOrdering_AMD);
57: #endif
59: return(0);
60: }