xref: /petsc/src/mat/interface/matregis.c (revision 2515c552c0034c8f1775528872d080687f03db0c)
18a95e4e9SBarry Smith 
2f7cf7585SBarry Smith #include "petscmat.h"  /*I "petscmat.h" I*/
38a95e4e9SBarry Smith 
48a95e4e9SBarry Smith EXTERN_C_BEGIN
5dfbe8321SBarry Smith EXTERN PetscErrorCode MatCreate_MAIJ(Mat);
6dfbe8321SBarry Smith EXTERN PetscErrorCode MatCreate_IS(Mat);
7dfbe8321SBarry Smith EXTERN PetscErrorCode MatCreate_MPIRowbs(Mat);
8dfbe8321SBarry Smith EXTERN PetscErrorCode MatCreate_SeqAIJ(Mat);
9dfbe8321SBarry Smith EXTERN PetscErrorCode MatCreate_MPIAIJ(Mat);
10dfbe8321SBarry Smith EXTERN PetscErrorCode MatCreate_AIJ(Mat);
11dfbe8321SBarry Smith EXTERN PetscErrorCode MatCreate_SeqBAIJ(Mat);
12dfbe8321SBarry Smith EXTERN PetscErrorCode MatCreate_MPIBAIJ(Mat);
13dfbe8321SBarry Smith EXTERN PetscErrorCode MatCreate_BAIJ(Mat);
14dfbe8321SBarry Smith EXTERN PetscErrorCode MatCreate_SeqSBAIJ(Mat);
15dfbe8321SBarry Smith EXTERN PetscErrorCode MatCreate_MPISBAIJ(Mat);
16dfbe8321SBarry Smith EXTERN PetscErrorCode MatCreate_SBAIJ(Mat);
17dfbe8321SBarry Smith EXTERN PetscErrorCode MatCreate_SeqBDiag(Mat);
18dfbe8321SBarry Smith EXTERN PetscErrorCode MatCreate_MPIBDiag(Mat);
19dfbe8321SBarry Smith EXTERN PetscErrorCode MatCreate_BDiag(Mat);
20dfbe8321SBarry Smith EXTERN PetscErrorCode MatCreate_SeqDense(Mat);
21dfbe8321SBarry Smith EXTERN PetscErrorCode MatCreate_MPIDense(Mat);
22dfbe8321SBarry Smith EXTERN PetscErrorCode MatCreate_Dense(Mat);
23dfbe8321SBarry Smith EXTERN PetscErrorCode MatCreate_MPIAdj(Mat);
24dfbe8321SBarry Smith EXTERN PetscErrorCode MatCreate_Shell(Mat);
25*2515c552SBarry Smith #if defined(PETSC_HAVE_SPOOLES)
26dfbe8321SBarry Smith EXTERN PetscErrorCode MatCreate_SeqAIJSpooles(Mat);
27dfbe8321SBarry Smith EXTERN PetscErrorCode MatCreate_SeqSBAIJSpooles(Mat);
28dfbe8321SBarry Smith EXTERN PetscErrorCode MatCreate_MPIAIJSpooles(Mat);
29dfbe8321SBarry Smith EXTERN PetscErrorCode MatCreate_MPISBAIJSpooles(Mat);
30dfbe8321SBarry Smith EXTERN PetscErrorCode MatCreate_AIJSpooles(Mat);
31dfbe8321SBarry Smith EXTERN PetscErrorCode MatCreate_SBAIJSpooles(Mat);
32b3a1e11cSKris Buschelman #endif
33*2515c552SBarry Smith #if defined(PETSC_HAVE_SUPERLU)
34dfbe8321SBarry Smith EXTERN PetscErrorCode MatCreate_SuperLU(Mat);
3514b396bbSKris Buschelman #endif
36*2515c552SBarry Smith #if defined(PETSC_HAVE_SUPERLU_DIST)
37dfbe8321SBarry Smith EXTERN PetscErrorCode MatCreate_SuperLU_DIST(Mat);
38448de63eSKris Buschelman #endif
39*2515c552SBarry Smith #if defined(PETSC_HAVE_UMFPACK)
40dfbe8321SBarry Smith EXTERN PetscErrorCode MatCreate_UMFPACK(Mat);
411677d0b8SKris Buschelman #endif
42*2515c552SBarry Smith #if defined(PETSC_HAVE_ESSL)
43dfbe8321SBarry Smith EXTERN PetscErrorCode MatCreate_Essl(Mat);
44e8aa55a4SKris Buschelman #endif
45*2515c552SBarry Smith #if defined(PETSC_HAVE_LUSOL)
46dfbe8321SBarry Smith EXTERN PetscErrorCode MatCreate_LUSOL(Mat);
474eb8e494SKris Buschelman #endif
48*2515c552SBarry Smith #if defined(PETSC_HAVE_MUMPS)
49dfbe8321SBarry Smith EXTERN PetscErrorCode MatCreate_AIJMUMPS(Mat);
50dfbe8321SBarry Smith EXTERN PetscErrorCode MatCreate_SBAIJMUMPS(Mat);
51397b6df1SKris Buschelman #endif
52*2515c552SBarry Smith #if defined(PETSC_HAVE_DSCPACK)
53dfbe8321SBarry Smith EXTERN PetscErrorCode MatCreate_DSCPACK(Mat);
548da957c5SKris Buschelman #endif
55*2515c552SBarry Smith #if defined(PETSC_HAVE_MATLAB)
56dfbe8321SBarry Smith EXTERN PetscErrorCode MatCreate_Matlab(Mat);
577065e2aaSKris 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 @*/
80dfbe8321SBarry Smith PetscErrorCode MatRegisterAll(const char path[])
818a95e4e9SBarry Smith {
82dfbe8321SBarry Smith   PetscErrorCode 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);
93*2515c552SBarry Smith #if defined(PETSC_HAVE_BLOCKSOLVE)
94273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIROWBS,path,"MatCreate_MPIRowbs",MatCreate_MPIRowbs);CHKERRQ(ierr);
95273d9f13SBarry Smith #endif
96273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJ,  path,"MatCreate_MPIAIJ",  MatCreate_MPIAIJ);CHKERRQ(ierr);
97273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJ,  path,"MatCreate_SeqAIJ",  MatCreate_SeqAIJ);CHKERRQ(ierr);
98209238afSKris Buschelman   ierr = MatRegisterDynamic(MATAIJ,     path,"MatCreate_AIJ",     MatCreate_AIJ);CHKERRQ(ierr);
99273d9f13SBarry Smith 
100273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIBAIJ,  path,"MatCreate_MPIBAIJ",  MatCreate_MPIBAIJ);CHKERRQ(ierr);
101273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQBAIJ,  path,"MatCreate_SeqBAIJ",  MatCreate_SeqBAIJ);CHKERRQ(ierr);
102209238afSKris Buschelman   ierr = MatRegisterDynamic(MATBAIJ,     path,"MatCreate_BAIJ",     MatCreate_BAIJ);CHKERRQ(ierr);
103273d9f13SBarry Smith 
104273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPISBAIJ,  path,"MatCreate_MPISBAIJ",  MatCreate_MPISBAIJ);CHKERRQ(ierr);
105273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQSBAIJ,  path,"MatCreate_SeqSBAIJ",  MatCreate_SeqSBAIJ);CHKERRQ(ierr);
106209238afSKris Buschelman   ierr = MatRegisterDynamic(MATSBAIJ,     path,"MatCreate_SBAIJ",     MatCreate_SBAIJ);CHKERRQ(ierr);
107273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIBDIAG,  path,"MatCreate_MPIBDiag",  MatCreate_MPIBDiag);CHKERRQ(ierr);
108273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQBDIAG,  path,"MatCreate_SeqBDiag",  MatCreate_SeqBDiag);CHKERRQ(ierr);
109209238afSKris Buschelman   ierr = MatRegisterDynamic(MATBDIAG,     path,"MatCreate_BDiag",     MatCreate_BDiag);CHKERRQ(ierr);
110273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIDENSE,  path,"MatCreate_MPIDense",  MatCreate_MPIDense);CHKERRQ(ierr);
111273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQDENSE,  path,"MatCreate_SeqDense",  MatCreate_SeqDense);CHKERRQ(ierr);
112209238afSKris Buschelman   ierr = MatRegisterDynamic(MATDENSE,     path,"MatCreate_Dense",     MatCreate_Dense);CHKERRQ(ierr);
113273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIADJ,    path,"MatCreate_MPIAdj",    MatCreate_MPIAdj);CHKERRQ(ierr);
114*2515c552SBarry Smith #if defined(PETSC_HAVE_SPOOLES)
115f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATSEQAIJSPOOLES,  path,"MatCreate_SeqAIJSpooles",  MatCreate_SeqAIJSpooles);CHKERRQ(ierr);
116f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATSEQSBAIJSPOOLES,path,"MatCreate_SeqSBAIJSpooles",MatCreate_SeqSBAIJSpooles);CHKERRQ(ierr);
117f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATMPIAIJSPOOLES,  path,"MatCreate_MPIAIJSpooles",  MatCreate_MPIAIJSpooles);CHKERRQ(ierr);
118f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATMPISBAIJSPOOLES,path,"MatCreate_MPISBAIJSpooles",MatCreate_MPISBAIJSpooles);CHKERRQ(ierr);
119bb4d4166SHong Zhang   ierr = MatRegisterDynamic(MATAIJSPOOLES,  path,"MatCreate_AIJSpooles",MatCreate_AIJSpooles);CHKERRQ(ierr);
120bb4d4166SHong Zhang   ierr = MatRegisterDynamic(MATSBAIJSPOOLES,path,"MatCreate_SBAIJSpooles",MatCreate_SBAIJSpooles);CHKERRQ(ierr);
121b3a1e11cSKris Buschelman #endif
122*2515c552SBarry Smith #if defined(PETSC_HAVE_SUPERLU)
123f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATSUPERLU,path,"MatCreate_SuperLU",MatCreate_SuperLU);CHKERRQ(ierr);
12414b396bbSKris Buschelman #endif
125*2515c552SBarry Smith #if defined(PETSC_HAVE_SUPERLU_DIST)
126f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATSUPERLU_DIST,path,"MatCreate_SuperLU_DIST",MatCreate_SuperLU_DIST);CHKERRQ(ierr);
127448de63eSKris Buschelman #endif
128*2515c552SBarry Smith #if defined(PETSC_HAVE_UMFPACK)
129f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATUMFPACK,path,"MatCreate_UMFPACK",MatCreate_UMFPACK);CHKERRQ(ierr);
1301677d0b8SKris Buschelman #endif
131*2515c552SBarry Smith #if defined(PETSC_HAVE_ESSL)
132f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATESSL,path,"MatCreate_Essl",MatCreate_Essl);CHKERRQ(ierr);
133e8aa55a4SKris Buschelman #endif
134*2515c552SBarry Smith #if defined(PETSC_HAVE_LUSOL)
135f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATLUSOL,path,"MatCreate_LUSOL",MatCreate_LUSOL);CHKERRQ(ierr);
1364eb8e494SKris Buschelman #endif
137*2515c552SBarry Smith #if defined(PETSC_HAVE_MUMPS)
138123bf89aSSatish Balay   ierr = MatRegisterDynamic(MATAIJMUMPS,  path,"MatCreate_AIJMUMPS",MatCreate_AIJMUMPS);CHKERRQ(ierr);
139123bf89aSSatish Balay   ierr = MatRegisterDynamic(MATSBAIJMUMPS,path,"MatCreate_SBAIJMUMPS",MatCreate_SBAIJMUMPS);CHKERRQ(ierr);
140397b6df1SKris Buschelman #endif
141*2515c552SBarry Smith #if defined(PETSC_HAVE_DSCPACK)
142f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATDSCPACK,path,"MatCreate_DSCPACK",MatCreate_DSCPACK);CHKERRQ(ierr);
1438da957c5SKris Buschelman #endif
144*2515c552SBarry Smith #if defined(PETSC_HAVE_MATLAB)
1457065e2aaSKris Buschelman   ierr = MatRegisterDynamic(MATMATLAB,path,"MatCreate_Matlab",MatCreate_Matlab);CHKERRQ(ierr);
1467065e2aaSKris Buschelman #endif
1478a95e4e9SBarry Smith   PetscFunctionReturn(0);
1488a95e4e9SBarry Smith }
149f7cf7585SBarry Smith 
1503a7fca6bSBarry Smith 
151