xref: /petsc/src/mat/interface/matregis.c (revision 8c3ff71bb91e1c43c25fcf6109e2039cde4e7447)
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 
65*8c3ff71bSJunchao Zhang #if defined(PETSC_HAVE_KOKKOS_KERNELS)
66*8c3ff71bSJunchao Zhang PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJKokkos(Mat);
67*8c3ff71bSJunchao Zhang PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJKokkos(Mat);
68*8c3ff71bSJunchao Zhang #endif
69*8c3ff71bSJunchao 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 
89a0d2e7d8SStefano Zampini #if defined(PETSC_HAVE_HARA)
90a0d2e7d8SStefano Zampini PETSC_EXTERN PetscErrorCode MatCreate_HARA(Mat);
91a0d2e7d8SStefano Zampini #endif
92a0d2e7d8SStefano Zampini 
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 
100d7ee760dSBarry Smith .seealso:  MatRegister()
1018a95e4e9SBarry Smith @*/
102607a6623SBarry Smith PetscErrorCode  MatRegisterAll(void)
1038a95e4e9SBarry Smith {
104dfbe8321SBarry Smith   PetscErrorCode ierr;
1058a95e4e9SBarry Smith 
1068a95e4e9SBarry Smith   PetscFunctionBegin;
1070f51fdf8SToby Isaac   if (MatRegisterAllCalled) PetscFunctionReturn(0);
108f7cf7585SBarry Smith   MatRegisterAllCalled = PETSC_TRUE;
1098a95e4e9SBarry Smith 
110bdf89e91SBarry Smith   ierr = MatRegister(MATMFFD,           MatCreate_MFFD);CHKERRQ(ierr);
111e884886fSBarry Smith 
112bdf89e91SBarry Smith   ierr = MatRegister(MATMPIMAIJ,        MatCreate_MAIJ);CHKERRQ(ierr);
113bdf89e91SBarry Smith   ierr = MatRegister(MATSEQMAIJ,        MatCreate_MAIJ);CHKERRQ(ierr);
114bdf89e91SBarry Smith   ierr = MatRegister(MATMAIJ,           MatCreate_MAIJ);CHKERRQ(ierr);
115273d9f13SBarry Smith 
11649bd79ccSDebojyoti Ghosh   ierr = MatRegister(MATMPIKAIJ,        MatCreate_KAIJ);CHKERRQ(ierr);
11749bd79ccSDebojyoti Ghosh   ierr = MatRegister(MATSEQKAIJ,        MatCreate_KAIJ);CHKERRQ(ierr);
11849bd79ccSDebojyoti Ghosh   ierr = MatRegister(MATKAIJ,           MatCreate_KAIJ);CHKERRQ(ierr);
11949bd79ccSDebojyoti Ghosh 
120bdf89e91SBarry Smith   ierr = MatRegister(MATIS,             MatCreate_IS);CHKERRQ(ierr);
121bdf89e91SBarry Smith   ierr = MatRegister(MATSHELL,          MatCreate_Shell);CHKERRQ(ierr);
122bdf89e91SBarry Smith   ierr = MatRegister(MATCOMPOSITE,      MatCreate_Composite);CHKERRQ(ierr);
12301bebe75SBarry Smith 
12423bebc0bSBarry Smith   ierr = MatRegisterRootName(MATAIJ,MATSEQAIJ,MATMPIAIJ);CHKERRQ(ierr);
125bdf89e91SBarry Smith   ierr = MatRegister(MATMPIAIJ,         MatCreate_MPIAIJ);CHKERRQ(ierr);
126bdf89e91SBarry Smith   ierr = MatRegister(MATSEQAIJ,         MatCreate_SeqAIJ);CHKERRQ(ierr);
12717667f90SBarry Smith 
12823bebc0bSBarry Smith   ierr = MatRegisterRootName(MATAIJPERM,MATSEQAIJPERM,MATMPIAIJPERM);CHKERRQ(ierr);
129bdf89e91SBarry Smith   ierr = MatRegister(MATMPIAIJPERM,     MatCreate_MPIAIJPERM);CHKERRQ(ierr);
130bdf89e91SBarry Smith   ierr = MatRegister(MATSEQAIJPERM,     MatCreate_SeqAIJPERM);CHKERRQ(ierr);
13117667f90SBarry Smith 
13223bebc0bSBarry Smith   ierr = MatRegisterRootName(MATAIJSELL,MATSEQAIJSELL,MATMPIAIJSELL);CHKERRQ(ierr);
1334dfdc2d9SRichard Tran Mills   ierr = MatRegister(MATMPIAIJSELL,     MatCreate_MPIAIJSELL);CHKERRQ(ierr);
1344dfdc2d9SRichard Tran Mills   ierr = MatRegister(MATSEQAIJSELL,     MatCreate_SeqAIJSELL);CHKERRQ(ierr);
1354dfdc2d9SRichard Tran Mills 
136bfc799aaSStefano Zampini #if defined(PETSC_HAVE_MKL_SPARSE)
13723bebc0bSBarry Smith   ierr = MatRegisterRootName(MATAIJMKL, MATSEQAIJMKL,MATMPIAIJMKL);CHKERRQ(ierr);
138a84739b8SRichard Tran Mills   ierr = MatRegister(MATMPIAIJMKL,      MatCreate_MPIAIJMKL);CHKERRQ(ierr);
1394a2a386eSRichard Tran Mills   ierr = MatRegister(MATSEQAIJMKL,      MatCreate_SeqAIJMKL);CHKERRQ(ierr);
140b9e7e5c1SBarry Smith #endif
141b5b72c8aSIrina Sokolova 
142bfc799aaSStefano Zampini #if defined(PETSC_HAVE_MKL_SPARSE_OPTIMIZE)
14323bebc0bSBarry Smith   ierr = MatRegisterRootName(MATBAIJMKL,MATSEQBAIJMKL,MATMPIBAIJMKL);CHKERRQ(ierr);
144b5b72c8aSIrina Sokolova   ierr = MatRegister(MATMPIBAIJMKL,      MatCreate_MPIBAIJMKL);CHKERRQ(ierr);
145b5b72c8aSIrina Sokolova   ierr = MatRegister(MATSEQBAIJMKL,      MatCreate_SeqBAIJMKL);CHKERRQ(ierr);
146191b95cbSRichard Tran Mills #endif
1474a2a386eSRichard Tran Mills 
14823bebc0bSBarry Smith   ierr = MatRegisterRootName(MATAIJCRL,MATSEQAIJCRL,MATMPIAIJCRL);CHKERRQ(ierr);
149bdf89e91SBarry Smith   ierr = MatRegister(MATSEQAIJCRL,      MatCreate_SeqAIJCRL);CHKERRQ(ierr);
150bdf89e91SBarry Smith   ierr = MatRegister(MATMPIAIJCRL,      MatCreate_MPIAIJCRL);CHKERRQ(ierr);
151273d9f13SBarry Smith 
15223bebc0bSBarry Smith   ierr = MatRegisterRootName(MATBAIJ,MATSEQBAIJ,MATMPIBAIJ);CHKERRQ(ierr);
153bdf89e91SBarry Smith   ierr = MatRegister(MATMPIBAIJ,        MatCreate_MPIBAIJ);CHKERRQ(ierr);
154bdf89e91SBarry Smith   ierr = MatRegister(MATSEQBAIJ,        MatCreate_SeqBAIJ);CHKERRQ(ierr);
155273d9f13SBarry Smith 
15623bebc0bSBarry Smith   ierr = MatRegisterRootName(MATSBAIJ,MATSEQSBAIJ,MATMPISBAIJ);CHKERRQ(ierr);
157bdf89e91SBarry Smith   ierr = MatRegister(MATMPISBAIJ,       MatCreate_MPISBAIJ);CHKERRQ(ierr);
158bdf89e91SBarry Smith   ierr = MatRegister(MATSEQSBAIJ,       MatCreate_SeqSBAIJ);CHKERRQ(ierr);
15917667f90SBarry Smith 
16023bebc0bSBarry Smith   ierr = MatRegisterRootName(MATDENSE,MATSEQDENSE,MATMPIDENSE);CHKERRQ(ierr);
161bdf89e91SBarry Smith   ierr = MatRegister(MATMPIDENSE,       MatCreate_MPIDense);CHKERRQ(ierr);
162bdf89e91SBarry Smith   ierr = MatRegister(MATSEQDENSE,       MatCreate_SeqDense);CHKERRQ(ierr);
163bfc799aaSStefano Zampini #if defined(PETSC_HAVE_CUDA)
164637a0070SStefano Zampini   ierr = MatRegisterRootName(MATDENSECUDA,MATSEQDENSECUDA,MATMPIDENSECUDA);CHKERRQ(ierr);
165bfc799aaSStefano Zampini   ierr = MatRegister(MATSEQDENSECUDA,   MatCreate_SeqDenseCUDA);CHKERRQ(ierr);
166637a0070SStefano Zampini   ierr = MatRegister(MATMPIDENSECUDA,   MatCreate_MPIDenseCUDA);CHKERRQ(ierr);
167bfc799aaSStefano Zampini #endif
16817667f90SBarry Smith 
169bdf89e91SBarry Smith   ierr = MatRegister(MATMPIADJ,         MatCreate_MPIAdj);CHKERRQ(ierr);
170bdf89e91SBarry Smith   ierr = MatRegister(MATSCATTER,        MatCreate_Scatter);CHKERRQ(ierr);
171bdf89e91SBarry Smith   ierr = MatRegister(MATBLOCKMAT,       MatCreate_BlockMat);CHKERRQ(ierr);
172bdf89e91SBarry Smith   ierr = MatRegister(MATNEST,           MatCreate_Nest);CHKERRQ(ierr);
17368326731SBarry Smith 
17423bebc0bSBarry Smith   ierr = MatRegisterRootName(MATSELL,MATSEQSELL,MATMPISELL);CHKERRQ(ierr);
175d4002b98SHong Zhang   ierr = MatRegister(MATMPISELL,         MatCreate_MPISELL);CHKERRQ(ierr);
176d4002b98SHong Zhang   ierr = MatRegister(MATSEQSELL,         MatCreate_SeqSELL);CHKERRQ(ierr);
1775e26d47bSHong Zhang 
178bfc799aaSStefano Zampini #if defined(PETSC_HAVE_CUDA)
17923bebc0bSBarry Smith   ierr = MatRegisterRootName(MATAIJCUSPARSE,MATSEQAIJCUSPARSE,MATMPIAIJCUSPARSE);CHKERRQ(ierr);
180bdf89e91SBarry Smith   ierr = MatRegister(MATSEQAIJCUSPARSE, MatCreate_SeqAIJCUSPARSE);CHKERRQ(ierr);
181bdf89e91SBarry Smith   ierr = MatRegister(MATMPIAIJCUSPARSE, MatCreate_MPIAIJCUSPARSE);CHKERRQ(ierr);
1829ae82921SPaul Mullowney #endif
1839ae82921SPaul Mullowney 
184bfc799aaSStefano Zampini #if defined(PETSC_HAVE_VIENNACL)
18523bebc0bSBarry Smith   ierr = MatRegisterRootName(MATAIJVIENNACL,MATSEQAIJVIENNACL,MATMPIAIJVIENNACL);CHKERRQ(ierr);
186ab6435e1SKarl Rupp   ierr = MatRegister(MATSEQAIJVIENNACL, MatCreate_SeqAIJViennaCL);CHKERRQ(ierr);
187ab6435e1SKarl Rupp   ierr = MatRegister(MATMPIAIJVIENNACL, MatCreate_MPIAIJViennaCL);CHKERRQ(ierr);
1888f86e40fSKarl Rupp #endif
1898f86e40fSKarl Rupp 
190*8c3ff71bSJunchao Zhang #if defined(PETSC_HAVE_KOKKOS_KERNELS)
191*8c3ff71bSJunchao Zhang   ierr = MatRegisterRootName(MATAIJKOKKOS,MATSEQAIJKOKKOS,MATMPIAIJKOKKOS);CHKERRQ(ierr);
192*8c3ff71bSJunchao Zhang   ierr = MatRegister(MATSEQAIJKOKKOS,   MatCreate_SeqAIJKokkos);CHKERRQ(ierr);
193*8c3ff71bSJunchao Zhang   ierr = MatRegister(MATMPIAIJKOKKOS,   MatCreate_MPIAIJKokkos);CHKERRQ(ierr);
194*8c3ff71bSJunchao Zhang #endif
195*8c3ff71bSJunchao Zhang 
196bfc799aaSStefano Zampini #if defined(PETSC_HAVE_FFTW)
197bdf89e91SBarry Smith   ierr = MatRegister(MATFFTW,           MatCreate_FFTW);CHKERRQ(ierr);
198dedccee8SHong Zhang #endif
199bfc799aaSStefano Zampini #if defined(PETSC_HAVE_ELEMENTAL)
200bdf89e91SBarry Smith   ierr = MatRegister(MATELEMENTAL,      MatCreate_Elemental);CHKERRQ(ierr);
201db31f6deSJed Brown #endif
202d24d4204SJose E. Roman #if defined(PETSC_HAVE_SCALAPACK)
203d24d4204SJose E. Roman   ierr = MatRegister(MATSCALAPACK,      MatCreate_ScaLAPACK);CHKERRQ(ierr);
204d24d4204SJose E. Roman #endif
205c094ef40SMatthew G. Knepley 
206c094ef40SMatthew G. Knepley   ierr = MatRegister(MATPREALLOCATOR,   MatCreate_Preallocator);CHKERRQ(ierr);
207a3b2e22bSHong Zhang   ierr = MatRegister(MATDUMMY,          MatCreate_Dummy);CHKERRQ(ierr);
20863c07aadSStefano Zampini 
2093423f386SBarry Smith   ierr = MatRegister(MATCONSTANTDIAGONAL,MatCreate_ConstantDiagonal);CHKERRQ(ierr);
2103423f386SBarry Smith 
211bfc799aaSStefano Zampini #if defined(PETSC_HAVE_HYPRE)
21263c07aadSStefano Zampini   ierr = MatRegister(MATHYPRE,          MatCreate_HYPRE);CHKERRQ(ierr);
21363c07aadSStefano Zampini #endif
214a0d2e7d8SStefano Zampini 
215a0d2e7d8SStefano Zampini #if defined(PETSC_HAVE_HARA)
216a0d2e7d8SStefano Zampini   ierr = MatRegister(MATHARA,           MatCreate_HARA);CHKERRQ(ierr);
217a0d2e7d8SStefano Zampini #endif
2188a95e4e9SBarry Smith   PetscFunctionReturn(0);
2198a95e4e9SBarry Smith }
220