xref: /petsc/src/mat/interface/matregis.c (revision bfc799aa1d1f58449fbf1f447957575ff6c196d9)
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);
68cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_IS(Mat);
717667f90SBarry Smith 
88cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJ(Mat);
98cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJ(Mat);
1017667f90SBarry Smith 
118cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqBAIJ(Mat);
128cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIBAIJ(Mat);
1317667f90SBarry Smith 
148cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqSBAIJ(Mat);
158cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPISBAIJ(Mat);
1617667f90SBarry Smith 
178cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqDense(Mat);
18*bfc799aaSStefano Zampini #if defined(PETSC_HAVE_CUDA)
19*bfc799aaSStefano Zampini PETSC_EXTERN PetscErrorCode MatCreate_SeqDenseCUDA(Mat);
20*bfc799aaSStefano Zampini #endif
218cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIDense(Mat);
2217667f90SBarry Smith 
238cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAdj(Mat);
248cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Shell(Mat);
258cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Composite(Mat);
2617667f90SBarry Smith 
278cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJPERM(Mat);
288cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJPERM(Mat);
2917667f90SBarry Smith 
304dfdc2d9SRichard Tran Mills PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJSELL(Mat);
314dfdc2d9SRichard Tran Mills PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJSELL(Mat);
324dfdc2d9SRichard Tran Mills 
33*bfc799aaSStefano Zampini #if defined(PETSC_HAVE_MKL_SPARSE)
344a2a386eSRichard Tran Mills PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJMKL(Mat);
35a84739b8SRichard Tran Mills PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJMKL(Mat);
36b9e7e5c1SBarry Smith #endif
37b5b72c8aSIrina Sokolova 
38*bfc799aaSStefano Zampini #if defined(PETSC_HAVE_MKL_SPARSE_OPTIMIZE)
39b5b72c8aSIrina Sokolova PETSC_EXTERN PetscErrorCode MatCreate_SeqBAIJMKL(Mat);
40b5b72c8aSIrina Sokolova PETSC_EXTERN PetscErrorCode MatCreate_MPIBAIJMKL(Mat);
41191b95cbSRichard Tran Mills #endif
424a2a386eSRichard Tran Mills 
438cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJCRL(Mat);
448cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJCRL(Mat);
4517667f90SBarry Smith 
468cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Scatter(Mat);
478cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_BlockMat(Mat);
488cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Nest(Mat);
49c6570e9aSVictor Minden 
50d4002b98SHong Zhang PETSC_EXTERN PetscErrorCode MatCreate_SeqSELL(Mat);
51d4002b98SHong Zhang PETSC_EXTERN PetscErrorCode MatCreate_MPISELL(Mat);
525e26d47bSHong Zhang 
53*bfc799aaSStefano Zampini #if defined(PETSC_HAVE_CUDA)
548cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJCUSPARSE(Mat);
558cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJCUSPARSE(Mat);
569ae82921SPaul Mullowney #endif
579ae82921SPaul Mullowney 
58*bfc799aaSStefano Zampini #if defined(PETSC_HAVE_VIENNACL)
59d67ff14aSKarl Rupp PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJViennaCL(Mat);
608f86e40fSKarl Rupp PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJViennaCL(Mat);
61d67ff14aSKarl Rupp #endif
62d67ff14aSKarl Rupp 
63*bfc799aaSStefano Zampini #if defined(PETSC_HAVE_FFTW)
648cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_FFTW(Mat);
65dedccee8SHong Zhang #endif
668cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Elemental(Mat);
678a95e4e9SBarry Smith 
68c094ef40SMatthew G. Knepley PETSC_EXTERN PetscErrorCode MatCreate_Preallocator(Mat);
69a3b2e22bSHong Zhang PETSC_EXTERN PetscErrorCode MatCreate_Dummy(Mat);
70c094ef40SMatthew G. Knepley 
71*bfc799aaSStefano Zampini #if defined(PETSC_HAVE_HYPRE)
7263c07aadSStefano Zampini PETSC_EXTERN PetscErrorCode MatCreate_HYPRE(Mat);
7363c07aadSStefano Zampini #endif
7463c07aadSStefano Zampini 
753423f386SBarry Smith PETSC_EXTERN PetscErrorCode MatCreate_ConstantDiagonal(Mat);
768a95e4e9SBarry Smith /*@C
77f7cf7585SBarry Smith   MatRegisterAll - Registers all of the matrix types in PETSc
788a95e4e9SBarry Smith 
798a95e4e9SBarry Smith   Not Collective
808a95e4e9SBarry Smith 
818a95e4e9SBarry Smith   Level: advanced
828a95e4e9SBarry Smith 
83d7ee760dSBarry Smith .seealso:  MatRegister()
848a95e4e9SBarry Smith @*/
85607a6623SBarry Smith PetscErrorCode  MatRegisterAll(void)
868a95e4e9SBarry Smith {
87dfbe8321SBarry Smith   PetscErrorCode ierr;
888a95e4e9SBarry Smith 
898a95e4e9SBarry Smith   PetscFunctionBegin;
900f51fdf8SToby Isaac   if (MatRegisterAllCalled) PetscFunctionReturn(0);
91f7cf7585SBarry Smith   MatRegisterAllCalled = PETSC_TRUE;
928a95e4e9SBarry Smith 
93bdf89e91SBarry Smith   ierr = MatRegister(MATMFFD,           MatCreate_MFFD);CHKERRQ(ierr);
94e884886fSBarry Smith 
95bdf89e91SBarry Smith   ierr = MatRegister(MATMPIMAIJ,        MatCreate_MAIJ);CHKERRQ(ierr);
96bdf89e91SBarry Smith   ierr = MatRegister(MATSEQMAIJ,        MatCreate_MAIJ);CHKERRQ(ierr);
97bdf89e91SBarry Smith   ierr = MatRegister(MATMAIJ,           MatCreate_MAIJ);CHKERRQ(ierr);
98273d9f13SBarry Smith 
99bdf89e91SBarry Smith   ierr = MatRegister(MATIS,             MatCreate_IS);CHKERRQ(ierr);
100bdf89e91SBarry Smith   ierr = MatRegister(MATSHELL,          MatCreate_Shell);CHKERRQ(ierr);
101bdf89e91SBarry Smith   ierr = MatRegister(MATCOMPOSITE,      MatCreate_Composite);CHKERRQ(ierr);
10201bebe75SBarry Smith 
10323bebc0bSBarry Smith   ierr = MatRegisterRootName(MATAIJ,MATSEQAIJ,MATMPIAIJ);CHKERRQ(ierr);
104bdf89e91SBarry Smith   ierr = MatRegister(MATMPIAIJ,         MatCreate_MPIAIJ);CHKERRQ(ierr);
105bdf89e91SBarry Smith   ierr = MatRegister(MATSEQAIJ,         MatCreate_SeqAIJ);CHKERRQ(ierr);
10617667f90SBarry Smith 
10723bebc0bSBarry Smith   ierr = MatRegisterRootName(MATAIJPERM,MATSEQAIJPERM,MATMPIAIJPERM);CHKERRQ(ierr);
108bdf89e91SBarry Smith   ierr = MatRegister(MATMPIAIJPERM,     MatCreate_MPIAIJPERM);CHKERRQ(ierr);
109bdf89e91SBarry Smith   ierr = MatRegister(MATSEQAIJPERM,     MatCreate_SeqAIJPERM);CHKERRQ(ierr);
11017667f90SBarry Smith 
11123bebc0bSBarry Smith   ierr = MatRegisterRootName(MATAIJSELL,MATSEQAIJSELL,MATMPIAIJSELL);CHKERRQ(ierr);
1124dfdc2d9SRichard Tran Mills   ierr = MatRegister(MATMPIAIJSELL,     MatCreate_MPIAIJSELL);CHKERRQ(ierr);
1134dfdc2d9SRichard Tran Mills   ierr = MatRegister(MATSEQAIJSELL,     MatCreate_SeqAIJSELL);CHKERRQ(ierr);
1144dfdc2d9SRichard Tran Mills 
115*bfc799aaSStefano Zampini #if defined(PETSC_HAVE_MKL_SPARSE)
11623bebc0bSBarry Smith   ierr = MatRegisterRootName(MATAIJMKL, MATSEQAIJMKL,MATMPIAIJMKL);CHKERRQ(ierr);
117a84739b8SRichard Tran Mills   ierr = MatRegister(MATMPIAIJMKL,      MatCreate_MPIAIJMKL);CHKERRQ(ierr);
1184a2a386eSRichard Tran Mills   ierr = MatRegister(MATSEQAIJMKL,      MatCreate_SeqAIJMKL);CHKERRQ(ierr);
119b9e7e5c1SBarry Smith #endif
120b5b72c8aSIrina Sokolova 
121*bfc799aaSStefano Zampini #if defined(PETSC_HAVE_MKL_SPARSE_OPTIMIZE)
12223bebc0bSBarry Smith   ierr = MatRegisterRootName(MATBAIJMKL,MATSEQBAIJMKL,MATMPIBAIJMKL);CHKERRQ(ierr);
123b5b72c8aSIrina Sokolova   ierr = MatRegister(MATMPIBAIJMKL,      MatCreate_MPIBAIJMKL);CHKERRQ(ierr);
124b5b72c8aSIrina Sokolova   ierr = MatRegister(MATSEQBAIJMKL,      MatCreate_SeqBAIJMKL);CHKERRQ(ierr);
125191b95cbSRichard Tran Mills #endif
1264a2a386eSRichard Tran Mills 
12723bebc0bSBarry Smith   ierr = MatRegisterRootName(MATAIJCRL,MATSEQAIJCRL,MATMPIAIJCRL);CHKERRQ(ierr);
128bdf89e91SBarry Smith   ierr = MatRegister(MATSEQAIJCRL,      MatCreate_SeqAIJCRL);CHKERRQ(ierr);
129bdf89e91SBarry Smith   ierr = MatRegister(MATMPIAIJCRL,      MatCreate_MPIAIJCRL);CHKERRQ(ierr);
130273d9f13SBarry Smith 
13123bebc0bSBarry Smith   ierr = MatRegisterRootName(MATBAIJ,MATSEQBAIJ,MATMPIBAIJ);CHKERRQ(ierr);
132bdf89e91SBarry Smith   ierr = MatRegister(MATMPIBAIJ,        MatCreate_MPIBAIJ);CHKERRQ(ierr);
133bdf89e91SBarry Smith   ierr = MatRegister(MATSEQBAIJ,        MatCreate_SeqBAIJ);CHKERRQ(ierr);
134273d9f13SBarry Smith 
13523bebc0bSBarry Smith   ierr = MatRegisterRootName(MATSBAIJ,MATSEQSBAIJ,MATMPISBAIJ);CHKERRQ(ierr);
136bdf89e91SBarry Smith   ierr = MatRegister(MATMPISBAIJ,       MatCreate_MPISBAIJ);CHKERRQ(ierr);
137bdf89e91SBarry Smith   ierr = MatRegister(MATSEQSBAIJ,       MatCreate_SeqSBAIJ);CHKERRQ(ierr);
13817667f90SBarry Smith 
13923bebc0bSBarry Smith   ierr = MatRegisterRootName(MATDENSE,MATSEQDENSE,MATMPIDENSE);CHKERRQ(ierr);
140bdf89e91SBarry Smith   ierr = MatRegister(MATMPIDENSE,       MatCreate_MPIDense);CHKERRQ(ierr);
141bdf89e91SBarry Smith   ierr = MatRegister(MATSEQDENSE,       MatCreate_SeqDense);CHKERRQ(ierr);
142*bfc799aaSStefano Zampini #if defined(PETSC_HAVE_CUDA)
143*bfc799aaSStefano Zampini   ierr = MatRegister(MATSEQDENSECUDA,   MatCreate_SeqDenseCUDA);CHKERRQ(ierr);
144*bfc799aaSStefano Zampini #endif
14517667f90SBarry Smith 
146bdf89e91SBarry Smith   ierr = MatRegister(MATMPIADJ,         MatCreate_MPIAdj);CHKERRQ(ierr);
147bdf89e91SBarry Smith   ierr = MatRegister(MATSCATTER,        MatCreate_Scatter);CHKERRQ(ierr);
148bdf89e91SBarry Smith   ierr = MatRegister(MATBLOCKMAT,       MatCreate_BlockMat);CHKERRQ(ierr);
149bdf89e91SBarry Smith   ierr = MatRegister(MATNEST,           MatCreate_Nest);CHKERRQ(ierr);
15068326731SBarry Smith 
15123bebc0bSBarry Smith   ierr = MatRegisterRootName(MATSELL,MATSEQSELL,MATMPISELL);CHKERRQ(ierr);
152d4002b98SHong Zhang   ierr = MatRegister(MATMPISELL,         MatCreate_MPISELL);CHKERRQ(ierr);
153d4002b98SHong Zhang   ierr = MatRegister(MATSEQSELL,         MatCreate_SeqSELL);CHKERRQ(ierr);
1545e26d47bSHong Zhang 
155*bfc799aaSStefano Zampini #if defined(PETSC_HAVE_CUDA)
15623bebc0bSBarry Smith   ierr = MatRegisterRootName(MATAIJCUSPARSE,MATSEQAIJCUSPARSE,MATMPIAIJCUSPARSE);CHKERRQ(ierr);
157bdf89e91SBarry Smith   ierr = MatRegister(MATSEQAIJCUSPARSE, MatCreate_SeqAIJCUSPARSE);CHKERRQ(ierr);
158bdf89e91SBarry Smith   ierr = MatRegister(MATMPIAIJCUSPARSE, MatCreate_MPIAIJCUSPARSE);CHKERRQ(ierr);
1599ae82921SPaul Mullowney #endif
1609ae82921SPaul Mullowney 
161*bfc799aaSStefano Zampini #if defined(PETSC_HAVE_VIENNACL)
16223bebc0bSBarry Smith   ierr = MatRegisterRootName(MATAIJVIENNACL,MATSEQAIJVIENNACL,MATMPIAIJVIENNACL);CHKERRQ(ierr);
163ab6435e1SKarl Rupp   ierr = MatRegister(MATSEQAIJVIENNACL, MatCreate_SeqAIJViennaCL);CHKERRQ(ierr);
164ab6435e1SKarl Rupp   ierr = MatRegister(MATMPIAIJVIENNACL, MatCreate_MPIAIJViennaCL);CHKERRQ(ierr);
1658f86e40fSKarl Rupp #endif
1668f86e40fSKarl Rupp 
167*bfc799aaSStefano Zampini #if defined(PETSC_HAVE_FFTW)
168bdf89e91SBarry Smith   ierr = MatRegister(MATFFTW,           MatCreate_FFTW);CHKERRQ(ierr);
169dedccee8SHong Zhang #endif
170*bfc799aaSStefano Zampini #if defined(PETSC_HAVE_ELEMENTAL)
171bdf89e91SBarry Smith   ierr = MatRegister(MATELEMENTAL,      MatCreate_Elemental);CHKERRQ(ierr);
172db31f6deSJed Brown #endif
173c094ef40SMatthew G. Knepley 
174c094ef40SMatthew G. Knepley   ierr = MatRegister(MATPREALLOCATOR,   MatCreate_Preallocator);CHKERRQ(ierr);
175a3b2e22bSHong Zhang   ierr = MatRegister(MATDUMMY,          MatCreate_Dummy);CHKERRQ(ierr);
17663c07aadSStefano Zampini 
1773423f386SBarry Smith   ierr = MatRegister(MATCONSTANTDIAGONAL,MatCreate_ConstantDiagonal);CHKERRQ(ierr);
1783423f386SBarry Smith 
179*bfc799aaSStefano Zampini #if defined(PETSC_HAVE_HYPRE)
18063c07aadSStefano Zampini   ierr = MatRegister(MATHYPRE,          MatCreate_HYPRE);CHKERRQ(ierr);
18163c07aadSStefano Zampini #endif
1828a95e4e9SBarry Smith   PetscFunctionReturn(0);
1838a95e4e9SBarry Smith }
184