Actual source code: sregis.c
1: #define PETSCMAT_DLL
3: #include private/matimpl.h
6: EXTERN PetscErrorCode MatOrdering_Natural(Mat,const MatOrderingType,IS*,IS*);
7: EXTERN PetscErrorCode MatOrdering_ND(Mat,const MatOrderingType,IS*,IS*);
8: EXTERN PetscErrorCode MatOrdering_1WD(Mat,const MatOrderingType,IS*,IS*);
9: EXTERN PetscErrorCode MatOrdering_QMD(Mat,const MatOrderingType,IS*,IS*);
10: EXTERN PetscErrorCode MatOrdering_RCM(Mat,const MatOrderingType,IS*,IS*);
11: EXTERN PetscErrorCode MatOrdering_RowLength(Mat,const MatOrderingType,IS*,IS*);
12: EXTERN PetscErrorCode MatOrdering_DSC(Mat,const MatOrderingType,IS*,IS*);
13: EXTERN PetscErrorCode MatOrdering_Flow_SeqAIJ(Mat,const MatOrderingType,IS*,IS*);
14: #if defined(PETSC_HAVE_UMFPACK)
15: EXTERN PetscErrorCode MatOrdering_AMD(Mat,const MatOrderingType,IS*,IS*);
16: #endif
22: /*@C
23: MatOrderingRegisterAll - Registers all of the matrix
24: reordering routines in PETSc.
26: Not Collective
28: Level: developer
30: Adding new methods:
31: To add a new method to the registry. Copy this routine and
32: modify it to incorporate a call to MatReorderRegister() for
33: the new method, after the current list.
35: Restricting the choices: To prevent all of the methods from being
36: registered and thus save memory, copy this routine and comment out
37: those orderigs you do not wish to include. Make sure that the
38: replacement routine is linked before libpetscmat.a.
40: .keywords: matrix, reordering, register, all
42: .seealso: MatOrderingRegisterDynamic(), MatOrderingRegisterDestroy()
43: @*/
44: PetscErrorCode MatOrderingRegisterAll(const char path[])
45: {
49: MatOrderingRegisterAllCalled = PETSC_TRUE;
51: MatOrderingRegisterDynamic(MATORDERING_NATURAL, path,"MatOrdering_Natural" ,MatOrdering_Natural);
52: MatOrderingRegisterDynamic(MATORDERING_ND, path,"MatOrdering_ND" ,MatOrdering_ND);
53: MatOrderingRegisterDynamic(MATORDERING_1WD, path,"MatOrdering_1WD" ,MatOrdering_1WD);
54: MatOrderingRegisterDynamic(MATORDERING_RCM, path,"MatOrdering_RCM" ,MatOrdering_RCM);
55: MatOrderingRegisterDynamic(MATORDERING_QMD, path,"MatOrdering_QMD" ,MatOrdering_QMD);
56: MatOrderingRegisterDynamic(MATORDERING_ROWLENGTH,path,"MatOrdering_RowLength",MatOrdering_RowLength);
57: MatOrderingRegisterDynamic(MATORDERING_FLOW, path,"MatOrdering_Flow_SeqAIJ",MatOrdering_Flow_SeqAIJ);
58: #if defined(PETSC_HAVE_UMFPACK)
59: MatOrderingRegisterDynamic(MATORDERING_AMD, path,"MatOrdering_AMD",MatOrdering_AMD);
60: #endif
62: return(0);
63: }