Actual source code: spartition.c

petsc-3.4.5 2014-06-29
  2: #include <petscmat.h>

  4: PETSC_EXTERN PetscErrorCode MatPartitioningCreate_Current(MatPartitioning);
  5: PETSC_EXTERN PetscErrorCode MatPartitioningCreate_Square(MatPartitioning);
  6: PETSC_EXTERN PetscErrorCode MatPartitioningCreate_Parmetis(MatPartitioning);
  7: PETSC_EXTERN PetscErrorCode MatPartitioningCreate_Chaco(MatPartitioning);
  8: PETSC_EXTERN PetscErrorCode MatPartitioningCreate_Party(MatPartitioning);
  9: PETSC_EXTERN PetscErrorCode MatPartitioningCreate_PTScotch(MatPartitioning);

 13: /*@C
 14:   MatPartitioningRegisterAll - Registers all of the matrix Partitioning routines in PETSc.

 16:   Not Collective

 18:   Level: developer

 20:   Adding new methods:
 21:   To add a new method to the registry. Copy this routine and
 22:   modify it to incorporate a call to MatPartitioningRegister() for
 23:   the new method, after the current list.

 25:   Restricting the choices: To prevent all of the methods from being
 26:   registered and thus save memory, copy this routine and modify it to
 27:   register a zero, instead of the function name, for those methods you
 28:   do not wish to register.  Make sure that the replacement routine is
 29:   linked before libpetscmat.a.

 31: .keywords: matrix, Partitioning, register, all

 33: .seealso: MatPartitioningRegister(), MatPartitioningRegisterDestroy()
 34: @*/
 35: PetscErrorCode  MatPartitioningRegisterAll(void)
 36: {

 40:   MatPartitioningRegisterAllCalled = PETSC_TRUE;

 42:   MatPartitioningRegister(MATPARTITIONINGCURRENT, MatPartitioningCreate_Current);
 43:   MatPartitioningRegister("square",               MatPartitioningCreate_Square);
 44: #if defined(PETSC_HAVE_PARMETIS)
 45:   MatPartitioningRegister(MATPARTITIONINGPARMETIS,MatPartitioningCreate_Parmetis);
 46: #endif
 47: #if defined(PETSC_HAVE_CHACO)
 48:   MatPartitioningRegister(MATPARTITIONINGCHACO,   MatPartitioningCreate_Chaco);
 49: #endif
 50: #if defined(PETSC_HAVE_PARTY)
 51:   MatPartitioningRegister(MATPARTITIONINGPARTY,   MatPartitioningCreate_Party);
 52: #endif
 53: #if defined(PETSC_HAVE_PTSCOTCH)
 54:   MatPartitioningRegister(MATPARTITIONINGPTSCOTCH,MatPartitioningCreate_PTScotch);
 55: #endif
 56:   return(0);
 57: }