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