xref: /petsc/src/mat/interface/matregis.c (revision e884886f040fd140b63a22c479f657cf835a1983)
1be1d678aSKris Buschelman #define PETSCMAT_DLL
28a95e4e9SBarry Smith 
3f7cf7585SBarry Smith #include "petscmat.h"  /*I "petscmat.h" I*/
48a95e4e9SBarry Smith 
58a95e4e9SBarry Smith EXTERN_C_BEGIN
6*e884886fSBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MFFD(Mat);
7be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MAIJ(Mat);
8be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_IS(Mat);
9be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPIRowbs(Mat);
1017667f90SBarry Smith 
1117667f90SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_AIJ(Mat);
12be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SeqAIJ(Mat);
13be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPIAIJ(Mat);
1417667f90SBarry Smith 
1517667f90SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_BAIJ(Mat);
16be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SeqBAIJ(Mat);
17be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPIBAIJ(Mat);
1817667f90SBarry Smith 
1917667f90SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SBAIJ(Mat);
20be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SeqSBAIJ(Mat);
21be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPISBAIJ(Mat);
2217667f90SBarry Smith 
2317667f90SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_BDiag(Mat);
24be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SeqBDiag(Mat);
25be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPIBDiag(Mat);
2617667f90SBarry Smith 
2717667f90SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_Dense(Mat);
28be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SeqDense(Mat);
29be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPIDense(Mat);
3017667f90SBarry Smith 
31be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPIAdj(Mat);
32be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_Shell(Mat);
33793850ffSBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_Composite(Mat);
3417667f90SBarry Smith 
3517667f90SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_CSRPERM(Mat);
3620f673eaSBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SeqCSRPERM(Mat);
3717667f90SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPICSRPERM(Mat);
3817667f90SBarry Smith 
3917667f90SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_CRL(Mat);
4081824310SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SeqCRL(Mat);
411472f72bSBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPICRL(Mat);
4217667f90SBarry Smith 
432a6744ebSBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_Scatter(Mat);
44421e10b8SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_BlockMat(Mat);
452515c552SBarry Smith #if defined(PETSC_HAVE_SPOOLES)
46be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_AIJSpooles(Mat);
4717667f90SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SeqAIJSpooles(Mat);
4817667f90SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPIAIJSpooles(Mat);
4917667f90SBarry Smith 
50be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SBAIJSpooles(Mat);
5117667f90SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SeqSBAIJSpooles(Mat);
5217667f90SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPISBAIJSpooles(Mat);
53b3a1e11cSKris Buschelman #endif
542515c552SBarry Smith #if defined(PETSC_HAVE_SUPERLU)
55be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SuperLU(Mat);
5614b396bbSKris Buschelman #endif
572515c552SBarry Smith #if defined(PETSC_HAVE_SUPERLU_DIST)
58be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SuperLU_DIST(Mat);
59448de63eSKris Buschelman #endif
602515c552SBarry Smith #if defined(PETSC_HAVE_UMFPACK)
61be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_UMFPACK(Mat);
621677d0b8SKris Buschelman #endif
63ccc59212SSatish Balay #if defined(PETSC_HAVE_ESSL) && !defined(PETSC_USE_COMPLEX) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_MAT_SINGLE)
64be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_Essl(Mat);
65e8aa55a4SKris Buschelman #endif
662515c552SBarry Smith #if defined(PETSC_HAVE_LUSOL)
67be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_LUSOL(Mat);
684eb8e494SKris Buschelman #endif
692515c552SBarry Smith #if defined(PETSC_HAVE_MUMPS)
70be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_AIJMUMPS(Mat);
71be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SBAIJMUMPS(Mat);
72397b6df1SKris Buschelman #endif
732515c552SBarry Smith #if defined(PETSC_HAVE_DSCPACK)
74be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_DSCPACK(Mat);
758da957c5SKris Buschelman #endif
76909a696eSBarry Smith #if defined(PETSC_HAVE_MATLAB_ENGINE)
77be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_Matlab(Mat);
787065e2aaSKris Buschelman #endif
79c0aa2d19SHong Zhang #if defined(PETSC_HAVE_PLAPACK)
80c0aa2d19SHong Zhang EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_Plapack(Mat);
81c0aa2d19SHong Zhang #endif
82c0aa2d19SHong Zhang EXTERN_C_END
838a95e4e9SBarry Smith 
848a95e4e9SBarry Smith /*
85f7cf7585SBarry Smith     This is used by MatSetType() to make sure that at least one
86f7cf7585SBarry Smith     MatRegisterAll() is called. In general, if there is more than one
87f7cf7585SBarry Smith     DLL, then MatRegisterAll() may be called several times.
888a95e4e9SBarry Smith */
89f7cf7585SBarry Smith EXTERN PetscTruth MatRegisterAllCalled;
908a95e4e9SBarry Smith 
914a2ae208SSatish Balay #undef __FUNCT__
924a2ae208SSatish Balay #define __FUNCT__ "MatRegisterAll"
938a95e4e9SBarry Smith /*@C
94f7cf7585SBarry Smith   MatRegisterAll - Registers all of the matrix types in PETSc
958a95e4e9SBarry Smith 
968a95e4e9SBarry Smith   Not Collective
978a95e4e9SBarry Smith 
988a95e4e9SBarry Smith   Level: advanced
998a95e4e9SBarry Smith 
1008a95e4e9SBarry Smith .keywords: KSP, register, all
1018a95e4e9SBarry Smith 
102f7cf7585SBarry Smith .seealso:  MatRegisterDestroy()
1038a95e4e9SBarry Smith @*/
104be1d678aSKris Buschelman PetscErrorCode PETSCMAT_DLLEXPORT MatRegisterAll(const char path[])
1058a95e4e9SBarry Smith {
106dfbe8321SBarry Smith   PetscErrorCode ierr;
1078a95e4e9SBarry Smith 
1088a95e4e9SBarry Smith   PetscFunctionBegin;
109f7cf7585SBarry Smith   MatRegisterAllCalled = PETSC_TRUE;
1108a95e4e9SBarry Smith 
111*e884886fSBarry Smith   ierr = MatRegisterDynamic(MATMFFD,           path,"MatCreate_MFFD",    MatCreate_MFFD);CHKERRQ(ierr);
112*e884886fSBarry Smith 
113f7cf7585SBarry Smith   ierr = MatRegisterDynamic(MATMPIMAIJ,        path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
114b9b97703SBarry Smith   ierr = MatRegisterDynamic(MATSEQMAIJ,        path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
115209238afSKris Buschelman   ierr = MatRegisterDynamic(MATMAIJ,           path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
116273d9f13SBarry Smith 
117186905e3SBarry Smith   ierr = MatRegisterDynamic(MATIS,             path,"MatCreate_IS",      MatCreate_IS);CHKERRQ(ierr);
118273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSHELL,          path,"MatCreate_Shell",   MatCreate_Shell);CHKERRQ(ierr);
119793850ffSBarry Smith   ierr = MatRegisterDynamic(MATCOMPOSITE,      path,"MatCreate_Composite",   MatCreate_Composite);CHKERRQ(ierr);
120bdf45cc9SSatish Balay #if defined(PETSC_HAVE_BLOCKSOLVE95)
121273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIROWBS,       path,"MatCreate_MPIRowbs",MatCreate_MPIRowbs);CHKERRQ(ierr);
122273d9f13SBarry Smith #endif
12317667f90SBarry Smith   ierr = MatRegisterDynamic(MATAIJ,            path,"MatCreate_AIJ",         MatCreate_AIJ);CHKERRQ(ierr);
124273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJ,         path,"MatCreate_MPIAIJ",      MatCreate_MPIAIJ);CHKERRQ(ierr);
125273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJ,         path,"MatCreate_SeqAIJ",      MatCreate_SeqAIJ);CHKERRQ(ierr);
12617667f90SBarry Smith 
127814655b8SBarry Smith   ierr = MatRegisterDynamic(MATCSRPERM,        path,"MatCreate_CSRPERM",  MatCreate_CSRPERM);CHKERRQ(ierr);
128381ac109SSatish Balay   ierr = MatRegisterDynamic(MATMPICSRPERM,     path,"MatCreate_MPICSRPERM",  MatCreate_MPICSRPERM);CHKERRQ(ierr);
129381ac109SSatish Balay   ierr = MatRegisterDynamic(MATSEQCSRPERM,     path,"MatCreate_SeqCSRPERM",  MatCreate_SeqCSRPERM);CHKERRQ(ierr);
13017667f90SBarry Smith 
13117667f90SBarry Smith   ierr = MatRegisterDynamic(MATCRL,            path,"MatCreate_CRL",         MatCreate_CRL);CHKERRQ(ierr);
13281824310SBarry Smith   ierr = MatRegisterDynamic(MATSEQCRL,         path,"MatCreate_SeqCRL",      MatCreate_SeqCRL);CHKERRQ(ierr);
133c02b24c5SBarry Smith   ierr = MatRegisterDynamic(MATMPICRL,         path,"MatCreate_MPICRL",      MatCreate_MPICRL);CHKERRQ(ierr);
134273d9f13SBarry Smith 
13517667f90SBarry Smith   ierr = MatRegisterDynamic(MATBAIJ,           path,"MatCreate_BAIJ",       MatCreate_BAIJ);CHKERRQ(ierr);
136273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIBAIJ,        path,"MatCreate_MPIBAIJ",    MatCreate_MPIBAIJ);CHKERRQ(ierr);
137273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQBAIJ,        path,"MatCreate_SeqBAIJ",    MatCreate_SeqBAIJ);CHKERRQ(ierr);
138273d9f13SBarry Smith 
13917667f90SBarry Smith   ierr = MatRegisterDynamic(MATSBAIJ,          path,"MatCreate_SBAIJ",     MatCreate_SBAIJ);CHKERRQ(ierr);
140273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPISBAIJ,       path,"MatCreate_MPISBAIJ",  MatCreate_MPISBAIJ);CHKERRQ(ierr);
141273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQSBAIJ,       path,"MatCreate_SeqSBAIJ",  MatCreate_SeqSBAIJ);CHKERRQ(ierr);
14217667f90SBarry Smith 
14317667f90SBarry Smith   ierr = MatRegisterDynamic(MATBDIAG,          path,"MatCreate_BDiag",     MatCreate_BDiag);CHKERRQ(ierr);
144273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIBDIAG,       path,"MatCreate_MPIBDiag",  MatCreate_MPIBDiag);CHKERRQ(ierr);
145273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQBDIAG,       path,"MatCreate_SeqBDiag",  MatCreate_SeqBDiag);CHKERRQ(ierr);
14617667f90SBarry Smith 
14717667f90SBarry Smith   ierr = MatRegisterDynamic(MATDENSE,          path,"MatCreate_Dense",     MatCreate_Dense);CHKERRQ(ierr);
148273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIDENSE,       path,"MatCreate_MPIDense",  MatCreate_MPIDense);CHKERRQ(ierr);
149273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQDENSE,       path,"MatCreate_SeqDense",  MatCreate_SeqDense);CHKERRQ(ierr);
15017667f90SBarry Smith 
151273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIADJ,         path,"MatCreate_MPIAdj",    MatCreate_MPIAdj);CHKERRQ(ierr);
1522a6744ebSBarry Smith   ierr = MatRegisterDynamic(MATSCATTER,        path,"MatCreate_Scatter",   MatCreate_Scatter);CHKERRQ(ierr);
153421e10b8SBarry Smith   ierr = MatRegisterDynamic(MATBLOCKMAT,       path,"MatCreate_BlockMat",   MatCreate_BlockMat);CHKERRQ(ierr);
1542515c552SBarry Smith #if defined(PETSC_HAVE_SPOOLES)
155bb4d4166SHong Zhang   ierr = MatRegisterDynamic(MATAIJSPOOLES,     path,"MatCreate_AIJSpooles",     MatCreate_AIJSpooles);CHKERRQ(ierr);
15617667f90SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJSPOOLES,  path,"MatCreate_SeqAIJSpooles",  MatCreate_SeqAIJSpooles);CHKERRQ(ierr);
15717667f90SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJSPOOLES,  path,"MatCreate_MPIAIJSpooles",  MatCreate_MPIAIJSpooles);CHKERRQ(ierr);
15817667f90SBarry Smith 
159bb4d4166SHong Zhang   ierr = MatRegisterDynamic(MATSBAIJSPOOLES,   path,"MatCreate_SBAIJSpooles",   MatCreate_SBAIJSpooles);CHKERRQ(ierr);
16017667f90SBarry Smith   ierr = MatRegisterDynamic(MATMPISBAIJSPOOLES,path,"MatCreate_MPISBAIJSpooles",MatCreate_MPISBAIJSpooles);CHKERRQ(ierr);
16117667f90SBarry Smith   ierr = MatRegisterDynamic(MATSEQSBAIJSPOOLES,path,"MatCreate_SeqSBAIJSpooles",MatCreate_SeqSBAIJSpooles);CHKERRQ(ierr);
162b3a1e11cSKris Buschelman #endif
1632515c552SBarry Smith #if defined(PETSC_HAVE_SUPERLU)
164f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATSUPERLU,        path,"MatCreate_SuperLU",MatCreate_SuperLU);CHKERRQ(ierr);
16514b396bbSKris Buschelman #endif
1662515c552SBarry Smith #if defined(PETSC_HAVE_SUPERLU_DIST)
167f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATSUPERLU_DIST,   path,"MatCreate_SuperLU_DIST",MatCreate_SuperLU_DIST);CHKERRQ(ierr);
168448de63eSKris Buschelman #endif
1692515c552SBarry Smith #if defined(PETSC_HAVE_UMFPACK)
170f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATUMFPACK,        path,"MatCreate_UMFPACK",MatCreate_UMFPACK);CHKERRQ(ierr);
1711677d0b8SKris Buschelman #endif
172ccc59212SSatish Balay #if defined(PETSC_HAVE_ESSL) && !defined(PETSC_USE_COMPLEX) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_MAT_SINGLE)
173f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATESSL,           path,"MatCreate_Essl",MatCreate_Essl);CHKERRQ(ierr);
174e8aa55a4SKris Buschelman #endif
1752515c552SBarry Smith #if defined(PETSC_HAVE_LUSOL)
176f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATLUSOL,          path,"MatCreate_LUSOL",MatCreate_LUSOL);CHKERRQ(ierr);
1774eb8e494SKris Buschelman #endif
1782515c552SBarry Smith #if defined(PETSC_HAVE_MUMPS)
179123bf89aSSatish Balay   ierr = MatRegisterDynamic(MATAIJMUMPS,       path,"MatCreate_AIJMUMPS",MatCreate_AIJMUMPS);CHKERRQ(ierr);
180123bf89aSSatish Balay   ierr = MatRegisterDynamic(MATSBAIJMUMPS,     path,"MatCreate_SBAIJMUMPS",MatCreate_SBAIJMUMPS);CHKERRQ(ierr);
181397b6df1SKris Buschelman #endif
1822515c552SBarry Smith #if defined(PETSC_HAVE_DSCPACK)
183f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATDSCPACK,        path,"MatCreate_DSCPACK",MatCreate_DSCPACK);CHKERRQ(ierr);
1848da957c5SKris Buschelman #endif
185909a696eSBarry Smith #if defined(PETSC_HAVE_MATLAB_ENGINE)
1867065e2aaSKris Buschelman   ierr = MatRegisterDynamic(MATMATLAB,         path,"MatCreate_Matlab",MatCreate_Matlab);CHKERRQ(ierr);
1877065e2aaSKris Buschelman #endif
188c0aa2d19SHong Zhang #if defined(PETSC_HAVE_PLAPACK)
189c0aa2d19SHong Zhang   ierr = MatRegisterDynamic(MATPLAPACK,        path,"MatCreate_Plapack",MatCreate_Plapack);CHKERRQ(ierr);
190c0aa2d19SHong Zhang #endif
1918a95e4e9SBarry Smith   PetscFunctionReturn(0);
1928a95e4e9SBarry Smith }
193f7cf7585SBarry Smith 
1943a7fca6bSBarry Smith 
195