xref: /petsc/src/mat/interface/matregis.c (revision 9566063d113dddea24716c546802770db7481bc0)
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 
104d7ee760dSBarry Smith .seealso:  MatRegister()
1058a95e4e9SBarry Smith @*/
106607a6623SBarry Smith PetscErrorCode  MatRegisterAll(void)
1078a95e4e9SBarry Smith {
1088a95e4e9SBarry Smith   PetscFunctionBegin;
1090f51fdf8SToby Isaac   if (MatRegisterAllCalled) PetscFunctionReturn(0);
110f7cf7585SBarry Smith   MatRegisterAllCalled = PETSC_TRUE;
1118a95e4e9SBarry Smith 
112*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATMFFD,           MatCreate_MFFD));
113e884886fSBarry Smith 
114*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATMPIMAIJ,        MatCreate_MAIJ));
115*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATSEQMAIJ,        MatCreate_MAIJ));
116*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATMAIJ,           MatCreate_MAIJ));
117273d9f13SBarry Smith 
118*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATMPIKAIJ,        MatCreate_KAIJ));
119*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATSEQKAIJ,        MatCreate_KAIJ));
120*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATKAIJ,           MatCreate_KAIJ));
12149bd79ccSDebojyoti Ghosh 
122*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATIS,             MatCreate_IS));
123*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATSHELL,          MatCreate_Shell));
124*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATCOMPOSITE,      MatCreate_Composite));
12501bebe75SBarry Smith 
126*9566063dSJacob Faibussowitsch   PetscCall(MatRegisterRootName(MATAIJ,MATSEQAIJ,MATMPIAIJ));
127*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATMPIAIJ,         MatCreate_MPIAIJ));
128*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATSEQAIJ,         MatCreate_SeqAIJ));
12917667f90SBarry Smith 
130*9566063dSJacob Faibussowitsch   PetscCall(MatRegisterRootName(MATAIJPERM,MATSEQAIJPERM,MATMPIAIJPERM));
131*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATMPIAIJPERM,     MatCreate_MPIAIJPERM));
132*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATSEQAIJPERM,     MatCreate_SeqAIJPERM));
13317667f90SBarry Smith 
134*9566063dSJacob Faibussowitsch   PetscCall(MatRegisterRootName(MATAIJSELL,MATSEQAIJSELL,MATMPIAIJSELL));
135*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATMPIAIJSELL,     MatCreate_MPIAIJSELL));
136*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATSEQAIJSELL,     MatCreate_SeqAIJSELL));
1374dfdc2d9SRichard Tran Mills 
138bfc799aaSStefano Zampini #if defined(PETSC_HAVE_MKL_SPARSE)
139*9566063dSJacob Faibussowitsch   PetscCall(MatRegisterRootName(MATAIJMKL, MATSEQAIJMKL,MATMPIAIJMKL));
140*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATMPIAIJMKL,      MatCreate_MPIAIJMKL));
141*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATSEQAIJMKL,      MatCreate_SeqAIJMKL));
142b9e7e5c1SBarry Smith #endif
143b5b72c8aSIrina Sokolova 
144bfc799aaSStefano Zampini #if defined(PETSC_HAVE_MKL_SPARSE_OPTIMIZE)
145*9566063dSJacob Faibussowitsch   PetscCall(MatRegisterRootName(MATBAIJMKL,MATSEQBAIJMKL,MATMPIBAIJMKL));
146*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATMPIBAIJMKL,      MatCreate_MPIBAIJMKL));
147*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATSEQBAIJMKL,      MatCreate_SeqBAIJMKL));
148191b95cbSRichard Tran Mills #endif
1494a2a386eSRichard Tran Mills 
150*9566063dSJacob Faibussowitsch   PetscCall(MatRegisterRootName(MATAIJCRL,MATSEQAIJCRL,MATMPIAIJCRL));
151*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATSEQAIJCRL,      MatCreate_SeqAIJCRL));
152*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATMPIAIJCRL,      MatCreate_MPIAIJCRL));
153273d9f13SBarry Smith 
154*9566063dSJacob Faibussowitsch   PetscCall(MatRegisterRootName(MATBAIJ,MATSEQBAIJ,MATMPIBAIJ));
155*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATMPIBAIJ,        MatCreate_MPIBAIJ));
156*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATSEQBAIJ,        MatCreate_SeqBAIJ));
157273d9f13SBarry Smith 
158*9566063dSJacob Faibussowitsch   PetscCall(MatRegisterRootName(MATSBAIJ,MATSEQSBAIJ,MATMPISBAIJ));
159*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATMPISBAIJ,       MatCreate_MPISBAIJ));
160*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATSEQSBAIJ,       MatCreate_SeqSBAIJ));
16117667f90SBarry Smith 
162*9566063dSJacob Faibussowitsch   PetscCall(MatRegisterRootName(MATDENSE,MATSEQDENSE,MATMPIDENSE));
163*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATMPIDENSE,       MatCreate_MPIDense));
164*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATSEQDENSE,       MatCreate_SeqDense));
165bfc799aaSStefano Zampini #if defined(PETSC_HAVE_CUDA)
166*9566063dSJacob Faibussowitsch   PetscCall(MatRegisterRootName(MATDENSECUDA,MATSEQDENSECUDA,MATMPIDENSECUDA));
167*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATSEQDENSECUDA,   MatCreate_SeqDenseCUDA));
168*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATMPIDENSECUDA,   MatCreate_MPIDenseCUDA));
169bfc799aaSStefano Zampini #endif
17017667f90SBarry Smith 
171*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATMPIADJ,         MatCreate_MPIAdj));
172*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATSCATTER,        MatCreate_Scatter));
173*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATBLOCKMAT,       MatCreate_BlockMat));
174*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATNEST,           MatCreate_Nest));
17568326731SBarry Smith 
176*9566063dSJacob Faibussowitsch   PetscCall(MatRegisterRootName(MATSELL,MATSEQSELL,MATMPISELL));
177*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATMPISELL,         MatCreate_MPISELL));
178*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATSEQSELL,         MatCreate_SeqSELL));
1795e26d47bSHong Zhang 
180bfc799aaSStefano Zampini #if defined(PETSC_HAVE_CUDA)
181*9566063dSJacob Faibussowitsch   PetscCall(MatRegisterRootName(MATAIJCUSPARSE,MATSEQAIJCUSPARSE,MATMPIAIJCUSPARSE));
182*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATSEQAIJCUSPARSE, MatCreate_SeqAIJCUSPARSE));
183*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATMPIAIJCUSPARSE, MatCreate_MPIAIJCUSPARSE));
1849ae82921SPaul Mullowney #endif
1859ae82921SPaul Mullowney 
186bfc799aaSStefano Zampini #if defined(PETSC_HAVE_VIENNACL)
187*9566063dSJacob Faibussowitsch   PetscCall(MatRegisterRootName(MATAIJVIENNACL,MATSEQAIJVIENNACL,MATMPIAIJVIENNACL));
188*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATSEQAIJVIENNACL, MatCreate_SeqAIJViennaCL));
189*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATMPIAIJVIENNACL, MatCreate_MPIAIJViennaCL));
1908f86e40fSKarl Rupp #endif
1918f86e40fSKarl Rupp 
1928c3ff71bSJunchao Zhang #if defined(PETSC_HAVE_KOKKOS_KERNELS)
193*9566063dSJacob Faibussowitsch   PetscCall(MatRegisterRootName(MATAIJKOKKOS,MATSEQAIJKOKKOS,MATMPIAIJKOKKOS));
194*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATSEQAIJKOKKOS,   MatCreate_SeqAIJKokkos));
195*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATMPIAIJKOKKOS,   MatCreate_MPIAIJKokkos));
1968c3ff71bSJunchao Zhang #endif
1978c3ff71bSJunchao Zhang 
198bfc799aaSStefano Zampini #if defined(PETSC_HAVE_FFTW)
199*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATFFTW,           MatCreate_FFTW));
200dedccee8SHong Zhang #endif
201bfc799aaSStefano Zampini #if defined(PETSC_HAVE_ELEMENTAL)
202*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATELEMENTAL,      MatCreate_Elemental));
203db31f6deSJed Brown #endif
204d24d4204SJose E. Roman #if defined(PETSC_HAVE_SCALAPACK)
205*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATSCALAPACK,      MatCreate_ScaLAPACK));
206d24d4204SJose E. Roman #endif
207c094ef40SMatthew G. Knepley 
208*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATPREALLOCATOR,   MatCreate_Preallocator));
209*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATDUMMY,          MatCreate_Dummy));
21063c07aadSStefano Zampini 
211*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATCONSTANTDIAGONAL,MatCreate_ConstantDiagonal));
2123423f386SBarry Smith 
213bfc799aaSStefano Zampini #if defined(PETSC_HAVE_HYPRE)
214*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATHYPRE,          MatCreate_HYPRE));
21563c07aadSStefano Zampini #endif
216a0d2e7d8SStefano Zampini 
21753022affSStefano Zampini #if defined(PETSC_HAVE_H2OPUS)
218*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATH2OPUS,         MatCreate_H2OPUS));
219a0d2e7d8SStefano Zampini #endif
220c7a4214aSPierre Jolivet 
221c7a4214aSPierre Jolivet #if defined(PETSC_HAVE_HTOOL)
222*9566063dSJacob Faibussowitsch   PetscCall(MatRegister(MATHTOOL,          MatCreate_Htool));
223c7a4214aSPierre Jolivet #endif
2248a95e4e9SBarry Smith   PetscFunctionReturn(0);
2258a95e4e9SBarry Smith }
226