xref: /petsc/src/mat/interface/matregis.c (revision 0e33f6dd3f48849e1634e838cc80c84f3a650220)
173f4d377SMatthew Knepley /*$Id: matregis.c,v 1.10 2001/06/21 21:16:17 bsmith Exp $*/
28a95e4e9SBarry Smith 
3f7cf7585SBarry Smith #include "petscmat.h"  /*I "petscmat.h" I*/
48a95e4e9SBarry Smith 
58a95e4e9SBarry Smith EXTERN_C_BEGIN
6f7cf7585SBarry Smith EXTERN int MatCreate_MAIJ(Mat);
7186905e3SBarry Smith EXTERN int MatCreate_IS(Mat);
8273d9f13SBarry Smith EXTERN int MatCreate_MPIRowbs(Mat);
9273d9f13SBarry Smith EXTERN int MatCreate_SeqAIJ(Mat);
10273d9f13SBarry Smith EXTERN int MatCreate_MPIAIJ(Mat);
11209238afSKris Buschelman EXTERN int MatCreate_AIJ(Mat);
12273d9f13SBarry Smith EXTERN int MatCreate_SeqBAIJ(Mat);
13273d9f13SBarry Smith EXTERN int MatCreate_MPIBAIJ(Mat);
14209238afSKris Buschelman EXTERN int MatCreate_BAIJ(Mat);
15273d9f13SBarry Smith EXTERN int MatCreate_SeqSBAIJ(Mat);
16273d9f13SBarry Smith EXTERN int MatCreate_MPISBAIJ(Mat);
17209238afSKris Buschelman EXTERN int MatCreate_SBAIJ(Mat);
18273d9f13SBarry Smith EXTERN int MatCreate_SeqBDiag(Mat);
19273d9f13SBarry Smith EXTERN int MatCreate_MPIBDiag(Mat);
20209238afSKris Buschelman EXTERN int MatCreate_BDiag(Mat);
21273d9f13SBarry Smith EXTERN int MatCreate_SeqDense(Mat);
22273d9f13SBarry Smith EXTERN int MatCreate_MPIDense(Mat);
23209238afSKris Buschelman EXTERN int MatCreate_Dense(Mat);
24273d9f13SBarry Smith EXTERN int MatCreate_MPIAdj(Mat);
25273d9f13SBarry Smith EXTERN int MatCreate_Shell(Mat);
26064f8208SBarry Smith #if defined(__cplusplus)
276d88219bSBarry Smith EXTERN int MatCreate_ESI(Mat);
286d88219bSBarry Smith EXTERN int MatCreate_PetscESI(Mat);
296d88219bSBarry Smith #endif
30b3a1e11cSKris Buschelman #if defined(PETSC_HAVE_SPOOLES) && !defined(PETSC_USE_SINGLE)
31f0c56d0fSKris Buschelman EXTERN int MatCreate_SeqAIJSpooles(Mat);
32f0c56d0fSKris Buschelman EXTERN int MatCreate_SeqSBAIJSpooles(Mat);
33f0c56d0fSKris Buschelman EXTERN int MatCreate_MPIAIJSpooles(Mat);
34f0c56d0fSKris Buschelman EXTERN int MatCreate_MPISBAIJSpooles(Mat);
35b3a1e11cSKris Buschelman #endif
3614b396bbSKris Buschelman #if defined(PETSC_HAVE_SUPERLU) && !defined(PETSC_USE_SINGLE)
37f0c56d0fSKris Buschelman EXTERN int MatCreate_SuperLU(Mat);
3814b396bbSKris Buschelman #endif
39618c6428SHong Zhang #if defined(PETSC_HAVE_SUPERLU_DIST) && !defined(PETSC_USE_SINGLE)
40f0c56d0fSKris Buschelman EXTERN int MatCreate_SuperLU_DIST(Mat);
41448de63eSKris Buschelman #endif
421677d0b8SKris Buschelman #if defined(PETSC_HAVE_UMFPACK) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
43f0c56d0fSKris Buschelman EXTERN int MatCreate_UMFPACK(Mat);
441677d0b8SKris Buschelman #endif
45e8aa55a4SKris Buschelman #if defined(PETSC_HAVE_ESSL) && !defined(__cplusplus)
46f0c56d0fSKris Buschelman EXTERN int MatCreate_Essl(Mat);
47e8aa55a4SKris Buschelman #endif
484eb8e494SKris Buschelman #if defined(PETSC_HAVE_LUSOL) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
49f0c56d0fSKris Buschelman EXTERN int MatCreate_LUSOL(Mat);
504eb8e494SKris Buschelman #endif
51397b6df1SKris Buschelman #if defined(PETSC_HAVE_MUMPS) && !defined(PETSC_USE_SINGLE)
52f0c56d0fSKris Buschelman EXTERN int MatCreate_AIJMUMPS(Mat);
53f0c56d0fSKris Buschelman EXTERN int MatCreate_SBAIJMUMPS(Mat);
54397b6df1SKris Buschelman #endif
558da957c5SKris Buschelman #if defined(PETSC_HAVE_DSCPACK) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
56f0c56d0fSKris Buschelman EXTERN int MatCreate_DSCPACK(Mat);
578da957c5SKris Buschelman #endif
588a95e4e9SBarry Smith EXTERN_C_END
598a95e4e9SBarry Smith 
608a95e4e9SBarry Smith /*
61f7cf7585SBarry Smith     This is used by MatSetType() to make sure that at least one
62f7cf7585SBarry Smith     MatRegisterAll() is called. In general, if there is more than one
63f7cf7585SBarry Smith     DLL, then MatRegisterAll() may be called several times.
648a95e4e9SBarry Smith */
65f7cf7585SBarry Smith EXTERN PetscTruth MatRegisterAllCalled;
668a95e4e9SBarry Smith 
674a2ae208SSatish Balay #undef __FUNCT__
684a2ae208SSatish Balay #define __FUNCT__ "MatRegisterAll"
698a95e4e9SBarry Smith /*@C
70f7cf7585SBarry Smith   MatRegisterAll - Registers all of the matrix types in PETSc
718a95e4e9SBarry Smith 
728a95e4e9SBarry Smith   Not Collective
738a95e4e9SBarry Smith 
748a95e4e9SBarry Smith   Level: advanced
758a95e4e9SBarry Smith 
768a95e4e9SBarry Smith .keywords: KSP, register, all
778a95e4e9SBarry Smith 
78f7cf7585SBarry Smith .seealso:  MatRegisterDestroy()
798a95e4e9SBarry Smith @*/
80*0e33f6ddSBarry Smith int MatRegisterAll(const char path[])
818a95e4e9SBarry Smith {
828a95e4e9SBarry Smith   int ierr;
838a95e4e9SBarry Smith 
848a95e4e9SBarry Smith   PetscFunctionBegin;
85f7cf7585SBarry Smith   MatRegisterAllCalled = PETSC_TRUE;
868a95e4e9SBarry Smith 
87f7cf7585SBarry Smith   ierr = MatRegisterDynamic(MATMPIMAIJ, path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
88b9b97703SBarry Smith   ierr = MatRegisterDynamic(MATSEQMAIJ, path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
89209238afSKris Buschelman   ierr = MatRegisterDynamic(MATMAIJ,    path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
90273d9f13SBarry Smith 
91186905e3SBarry Smith   ierr = MatRegisterDynamic(MATIS,      path,"MatCreate_IS",      MatCreate_IS);CHKERRQ(ierr);
92273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSHELL,   path,"MatCreate_Shell",   MatCreate_Shell);CHKERRQ(ierr);
935d10bc3aSBarry Smith #if defined(PETSC_HAVE_BLOCKSOLVE) && !defined(PETSC_USE_COMPLEX)
94273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIROWBS,path,"MatCreate_MPIRowbs",MatCreate_MPIRowbs);CHKERRQ(ierr);
95273d9f13SBarry Smith #endif
96273d9f13SBarry Smith 
97273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJ,  path,"MatCreate_MPIAIJ",  MatCreate_MPIAIJ);CHKERRQ(ierr);
98273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJ,  path,"MatCreate_SeqAIJ",  MatCreate_SeqAIJ);CHKERRQ(ierr);
99209238afSKris Buschelman   ierr = MatRegisterDynamic(MATAIJ,     path,"MatCreate_AIJ",     MatCreate_AIJ);CHKERRQ(ierr);
100273d9f13SBarry Smith 
101273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIBAIJ,  path,"MatCreate_MPIBAIJ",  MatCreate_MPIBAIJ);CHKERRQ(ierr);
102273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQBAIJ,  path,"MatCreate_SeqBAIJ",  MatCreate_SeqBAIJ);CHKERRQ(ierr);
103209238afSKris Buschelman   ierr = MatRegisterDynamic(MATBAIJ,     path,"MatCreate_BAIJ",     MatCreate_BAIJ);CHKERRQ(ierr);
104273d9f13SBarry Smith 
105273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPISBAIJ,  path,"MatCreate_MPISBAIJ",  MatCreate_MPISBAIJ);CHKERRQ(ierr);
106273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQSBAIJ,  path,"MatCreate_SeqSBAIJ",  MatCreate_SeqSBAIJ);CHKERRQ(ierr);
107209238afSKris Buschelman   ierr = MatRegisterDynamic(MATSBAIJ,     path,"MatCreate_SBAIJ",     MatCreate_SBAIJ);CHKERRQ(ierr);
108273d9f13SBarry Smith 
109273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIBDIAG,  path,"MatCreate_MPIBDiag",  MatCreate_MPIBDiag);CHKERRQ(ierr);
110273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQBDIAG,  path,"MatCreate_SeqBDiag",  MatCreate_SeqBDiag);CHKERRQ(ierr);
111209238afSKris Buschelman   ierr = MatRegisterDynamic(MATBDIAG,     path,"MatCreate_BDiag",     MatCreate_BDiag);CHKERRQ(ierr);
112273d9f13SBarry Smith 
113273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIDENSE,  path,"MatCreate_MPIDense",  MatCreate_MPIDense);CHKERRQ(ierr);
114273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQDENSE,  path,"MatCreate_SeqDense",  MatCreate_SeqDense);CHKERRQ(ierr);
115209238afSKris Buschelman   ierr = MatRegisterDynamic(MATDENSE,     path,"MatCreate_Dense",     MatCreate_Dense);CHKERRQ(ierr);
116273d9f13SBarry Smith 
117273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIADJ,    path,"MatCreate_MPIAdj",    MatCreate_MPIAdj);CHKERRQ(ierr);
118c7cd70f7SSatish Balay #if defined(__cplusplus) && !defined(PETSC_USE_COMPLEX) && !defined(PETSC_USE_SINGLE) && defined(PETSC_HAVE_CXX_NAMESPACE)
1196d88219bSBarry Smith   ierr = MatRegisterDynamic(MATESI,       path,"MatCreate_ESI",    MatCreate_ESI);CHKERRQ(ierr);
1206d88219bSBarry Smith   ierr = MatRegisterDynamic(MATPETSCESI,  path,"MatCreate_PetscESI",    MatCreate_PetscESI);CHKERRQ(ierr);
1216d88219bSBarry Smith #endif
122b3a1e11cSKris Buschelman #if defined(PETSC_HAVE_SPOOLES) && !defined(PETSC_USE_SINGLE)
123f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATSEQAIJSPOOLES,  path,"MatCreate_SeqAIJSpooles",  MatCreate_SeqAIJSpooles);CHKERRQ(ierr);
124f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATSEQSBAIJSPOOLES,path,"MatCreate_SeqSBAIJSpooles",MatCreate_SeqSBAIJSpooles);CHKERRQ(ierr);
125f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATMPIAIJSPOOLES,  path,"MatCreate_MPIAIJSpooles",  MatCreate_MPIAIJSpooles);CHKERRQ(ierr);
126f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATMPISBAIJSPOOLES,path,"MatCreate_MPISBAIJSpooles",MatCreate_MPISBAIJSpooles);CHKERRQ(ierr);
127b3a1e11cSKris Buschelman #endif
12814b396bbSKris Buschelman #if defined(PETSC_HAVE_SUPERLU) && !defined(PETSC_USE_SINGLE)
129f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATSUPERLU,path,"MatCreate_SuperLU",MatCreate_SuperLU);CHKERRQ(ierr);
13014b396bbSKris Buschelman #endif
131618c6428SHong Zhang #if defined(PETSC_HAVE_SUPERLU_DIST) && !defined(PETSC_USE_SINGLE)
132f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATSUPERLU_DIST,path,"MatCreate_SuperLU_DIST",MatCreate_SuperLU_DIST);CHKERRQ(ierr);
133448de63eSKris Buschelman #endif
1341677d0b8SKris Buschelman #if defined(PETSC_HAVE_UMFPACK) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
135f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATUMFPACK,path,"MatCreate_UMFPACK",MatCreate_UMFPACK);CHKERRQ(ierr);
1361677d0b8SKris Buschelman #endif
137e8aa55a4SKris Buschelman #if defined(PETSC_HAVE_ESSL) && !defined(__cplusplus)
138f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATESSL,path,"MatCreate_Essl",MatCreate_Essl);CHKERRQ(ierr);
139e8aa55a4SKris Buschelman #endif
1404eb8e494SKris Buschelman #if defined(PETSC_HAVE_LUSOL) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
141f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATLUSOL,path,"MatCreate_LUSOL",MatCreate_LUSOL);CHKERRQ(ierr);
1424eb8e494SKris Buschelman #endif
143397b6df1SKris Buschelman #if defined(PETSC_HAVE_MUMPS) && !defined(PETSC_USE_SINGLE)
144123bf89aSSatish Balay   ierr = MatRegisterDynamic(MATAIJMUMPS,  path,"MatCreate_AIJMUMPS",MatCreate_AIJMUMPS);CHKERRQ(ierr);
145123bf89aSSatish Balay   ierr = MatRegisterDynamic(MATSBAIJMUMPS,path,"MatCreate_SBAIJMUMPS",MatCreate_SBAIJMUMPS);CHKERRQ(ierr);
146397b6df1SKris Buschelman #endif
1478da957c5SKris Buschelman #if defined(PETSC_HAVE_DSCPACK) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
148f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATDSCPACK,path,"MatCreate_DSCPACK",MatCreate_DSCPACK);CHKERRQ(ierr);
1498da957c5SKris Buschelman #endif
1508a95e4e9SBarry Smith   PetscFunctionReturn(0);
1518a95e4e9SBarry Smith }
152f7cf7585SBarry Smith 
1533a7fca6bSBarry Smith 
154