xref: /petsc/src/mat/interface/matregis.c (revision 4dfdc2d9707c1718a8623669ea9b18b0a565f2fa)
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);
188cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIDense(Mat);
1917667f90SBarry Smith 
208cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAdj(Mat);
218cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Shell(Mat);
228cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Composite(Mat);
2317667f90SBarry Smith 
248cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJPERM(Mat);
258cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJPERM(Mat);
2617667f90SBarry Smith 
27*4dfdc2d9SRichard Tran Mills PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJSELL(Mat);
28*4dfdc2d9SRichard Tran Mills /* Uncomment below line when MatCreate_MPIAIJSELL() is completed. --RTM
29*4dfdc2d9SRichard Tran Mills PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJSELL(Mat);
30*4dfdc2d9SRichard Tran Mills */
31*4dfdc2d9SRichard Tran Mills 
329779e05dSSatish Balay #if defined PETSC_HAVE_MKL_SPARSE
334a2a386eSRichard Tran Mills PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJMKL(Mat);
34a84739b8SRichard Tran Mills PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJMKL(Mat);
35b5b72c8aSIrina Sokolova 
36b5b72c8aSIrina Sokolova PETSC_EXTERN PetscErrorCode MatCreate_SeqBAIJMKL(Mat);
37b5b72c8aSIrina Sokolova PETSC_EXTERN PetscErrorCode MatCreate_MPIBAIJMKL(Mat);
38191b95cbSRichard Tran Mills #endif
394a2a386eSRichard Tran Mills 
408cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJCRL(Mat);
418cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJCRL(Mat);
4217667f90SBarry Smith 
438cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Scatter(Mat);
448cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_BlockMat(Mat);
458cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Nest(Mat);
46c6570e9aSVictor Minden 
47d4002b98SHong Zhang PETSC_EXTERN PetscErrorCode MatCreate_SeqSELL(Mat);
48d4002b98SHong Zhang PETSC_EXTERN PetscErrorCode MatCreate_MPISELL(Mat);
495e26d47bSHong Zhang 
50c41cb2e2SAlejandro Lamas Daviña #if defined PETSC_HAVE_VECCUDA
518cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJCUSPARSE(Mat);
528cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJCUSPARSE(Mat);
539ae82921SPaul Mullowney #endif
549ae82921SPaul Mullowney 
55d67ff14aSKarl Rupp #if defined PETSC_HAVE_VIENNACL
56d67ff14aSKarl Rupp PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJViennaCL(Mat);
578f86e40fSKarl Rupp PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJViennaCL(Mat);
58d67ff14aSKarl Rupp #endif
59d67ff14aSKarl Rupp 
60dedccee8SHong Zhang #if defined PETSC_HAVE_FFTW
618cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_FFTW(Mat);
62dedccee8SHong Zhang #endif
638cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Elemental(Mat);
648a95e4e9SBarry Smith 
65c094ef40SMatthew G. Knepley PETSC_EXTERN PetscErrorCode MatCreate_Preallocator(Mat);
66a3b2e22bSHong Zhang PETSC_EXTERN PetscErrorCode MatCreate_Dummy(Mat);
67c094ef40SMatthew G. Knepley 
6863c07aadSStefano Zampini #if defined PETSC_HAVE_HYPRE
6963c07aadSStefano Zampini PETSC_EXTERN PetscErrorCode MatCreate_HYPRE(Mat);
7063c07aadSStefano Zampini #endif
7163c07aadSStefano Zampini 
728a95e4e9SBarry Smith /*@C
73f7cf7585SBarry Smith   MatRegisterAll - Registers all of the matrix types in PETSc
748a95e4e9SBarry Smith 
758a95e4e9SBarry Smith   Not Collective
768a95e4e9SBarry Smith 
778a95e4e9SBarry Smith   Level: advanced
788a95e4e9SBarry Smith 
798a95e4e9SBarry Smith .keywords: KSP, register, all
808a95e4e9SBarry Smith 
81d7ee760dSBarry Smith .seealso:  MatRegister()
828a95e4e9SBarry Smith @*/
83607a6623SBarry Smith PetscErrorCode  MatRegisterAll(void)
848a95e4e9SBarry Smith {
85dfbe8321SBarry Smith   PetscErrorCode ierr;
868a95e4e9SBarry Smith 
878a95e4e9SBarry Smith   PetscFunctionBegin;
880f51fdf8SToby Isaac   if (MatRegisterAllCalled) PetscFunctionReturn(0);
89f7cf7585SBarry Smith   MatRegisterAllCalled = PETSC_TRUE;
908a95e4e9SBarry Smith 
91bdf89e91SBarry Smith   ierr = MatRegister(MATMFFD,           MatCreate_MFFD);CHKERRQ(ierr);
92e884886fSBarry Smith 
93bdf89e91SBarry Smith   ierr = MatRegister(MATMPIMAIJ,        MatCreate_MAIJ);CHKERRQ(ierr);
94bdf89e91SBarry Smith   ierr = MatRegister(MATSEQMAIJ,        MatCreate_MAIJ);CHKERRQ(ierr);
95bdf89e91SBarry Smith   ierr = MatRegister(MATMAIJ,           MatCreate_MAIJ);CHKERRQ(ierr);
96273d9f13SBarry Smith 
97bdf89e91SBarry Smith   ierr = MatRegister(MATIS,             MatCreate_IS);CHKERRQ(ierr);
98bdf89e91SBarry Smith   ierr = MatRegister(MATSHELL,          MatCreate_Shell);CHKERRQ(ierr);
99bdf89e91SBarry Smith   ierr = MatRegister(MATCOMPOSITE,      MatCreate_Composite);CHKERRQ(ierr);
10001bebe75SBarry Smith 
10101bebe75SBarry Smith   ierr = MatRegisterBaseName(MATAIJ,MATSEQAIJ,MATMPIAIJ);CHKERRQ(ierr);
102bdf89e91SBarry Smith   ierr = MatRegister(MATMPIAIJ,         MatCreate_MPIAIJ);CHKERRQ(ierr);
103bdf89e91SBarry Smith   ierr = MatRegister(MATSEQAIJ,         MatCreate_SeqAIJ);CHKERRQ(ierr);
10417667f90SBarry Smith 
10501bebe75SBarry Smith   ierr = MatRegisterBaseName(MATAIJPERM,MATSEQAIJPERM,MATMPIAIJPERM);CHKERRQ(ierr);
106bdf89e91SBarry Smith   ierr = MatRegister(MATMPIAIJPERM,     MatCreate_MPIAIJPERM);CHKERRQ(ierr);
107bdf89e91SBarry Smith   ierr = MatRegister(MATSEQAIJPERM,     MatCreate_SeqAIJPERM);CHKERRQ(ierr);
10817667f90SBarry Smith 
109*4dfdc2d9SRichard Tran Mills   ierr = MatRegisterBaseName(MATAIJSELL,MATSEQAIJSELL,MATMPIAIJSELL);CHKERRQ(ierr);
110*4dfdc2d9SRichard Tran Mills /* Uncomment when MatCreate_MPIAIJSELL has been created. --RTM
111*4dfdc2d9SRichard Tran Mills   ierr = MatRegister(MATMPIAIJSELL,     MatCreate_MPIAIJSELL);CHKERRQ(ierr);
112*4dfdc2d9SRichard Tran Mills */
113*4dfdc2d9SRichard Tran Mills   ierr = MatRegister(MATSEQAIJSELL,     MatCreate_SeqAIJSELL);CHKERRQ(ierr);
114*4dfdc2d9SRichard Tran Mills 
1159779e05dSSatish Balay #if defined PETSC_HAVE_MKL_SPARSE
1164a2a386eSRichard Tran Mills   ierr = MatRegisterBaseName(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);
119b5b72c8aSIrina Sokolova 
120b5b72c8aSIrina Sokolova   ierr = MatRegisterBaseName(MATBAIJMKL,MATSEQBAIJMKL,MATMPIBAIJMKL);CHKERRQ(ierr);
121b5b72c8aSIrina Sokolova   ierr = MatRegister(MATMPIBAIJMKL,      MatCreate_MPIBAIJMKL);CHKERRQ(ierr);
122b5b72c8aSIrina Sokolova   ierr = MatRegister(MATSEQBAIJMKL,      MatCreate_SeqBAIJMKL);CHKERRQ(ierr);
123191b95cbSRichard Tran Mills #endif
1244a2a386eSRichard Tran Mills 
12501bebe75SBarry Smith   ierr = MatRegisterBaseName(MATAIJCRL,MATSEQAIJCRL,MATMPIAIJCRL);CHKERRQ(ierr);
126bdf89e91SBarry Smith   ierr = MatRegister(MATSEQAIJCRL,      MatCreate_SeqAIJCRL);CHKERRQ(ierr);
127bdf89e91SBarry Smith   ierr = MatRegister(MATMPIAIJCRL,      MatCreate_MPIAIJCRL);CHKERRQ(ierr);
128273d9f13SBarry Smith 
12901bebe75SBarry Smith   ierr = MatRegisterBaseName(MATBAIJ,MATSEQBAIJ,MATMPIBAIJ);CHKERRQ(ierr);
130bdf89e91SBarry Smith   ierr = MatRegister(MATMPIBAIJ,        MatCreate_MPIBAIJ);CHKERRQ(ierr);
131bdf89e91SBarry Smith   ierr = MatRegister(MATSEQBAIJ,        MatCreate_SeqBAIJ);CHKERRQ(ierr);
132273d9f13SBarry Smith 
13301bebe75SBarry Smith   ierr = MatRegisterBaseName(MATSBAIJ,MATSEQSBAIJ,MATMPISBAIJ);CHKERRQ(ierr);
134bdf89e91SBarry Smith   ierr = MatRegister(MATMPISBAIJ,       MatCreate_MPISBAIJ);CHKERRQ(ierr);
135bdf89e91SBarry Smith   ierr = MatRegister(MATSEQSBAIJ,       MatCreate_SeqSBAIJ);CHKERRQ(ierr);
13617667f90SBarry Smith 
13701bebe75SBarry Smith   ierr = MatRegisterBaseName(MATDENSE,MATSEQDENSE,MATMPIDENSE);CHKERRQ(ierr);
138bdf89e91SBarry Smith   ierr = MatRegister(MATMPIDENSE,       MatCreate_MPIDense);CHKERRQ(ierr);
139bdf89e91SBarry Smith   ierr = MatRegister(MATSEQDENSE,       MatCreate_SeqDense);CHKERRQ(ierr);
14017667f90SBarry Smith 
141bdf89e91SBarry Smith   ierr = MatRegister(MATMPIADJ,         MatCreate_MPIAdj);CHKERRQ(ierr);
142bdf89e91SBarry Smith   ierr = MatRegister(MATSCATTER,        MatCreate_Scatter);CHKERRQ(ierr);
143bdf89e91SBarry Smith   ierr = MatRegister(MATBLOCKMAT,       MatCreate_BlockMat);CHKERRQ(ierr);
144bdf89e91SBarry Smith   ierr = MatRegister(MATNEST,           MatCreate_Nest);CHKERRQ(ierr);
14568326731SBarry Smith 
146d4002b98SHong Zhang   ierr = MatRegisterBaseName(MATSELL,MATSEQSELL,MATMPISELL);CHKERRQ(ierr);
147d4002b98SHong Zhang   ierr = MatRegister(MATMPISELL,         MatCreate_MPISELL);CHKERRQ(ierr);
148d4002b98SHong Zhang   ierr = MatRegister(MATSEQSELL,         MatCreate_SeqSELL);CHKERRQ(ierr);
1495e26d47bSHong Zhang 
150c41cb2e2SAlejandro Lamas Daviña #if defined PETSC_HAVE_VECCUDA
1519ae82921SPaul Mullowney   ierr = MatRegisterBaseName(MATAIJCUSPARSE,MATSEQAIJCUSPARSE,MATMPIAIJCUSPARSE);CHKERRQ(ierr);
152bdf89e91SBarry Smith   ierr = MatRegister(MATSEQAIJCUSPARSE, MatCreate_SeqAIJCUSPARSE);CHKERRQ(ierr);
153bdf89e91SBarry Smith   ierr = MatRegister(MATMPIAIJCUSPARSE, MatCreate_MPIAIJCUSPARSE);CHKERRQ(ierr);
1549ae82921SPaul Mullowney #endif
1559ae82921SPaul Mullowney 
1568f86e40fSKarl Rupp #if defined PETSC_HAVE_VIENNACL
1578f86e40fSKarl Rupp   ierr = MatRegisterBaseName(MATAIJVIENNACL,MATSEQAIJVIENNACL,MATMPIAIJVIENNACL);CHKERRQ(ierr);
158ab6435e1SKarl Rupp   ierr = MatRegister(MATSEQAIJVIENNACL, MatCreate_SeqAIJViennaCL);CHKERRQ(ierr);
159ab6435e1SKarl Rupp   ierr = MatRegister(MATMPIAIJVIENNACL, MatCreate_MPIAIJViennaCL);CHKERRQ(ierr);
1608f86e40fSKarl Rupp #endif
1618f86e40fSKarl Rupp 
162dedccee8SHong Zhang #if defined PETSC_HAVE_FFTW
163bdf89e91SBarry Smith   ierr = MatRegister(MATFFTW,           MatCreate_FFTW);CHKERRQ(ierr);
164dedccee8SHong Zhang #endif
165db31f6deSJed Brown #if defined PETSC_HAVE_ELEMENTAL
166bdf89e91SBarry Smith   ierr = MatRegister(MATELEMENTAL,      MatCreate_Elemental);CHKERRQ(ierr);
167db31f6deSJed Brown #endif
168c094ef40SMatthew G. Knepley 
169c094ef40SMatthew G. Knepley   ierr = MatRegister(MATPREALLOCATOR,   MatCreate_Preallocator);CHKERRQ(ierr);
170a3b2e22bSHong Zhang   ierr = MatRegister(MATDUMMY,          MatCreate_Dummy);CHKERRQ(ierr);
17163c07aadSStefano Zampini 
17263c07aadSStefano Zampini #if defined PETSC_HAVE_HYPRE
17363c07aadSStefano Zampini   ierr = MatRegister(MATHYPRE,          MatCreate_HYPRE);CHKERRQ(ierr);
17463c07aadSStefano Zampini #endif
1758a95e4e9SBarry Smith   PetscFunctionReturn(0);
1768a95e4e9SBarry Smith }
177