Actual source code: matregis.c

  1: /*$Id: matregis.c,v 1.10 2001/06/21 21:16:17 bsmith Exp $*/

 3:  #include petscmat.h

  5: EXTERN_C_BEGIN
  6: EXTERN int MatCreate_MAIJ(Mat);
  7: EXTERN int MatCreate_IS(Mat);
  8: EXTERN int MatCreate_MPIRowbs(Mat);
  9: EXTERN int MatCreate_SeqAIJ(Mat);
 10: EXTERN int MatCreate_MPIAIJ(Mat);
 11: EXTERN int MatCreate_AIJ(Mat);
 12: EXTERN int MatCreate_SeqBAIJ(Mat);
 13: EXTERN int MatCreate_MPIBAIJ(Mat);
 14: EXTERN int MatCreate_BAIJ(Mat);
 15: EXTERN int MatCreate_SeqSBAIJ(Mat);
 16: EXTERN int MatCreate_MPISBAIJ(Mat);
 17: EXTERN int MatCreate_SBAIJ(Mat);
 18: EXTERN int MatCreate_SeqBDiag(Mat);
 19: EXTERN int MatCreate_MPIBDiag(Mat);
 20: EXTERN int MatCreate_BDiag(Mat);
 21: EXTERN int MatCreate_SeqDense(Mat);
 22: EXTERN int MatCreate_MPIDense(Mat);
 23: EXTERN int MatCreate_Dense(Mat);
 24: EXTERN int MatCreate_MPIAdj(Mat);
 25: EXTERN int MatCreate_Shell(Mat);
 26: #if defined(__cplusplus)
 27: EXTERN int MatCreate_ESI(Mat);
 28: EXTERN int MatCreate_PetscESI(Mat);
 29: #endif
 30: #if defined(PETSC_HAVE_SPOOLES) && !defined(PETSC_USE_SINGLE)
 31: EXTERN int MatCreate_SeqAIJSpooles(Mat);
 32: EXTERN int MatCreate_SeqSBAIJSpooles(Mat);
 33: EXTERN int MatCreate_MPIAIJSpooles(Mat);
 34: EXTERN int MatCreate_MPISBAIJSpooles(Mat);
 35: #endif
 36: #if defined(PETSC_HAVE_SUPERLU) && !defined(PETSC_USE_SINGLE)
 37: EXTERN int MatCreate_SuperLU(Mat);
 38: #endif
 39: #if defined(PETSC_HAVE_SUPERLU_DIST) && !defined(PETSC_USE_SINGLE)
 40: EXTERN int MatCreate_SuperLU_DIST(Mat);
 41: #endif
 42: #if defined(PETSC_HAVE_UMFPACK) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
 43: EXTERN int MatCreate_UMFPACK(Mat);
 44: #endif
 45: #if defined(PETSC_HAVE_ESSL) && !defined(__cplusplus)
 46: EXTERN int MatCreate_Essl(Mat);
 47: #endif
 48: #if defined(PETSC_HAVE_LUSOL) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
 49: EXTERN int MatCreate_LUSOL(Mat);
 50: #endif
 51: #if defined(PETSC_HAVE_MUMPS) && !defined(PETSC_USE_SINGLE)
 52: EXTERN int MatCreate_AIJMUMPS(Mat);
 53: EXTERN int MatCreate_SBAIJMUMPS(Mat);
 54: #endif
 55: #if defined(PETSC_HAVE_DSCPACK) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
 56: EXTERN int MatCreate_DSCPACK(Mat);
 57: #endif
 58: EXTERN_C_END
 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: int MatRegisterAll(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

 97:   MatRegisterDynamic(MATMPIAIJ,  path,"MatCreate_MPIAIJ",  MatCreate_MPIAIJ);
 98:   MatRegisterDynamic(MATSEQAIJ,  path,"MatCreate_SeqAIJ",  MatCreate_SeqAIJ);
 99:   MatRegisterDynamic(MATAIJ,     path,"MatCreate_AIJ",     MatCreate_AIJ);

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

105:   MatRegisterDynamic(MATMPISBAIJ,  path,"MatCreate_MPISBAIJ",  MatCreate_MPISBAIJ);
106:   MatRegisterDynamic(MATSEQSBAIJ,  path,"MatCreate_SeqSBAIJ",  MatCreate_SeqSBAIJ);
107:   MatRegisterDynamic(MATSBAIJ,     path,"MatCreate_SBAIJ",     MatCreate_SBAIJ);

109:   MatRegisterDynamic(MATMPIBDIAG,  path,"MatCreate_MPIBDiag",  MatCreate_MPIBDiag);
110:   MatRegisterDynamic(MATSEQBDIAG,  path,"MatCreate_SeqBDiag",  MatCreate_SeqBDiag);
111:   MatRegisterDynamic(MATBDIAG,     path,"MatCreate_BDiag",     MatCreate_BDiag);

113:   MatRegisterDynamic(MATMPIDENSE,  path,"MatCreate_MPIDense",  MatCreate_MPIDense);
114:   MatRegisterDynamic(MATSEQDENSE,  path,"MatCreate_SeqDense",  MatCreate_SeqDense);
115:   MatRegisterDynamic(MATDENSE,     path,"MatCreate_Dense",     MatCreate_Dense);

117:   MatRegisterDynamic(MATMPIADJ,    path,"MatCreate_MPIAdj",    MatCreate_MPIAdj);
118: #if defined(__cplusplus) && !defined(PETSC_USE_COMPLEX) && !defined(PETSC_USE_SINGLE) && defined(PETSC_HAVE_CXX_NAMESPACE)
119:   MatRegisterDynamic(MATESI,       path,"MatCreate_ESI",    MatCreate_ESI);
120:   MatRegisterDynamic(MATPETSCESI,  path,"MatCreate_PetscESI",    MatCreate_PetscESI);
121: #endif
122: #if defined(PETSC_HAVE_SPOOLES) && !defined(PETSC_USE_SINGLE)
123:   MatRegisterDynamic(MATSEQAIJSPOOLES,  path,"MatCreate_SeqAIJSpooles",  MatCreate_SeqAIJSpooles);
124:   MatRegisterDynamic(MATSEQSBAIJSPOOLES,path,"MatCreate_SeqSBAIJSpooles",MatCreate_SeqSBAIJSpooles);
125:   MatRegisterDynamic(MATMPIAIJSPOOLES,  path,"MatCreate_MPIAIJSpooles",  MatCreate_MPIAIJSpooles);
126:   MatRegisterDynamic(MATMPISBAIJSPOOLES,path,"MatCreate_MPISBAIJSpooles",MatCreate_MPISBAIJSpooles);
127: #endif
128: #if defined(PETSC_HAVE_SUPERLU) && !defined(PETSC_USE_SINGLE)
129:   MatRegisterDynamic(MATSUPERLU,path,"MatCreate_SuperLU",MatCreate_SuperLU);
130: #endif
131: #if defined(PETSC_HAVE_SUPERLU_DIST) && !defined(PETSC_USE_SINGLE)
132:   MatRegisterDynamic(MATSUPERLU_DIST,path,"MatCreate_SuperLU_DIST",MatCreate_SuperLU_DIST);
133: #endif
134: #if defined(PETSC_HAVE_UMFPACK) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
135:   MatRegisterDynamic(MATUMFPACK,path,"MatCreate_UMFPACK",MatCreate_UMFPACK);
136: #endif
137: #if defined(PETSC_HAVE_ESSL) && !defined(__cplusplus)
138:   MatRegisterDynamic(MATESSL,path,"MatCreate_Essl",MatCreate_Essl);
139: #endif
140: #if defined(PETSC_HAVE_LUSOL) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
141:   MatRegisterDynamic(MATLUSOL,path,"MatCreate_LUSOL",MatCreate_LUSOL);
142: #endif
143: #if defined(PETSC_HAVE_MUMPS) && !defined(PETSC_USE_SINGLE)
144:   MatRegisterDynamic(MATAIJMUMPS,  path,"MatCreate_AIJMUMPS",MatCreate_AIJMUMPS);
145:   MatRegisterDynamic(MATSBAIJMUMPS,path,"MatCreate_SBAIJMUMPS",MatCreate_SBAIJMUMPS);
146: #endif
147: #if defined(PETSC_HAVE_DSCPACK) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
148:   MatRegisterDynamic(MATDSCPACK,path,"MatCreate_DSCPACK",MatCreate_DSCPACK);
149: #endif
150:   return(0);
151: }