Actual source code: matcoloringregi.c


  2: #include <petscmat.h>
  3: #include <petsc/private/matimpl.h>

  5: PETSC_EXTERN PetscErrorCode MatColoringCreate_JP(MatColoring);
  6: PETSC_EXTERN PetscErrorCode MatColoringCreate_Greedy(MatColoring);
  7: PETSC_EXTERN PetscErrorCode MatColoringCreate_Power(MatColoring);
  8: PETSC_EXTERN PetscErrorCode MatColoringCreate_Natural(MatColoring);
  9: PETSC_EXTERN PetscErrorCode MatColoringCreate_SL(MatColoring);
 10: PETSC_EXTERN PetscErrorCode MatColoringCreate_ID(MatColoring);
 11: PETSC_EXTERN PetscErrorCode MatColoringCreate_LF(MatColoring);

 13: /*@C
 14:   MatColoringRegisterAll - Registers all of the matrix coloring 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 `MatColoringRegister()` for
 23:   the new method, after the current list.

 25: .seealso: `MatColoring`, `MatColoringRegister()`, `MatColoringRegisterDestroy()`
 26:  @*/
 27: PetscErrorCode MatColoringRegisterAll(void)
 28: {
 29:   PetscFunctionBegin;
 30:   if (MatColoringRegisterAllCalled) PetscFunctionReturn(PETSC_SUCCESS);
 31:   MatColoringRegisterAllCalled = PETSC_TRUE;
 32:   PetscCall(MatColoringRegister(MATCOLORINGJP, MatColoringCreate_JP));
 33:   PetscCall(MatColoringRegister(MATCOLORINGGREEDY, MatColoringCreate_Greedy));
 34:   PetscCall(MatColoringRegister(MATCOLORINGPOWER, MatColoringCreate_Power));
 35:   PetscCall(MatColoringRegister(MATCOLORINGNATURAL, MatColoringCreate_Natural));
 36:   PetscCall(MatColoringRegister(MATCOLORINGSL, MatColoringCreate_SL));
 37:   PetscCall(MatColoringRegister(MATCOLORINGID, MatColoringCreate_ID));
 38:   PetscCall(MatColoringRegister(MATCOLORINGLF, MatColoringCreate_LF));
 39:   PetscFunctionReturn(PETSC_SUCCESS);
 40: }