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