Actual source code: sregis.c

  1: /*$Id: sregis.c,v 1.39 2001/08/06 21:16:14 bsmith Exp $*/

 3:  #include src/mat/matimpl.h

  5: EXTERN_C_BEGIN
  6: EXTERN int MatOrdering_Natural(Mat,MatOrderingType,IS*,IS*);
  7: EXTERN int MatOrdering_ND(Mat,MatOrderingType,IS*,IS*);
  8: EXTERN int MatOrdering_1WD(Mat,MatOrderingType,IS*,IS*);
  9: EXTERN int MatOrdering_QMD(Mat,MatOrderingType,IS*,IS*);
 10: EXTERN int MatOrdering_RCM(Mat,MatOrderingType,IS*,IS*);
 11: EXTERN int MatOrdering_RowLength(Mat,MatOrderingType,IS*,IS*);
 12: EXTERN int MatOrdering_DSC(Mat,MatOrderingType,IS*,IS*);
 13: EXTERN_C_END

 15: /*@C
 16:   MatOrderingRegisterAll - Registers all of the matrix 
 17:   reordering routines in PETSc.

 19:   Not Collective

 21:   Level: developer

 23:   Adding new methods:
 24:   To add a new method to the registry. Copy this routine and 
 25:   modify it to incorporate a call to MatReorderRegister() for 
 26:   the new method, after the current list.

 28:   Restricting the choices: To prevent all of the methods from being
 29:   registered and thus save memory, copy this routine and comment out
 30:   those orderigs you do not wish to include.  Make sure that the
 31:   replacement routine is linked before libpetscmat.a.

 33: .keywords: matrix, reordering, register, all

 35: .seealso: MatOrderingRegisterDynamic(), MatOrderingRegisterDestroy()
 36: @*/
 37: int MatOrderingRegisterAll(char *path)
 38: {
 39:   int           ierr;

 42:   MatOrderingRegisterAllCalled = PETSC_TRUE;

 44:   MatOrderingRegisterDynamic(MATORDERING_NATURAL,  path,"MatOrdering_Natural"  ,MatOrdering_Natural);
 45:   MatOrderingRegisterDynamic(MATORDERING_ND,       path,"MatOrdering_ND"       ,MatOrdering_ND);
 46:   MatOrderingRegisterDynamic(MATORDERING_1WD,      path,"MatOrdering_1WD"      ,MatOrdering_1WD);
 47:   MatOrderingRegisterDynamic(MATORDERING_RCM,      path,"MatOrdering_RCM"      ,MatOrdering_RCM);
 48:   MatOrderingRegisterDynamic(MATORDERING_QMD,      path,"MatOrdering_QMD"      ,MatOrdering_QMD);
 49:   MatOrderingRegisterDynamic(MATORDERING_ROWLENGTH,path,"MatOrdering_RowLength",MatOrdering_RowLength);
 50: #if defined(PETSC_HAVE_DSCPACKS) && !defined(PETSC_USE_COMPLEX)  && !defined(PETSC_USE_SINGLE)
 51:   MatOrderingRegisterDynamic(MATORDERING_DSC_ND    ,path,"MatOrdering_DSC"     ,MatOrdering_DSC);
 52:   MatOrderingRegisterDynamic(MATORDERING_DSC_MMD   ,path,"MatOrdering_DSC"     ,MatOrdering_DSC);
 53:   MatOrderingRegisterDynamic(MATORDERING_DSC_MDF   ,path,"MatOrdering_DSC"     ,MatOrdering_DSC);
 54: #endif
 55:   return(0);
 56: }