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