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: #undef __FUNCT__  
 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: MatOrderingRegisterDynamic(), MatOrderingRegisterDestroy()
 38: @*/
 39: int MatOrderingRegisterAll(char *path)
 40: {
 41:   int           ierr;

 44:   MatOrderingRegisterAllCalled = PETSC_TRUE;

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