xref: /petsc/src/mat/interface/matregis.c (revision 17667f9060a8aad9ce8a34f74735d38d2a7e6242)
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);
9*17667f90SBarry Smith 
10*17667f90SBarry 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);
13*17667f90SBarry Smith 
14*17667f90SBarry 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);
17*17667f90SBarry Smith 
18*17667f90SBarry 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);
21*17667f90SBarry Smith 
22*17667f90SBarry 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);
25*17667f90SBarry Smith 
26*17667f90SBarry 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);
29*17667f90SBarry Smith 
30be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPIAdj(Mat);
31be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_Shell(Mat);
32*17667f90SBarry Smith 
33*17667f90SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_CSRPERM(Mat);
3420f673eaSBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SeqCSRPERM(Mat);
35*17667f90SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPICSRPERM(Mat);
36*17667f90SBarry Smith 
37*17667f90SBarry 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);
40*17667f90SBarry Smith 
412a6744ebSBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_Scatter(Mat);
422515c552SBarry Smith #if defined(PETSC_HAVE_SPOOLES)
43be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_AIJSpooles(Mat);
44*17667f90SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SeqAIJSpooles(Mat);
45*17667f90SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPIAIJSpooles(Mat);
46*17667f90SBarry Smith 
47be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SBAIJSpooles(Mat);
48*17667f90SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SeqSBAIJSpooles(Mat);
49*17667f90SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPISBAIJSpooles(Mat);
50b3a1e11cSKris Buschelman #endif
512515c552SBarry Smith #if defined(PETSC_HAVE_SUPERLU)
52be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SuperLU(Mat);
5314b396bbSKris Buschelman #endif
542515c552SBarry Smith #if defined(PETSC_HAVE_SUPERLU_DIST)
55be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SuperLU_DIST(Mat);
56448de63eSKris Buschelman #endif
572515c552SBarry Smith #if defined(PETSC_HAVE_UMFPACK)
58be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_UMFPACK(Mat);
591677d0b8SKris Buschelman #endif
60ccc59212SSatish Balay #if defined(PETSC_HAVE_ESSL) && !defined(PETSC_USE_COMPLEX) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_MAT_SINGLE)
61be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_Essl(Mat);
62e8aa55a4SKris Buschelman #endif
632515c552SBarry Smith #if defined(PETSC_HAVE_LUSOL)
64be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_LUSOL(Mat);
654eb8e494SKris Buschelman #endif
662515c552SBarry Smith #if defined(PETSC_HAVE_MUMPS)
67be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_AIJMUMPS(Mat);
68be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SBAIJMUMPS(Mat);
69397b6df1SKris Buschelman #endif
702515c552SBarry Smith #if defined(PETSC_HAVE_DSCPACK)
71be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_DSCPACK(Mat);
728da957c5SKris Buschelman #endif
732515c552SBarry Smith #if defined(PETSC_HAVE_MATLAB)
74be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_Matlab(Mat);
757065e2aaSKris Buschelman #endif
76c0aa2d19SHong Zhang #if defined(PETSC_HAVE_PLAPACK)
77c0aa2d19SHong Zhang EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_Plapack(Mat);
78c0aa2d19SHong Zhang #endif
79c0aa2d19SHong Zhang EXTERN_C_END
808a95e4e9SBarry Smith 
818a95e4e9SBarry Smith /*
82f7cf7585SBarry Smith     This is used by MatSetType() to make sure that at least one
83f7cf7585SBarry Smith     MatRegisterAll() is called. In general, if there is more than one
84f7cf7585SBarry Smith     DLL, then MatRegisterAll() may be called several times.
858a95e4e9SBarry Smith */
86f7cf7585SBarry Smith EXTERN PetscTruth MatRegisterAllCalled;
878a95e4e9SBarry Smith 
884a2ae208SSatish Balay #undef __FUNCT__
894a2ae208SSatish Balay #define __FUNCT__ "MatRegisterAll"
908a95e4e9SBarry Smith /*@C
91f7cf7585SBarry Smith   MatRegisterAll - Registers all of the matrix types in PETSc
928a95e4e9SBarry Smith 
938a95e4e9SBarry Smith   Not Collective
948a95e4e9SBarry Smith 
958a95e4e9SBarry Smith   Level: advanced
968a95e4e9SBarry Smith 
978a95e4e9SBarry Smith .keywords: KSP, register, all
988a95e4e9SBarry Smith 
99f7cf7585SBarry Smith .seealso:  MatRegisterDestroy()
1008a95e4e9SBarry Smith @*/
101be1d678aSKris Buschelman PetscErrorCode PETSCMAT_DLLEXPORT MatRegisterAll(const char path[])
1028a95e4e9SBarry Smith {
103dfbe8321SBarry Smith   PetscErrorCode ierr;
1048a95e4e9SBarry Smith 
1058a95e4e9SBarry Smith   PetscFunctionBegin;
106f7cf7585SBarry Smith   MatRegisterAllCalled = PETSC_TRUE;
1078a95e4e9SBarry Smith 
108f7cf7585SBarry Smith   ierr = MatRegisterDynamic(MATMPIMAIJ,        path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
109b9b97703SBarry Smith   ierr = MatRegisterDynamic(MATSEQMAIJ,        path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
110209238afSKris Buschelman   ierr = MatRegisterDynamic(MATMAIJ,           path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
111273d9f13SBarry Smith 
112186905e3SBarry Smith   ierr = MatRegisterDynamic(MATIS,             path,"MatCreate_IS",      MatCreate_IS);CHKERRQ(ierr);
113273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSHELL,          path,"MatCreate_Shell",   MatCreate_Shell);CHKERRQ(ierr);
114bdf45cc9SSatish Balay #if defined(PETSC_HAVE_BLOCKSOLVE95)
115273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIROWBS,       path,"MatCreate_MPIRowbs",MatCreate_MPIRowbs);CHKERRQ(ierr);
116273d9f13SBarry Smith #endif
117*17667f90SBarry Smith   ierr = MatRegisterDynamic(MATAIJ,            path,"MatCreate_AIJ",         MatCreate_AIJ);CHKERRQ(ierr);
118273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJ,         path,"MatCreate_MPIAIJ",      MatCreate_MPIAIJ);CHKERRQ(ierr);
119273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJ,         path,"MatCreate_SeqAIJ",      MatCreate_SeqAIJ);CHKERRQ(ierr);
120*17667f90SBarry Smith 
121814655b8SBarry Smith   ierr = MatRegisterDynamic(MATCSRPERM,        path,"MatCreate_CSRPERM",  MatCreate_CSRPERM);CHKERRQ(ierr);
122381ac109SSatish Balay   ierr = MatRegisterDynamic(MATMPICSRPERM,     path,"MatCreate_MPICSRPERM",  MatCreate_MPICSRPERM);CHKERRQ(ierr);
123381ac109SSatish Balay   ierr = MatRegisterDynamic(MATSEQCSRPERM,     path,"MatCreate_SeqCSRPERM",  MatCreate_SeqCSRPERM);CHKERRQ(ierr);
124*17667f90SBarry Smith 
125*17667f90SBarry Smith   ierr = MatRegisterDynamic(MATCRL,            path,"MatCreate_CRL",         MatCreate_CRL);CHKERRQ(ierr);
12681824310SBarry Smith   ierr = MatRegisterDynamic(MATSEQCRL,         path,"MatCreate_SeqCRL",      MatCreate_SeqCRL);CHKERRQ(ierr);
127c02b24c5SBarry Smith   ierr = MatRegisterDynamic(MATMPICRL,         path,"MatCreate_MPICRL",      MatCreate_MPICRL);CHKERRQ(ierr);
128273d9f13SBarry Smith 
129*17667f90SBarry Smith   ierr = MatRegisterDynamic(MATBAIJ,           path,"MatCreate_BAIJ",       MatCreate_BAIJ);CHKERRQ(ierr);
130273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIBAIJ,        path,"MatCreate_MPIBAIJ",    MatCreate_MPIBAIJ);CHKERRQ(ierr);
131273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQBAIJ,        path,"MatCreate_SeqBAIJ",    MatCreate_SeqBAIJ);CHKERRQ(ierr);
132273d9f13SBarry Smith 
133*17667f90SBarry Smith   ierr = MatRegisterDynamic(MATSBAIJ,          path,"MatCreate_SBAIJ",     MatCreate_SBAIJ);CHKERRQ(ierr);
134273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPISBAIJ,       path,"MatCreate_MPISBAIJ",  MatCreate_MPISBAIJ);CHKERRQ(ierr);
135273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQSBAIJ,       path,"MatCreate_SeqSBAIJ",  MatCreate_SeqSBAIJ);CHKERRQ(ierr);
136*17667f90SBarry Smith 
137*17667f90SBarry Smith   ierr = MatRegisterDynamic(MATBDIAG,          path,"MatCreate_BDiag",     MatCreate_BDiag);CHKERRQ(ierr);
138273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIBDIAG,       path,"MatCreate_MPIBDiag",  MatCreate_MPIBDiag);CHKERRQ(ierr);
139273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQBDIAG,       path,"MatCreate_SeqBDiag",  MatCreate_SeqBDiag);CHKERRQ(ierr);
140*17667f90SBarry Smith 
141*17667f90SBarry Smith   ierr = MatRegisterDynamic(MATDENSE,          path,"MatCreate_Dense",     MatCreate_Dense);CHKERRQ(ierr);
142273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIDENSE,       path,"MatCreate_MPIDense",  MatCreate_MPIDense);CHKERRQ(ierr);
143273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQDENSE,       path,"MatCreate_SeqDense",  MatCreate_SeqDense);CHKERRQ(ierr);
144*17667f90SBarry Smith 
145273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIADJ,         path,"MatCreate_MPIAdj",    MatCreate_MPIAdj);CHKERRQ(ierr);
1462a6744ebSBarry Smith   ierr = MatRegisterDynamic(MATSCATTER,        path,"MatCreate_Scatter",   MatCreate_Scatter);CHKERRQ(ierr);
1472515c552SBarry Smith #if defined(PETSC_HAVE_SPOOLES)
148bb4d4166SHong Zhang   ierr = MatRegisterDynamic(MATAIJSPOOLES,     path,"MatCreate_AIJSpooles",     MatCreate_AIJSpooles);CHKERRQ(ierr);
149*17667f90SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJSPOOLES,  path,"MatCreate_SeqAIJSpooles",  MatCreate_SeqAIJSpooles);CHKERRQ(ierr);
150*17667f90SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJSPOOLES,  path,"MatCreate_MPIAIJSpooles",  MatCreate_MPIAIJSpooles);CHKERRQ(ierr);
151*17667f90SBarry Smith 
152bb4d4166SHong Zhang   ierr = MatRegisterDynamic(MATSBAIJSPOOLES,   path,"MatCreate_SBAIJSpooles",   MatCreate_SBAIJSpooles);CHKERRQ(ierr);
153*17667f90SBarry Smith   ierr = MatRegisterDynamic(MATMPISBAIJSPOOLES,path,"MatCreate_MPISBAIJSpooles",MatCreate_MPISBAIJSpooles);CHKERRQ(ierr);
154*17667f90SBarry Smith   ierr = MatRegisterDynamic(MATSEQSBAIJSPOOLES,path,"MatCreate_SeqSBAIJSpooles",MatCreate_SeqSBAIJSpooles);CHKERRQ(ierr);
155b3a1e11cSKris Buschelman #endif
1562515c552SBarry Smith #if defined(PETSC_HAVE_SUPERLU)
157f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATSUPERLU,        path,"MatCreate_SuperLU",MatCreate_SuperLU);CHKERRQ(ierr);
15814b396bbSKris Buschelman #endif
1592515c552SBarry Smith #if defined(PETSC_HAVE_SUPERLU_DIST)
160f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATSUPERLU_DIST,   path,"MatCreate_SuperLU_DIST",MatCreate_SuperLU_DIST);CHKERRQ(ierr);
161448de63eSKris Buschelman #endif
1622515c552SBarry Smith #if defined(PETSC_HAVE_UMFPACK)
163f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATUMFPACK,        path,"MatCreate_UMFPACK",MatCreate_UMFPACK);CHKERRQ(ierr);
1641677d0b8SKris Buschelman #endif
165ccc59212SSatish Balay #if defined(PETSC_HAVE_ESSL) && !defined(PETSC_USE_COMPLEX) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_MAT_SINGLE)
166f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATESSL,           path,"MatCreate_Essl",MatCreate_Essl);CHKERRQ(ierr);
167e8aa55a4SKris Buschelman #endif
1682515c552SBarry Smith #if defined(PETSC_HAVE_LUSOL)
169f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATLUSOL,          path,"MatCreate_LUSOL",MatCreate_LUSOL);CHKERRQ(ierr);
1704eb8e494SKris Buschelman #endif
1712515c552SBarry Smith #if defined(PETSC_HAVE_MUMPS)
172123bf89aSSatish Balay   ierr = MatRegisterDynamic(MATAIJMUMPS,       path,"MatCreate_AIJMUMPS",MatCreate_AIJMUMPS);CHKERRQ(ierr);
173123bf89aSSatish Balay   ierr = MatRegisterDynamic(MATSBAIJMUMPS,     path,"MatCreate_SBAIJMUMPS",MatCreate_SBAIJMUMPS);CHKERRQ(ierr);
174397b6df1SKris Buschelman #endif
1752515c552SBarry Smith #if defined(PETSC_HAVE_DSCPACK)
176f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATDSCPACK,        path,"MatCreate_DSCPACK",MatCreate_DSCPACK);CHKERRQ(ierr);
1778da957c5SKris Buschelman #endif
1782515c552SBarry Smith #if defined(PETSC_HAVE_MATLAB)
1797065e2aaSKris Buschelman   ierr = MatRegisterDynamic(MATMATLAB,         path,"MatCreate_Matlab",MatCreate_Matlab);CHKERRQ(ierr);
1807065e2aaSKris Buschelman #endif
181c0aa2d19SHong Zhang #if defined(PETSC_HAVE_PLAPACK)
182c0aa2d19SHong Zhang   ierr = MatRegisterDynamic(MATPLAPACK,        path,"MatCreate_Plapack",MatCreate_Plapack);CHKERRQ(ierr);
183c0aa2d19SHong Zhang #endif
1848a95e4e9SBarry Smith   PetscFunctionReturn(0);
1858a95e4e9SBarry Smith }
186f7cf7585SBarry Smith 
1873a7fca6bSBarry Smith 
188