xref: /petsc/src/mat/interface/matregis.c (revision 11a5261e40035b7c793f2783a2ba6c7cd4f3b077)
18a95e4e9SBarry Smith 
2af0996ceSBarry Smith #include <petsc/private/matimpl.h> /*I "petscmat.h" I*/
38a95e4e9SBarry Smith 
48cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MFFD(Mat);
58cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MAIJ(Mat);
649bd79ccSDebojyoti Ghosh PETSC_EXTERN PetscErrorCode MatCreate_KAIJ(Mat);
78cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_IS(Mat);
817667f90SBarry Smith 
98cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJ(Mat);
108cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJ(Mat);
1117667f90SBarry Smith 
128cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqBAIJ(Mat);
138cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIBAIJ(Mat);
1417667f90SBarry Smith 
158cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqSBAIJ(Mat);
168cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPISBAIJ(Mat);
1717667f90SBarry Smith 
188cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqDense(Mat);
19637a0070SStefano Zampini PETSC_EXTERN PetscErrorCode MatCreate_MPIDense(Mat);
20bfc799aaSStefano Zampini #if defined(PETSC_HAVE_CUDA)
21bfc799aaSStefano Zampini PETSC_EXTERN PetscErrorCode MatCreate_SeqDenseCUDA(Mat);
22637a0070SStefano Zampini PETSC_EXTERN PetscErrorCode MatCreate_MPIDenseCUDA(Mat);
23bfc799aaSStefano Zampini #endif
2417667f90SBarry Smith 
258cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAdj(Mat);
268cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Shell(Mat);
278cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Composite(Mat);
2817667f90SBarry Smith 
298cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJPERM(Mat);
308cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJPERM(Mat);
3117667f90SBarry Smith 
324dfdc2d9SRichard Tran Mills PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJSELL(Mat);
334dfdc2d9SRichard Tran Mills PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJSELL(Mat);
344dfdc2d9SRichard Tran Mills 
35bfc799aaSStefano Zampini #if defined(PETSC_HAVE_MKL_SPARSE)
364a2a386eSRichard Tran Mills PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJMKL(Mat);
37a84739b8SRichard Tran Mills PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJMKL(Mat);
38b9e7e5c1SBarry Smith #endif
39b5b72c8aSIrina Sokolova 
40bfc799aaSStefano Zampini #if defined(PETSC_HAVE_MKL_SPARSE_OPTIMIZE)
41b5b72c8aSIrina Sokolova PETSC_EXTERN PetscErrorCode MatCreate_SeqBAIJMKL(Mat);
42b5b72c8aSIrina Sokolova PETSC_EXTERN PetscErrorCode MatCreate_MPIBAIJMKL(Mat);
43191b95cbSRichard Tran Mills #endif
444a2a386eSRichard Tran Mills 
458cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJCRL(Mat);
468cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJCRL(Mat);
4717667f90SBarry Smith 
488cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Scatter(Mat);
498cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_BlockMat(Mat);
508cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Nest(Mat);
51c6570e9aSVictor Minden 
52d4002b98SHong Zhang PETSC_EXTERN PetscErrorCode MatCreate_SeqSELL(Mat);
53d4002b98SHong Zhang PETSC_EXTERN PetscErrorCode MatCreate_MPISELL(Mat);
545e26d47bSHong Zhang 
55bfc799aaSStefano Zampini #if defined(PETSC_HAVE_CUDA)
568cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJCUSPARSE(Mat);
578cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJCUSPARSE(Mat);
589ae82921SPaul Mullowney #endif
599ae82921SPaul Mullowney 
60bfc799aaSStefano Zampini #if defined(PETSC_HAVE_VIENNACL)
61d67ff14aSKarl Rupp PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJViennaCL(Mat);
628f86e40fSKarl Rupp PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJViennaCL(Mat);
63d67ff14aSKarl Rupp #endif
64d67ff14aSKarl Rupp 
658c3ff71bSJunchao Zhang #if defined(PETSC_HAVE_KOKKOS_KERNELS)
668c3ff71bSJunchao Zhang PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJKokkos(Mat);
678c3ff71bSJunchao Zhang PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJKokkos(Mat);
688c3ff71bSJunchao Zhang #endif
698c3ff71bSJunchao Zhang 
70bfc799aaSStefano Zampini #if defined(PETSC_HAVE_FFTW)
718cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_FFTW(Mat);
72dedccee8SHong Zhang #endif
73d8304050SJose E. Roman #if defined(PETSC_HAVE_ELEMENTAL)
748cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Elemental(Mat);
75d8304050SJose E. Roman #endif
76d24d4204SJose E. Roman #if defined(PETSC_HAVE_SCALAPACK)
77d24d4204SJose E. Roman PETSC_EXTERN PetscErrorCode MatCreate_ScaLAPACK(Mat);
78d24d4204SJose E. Roman #endif
798a95e4e9SBarry Smith 
80c094ef40SMatthew G. Knepley PETSC_EXTERN PetscErrorCode MatCreate_Preallocator(Mat);
81a3b2e22bSHong Zhang PETSC_EXTERN PetscErrorCode MatCreate_Dummy(Mat);
82c094ef40SMatthew G. Knepley 
83bfc799aaSStefano Zampini #if defined(PETSC_HAVE_HYPRE)
8463c07aadSStefano Zampini PETSC_EXTERN PetscErrorCode MatCreate_HYPRE(Mat);
8563c07aadSStefano Zampini #endif
8663c07aadSStefano Zampini 
873423f386SBarry Smith PETSC_EXTERN PetscErrorCode MatCreate_ConstantDiagonal(Mat);
88a0d2e7d8SStefano Zampini 
8953022affSStefano Zampini #if defined(PETSC_HAVE_H2OPUS)
9053022affSStefano Zampini PETSC_EXTERN PetscErrorCode MatCreate_H2OPUS(Mat);
91a0d2e7d8SStefano Zampini #endif
92a0d2e7d8SStefano Zampini 
93c7a4214aSPierre Jolivet #if defined(PETSC_HAVE_HTOOL)
94c7a4214aSPierre Jolivet PETSC_EXTERN PetscErrorCode MatCreate_Htool(Mat);
95c7a4214aSPierre Jolivet #endif
96c7a4214aSPierre Jolivet 
978a95e4e9SBarry Smith /*@C
98f7cf7585SBarry Smith   MatRegisterAll - Registers all of the matrix types in PETSc
998a95e4e9SBarry Smith 
1008a95e4e9SBarry Smith   Not Collective
1018a95e4e9SBarry Smith 
1028a95e4e9SBarry Smith   Level: advanced
1038a95e4e9SBarry Smith 
104*11a5261eSBarry Smith .seealso: `MatType`, `MatSetType()`, `MatRegister()`
1058a95e4e9SBarry Smith @*/
1069371c9d4SSatish Balay PetscErrorCode MatRegisterAll(void) {
1078a95e4e9SBarry Smith   PetscFunctionBegin;
1080f51fdf8SToby Isaac   if (MatRegisterAllCalled) PetscFunctionReturn(0);
109f7cf7585SBarry Smith   MatRegisterAllCalled = PETSC_TRUE;
1108a95e4e9SBarry Smith 
1119566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATMFFD, MatCreate_MFFD));
112e884886fSBarry Smith 
1139566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATMPIMAIJ, MatCreate_MAIJ));
1149566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATSEQMAIJ, MatCreate_MAIJ));
1159566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATMAIJ, MatCreate_MAIJ));
116273d9f13SBarry Smith 
1179566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATMPIKAIJ, MatCreate_KAIJ));
1189566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATSEQKAIJ, MatCreate_KAIJ));
1199566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATKAIJ, MatCreate_KAIJ));
12049bd79ccSDebojyoti Ghosh 
1219566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATIS, MatCreate_IS));
1229566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATSHELL, MatCreate_Shell));
1239566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATCOMPOSITE, MatCreate_Composite));
12401bebe75SBarry Smith 
1259566063dSJacob Faibussowitsch   PetscCall(MatRegisterRootName(MATAIJ, MATSEQAIJ, MATMPIAIJ));
1269566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATMPIAIJ, MatCreate_MPIAIJ));
1279566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATSEQAIJ, MatCreate_SeqAIJ));
12817667f90SBarry Smith 
1299566063dSJacob Faibussowitsch   PetscCall(MatRegisterRootName(MATAIJPERM, MATSEQAIJPERM, MATMPIAIJPERM));
1309566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATMPIAIJPERM, MatCreate_MPIAIJPERM));
1319566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATSEQAIJPERM, MatCreate_SeqAIJPERM));
13217667f90SBarry Smith 
1339566063dSJacob Faibussowitsch   PetscCall(MatRegisterRootName(MATAIJSELL, MATSEQAIJSELL, MATMPIAIJSELL));
1349566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATMPIAIJSELL, MatCreate_MPIAIJSELL));
1359566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATSEQAIJSELL, MatCreate_SeqAIJSELL));
1364dfdc2d9SRichard Tran Mills 
137bfc799aaSStefano Zampini #if defined(PETSC_HAVE_MKL_SPARSE)
1389566063dSJacob Faibussowitsch   PetscCall(MatRegisterRootName(MATAIJMKL, MATSEQAIJMKL, MATMPIAIJMKL));
1399566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATMPIAIJMKL, MatCreate_MPIAIJMKL));
1409566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATSEQAIJMKL, MatCreate_SeqAIJMKL));
141b9e7e5c1SBarry Smith #endif
142b5b72c8aSIrina Sokolova 
143bfc799aaSStefano Zampini #if defined(PETSC_HAVE_MKL_SPARSE_OPTIMIZE)
1449566063dSJacob Faibussowitsch   PetscCall(MatRegisterRootName(MATBAIJMKL, MATSEQBAIJMKL, MATMPIBAIJMKL));
1459566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATMPIBAIJMKL, MatCreate_MPIBAIJMKL));
1469566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATSEQBAIJMKL, MatCreate_SeqBAIJMKL));
147191b95cbSRichard Tran Mills #endif
1484a2a386eSRichard Tran Mills 
1499566063dSJacob Faibussowitsch   PetscCall(MatRegisterRootName(MATAIJCRL, MATSEQAIJCRL, MATMPIAIJCRL));
1509566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATSEQAIJCRL, MatCreate_SeqAIJCRL));
1519566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATMPIAIJCRL, MatCreate_MPIAIJCRL));
152273d9f13SBarry Smith 
1539566063dSJacob Faibussowitsch   PetscCall(MatRegisterRootName(MATBAIJ, MATSEQBAIJ, MATMPIBAIJ));
1549566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATMPIBAIJ, MatCreate_MPIBAIJ));
1559566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATSEQBAIJ, MatCreate_SeqBAIJ));
156273d9f13SBarry Smith 
1579566063dSJacob Faibussowitsch   PetscCall(MatRegisterRootName(MATSBAIJ, MATSEQSBAIJ, MATMPISBAIJ));
1589566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATMPISBAIJ, MatCreate_MPISBAIJ));
1599566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATSEQSBAIJ, MatCreate_SeqSBAIJ));
16017667f90SBarry Smith 
1619566063dSJacob Faibussowitsch   PetscCall(MatRegisterRootName(MATDENSE, MATSEQDENSE, MATMPIDENSE));
1629566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATMPIDENSE, MatCreate_MPIDense));
1639566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATSEQDENSE, MatCreate_SeqDense));
164bfc799aaSStefano Zampini #if defined(PETSC_HAVE_CUDA)
1659566063dSJacob Faibussowitsch   PetscCall(MatRegisterRootName(MATDENSECUDA, MATSEQDENSECUDA, MATMPIDENSECUDA));
1669566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATSEQDENSECUDA, MatCreate_SeqDenseCUDA));
1679566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATMPIDENSECUDA, MatCreate_MPIDenseCUDA));
168bfc799aaSStefano Zampini #endif
16917667f90SBarry Smith 
1709566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATMPIADJ, MatCreate_MPIAdj));
1719566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATSCATTER, MatCreate_Scatter));
1729566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATBLOCKMAT, MatCreate_BlockMat));
1739566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATNEST, MatCreate_Nest));
17468326731SBarry Smith 
1759566063dSJacob Faibussowitsch   PetscCall(MatRegisterRootName(MATSELL, MATSEQSELL, MATMPISELL));
1769566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATMPISELL, MatCreate_MPISELL));
1779566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATSEQSELL, MatCreate_SeqSELL));
1785e26d47bSHong Zhang 
179bfc799aaSStefano Zampini #if defined(PETSC_HAVE_CUDA)
1809566063dSJacob Faibussowitsch   PetscCall(MatRegisterRootName(MATAIJCUSPARSE, MATSEQAIJCUSPARSE, MATMPIAIJCUSPARSE));
1819566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATSEQAIJCUSPARSE, MatCreate_SeqAIJCUSPARSE));
1829566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATMPIAIJCUSPARSE, MatCreate_MPIAIJCUSPARSE));
1839ae82921SPaul Mullowney #endif
1849ae82921SPaul Mullowney 
185bfc799aaSStefano Zampini #if defined(PETSC_HAVE_VIENNACL)
1869566063dSJacob Faibussowitsch   PetscCall(MatRegisterRootName(MATAIJVIENNACL, MATSEQAIJVIENNACL, MATMPIAIJVIENNACL));
1879566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATSEQAIJVIENNACL, MatCreate_SeqAIJViennaCL));
1889566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATMPIAIJVIENNACL, MatCreate_MPIAIJViennaCL));
1898f86e40fSKarl Rupp #endif
1908f86e40fSKarl Rupp 
1918c3ff71bSJunchao Zhang #if defined(PETSC_HAVE_KOKKOS_KERNELS)
1929566063dSJacob Faibussowitsch   PetscCall(MatRegisterRootName(MATAIJKOKKOS, MATSEQAIJKOKKOS, MATMPIAIJKOKKOS));
1939566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATSEQAIJKOKKOS, MatCreate_SeqAIJKokkos));
1949566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATMPIAIJKOKKOS, MatCreate_MPIAIJKokkos));
1958c3ff71bSJunchao Zhang #endif
1968c3ff71bSJunchao Zhang 
197bfc799aaSStefano Zampini #if defined(PETSC_HAVE_FFTW)
1989566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATFFTW, MatCreate_FFTW));
199dedccee8SHong Zhang #endif
200bfc799aaSStefano Zampini #if defined(PETSC_HAVE_ELEMENTAL)
2019566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATELEMENTAL, MatCreate_Elemental));
202db31f6deSJed Brown #endif
203d24d4204SJose E. Roman #if defined(PETSC_HAVE_SCALAPACK)
2049566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATSCALAPACK, MatCreate_ScaLAPACK));
205d24d4204SJose E. Roman #endif
206c094ef40SMatthew G. Knepley 
2079566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATPREALLOCATOR, MatCreate_Preallocator));
2089566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATDUMMY, MatCreate_Dummy));
20963c07aadSStefano Zampini 
2109566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATCONSTANTDIAGONAL, MatCreate_ConstantDiagonal));
2113423f386SBarry Smith 
212bfc799aaSStefano Zampini #if defined(PETSC_HAVE_HYPRE)
2139566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATHYPRE, MatCreate_HYPRE));
21463c07aadSStefano Zampini #endif
215a0d2e7d8SStefano Zampini 
21653022affSStefano Zampini #if defined(PETSC_HAVE_H2OPUS)
2179566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATH2OPUS, MatCreate_H2OPUS));
218a0d2e7d8SStefano Zampini #endif
219c7a4214aSPierre Jolivet 
220c7a4214aSPierre Jolivet #if defined(PETSC_HAVE_HTOOL)
2219566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATHTOOL, MatCreate_Htool));
222c7a4214aSPierre Jolivet #endif
2238a95e4e9SBarry Smith   PetscFunctionReturn(0);
2248a95e4e9SBarry Smith }
225