xref: /petsc/src/mat/interface/matregis.c (revision 421e10b8f79bbed49dcc4e803c884835d979c6ea)
1be1d678aSKris Buschelman #define PETSCMAT_DLL
28a95e4e9SBarry Smith 
3f7cf7585SBarry Smith #include "petscmat.h"  /*I "petscmat.h" I*/
48a95e4e9SBarry Smith 
58a95e4e9SBarry Smith EXTERN_C_BEGIN
6be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MAIJ(Mat);
7be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_IS(Mat);
8be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPIRowbs(Mat);
917667f90SBarry Smith 
1017667f90SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_AIJ(Mat);
11be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SeqAIJ(Mat);
12be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPIAIJ(Mat);
1317667f90SBarry Smith 
1417667f90SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_BAIJ(Mat);
15be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SeqBAIJ(Mat);
16be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPIBAIJ(Mat);
1717667f90SBarry Smith 
1817667f90SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SBAIJ(Mat);
19be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SeqSBAIJ(Mat);
20be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPISBAIJ(Mat);
2117667f90SBarry Smith 
2217667f90SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_BDiag(Mat);
23be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SeqBDiag(Mat);
24be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPIBDiag(Mat);
2517667f90SBarry Smith 
2617667f90SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_Dense(Mat);
27be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SeqDense(Mat);
28be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPIDense(Mat);
2917667f90SBarry Smith 
30be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPIAdj(Mat);
31be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_Shell(Mat);
3217667f90SBarry Smith 
3317667f90SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_CSRPERM(Mat);
3420f673eaSBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SeqCSRPERM(Mat);
3517667f90SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPICSRPERM(Mat);
3617667f90SBarry Smith 
3717667f90SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_CRL(Mat);
3881824310SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SeqCRL(Mat);
391472f72bSBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPICRL(Mat);
4017667f90SBarry Smith 
412a6744ebSBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_Scatter(Mat);
42*421e10b8SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_BlockMat(Mat);
432515c552SBarry Smith #if defined(PETSC_HAVE_SPOOLES)
44be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_AIJSpooles(Mat);
4517667f90SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SeqAIJSpooles(Mat);
4617667f90SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPIAIJSpooles(Mat);
4717667f90SBarry Smith 
48be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SBAIJSpooles(Mat);
4917667f90SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SeqSBAIJSpooles(Mat);
5017667f90SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPISBAIJSpooles(Mat);
51b3a1e11cSKris Buschelman #endif
522515c552SBarry Smith #if defined(PETSC_HAVE_SUPERLU)
53be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SuperLU(Mat);
5414b396bbSKris Buschelman #endif
552515c552SBarry Smith #if defined(PETSC_HAVE_SUPERLU_DIST)
56be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SuperLU_DIST(Mat);
57448de63eSKris Buschelman #endif
582515c552SBarry Smith #if defined(PETSC_HAVE_UMFPACK)
59be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_UMFPACK(Mat);
601677d0b8SKris Buschelman #endif
61ccc59212SSatish Balay #if defined(PETSC_HAVE_ESSL) && !defined(PETSC_USE_COMPLEX) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_MAT_SINGLE)
62be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_Essl(Mat);
63e8aa55a4SKris Buschelman #endif
642515c552SBarry Smith #if defined(PETSC_HAVE_LUSOL)
65be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_LUSOL(Mat);
664eb8e494SKris Buschelman #endif
672515c552SBarry Smith #if defined(PETSC_HAVE_MUMPS)
68be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_AIJMUMPS(Mat);
69be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SBAIJMUMPS(Mat);
70397b6df1SKris Buschelman #endif
712515c552SBarry Smith #if defined(PETSC_HAVE_DSCPACK)
72be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_DSCPACK(Mat);
738da957c5SKris Buschelman #endif
74909a696eSBarry Smith #if defined(PETSC_HAVE_MATLAB_ENGINE)
75be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_Matlab(Mat);
767065e2aaSKris Buschelman #endif
77c0aa2d19SHong Zhang #if defined(PETSC_HAVE_PLAPACK)
78c0aa2d19SHong Zhang EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_Plapack(Mat);
79c0aa2d19SHong Zhang #endif
80c0aa2d19SHong Zhang EXTERN_C_END
818a95e4e9SBarry Smith 
828a95e4e9SBarry Smith /*
83f7cf7585SBarry Smith     This is used by MatSetType() to make sure that at least one
84f7cf7585SBarry Smith     MatRegisterAll() is called. In general, if there is more than one
85f7cf7585SBarry Smith     DLL, then MatRegisterAll() may be called several times.
868a95e4e9SBarry Smith */
87f7cf7585SBarry Smith EXTERN PetscTruth MatRegisterAllCalled;
888a95e4e9SBarry Smith 
894a2ae208SSatish Balay #undef __FUNCT__
904a2ae208SSatish Balay #define __FUNCT__ "MatRegisterAll"
918a95e4e9SBarry Smith /*@C
92f7cf7585SBarry Smith   MatRegisterAll - Registers all of the matrix types in PETSc
938a95e4e9SBarry Smith 
948a95e4e9SBarry Smith   Not Collective
958a95e4e9SBarry Smith 
968a95e4e9SBarry Smith   Level: advanced
978a95e4e9SBarry Smith 
988a95e4e9SBarry Smith .keywords: KSP, register, all
998a95e4e9SBarry Smith 
100f7cf7585SBarry Smith .seealso:  MatRegisterDestroy()
1018a95e4e9SBarry Smith @*/
102be1d678aSKris Buschelman PetscErrorCode PETSCMAT_DLLEXPORT MatRegisterAll(const char path[])
1038a95e4e9SBarry Smith {
104dfbe8321SBarry Smith   PetscErrorCode ierr;
1058a95e4e9SBarry Smith 
1068a95e4e9SBarry Smith   PetscFunctionBegin;
107f7cf7585SBarry Smith   MatRegisterAllCalled = PETSC_TRUE;
1088a95e4e9SBarry Smith 
109f7cf7585SBarry Smith   ierr = MatRegisterDynamic(MATMPIMAIJ,        path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
110b9b97703SBarry Smith   ierr = MatRegisterDynamic(MATSEQMAIJ,        path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
111209238afSKris Buschelman   ierr = MatRegisterDynamic(MATMAIJ,           path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
112273d9f13SBarry Smith 
113186905e3SBarry Smith   ierr = MatRegisterDynamic(MATIS,             path,"MatCreate_IS",      MatCreate_IS);CHKERRQ(ierr);
114273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSHELL,          path,"MatCreate_Shell",   MatCreate_Shell);CHKERRQ(ierr);
115bdf45cc9SSatish Balay #if defined(PETSC_HAVE_BLOCKSOLVE95)
116273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIROWBS,       path,"MatCreate_MPIRowbs",MatCreate_MPIRowbs);CHKERRQ(ierr);
117273d9f13SBarry Smith #endif
11817667f90SBarry Smith   ierr = MatRegisterDynamic(MATAIJ,            path,"MatCreate_AIJ",         MatCreate_AIJ);CHKERRQ(ierr);
119273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJ,         path,"MatCreate_MPIAIJ",      MatCreate_MPIAIJ);CHKERRQ(ierr);
120273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJ,         path,"MatCreate_SeqAIJ",      MatCreate_SeqAIJ);CHKERRQ(ierr);
12117667f90SBarry Smith 
122814655b8SBarry Smith   ierr = MatRegisterDynamic(MATCSRPERM,        path,"MatCreate_CSRPERM",  MatCreate_CSRPERM);CHKERRQ(ierr);
123381ac109SSatish Balay   ierr = MatRegisterDynamic(MATMPICSRPERM,     path,"MatCreate_MPICSRPERM",  MatCreate_MPICSRPERM);CHKERRQ(ierr);
124381ac109SSatish Balay   ierr = MatRegisterDynamic(MATSEQCSRPERM,     path,"MatCreate_SeqCSRPERM",  MatCreate_SeqCSRPERM);CHKERRQ(ierr);
12517667f90SBarry Smith 
12617667f90SBarry Smith   ierr = MatRegisterDynamic(MATCRL,            path,"MatCreate_CRL",         MatCreate_CRL);CHKERRQ(ierr);
12781824310SBarry Smith   ierr = MatRegisterDynamic(MATSEQCRL,         path,"MatCreate_SeqCRL",      MatCreate_SeqCRL);CHKERRQ(ierr);
128c02b24c5SBarry Smith   ierr = MatRegisterDynamic(MATMPICRL,         path,"MatCreate_MPICRL",      MatCreate_MPICRL);CHKERRQ(ierr);
129273d9f13SBarry Smith 
13017667f90SBarry Smith   ierr = MatRegisterDynamic(MATBAIJ,           path,"MatCreate_BAIJ",       MatCreate_BAIJ);CHKERRQ(ierr);
131273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIBAIJ,        path,"MatCreate_MPIBAIJ",    MatCreate_MPIBAIJ);CHKERRQ(ierr);
132273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQBAIJ,        path,"MatCreate_SeqBAIJ",    MatCreate_SeqBAIJ);CHKERRQ(ierr);
133273d9f13SBarry Smith 
13417667f90SBarry Smith   ierr = MatRegisterDynamic(MATSBAIJ,          path,"MatCreate_SBAIJ",     MatCreate_SBAIJ);CHKERRQ(ierr);
135273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPISBAIJ,       path,"MatCreate_MPISBAIJ",  MatCreate_MPISBAIJ);CHKERRQ(ierr);
136273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQSBAIJ,       path,"MatCreate_SeqSBAIJ",  MatCreate_SeqSBAIJ);CHKERRQ(ierr);
13717667f90SBarry Smith 
13817667f90SBarry Smith   ierr = MatRegisterDynamic(MATBDIAG,          path,"MatCreate_BDiag",     MatCreate_BDiag);CHKERRQ(ierr);
139273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIBDIAG,       path,"MatCreate_MPIBDiag",  MatCreate_MPIBDiag);CHKERRQ(ierr);
140273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQBDIAG,       path,"MatCreate_SeqBDiag",  MatCreate_SeqBDiag);CHKERRQ(ierr);
14117667f90SBarry Smith 
14217667f90SBarry Smith   ierr = MatRegisterDynamic(MATDENSE,          path,"MatCreate_Dense",     MatCreate_Dense);CHKERRQ(ierr);
143273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIDENSE,       path,"MatCreate_MPIDense",  MatCreate_MPIDense);CHKERRQ(ierr);
144273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQDENSE,       path,"MatCreate_SeqDense",  MatCreate_SeqDense);CHKERRQ(ierr);
14517667f90SBarry Smith 
146273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIADJ,         path,"MatCreate_MPIAdj",    MatCreate_MPIAdj);CHKERRQ(ierr);
1472a6744ebSBarry Smith   ierr = MatRegisterDynamic(MATSCATTER,        path,"MatCreate_Scatter",   MatCreate_Scatter);CHKERRQ(ierr);
148*421e10b8SBarry Smith   ierr = MatRegisterDynamic(MATBLOCKMAT,       path,"MatCreate_BlockMat",   MatCreate_BlockMat);CHKERRQ(ierr);
1492515c552SBarry Smith #if defined(PETSC_HAVE_SPOOLES)
150bb4d4166SHong Zhang   ierr = MatRegisterDynamic(MATAIJSPOOLES,     path,"MatCreate_AIJSpooles",     MatCreate_AIJSpooles);CHKERRQ(ierr);
15117667f90SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJSPOOLES,  path,"MatCreate_SeqAIJSpooles",  MatCreate_SeqAIJSpooles);CHKERRQ(ierr);
15217667f90SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJSPOOLES,  path,"MatCreate_MPIAIJSpooles",  MatCreate_MPIAIJSpooles);CHKERRQ(ierr);
15317667f90SBarry Smith 
154bb4d4166SHong Zhang   ierr = MatRegisterDynamic(MATSBAIJSPOOLES,   path,"MatCreate_SBAIJSpooles",   MatCreate_SBAIJSpooles);CHKERRQ(ierr);
15517667f90SBarry Smith   ierr = MatRegisterDynamic(MATMPISBAIJSPOOLES,path,"MatCreate_MPISBAIJSpooles",MatCreate_MPISBAIJSpooles);CHKERRQ(ierr);
15617667f90SBarry Smith   ierr = MatRegisterDynamic(MATSEQSBAIJSPOOLES,path,"MatCreate_SeqSBAIJSpooles",MatCreate_SeqSBAIJSpooles);CHKERRQ(ierr);
157b3a1e11cSKris Buschelman #endif
1582515c552SBarry Smith #if defined(PETSC_HAVE_SUPERLU)
159f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATSUPERLU,        path,"MatCreate_SuperLU",MatCreate_SuperLU);CHKERRQ(ierr);
16014b396bbSKris Buschelman #endif
1612515c552SBarry Smith #if defined(PETSC_HAVE_SUPERLU_DIST)
162f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATSUPERLU_DIST,   path,"MatCreate_SuperLU_DIST",MatCreate_SuperLU_DIST);CHKERRQ(ierr);
163448de63eSKris Buschelman #endif
1642515c552SBarry Smith #if defined(PETSC_HAVE_UMFPACK)
165f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATUMFPACK,        path,"MatCreate_UMFPACK",MatCreate_UMFPACK);CHKERRQ(ierr);
1661677d0b8SKris Buschelman #endif
167ccc59212SSatish Balay #if defined(PETSC_HAVE_ESSL) && !defined(PETSC_USE_COMPLEX) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_MAT_SINGLE)
168f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATESSL,           path,"MatCreate_Essl",MatCreate_Essl);CHKERRQ(ierr);
169e8aa55a4SKris Buschelman #endif
1702515c552SBarry Smith #if defined(PETSC_HAVE_LUSOL)
171f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATLUSOL,          path,"MatCreate_LUSOL",MatCreate_LUSOL);CHKERRQ(ierr);
1724eb8e494SKris Buschelman #endif
1732515c552SBarry Smith #if defined(PETSC_HAVE_MUMPS)
174123bf89aSSatish Balay   ierr = MatRegisterDynamic(MATAIJMUMPS,       path,"MatCreate_AIJMUMPS",MatCreate_AIJMUMPS);CHKERRQ(ierr);
175123bf89aSSatish Balay   ierr = MatRegisterDynamic(MATSBAIJMUMPS,     path,"MatCreate_SBAIJMUMPS",MatCreate_SBAIJMUMPS);CHKERRQ(ierr);
176397b6df1SKris Buschelman #endif
1772515c552SBarry Smith #if defined(PETSC_HAVE_DSCPACK)
178f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATDSCPACK,        path,"MatCreate_DSCPACK",MatCreate_DSCPACK);CHKERRQ(ierr);
1798da957c5SKris Buschelman #endif
180909a696eSBarry Smith #if defined(PETSC_HAVE_MATLAB_ENGINE)
1817065e2aaSKris Buschelman   ierr = MatRegisterDynamic(MATMATLAB,         path,"MatCreate_Matlab",MatCreate_Matlab);CHKERRQ(ierr);
1827065e2aaSKris Buschelman #endif
183c0aa2d19SHong Zhang #if defined(PETSC_HAVE_PLAPACK)
184c0aa2d19SHong Zhang   ierr = MatRegisterDynamic(MATPLAPACK,        path,"MatCreate_Plapack",MatCreate_Plapack);CHKERRQ(ierr);
185c0aa2d19SHong Zhang #endif
1868a95e4e9SBarry Smith   PetscFunctionReturn(0);
1878a95e4e9SBarry Smith }
188f7cf7585SBarry Smith 
1893a7fca6bSBarry Smith 
190