Actual source code: matregis.c

 2:  #include petscmat.h

  5: EXTERN PetscErrorCode MatCreate_MAIJ(Mat);
  6: EXTERN PetscErrorCode MatCreate_IS(Mat);
  7: EXTERN PetscErrorCode MatCreate_MPIRowbs(Mat);
  8: EXTERN PetscErrorCode MatCreate_SeqAIJ(Mat);
  9: EXTERN PetscErrorCode MatCreate_MPIAIJ(Mat);
 10: EXTERN PetscErrorCode MatCreate_AIJ(Mat);
 11: EXTERN PetscErrorCode MatCreate_SeqBAIJ(Mat);
 12: EXTERN PetscErrorCode MatCreate_MPIBAIJ(Mat);
 13: EXTERN PetscErrorCode MatCreate_BAIJ(Mat);
 14: EXTERN PetscErrorCode MatCreate_SeqSBAIJ(Mat);
 15: EXTERN PetscErrorCode MatCreate_MPISBAIJ(Mat);
 16: EXTERN PetscErrorCode MatCreate_SBAIJ(Mat);
 17: EXTERN PetscErrorCode MatCreate_SeqBDiag(Mat);
 18: EXTERN PetscErrorCode MatCreate_MPIBDiag(Mat);
 19: EXTERN PetscErrorCode MatCreate_BDiag(Mat);
 20: EXTERN PetscErrorCode MatCreate_SeqDense(Mat);
 21: EXTERN PetscErrorCode MatCreate_MPIDense(Mat);
 22: EXTERN PetscErrorCode MatCreate_Dense(Mat);
 23: EXTERN PetscErrorCode MatCreate_MPIAdj(Mat);
 24: EXTERN PetscErrorCode MatCreate_Shell(Mat);
 25: #if defined(PETSC_HAVE_SPOOLES) && !defined(PETSC_USE_SINGLE)
 26: EXTERN PetscErrorCode MatCreate_SeqAIJSpooles(Mat);
 27: EXTERN PetscErrorCode MatCreate_SeqSBAIJSpooles(Mat);
 28: EXTERN PetscErrorCode MatCreate_MPIAIJSpooles(Mat);
 29: EXTERN PetscErrorCode MatCreate_MPISBAIJSpooles(Mat);
 30: EXTERN PetscErrorCode MatCreate_AIJSpooles(Mat);
 31: EXTERN PetscErrorCode MatCreate_SBAIJSpooles(Mat);
 32: #endif
 33: #if defined(PETSC_HAVE_SUPERLU) && !defined(PETSC_USE_SINGLE)
 34: EXTERN PetscErrorCode MatCreate_SuperLU(Mat);
 35: #endif
 36: #if defined(PETSC_HAVE_SUPERLU_DIST) && !defined(PETSC_USE_SINGLE)
 37: EXTERN PetscErrorCode MatCreate_SuperLU_DIST(Mat);
 38: #endif
 39: #if defined(PETSC_HAVE_UMFPACK) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
 40: EXTERN PetscErrorCode MatCreate_UMFPACK(Mat);
 41: #endif
 42: #if defined(PETSC_HAVE_ESSL) && !defined(__cplusplus)
 43: EXTERN PetscErrorCode MatCreate_Essl(Mat);
 44: #endif
 45: #if defined(PETSC_HAVE_LUSOL) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
 46: EXTERN PetscErrorCode MatCreate_LUSOL(Mat);
 47: #endif
 48: #if defined(PETSC_HAVE_MUMPS) && !defined(PETSC_USE_SINGLE)
 49: EXTERN PetscErrorCode MatCreate_AIJMUMPS(Mat);
 50: EXTERN PetscErrorCode MatCreate_SBAIJMUMPS(Mat);
 51: #endif
 52: #if defined(PETSC_HAVE_DSCPACK) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
 53: EXTERN PetscErrorCode MatCreate_DSCPACK(Mat);
 54: #endif
 55: #if defined(PETSC_HAVE_MATLAB) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
 56: EXTERN PetscErrorCode MatCreate_Matlab(Mat);
 57: #endif
 59: 
 60: /*
 61:     This is used by MatSetType() to make sure that at least one 
 62:     MatRegisterAll() is called. In general, if there is more than one
 63:     DLL, then MatRegisterAll() may be called several times.
 64: */
 65: EXTERN PetscTruth MatRegisterAllCalled;

 69: /*@C
 70:   MatRegisterAll - Registers all of the matrix types in PETSc

 72:   Not Collective

 74:   Level: advanced

 76: .keywords: KSP, register, all

 78: .seealso:  MatRegisterDestroy()
 79: @*/
 80: PetscErrorCode MatRegisterAll(const char path[])
 81: {

 85:   MatRegisterAllCalled = PETSC_TRUE;

 87:   MatRegisterDynamic(MATMPIMAIJ, path,"MatCreate_MAIJ",    MatCreate_MAIJ);
 88:   MatRegisterDynamic(MATSEQMAIJ, path,"MatCreate_MAIJ",    MatCreate_MAIJ);
 89:   MatRegisterDynamic(MATMAIJ,    path,"MatCreate_MAIJ",    MatCreate_MAIJ);

 91:   MatRegisterDynamic(MATIS,      path,"MatCreate_IS",      MatCreate_IS);
 92:   MatRegisterDynamic(MATSHELL,   path,"MatCreate_Shell",   MatCreate_Shell);
 93: #if defined(PETSC_HAVE_BLOCKSOLVE) && !defined(PETSC_USE_COMPLEX)
 94:   MatRegisterDynamic(MATMPIROWBS,path,"MatCreate_MPIRowbs",MatCreate_MPIRowbs);
 95: #endif
 96:   MatRegisterDynamic(MATMPIAIJ,  path,"MatCreate_MPIAIJ",  MatCreate_MPIAIJ);
 97:   MatRegisterDynamic(MATSEQAIJ,  path,"MatCreate_SeqAIJ",  MatCreate_SeqAIJ);
 98:   MatRegisterDynamic(MATAIJ,     path,"MatCreate_AIJ",     MatCreate_AIJ);

100:   MatRegisterDynamic(MATMPIBAIJ,  path,"MatCreate_MPIBAIJ",  MatCreate_MPIBAIJ);
101:   MatRegisterDynamic(MATSEQBAIJ,  path,"MatCreate_SeqBAIJ",  MatCreate_SeqBAIJ);
102:   MatRegisterDynamic(MATBAIJ,     path,"MatCreate_BAIJ",     MatCreate_BAIJ);

104:   MatRegisterDynamic(MATMPISBAIJ,  path,"MatCreate_MPISBAIJ",  MatCreate_MPISBAIJ);
105:   MatRegisterDynamic(MATSEQSBAIJ,  path,"MatCreate_SeqSBAIJ",  MatCreate_SeqSBAIJ);
106:   MatRegisterDynamic(MATSBAIJ,     path,"MatCreate_SBAIJ",     MatCreate_SBAIJ);
107:   MatRegisterDynamic(MATMPIBDIAG,  path,"MatCreate_MPIBDiag",  MatCreate_MPIBDiag);
108:   MatRegisterDynamic(MATSEQBDIAG,  path,"MatCreate_SeqBDiag",  MatCreate_SeqBDiag);
109:   MatRegisterDynamic(MATBDIAG,     path,"MatCreate_BDiag",     MatCreate_BDiag);
110:   MatRegisterDynamic(MATMPIDENSE,  path,"MatCreate_MPIDense",  MatCreate_MPIDense);
111:   MatRegisterDynamic(MATSEQDENSE,  path,"MatCreate_SeqDense",  MatCreate_SeqDense);
112:   MatRegisterDynamic(MATDENSE,     path,"MatCreate_Dense",     MatCreate_Dense);
113:   MatRegisterDynamic(MATMPIADJ,    path,"MatCreate_MPIAdj",    MatCreate_MPIAdj);
114: #if defined(PETSC_HAVE_SPOOLES) && !defined(PETSC_USE_SINGLE)
115:   MatRegisterDynamic(MATSEQAIJSPOOLES,  path,"MatCreate_SeqAIJSpooles",  MatCreate_SeqAIJSpooles);
116:   MatRegisterDynamic(MATSEQSBAIJSPOOLES,path,"MatCreate_SeqSBAIJSpooles",MatCreate_SeqSBAIJSpooles);
117:   MatRegisterDynamic(MATMPIAIJSPOOLES,  path,"MatCreate_MPIAIJSpooles",  MatCreate_MPIAIJSpooles);
118:   MatRegisterDynamic(MATMPISBAIJSPOOLES,path,"MatCreate_MPISBAIJSpooles",MatCreate_MPISBAIJSpooles);
119:   MatRegisterDynamic(MATAIJSPOOLES,  path,"MatCreate_AIJSpooles",MatCreate_AIJSpooles);
120:   MatRegisterDynamic(MATSBAIJSPOOLES,path,"MatCreate_SBAIJSpooles",MatCreate_SBAIJSpooles);
121: #endif
122: #if defined(PETSC_HAVE_SUPERLU) && !defined(PETSC_USE_SINGLE)
123:   MatRegisterDynamic(MATSUPERLU,path,"MatCreate_SuperLU",MatCreate_SuperLU);
124: #endif
125: #if defined(PETSC_HAVE_SUPERLU_DIST) && !defined(PETSC_USE_SINGLE)
126:   MatRegisterDynamic(MATSUPERLU_DIST,path,"MatCreate_SuperLU_DIST",MatCreate_SuperLU_DIST);
127: #endif
128: #if defined(PETSC_HAVE_UMFPACK) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
129:   MatRegisterDynamic(MATUMFPACK,path,"MatCreate_UMFPACK",MatCreate_UMFPACK);
130: #endif
131: #if defined(PETSC_HAVE_ESSL) && !defined(__cplusplus)
132:   MatRegisterDynamic(MATESSL,path,"MatCreate_Essl",MatCreate_Essl);
133: #endif
134: #if defined(PETSC_HAVE_LUSOL) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
135:   MatRegisterDynamic(MATLUSOL,path,"MatCreate_LUSOL",MatCreate_LUSOL);
136: #endif
137: #if defined(PETSC_HAVE_MUMPS) && !defined(PETSC_USE_SINGLE)
138:   MatRegisterDynamic(MATAIJMUMPS,  path,"MatCreate_AIJMUMPS",MatCreate_AIJMUMPS);
139:   MatRegisterDynamic(MATSBAIJMUMPS,path,"MatCreate_SBAIJMUMPS",MatCreate_SBAIJMUMPS);
140: #endif
141: #if defined(PETSC_HAVE_DSCPACK) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
142:   MatRegisterDynamic(MATDSCPACK,path,"MatCreate_DSCPACK",MatCreate_DSCPACK);
143: #endif
144: #if defined(PETSC_HAVE_MATLAB) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
145:   MatRegisterDynamic(MATMATLAB,path,"MatCreate_Matlab",MatCreate_Matlab);
146: #endif
147:   return(0);
148: }