xref: /petsc/src/mat/interface/matregis.c (revision bb4d416667b8ae328469b5bb39ea7c60f219c39b)
18a95e4e9SBarry Smith 
2f7cf7585SBarry Smith #include "petscmat.h"  /*I "petscmat.h" I*/
38a95e4e9SBarry Smith 
48a95e4e9SBarry Smith EXTERN_C_BEGIN
5f7cf7585SBarry Smith EXTERN int MatCreate_MAIJ(Mat);
6186905e3SBarry Smith EXTERN int MatCreate_IS(Mat);
7273d9f13SBarry Smith EXTERN int MatCreate_MPIRowbs(Mat);
8273d9f13SBarry Smith EXTERN int MatCreate_SeqAIJ(Mat);
9273d9f13SBarry Smith EXTERN int MatCreate_MPIAIJ(Mat);
10209238afSKris Buschelman EXTERN int MatCreate_AIJ(Mat);
11273d9f13SBarry Smith EXTERN int MatCreate_SeqBAIJ(Mat);
12273d9f13SBarry Smith EXTERN int MatCreate_MPIBAIJ(Mat);
13209238afSKris Buschelman EXTERN int MatCreate_BAIJ(Mat);
14273d9f13SBarry Smith EXTERN int MatCreate_SeqSBAIJ(Mat);
15273d9f13SBarry Smith EXTERN int MatCreate_MPISBAIJ(Mat);
16209238afSKris Buschelman EXTERN int MatCreate_SBAIJ(Mat);
17273d9f13SBarry Smith EXTERN int MatCreate_SeqBDiag(Mat);
18273d9f13SBarry Smith EXTERN int MatCreate_MPIBDiag(Mat);
19209238afSKris Buschelman EXTERN int MatCreate_BDiag(Mat);
20273d9f13SBarry Smith EXTERN int MatCreate_SeqDense(Mat);
21273d9f13SBarry Smith EXTERN int MatCreate_MPIDense(Mat);
22209238afSKris Buschelman EXTERN int MatCreate_Dense(Mat);
23273d9f13SBarry Smith EXTERN int MatCreate_MPIAdj(Mat);
24273d9f13SBarry Smith EXTERN int MatCreate_Shell(Mat);
25064f8208SBarry Smith #if defined(__cplusplus)
266d88219bSBarry Smith EXTERN int MatCreate_ESI(Mat);
276d88219bSBarry Smith EXTERN int MatCreate_PetscESI(Mat);
286d88219bSBarry Smith #endif
29b3a1e11cSKris Buschelman #if defined(PETSC_HAVE_SPOOLES) && !defined(PETSC_USE_SINGLE)
30f0c56d0fSKris Buschelman EXTERN int MatCreate_SeqAIJSpooles(Mat);
31f0c56d0fSKris Buschelman EXTERN int MatCreate_SeqSBAIJSpooles(Mat);
32f0c56d0fSKris Buschelman EXTERN int MatCreate_MPIAIJSpooles(Mat);
33f0c56d0fSKris Buschelman EXTERN int MatCreate_MPISBAIJSpooles(Mat);
34*bb4d4166SHong Zhang EXTERN int MatCreate_AIJSpooles(Mat);
35*bb4d4166SHong Zhang EXTERN int MatCreate_SBAIJSpooles(Mat);
36b3a1e11cSKris Buschelman #endif
3714b396bbSKris Buschelman #if defined(PETSC_HAVE_SUPERLU) && !defined(PETSC_USE_SINGLE)
38f0c56d0fSKris Buschelman EXTERN int MatCreate_SuperLU(Mat);
3914b396bbSKris Buschelman #endif
40618c6428SHong Zhang #if defined(PETSC_HAVE_SUPERLU_DIST) && !defined(PETSC_USE_SINGLE)
41f0c56d0fSKris Buschelman EXTERN int MatCreate_SuperLU_DIST(Mat);
42448de63eSKris Buschelman #endif
431677d0b8SKris Buschelman #if defined(PETSC_HAVE_UMFPACK) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
44f0c56d0fSKris Buschelman EXTERN int MatCreate_UMFPACK(Mat);
451677d0b8SKris Buschelman #endif
46e8aa55a4SKris Buschelman #if defined(PETSC_HAVE_ESSL) && !defined(__cplusplus)
47f0c56d0fSKris Buschelman EXTERN int MatCreate_Essl(Mat);
48e8aa55a4SKris Buschelman #endif
494eb8e494SKris Buschelman #if defined(PETSC_HAVE_LUSOL) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
50f0c56d0fSKris Buschelman EXTERN int MatCreate_LUSOL(Mat);
514eb8e494SKris Buschelman #endif
52397b6df1SKris Buschelman #if defined(PETSC_HAVE_MUMPS) && !defined(PETSC_USE_SINGLE)
53f0c56d0fSKris Buschelman EXTERN int MatCreate_AIJMUMPS(Mat);
54f0c56d0fSKris Buschelman EXTERN int MatCreate_SBAIJMUMPS(Mat);
55397b6df1SKris Buschelman #endif
568da957c5SKris Buschelman #if defined(PETSC_HAVE_DSCPACK) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
57f0c56d0fSKris Buschelman EXTERN int MatCreate_DSCPACK(Mat);
588da957c5SKris Buschelman #endif
597065e2aaSKris Buschelman #if defined(PETSC_HAVE_MATLAB) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
607065e2aaSKris Buschelman EXTERN int MatCreate_Matlab(Mat);
617065e2aaSKris Buschelman #endif
628a95e4e9SBarry Smith EXTERN_C_END
638a95e4e9SBarry Smith 
648a95e4e9SBarry Smith /*
65f7cf7585SBarry Smith     This is used by MatSetType() to make sure that at least one
66f7cf7585SBarry Smith     MatRegisterAll() is called. In general, if there is more than one
67f7cf7585SBarry Smith     DLL, then MatRegisterAll() may be called several times.
688a95e4e9SBarry Smith */
69f7cf7585SBarry Smith EXTERN PetscTruth MatRegisterAllCalled;
708a95e4e9SBarry Smith 
714a2ae208SSatish Balay #undef __FUNCT__
724a2ae208SSatish Balay #define __FUNCT__ "MatRegisterAll"
738a95e4e9SBarry Smith /*@C
74f7cf7585SBarry Smith   MatRegisterAll - Registers all of the matrix types in PETSc
758a95e4e9SBarry Smith 
768a95e4e9SBarry Smith   Not Collective
778a95e4e9SBarry Smith 
788a95e4e9SBarry Smith   Level: advanced
798a95e4e9SBarry Smith 
808a95e4e9SBarry Smith .keywords: KSP, register, all
818a95e4e9SBarry Smith 
82f7cf7585SBarry Smith .seealso:  MatRegisterDestroy()
838a95e4e9SBarry Smith @*/
840e33f6ddSBarry Smith int MatRegisterAll(const char path[])
858a95e4e9SBarry Smith {
868a95e4e9SBarry Smith   int ierr;
878a95e4e9SBarry Smith 
888a95e4e9SBarry Smith   PetscFunctionBegin;
89f7cf7585SBarry Smith   MatRegisterAllCalled = PETSC_TRUE;
908a95e4e9SBarry Smith 
91f7cf7585SBarry Smith   ierr = MatRegisterDynamic(MATMPIMAIJ, path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
92b9b97703SBarry Smith   ierr = MatRegisterDynamic(MATSEQMAIJ, path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
93209238afSKris Buschelman   ierr = MatRegisterDynamic(MATMAIJ,    path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
94273d9f13SBarry Smith 
95186905e3SBarry Smith   ierr = MatRegisterDynamic(MATIS,      path,"MatCreate_IS",      MatCreate_IS);CHKERRQ(ierr);
96273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSHELL,   path,"MatCreate_Shell",   MatCreate_Shell);CHKERRQ(ierr);
975d10bc3aSBarry Smith #if defined(PETSC_HAVE_BLOCKSOLVE) && !defined(PETSC_USE_COMPLEX)
98273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIROWBS,path,"MatCreate_MPIRowbs",MatCreate_MPIRowbs);CHKERRQ(ierr);
99273d9f13SBarry Smith #endif
100273d9f13SBarry Smith 
101273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJ,  path,"MatCreate_MPIAIJ",  MatCreate_MPIAIJ);CHKERRQ(ierr);
102273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJ,  path,"MatCreate_SeqAIJ",  MatCreate_SeqAIJ);CHKERRQ(ierr);
103209238afSKris Buschelman   ierr = MatRegisterDynamic(MATAIJ,     path,"MatCreate_AIJ",     MatCreate_AIJ);CHKERRQ(ierr);
104273d9f13SBarry Smith 
105273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIBAIJ,  path,"MatCreate_MPIBAIJ",  MatCreate_MPIBAIJ);CHKERRQ(ierr);
106273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQBAIJ,  path,"MatCreate_SeqBAIJ",  MatCreate_SeqBAIJ);CHKERRQ(ierr);
107209238afSKris Buschelman   ierr = MatRegisterDynamic(MATBAIJ,     path,"MatCreate_BAIJ",     MatCreate_BAIJ);CHKERRQ(ierr);
108273d9f13SBarry Smith 
109273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPISBAIJ,  path,"MatCreate_MPISBAIJ",  MatCreate_MPISBAIJ);CHKERRQ(ierr);
110273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQSBAIJ,  path,"MatCreate_SeqSBAIJ",  MatCreate_SeqSBAIJ);CHKERRQ(ierr);
111209238afSKris Buschelman   ierr = MatRegisterDynamic(MATSBAIJ,     path,"MatCreate_SBAIJ",     MatCreate_SBAIJ);CHKERRQ(ierr);
112273d9f13SBarry Smith 
113273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIBDIAG,  path,"MatCreate_MPIBDiag",  MatCreate_MPIBDiag);CHKERRQ(ierr);
114273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQBDIAG,  path,"MatCreate_SeqBDiag",  MatCreate_SeqBDiag);CHKERRQ(ierr);
115209238afSKris Buschelman   ierr = MatRegisterDynamic(MATBDIAG,     path,"MatCreate_BDiag",     MatCreate_BDiag);CHKERRQ(ierr);
116273d9f13SBarry Smith 
117273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIDENSE,  path,"MatCreate_MPIDense",  MatCreate_MPIDense);CHKERRQ(ierr);
118273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQDENSE,  path,"MatCreate_SeqDense",  MatCreate_SeqDense);CHKERRQ(ierr);
119209238afSKris Buschelman   ierr = MatRegisterDynamic(MATDENSE,     path,"MatCreate_Dense",     MatCreate_Dense);CHKERRQ(ierr);
120273d9f13SBarry Smith 
121273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIADJ,    path,"MatCreate_MPIAdj",    MatCreate_MPIAdj);CHKERRQ(ierr);
122c7cd70f7SSatish Balay #if defined(__cplusplus) && !defined(PETSC_USE_COMPLEX) && !defined(PETSC_USE_SINGLE) && defined(PETSC_HAVE_CXX_NAMESPACE)
1236d88219bSBarry Smith   ierr = MatRegisterDynamic(MATESI,       path,"MatCreate_ESI",    MatCreate_ESI);CHKERRQ(ierr);
1246d88219bSBarry Smith   ierr = MatRegisterDynamic(MATPETSCESI,  path,"MatCreate_PetscESI",    MatCreate_PetscESI);CHKERRQ(ierr);
1256d88219bSBarry Smith #endif
126b3a1e11cSKris Buschelman #if defined(PETSC_HAVE_SPOOLES) && !defined(PETSC_USE_SINGLE)
127f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATSEQAIJSPOOLES,  path,"MatCreate_SeqAIJSpooles",  MatCreate_SeqAIJSpooles);CHKERRQ(ierr);
128f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATSEQSBAIJSPOOLES,path,"MatCreate_SeqSBAIJSpooles",MatCreate_SeqSBAIJSpooles);CHKERRQ(ierr);
129f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATMPIAIJSPOOLES,  path,"MatCreate_MPIAIJSpooles",  MatCreate_MPIAIJSpooles);CHKERRQ(ierr);
130f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATMPISBAIJSPOOLES,path,"MatCreate_MPISBAIJSpooles",MatCreate_MPISBAIJSpooles);CHKERRQ(ierr);
131*bb4d4166SHong Zhang   ierr = MatRegisterDynamic(MATAIJSPOOLES,  path,"MatCreate_AIJSpooles",MatCreate_AIJSpooles);CHKERRQ(ierr);
132*bb4d4166SHong Zhang   ierr = MatRegisterDynamic(MATSBAIJSPOOLES,path,"MatCreate_SBAIJSpooles",MatCreate_SBAIJSpooles);CHKERRQ(ierr);
133b3a1e11cSKris Buschelman #endif
13414b396bbSKris Buschelman #if defined(PETSC_HAVE_SUPERLU) && !defined(PETSC_USE_SINGLE)
135f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATSUPERLU,path,"MatCreate_SuperLU",MatCreate_SuperLU);CHKERRQ(ierr);
13614b396bbSKris Buschelman #endif
137618c6428SHong Zhang #if defined(PETSC_HAVE_SUPERLU_DIST) && !defined(PETSC_USE_SINGLE)
138f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATSUPERLU_DIST,path,"MatCreate_SuperLU_DIST",MatCreate_SuperLU_DIST);CHKERRQ(ierr);
139448de63eSKris Buschelman #endif
1401677d0b8SKris Buschelman #if defined(PETSC_HAVE_UMFPACK) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
141f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATUMFPACK,path,"MatCreate_UMFPACK",MatCreate_UMFPACK);CHKERRQ(ierr);
1421677d0b8SKris Buschelman #endif
143e8aa55a4SKris Buschelman #if defined(PETSC_HAVE_ESSL) && !defined(__cplusplus)
144f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATESSL,path,"MatCreate_Essl",MatCreate_Essl);CHKERRQ(ierr);
145e8aa55a4SKris Buschelman #endif
1464eb8e494SKris Buschelman #if defined(PETSC_HAVE_LUSOL) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
147f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATLUSOL,path,"MatCreate_LUSOL",MatCreate_LUSOL);CHKERRQ(ierr);
1484eb8e494SKris Buschelman #endif
149397b6df1SKris Buschelman #if defined(PETSC_HAVE_MUMPS) && !defined(PETSC_USE_SINGLE)
150123bf89aSSatish Balay   ierr = MatRegisterDynamic(MATAIJMUMPS,  path,"MatCreate_AIJMUMPS",MatCreate_AIJMUMPS);CHKERRQ(ierr);
151123bf89aSSatish Balay   ierr = MatRegisterDynamic(MATSBAIJMUMPS,path,"MatCreate_SBAIJMUMPS",MatCreate_SBAIJMUMPS);CHKERRQ(ierr);
152397b6df1SKris Buschelman #endif
1538da957c5SKris Buschelman #if defined(PETSC_HAVE_DSCPACK) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
154f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATDSCPACK,path,"MatCreate_DSCPACK",MatCreate_DSCPACK);CHKERRQ(ierr);
1558da957c5SKris Buschelman #endif
1567065e2aaSKris Buschelman #if defined(PETSC_HAVE_MATLAB) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
1577065e2aaSKris Buschelman   ierr = MatRegisterDynamic(MATMATLAB,path,"MatCreate_Matlab",MatCreate_Matlab);CHKERRQ(ierr);
1587065e2aaSKris Buschelman #endif
1598a95e4e9SBarry Smith   PetscFunctionReturn(0);
1608a95e4e9SBarry Smith }
161f7cf7585SBarry Smith 
1623a7fca6bSBarry Smith 
163