xref: /petsc/src/mat/interface/matregis.c (revision 8eb2139f285127b90816fa224279e30dd84c25c8)
1 /*$Id: matregis.c,v 1.10 2001/06/21 21:16:17 bsmith Exp $*/
2 
3 #include "petscmat.h"  /*I "petscmat.h" I*/
4 
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;
69 
70 #undef __FUNCT__
71 #define __FUNCT__ "MatRegisterAll"
72 /*@C
73   MatRegisterAll - Registers all of the matrix types in PETSc
74 
75   Not Collective
76 
77   Level: advanced
78 
79 .keywords: KSP, register, all
80 
81 .seealso:  MatRegisterDestroy()
82 @*/
83 int MatRegisterAll(const char path[])
84 {
85   int ierr;
86 
87   PetscFunctionBegin;
88   MatRegisterAllCalled = PETSC_TRUE;
89 
90   ierr = MatRegisterDynamic(MATMPIMAIJ, path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
91   ierr = MatRegisterDynamic(MATSEQMAIJ, path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
92   ierr = MatRegisterDynamic(MATMAIJ,    path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
93 
94   ierr = MatRegisterDynamic(MATIS,      path,"MatCreate_IS",      MatCreate_IS);CHKERRQ(ierr);
95   ierr = MatRegisterDynamic(MATSHELL,   path,"MatCreate_Shell",   MatCreate_Shell);CHKERRQ(ierr);
96 #if defined(PETSC_HAVE_BLOCKSOLVE) && !defined(PETSC_USE_COMPLEX)
97   ierr = MatRegisterDynamic(MATMPIROWBS,path,"MatCreate_MPIRowbs",MatCreate_MPIRowbs);CHKERRQ(ierr);
98 #endif
99 
100   ierr = MatRegisterDynamic(MATMPIAIJ,  path,"MatCreate_MPIAIJ",  MatCreate_MPIAIJ);CHKERRQ(ierr);
101   ierr = MatRegisterDynamic(MATSEQAIJ,  path,"MatCreate_SeqAIJ",  MatCreate_SeqAIJ);CHKERRQ(ierr);
102   ierr = MatRegisterDynamic(MATAIJ,     path,"MatCreate_AIJ",     MatCreate_AIJ);CHKERRQ(ierr);
103 
104   ierr = MatRegisterDynamic(MATMPIBAIJ,  path,"MatCreate_MPIBAIJ",  MatCreate_MPIBAIJ);CHKERRQ(ierr);
105   ierr = MatRegisterDynamic(MATSEQBAIJ,  path,"MatCreate_SeqBAIJ",  MatCreate_SeqBAIJ);CHKERRQ(ierr);
106   ierr = MatRegisterDynamic(MATBAIJ,     path,"MatCreate_BAIJ",     MatCreate_BAIJ);CHKERRQ(ierr);
107 
108   ierr = MatRegisterDynamic(MATMPISBAIJ,  path,"MatCreate_MPISBAIJ",  MatCreate_MPISBAIJ);CHKERRQ(ierr);
109   ierr = MatRegisterDynamic(MATSEQSBAIJ,  path,"MatCreate_SeqSBAIJ",  MatCreate_SeqSBAIJ);CHKERRQ(ierr);
110   ierr = MatRegisterDynamic(MATSBAIJ,     path,"MatCreate_SBAIJ",     MatCreate_SBAIJ);CHKERRQ(ierr);
111 
112   ierr = MatRegisterDynamic(MATMPIBDIAG,  path,"MatCreate_MPIBDiag",  MatCreate_MPIBDiag);CHKERRQ(ierr);
113   ierr = MatRegisterDynamic(MATSEQBDIAG,  path,"MatCreate_SeqBDiag",  MatCreate_SeqBDiag);CHKERRQ(ierr);
114   ierr = MatRegisterDynamic(MATBDIAG,     path,"MatCreate_BDiag",     MatCreate_BDiag);CHKERRQ(ierr);
115 
116   ierr = MatRegisterDynamic(MATMPIDENSE,  path,"MatCreate_MPIDense",  MatCreate_MPIDense);CHKERRQ(ierr);
117   ierr = MatRegisterDynamic(MATSEQDENSE,  path,"MatCreate_SeqDense",  MatCreate_SeqDense);CHKERRQ(ierr);
118   ierr = MatRegisterDynamic(MATDENSE,     path,"MatCreate_Dense",     MatCreate_Dense);CHKERRQ(ierr);
119 
120   ierr = MatRegisterDynamic(MATMPIADJ,    path,"MatCreate_MPIAdj",    MatCreate_MPIAdj);CHKERRQ(ierr);
121 #if defined(__cplusplus) && !defined(PETSC_USE_COMPLEX) && !defined(PETSC_USE_SINGLE) && defined(PETSC_HAVE_CXX_NAMESPACE)
122   ierr = MatRegisterDynamic(MATESI,       path,"MatCreate_ESI",    MatCreate_ESI);CHKERRQ(ierr);
123   ierr = MatRegisterDynamic(MATPETSCESI,  path,"MatCreate_PetscESI",    MatCreate_PetscESI);CHKERRQ(ierr);
124 #endif
125 #if defined(PETSC_HAVE_SPOOLES) && !defined(PETSC_USE_SINGLE)
126   ierr = MatRegisterDynamic(MATSEQAIJSPOOLES,  path,"MatCreate_SeqAIJSpooles",  MatCreate_SeqAIJSpooles);CHKERRQ(ierr);
127   ierr = MatRegisterDynamic(MATSEQSBAIJSPOOLES,path,"MatCreate_SeqSBAIJSpooles",MatCreate_SeqSBAIJSpooles);CHKERRQ(ierr);
128   ierr = MatRegisterDynamic(MATMPIAIJSPOOLES,  path,"MatCreate_MPIAIJSpooles",  MatCreate_MPIAIJSpooles);CHKERRQ(ierr);
129   ierr = MatRegisterDynamic(MATMPISBAIJSPOOLES,path,"MatCreate_MPISBAIJSpooles",MatCreate_MPISBAIJSpooles);CHKERRQ(ierr);
130 #endif
131 #if defined(PETSC_HAVE_SUPERLU) && !defined(PETSC_USE_SINGLE)
132   ierr = MatRegisterDynamic(MATSUPERLU,path,"MatCreate_SuperLU",MatCreate_SuperLU);CHKERRQ(ierr);
133 #endif
134 #if defined(PETSC_HAVE_SUPERLU_DIST) && !defined(PETSC_USE_SINGLE)
135   ierr = MatRegisterDynamic(MATSUPERLU_DIST,path,"MatCreate_SuperLU_DIST",MatCreate_SuperLU_DIST);CHKERRQ(ierr);
136 #endif
137 #if defined(PETSC_HAVE_UMFPACK) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
138   ierr = MatRegisterDynamic(MATUMFPACK,path,"MatCreate_UMFPACK",MatCreate_UMFPACK);CHKERRQ(ierr);
139 #endif
140 #if defined(PETSC_HAVE_ESSL) && !defined(__cplusplus)
141   ierr = MatRegisterDynamic(MATESSL,path,"MatCreate_Essl",MatCreate_Essl);CHKERRQ(ierr);
142 #endif
143 #if defined(PETSC_HAVE_LUSOL) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
144   ierr = MatRegisterDynamic(MATLUSOL,path,"MatCreate_LUSOL",MatCreate_LUSOL);CHKERRQ(ierr);
145 #endif
146 #if defined(PETSC_HAVE_MUMPS) && !defined(PETSC_USE_SINGLE)
147   ierr = MatRegisterDynamic(MATAIJMUMPS,  path,"MatCreate_AIJMUMPS",MatCreate_AIJMUMPS);CHKERRQ(ierr);
148   ierr = MatRegisterDynamic(MATSBAIJMUMPS,path,"MatCreate_SBAIJMUMPS",MatCreate_SBAIJMUMPS);CHKERRQ(ierr);
149 #endif
150 #if defined(PETSC_HAVE_DSCPACK) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
151   ierr = MatRegisterDynamic(MATDSCPACK,path,"MatCreate_DSCPACK",MatCreate_DSCPACK);CHKERRQ(ierr);
152 #endif
153 #if defined(PETSC_HAVE_MATLAB) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
154   ierr = MatRegisterDynamic(MATMATLAB,path,"MatCreate_Matlab",MatCreate_Matlab);CHKERRQ(ierr);
155 #endif
156   PetscFunctionReturn(0);
157 }
158 
159 
160