xref: /petsc/src/mat/interface/matregis.c (revision 958c9bcce270cdc364c8832dcd56bbb1c4a38e24)
1 
2 #include "petscmat.h"  /*I "petscmat.h" I*/
3 
4 EXTERN_C_BEGIN
5 EXTERN int MatCreate_MAIJ(Mat);
6 EXTERN int MatCreate_IS(Mat);
7 EXTERN int MatCreate_MPIRowbs(Mat);
8 EXTERN int MatCreate_SeqAIJ(Mat);
9 EXTERN int MatCreate_MPIAIJ(Mat);
10 EXTERN int MatCreate_AIJ(Mat);
11 EXTERN int MatCreate_SeqBAIJ(Mat);
12 EXTERN int MatCreate_MPIBAIJ(Mat);
13 EXTERN int MatCreate_BAIJ(Mat);
14 EXTERN int MatCreate_SeqSBAIJ(Mat);
15 EXTERN int MatCreate_MPISBAIJ(Mat);
16 EXTERN int MatCreate_SBAIJ(Mat);
17 EXTERN int MatCreate_SeqBDiag(Mat);
18 EXTERN int MatCreate_MPIBDiag(Mat);
19 EXTERN int MatCreate_BDiag(Mat);
20 EXTERN int MatCreate_SeqDense(Mat);
21 EXTERN int MatCreate_MPIDense(Mat);
22 EXTERN int MatCreate_Dense(Mat);
23 EXTERN int MatCreate_MPIAdj(Mat);
24 EXTERN int MatCreate_Shell(Mat);
25 #if defined(__cplusplus)
26 EXTERN int MatCreate_ESI(Mat);
27 EXTERN int MatCreate_PetscESI(Mat);
28 #endif
29 #if defined(PETSC_HAVE_SPOOLES) && !defined(PETSC_USE_SINGLE)
30 EXTERN int MatCreate_SeqAIJSpooles(Mat);
31 EXTERN int MatCreate_SeqSBAIJSpooles(Mat);
32 EXTERN int MatCreate_MPIAIJSpooles(Mat);
33 EXTERN int MatCreate_MPISBAIJSpooles(Mat);
34 EXTERN int MatCreate_AIJSpooles(Mat);
35 EXTERN int MatCreate_SBAIJSpooles(Mat);
36 #endif
37 #if defined(PETSC_HAVE_SUPERLU) && !defined(PETSC_USE_SINGLE)
38 EXTERN int MatCreate_SuperLU(Mat);
39 #endif
40 #if defined(PETSC_HAVE_SUPERLU_DIST) && !defined(PETSC_USE_SINGLE)
41 EXTERN int MatCreate_SuperLU_DIST(Mat);
42 #endif
43 #if defined(PETSC_HAVE_UMFPACK) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
44 EXTERN int MatCreate_UMFPACK(Mat);
45 #endif
46 #if defined(PETSC_HAVE_ESSL) && !defined(__cplusplus)
47 EXTERN int MatCreate_Essl(Mat);
48 #endif
49 #if defined(PETSC_HAVE_LUSOL) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
50 EXTERN int MatCreate_LUSOL(Mat);
51 #endif
52 #if defined(PETSC_HAVE_MUMPS) && !defined(PETSC_USE_SINGLE)
53 EXTERN int MatCreate_AIJMUMPS(Mat);
54 EXTERN int MatCreate_SBAIJMUMPS(Mat);
55 #endif
56 #if defined(PETSC_HAVE_DSCPACK) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
57 EXTERN int MatCreate_DSCPACK(Mat);
58 #endif
59 #if defined(PETSC_HAVE_MATLAB) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
60 EXTERN int MatCreate_Matlab(Mat);
61 #endif
62 EXTERN_C_END
63 
64 /*
65     This is used by MatSetType() to make sure that at least one
66     MatRegisterAll() is called. In general, if there is more than one
67     DLL, then MatRegisterAll() may be called several times.
68 */
69 EXTERN PetscTruth MatRegisterAllCalled;
70 
71 #undef __FUNCT__
72 #define __FUNCT__ "MatRegisterAll"
73 /*@C
74   MatRegisterAll - Registers all of the matrix types in PETSc
75 
76   Not Collective
77 
78   Level: advanced
79 
80 .keywords: KSP, register, all
81 
82 .seealso:  MatRegisterDestroy()
83 @*/
84 int MatRegisterAll(const char path[])
85 {
86   int ierr;
87 
88   PetscFunctionBegin;
89   MatRegisterAllCalled = PETSC_TRUE;
90 
91   ierr = MatRegisterDynamic(MATMPIMAIJ, path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
92   ierr = MatRegisterDynamic(MATSEQMAIJ, path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
93   ierr = MatRegisterDynamic(MATMAIJ,    path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
94 
95   ierr = MatRegisterDynamic(MATIS,      path,"MatCreate_IS",      MatCreate_IS);CHKERRQ(ierr);
96   ierr = MatRegisterDynamic(MATSHELL,   path,"MatCreate_Shell",   MatCreate_Shell);CHKERRQ(ierr);
97 #if defined(PETSC_HAVE_BLOCKSOLVE) && !defined(PETSC_USE_COMPLEX)
98   ierr = MatRegisterDynamic(MATMPIROWBS,path,"MatCreate_MPIRowbs",MatCreate_MPIRowbs);CHKERRQ(ierr);
99 #endif
100 
101   ierr = MatRegisterDynamic(MATMPIAIJ,  path,"MatCreate_MPIAIJ",  MatCreate_MPIAIJ);CHKERRQ(ierr);
102   ierr = MatRegisterDynamic(MATSEQAIJ,  path,"MatCreate_SeqAIJ",  MatCreate_SeqAIJ);CHKERRQ(ierr);
103   ierr = MatRegisterDynamic(MATAIJ,     path,"MatCreate_AIJ",     MatCreate_AIJ);CHKERRQ(ierr);
104 
105   ierr = MatRegisterDynamic(MATMPIBAIJ,  path,"MatCreate_MPIBAIJ",  MatCreate_MPIBAIJ);CHKERRQ(ierr);
106   ierr = MatRegisterDynamic(MATSEQBAIJ,  path,"MatCreate_SeqBAIJ",  MatCreate_SeqBAIJ);CHKERRQ(ierr);
107   ierr = MatRegisterDynamic(MATBAIJ,     path,"MatCreate_BAIJ",     MatCreate_BAIJ);CHKERRQ(ierr);
108 
109   ierr = MatRegisterDynamic(MATMPISBAIJ,  path,"MatCreate_MPISBAIJ",  MatCreate_MPISBAIJ);CHKERRQ(ierr);
110   ierr = MatRegisterDynamic(MATSEQSBAIJ,  path,"MatCreate_SeqSBAIJ",  MatCreate_SeqSBAIJ);CHKERRQ(ierr);
111   ierr = MatRegisterDynamic(MATSBAIJ,     path,"MatCreate_SBAIJ",     MatCreate_SBAIJ);CHKERRQ(ierr);
112 
113   ierr = MatRegisterDynamic(MATMPIBDIAG,  path,"MatCreate_MPIBDiag",  MatCreate_MPIBDiag);CHKERRQ(ierr);
114   ierr = MatRegisterDynamic(MATSEQBDIAG,  path,"MatCreate_SeqBDiag",  MatCreate_SeqBDiag);CHKERRQ(ierr);
115   ierr = MatRegisterDynamic(MATBDIAG,     path,"MatCreate_BDiag",     MatCreate_BDiag);CHKERRQ(ierr);
116 
117   ierr = MatRegisterDynamic(MATMPIDENSE,  path,"MatCreate_MPIDense",  MatCreate_MPIDense);CHKERRQ(ierr);
118   ierr = MatRegisterDynamic(MATSEQDENSE,  path,"MatCreate_SeqDense",  MatCreate_SeqDense);CHKERRQ(ierr);
119   ierr = MatRegisterDynamic(MATDENSE,     path,"MatCreate_Dense",     MatCreate_Dense);CHKERRQ(ierr);
120 
121   ierr = MatRegisterDynamic(MATMPIADJ,    path,"MatCreate_MPIAdj",    MatCreate_MPIAdj);CHKERRQ(ierr);
122 #if defined(__cplusplus) && !defined(PETSC_USE_COMPLEX) && !defined(PETSC_USE_SINGLE) && defined(PETSC_HAVE_CXX_NAMESPACE)
123   ierr = MatRegisterDynamic(MATESI,       path,"MatCreate_ESI",    MatCreate_ESI);CHKERRQ(ierr);
124   ierr = MatRegisterDynamic(MATPETSCESI,  path,"MatCreate_PetscESI",    MatCreate_PetscESI);CHKERRQ(ierr);
125 #endif
126 #if defined(PETSC_HAVE_SPOOLES) && !defined(PETSC_USE_SINGLE)
127   ierr = MatRegisterDynamic(MATSEQAIJSPOOLES,  path,"MatCreate_SeqAIJSpooles",  MatCreate_SeqAIJSpooles);CHKERRQ(ierr);
128   ierr = MatRegisterDynamic(MATSEQSBAIJSPOOLES,path,"MatCreate_SeqSBAIJSpooles",MatCreate_SeqSBAIJSpooles);CHKERRQ(ierr);
129   ierr = MatRegisterDynamic(MATMPIAIJSPOOLES,  path,"MatCreate_MPIAIJSpooles",  MatCreate_MPIAIJSpooles);CHKERRQ(ierr);
130   ierr = MatRegisterDynamic(MATMPISBAIJSPOOLES,path,"MatCreate_MPISBAIJSpooles",MatCreate_MPISBAIJSpooles);CHKERRQ(ierr);
131   ierr = MatRegisterDynamic(MATAIJSPOOLES,  path,"MatCreate_AIJSpooles",MatCreate_AIJSpooles);CHKERRQ(ierr);
132   ierr = MatRegisterDynamic(MATSBAIJSPOOLES,path,"MatCreate_SBAIJSpooles",MatCreate_SBAIJSpooles);CHKERRQ(ierr);
133 #endif
134 #if defined(PETSC_HAVE_SUPERLU) && !defined(PETSC_USE_SINGLE)
135   ierr = MatRegisterDynamic(MATSUPERLU,path,"MatCreate_SuperLU",MatCreate_SuperLU);CHKERRQ(ierr);
136 #endif
137 #if defined(PETSC_HAVE_SUPERLU_DIST) && !defined(PETSC_USE_SINGLE)
138   ierr = MatRegisterDynamic(MATSUPERLU_DIST,path,"MatCreate_SuperLU_DIST",MatCreate_SuperLU_DIST);CHKERRQ(ierr);
139 #endif
140 #if defined(PETSC_HAVE_UMFPACK) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
141   ierr = MatRegisterDynamic(MATUMFPACK,path,"MatCreate_UMFPACK",MatCreate_UMFPACK);CHKERRQ(ierr);
142 #endif
143 #if defined(PETSC_HAVE_ESSL) && !defined(__cplusplus)
144   ierr = MatRegisterDynamic(MATESSL,path,"MatCreate_Essl",MatCreate_Essl);CHKERRQ(ierr);
145 #endif
146 #if defined(PETSC_HAVE_LUSOL) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
147   ierr = MatRegisterDynamic(MATLUSOL,path,"MatCreate_LUSOL",MatCreate_LUSOL);CHKERRQ(ierr);
148 #endif
149 #if defined(PETSC_HAVE_MUMPS) && !defined(PETSC_USE_SINGLE)
150   ierr = MatRegisterDynamic(MATAIJMUMPS,  path,"MatCreate_AIJMUMPS",MatCreate_AIJMUMPS);CHKERRQ(ierr);
151   ierr = MatRegisterDynamic(MATSBAIJMUMPS,path,"MatCreate_SBAIJMUMPS",MatCreate_SBAIJMUMPS);CHKERRQ(ierr);
152 #endif
153 #if defined(PETSC_HAVE_DSCPACK) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
154   ierr = MatRegisterDynamic(MATDSCPACK,path,"MatCreate_DSCPACK",MatCreate_DSCPACK);CHKERRQ(ierr);
155 #endif
156 #if defined(PETSC_HAVE_MATLAB) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
157   ierr = MatRegisterDynamic(MATMATLAB,path,"MatCreate_Matlab",MatCreate_Matlab);CHKERRQ(ierr);
158 #endif
159   PetscFunctionReturn(0);
160 }
161 
162 
163