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