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: }