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