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: #if defined(PETSC_HAVE_MATLAB) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
 59: EXTERN int MatCreate_Matlab(Mat);
 60: #endif
 61: EXTERN_C_END
 62: 
 63: /*
 64:     This is used by MatSetType() to make sure that at least one 
 65:     MatRegisterAll() is called. In general, if there is more than one
 66:     DLL, then MatRegisterAll() may be called several times.
 67: */
 68: EXTERN PetscTruth MatRegisterAllCalled;

 72: /*@C
 73:   MatRegisterAll - Registers all of the matrix types in PETSc

 75:   Not Collective

 77:   Level: advanced

 79: .keywords: KSP, register, all

 81: .seealso:  MatRegisterDestroy()
 82: @*/
 83: int MatRegisterAll(const char path[])
 84: {

 88:   MatRegisterAllCalled = PETSC_TRUE;

 90:   MatRegisterDynamic(MATMPIMAIJ, path,"MatCreate_MAIJ",    MatCreate_MAIJ);
 91:   MatRegisterDynamic(MATSEQMAIJ, path,"MatCreate_MAIJ",    MatCreate_MAIJ);
 92:   MatRegisterDynamic(MATMAIJ,    path,"MatCreate_MAIJ",    MatCreate_MAIJ);

 94:   MatRegisterDynamic(MATIS,      path,"MatCreate_IS",      MatCreate_IS);
 95:   MatRegisterDynamic(MATSHELL,   path,"MatCreate_Shell",   MatCreate_Shell);
 96: #if defined(PETSC_HAVE_BLOCKSOLVE) && !defined(PETSC_USE_COMPLEX)
 97:   MatRegisterDynamic(MATMPIROWBS,path,"MatCreate_MPIRowbs",MatCreate_MPIRowbs);
 98: #endif

100:   MatRegisterDynamic(MATMPIAIJ,  path,"MatCreate_MPIAIJ",  MatCreate_MPIAIJ);
101:   MatRegisterDynamic(MATSEQAIJ,  path,"MatCreate_SeqAIJ",  MatCreate_SeqAIJ);
102:   MatRegisterDynamic(MATAIJ,     path,"MatCreate_AIJ",     MatCreate_AIJ);

104:   MatRegisterDynamic(MATMPIBAIJ,  path,"MatCreate_MPIBAIJ",  MatCreate_MPIBAIJ);
105:   MatRegisterDynamic(MATSEQBAIJ,  path,"MatCreate_SeqBAIJ",  MatCreate_SeqBAIJ);
106:   MatRegisterDynamic(MATBAIJ,     path,"MatCreate_BAIJ",     MatCreate_BAIJ);

108:   MatRegisterDynamic(MATMPISBAIJ,  path,"MatCreate_MPISBAIJ",  MatCreate_MPISBAIJ);
109:   MatRegisterDynamic(MATSEQSBAIJ,  path,"MatCreate_SeqSBAIJ",  MatCreate_SeqSBAIJ);
110:   MatRegisterDynamic(MATSBAIJ,     path,"MatCreate_SBAIJ",     MatCreate_SBAIJ);

112:   MatRegisterDynamic(MATMPIBDIAG,  path,"MatCreate_MPIBDiag",  MatCreate_MPIBDiag);
113:   MatRegisterDynamic(MATSEQBDIAG,  path,"MatCreate_SeqBDiag",  MatCreate_SeqBDiag);
114:   MatRegisterDynamic(MATBDIAG,     path,"MatCreate_BDiag",     MatCreate_BDiag);

116:   MatRegisterDynamic(MATMPIDENSE,  path,"MatCreate_MPIDense",  MatCreate_MPIDense);
117:   MatRegisterDynamic(MATSEQDENSE,  path,"MatCreate_SeqDense",  MatCreate_SeqDense);
118:   MatRegisterDynamic(MATDENSE,     path,"MatCreate_Dense",     MatCreate_Dense);

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