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: }