xref: /petsc/src/mat/interface/matregis.c (revision c094ef4021e955ef5f85f7d8a1bbc6ed64ba7621)
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_SeqBSTRM(Mat);
188cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIBSTRM(Mat);
192938c13dSDahai Guo 
208cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqSBSTRM(Mat);
218cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPISBSTRM(Mat);
222938c13dSDahai Guo 
238cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqDense(Mat);
248cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIDense(Mat);
2517667f90SBarry Smith 
268cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAdj(Mat);
278cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Shell(Mat);
288cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Composite(Mat);
2917667f90SBarry Smith 
308cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJPERM(Mat);
318cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJPERM(Mat);
3217667f90SBarry Smith 
338cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJCRL(Mat);
348cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJCRL(Mat);
3517667f90SBarry Smith 
368cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Scatter(Mat);
378cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_BlockMat(Mat);
388cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Nest(Mat);
39c6570e9aSVictor Minden 
408154be41SBarry Smith #if defined PETSC_HAVE_CUSP
418cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJCUSP(Mat);
428cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJCUSP(Mat);
43c6570e9aSVictor Minden #endif
44c6570e9aSVictor Minden 
451019ffe6SMatthew G. Knepley #if defined PETSC_HAVE_CUSP
468cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJCUSPARSE(Mat);
478cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJCUSPARSE(Mat);
489ae82921SPaul Mullowney #endif
499ae82921SPaul Mullowney 
50d67ff14aSKarl Rupp #if defined PETSC_HAVE_VIENNACL
51d67ff14aSKarl Rupp PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJViennaCL(Mat);
528f86e40fSKarl Rupp PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJViennaCL(Mat);
53d67ff14aSKarl Rupp #endif
54d67ff14aSKarl Rupp 
55dedccee8SHong Zhang #if defined PETSC_HAVE_FFTW
568cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_FFTW(Mat);
57dedccee8SHong Zhang #endif
588cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Elemental(Mat);
598a95e4e9SBarry Smith 
60*c094ef40SMatthew G. Knepley PETSC_EXTERN PetscErrorCode MatCreate_Preallocator(Mat);
61*c094ef40SMatthew G. Knepley 
628a95e4e9SBarry Smith /*
63f7cf7585SBarry Smith     This is used by MatSetType() to make sure that at least one
64f7cf7585SBarry Smith     MatRegisterAll() is called. In general, if there is more than one
65f7cf7585SBarry Smith     DLL, then MatRegisterAll() may be called several times.
668a95e4e9SBarry Smith */
6709573ac7SBarry Smith extern PetscBool MatRegisterAllCalled;
688a95e4e9SBarry Smith 
694a2ae208SSatish Balay #undef __FUNCT__
704a2ae208SSatish Balay #define __FUNCT__ "MatRegisterAll"
718a95e4e9SBarry Smith /*@C
72f7cf7585SBarry Smith   MatRegisterAll - Registers all of the matrix types in PETSc
738a95e4e9SBarry Smith 
748a95e4e9SBarry Smith   Not Collective
758a95e4e9SBarry Smith 
768a95e4e9SBarry Smith   Level: advanced
778a95e4e9SBarry Smith 
788a95e4e9SBarry Smith .keywords: KSP, register, all
798a95e4e9SBarry Smith 
80f7cf7585SBarry Smith .seealso:  MatRegisterDestroy()
818a95e4e9SBarry Smith @*/
82607a6623SBarry Smith PetscErrorCode  MatRegisterAll(void)
838a95e4e9SBarry Smith {
84dfbe8321SBarry Smith   PetscErrorCode ierr;
858a95e4e9SBarry Smith 
868a95e4e9SBarry Smith   PetscFunctionBegin;
870f51fdf8SToby Isaac   if (MatRegisterAllCalled) PetscFunctionReturn(0);
88f7cf7585SBarry Smith   MatRegisterAllCalled = PETSC_TRUE;
898a95e4e9SBarry Smith 
90bdf89e91SBarry Smith   ierr = MatRegister(MATMFFD,           MatCreate_MFFD);CHKERRQ(ierr);
91e884886fSBarry Smith 
92bdf89e91SBarry Smith   ierr = MatRegister(MATMPIMAIJ,        MatCreate_MAIJ);CHKERRQ(ierr);
93bdf89e91SBarry Smith   ierr = MatRegister(MATSEQMAIJ,        MatCreate_MAIJ);CHKERRQ(ierr);
94bdf89e91SBarry Smith   ierr = MatRegister(MATMAIJ,           MatCreate_MAIJ);CHKERRQ(ierr);
95273d9f13SBarry Smith 
96bdf89e91SBarry Smith   ierr = MatRegister(MATIS,             MatCreate_IS);CHKERRQ(ierr);
97bdf89e91SBarry Smith   ierr = MatRegister(MATSHELL,          MatCreate_Shell);CHKERRQ(ierr);
98bdf89e91SBarry Smith   ierr = MatRegister(MATCOMPOSITE,      MatCreate_Composite);CHKERRQ(ierr);
9901bebe75SBarry Smith 
10001bebe75SBarry Smith   ierr = MatRegisterBaseName(MATAIJ,MATSEQAIJ,MATMPIAIJ);CHKERRQ(ierr);
101bdf89e91SBarry Smith   ierr = MatRegister(MATMPIAIJ,         MatCreate_MPIAIJ);CHKERRQ(ierr);
102bdf89e91SBarry Smith   ierr = MatRegister(MATSEQAIJ,         MatCreate_SeqAIJ);CHKERRQ(ierr);
10317667f90SBarry Smith 
10401bebe75SBarry Smith   ierr = MatRegisterBaseName(MATAIJPERM,MATSEQAIJPERM,MATMPIAIJPERM);CHKERRQ(ierr);
105bdf89e91SBarry Smith   ierr = MatRegister(MATMPIAIJPERM,     MatCreate_MPIAIJPERM);CHKERRQ(ierr);
106bdf89e91SBarry Smith   ierr = MatRegister(MATSEQAIJPERM,     MatCreate_SeqAIJPERM);CHKERRQ(ierr);
10717667f90SBarry Smith 
10801bebe75SBarry Smith   ierr = MatRegisterBaseName(MATAIJCRL,MATSEQAIJCRL,MATMPIAIJCRL);CHKERRQ(ierr);
109bdf89e91SBarry Smith   ierr = MatRegister(MATSEQAIJCRL,      MatCreate_SeqAIJCRL);CHKERRQ(ierr);
110bdf89e91SBarry Smith   ierr = MatRegister(MATMPIAIJCRL,      MatCreate_MPIAIJCRL);CHKERRQ(ierr);
111273d9f13SBarry Smith 
11201bebe75SBarry Smith   ierr = MatRegisterBaseName(MATBAIJ,MATSEQBAIJ,MATMPIBAIJ);CHKERRQ(ierr);
113bdf89e91SBarry Smith   ierr = MatRegister(MATMPIBAIJ,        MatCreate_MPIBAIJ);CHKERRQ(ierr);
114bdf89e91SBarry Smith   ierr = MatRegister(MATSEQBAIJ,        MatCreate_SeqBAIJ);CHKERRQ(ierr);
115273d9f13SBarry Smith 
11601bebe75SBarry Smith   ierr = MatRegisterBaseName(MATSBAIJ,MATSEQSBAIJ,MATMPISBAIJ);CHKERRQ(ierr);
117bdf89e91SBarry Smith   ierr = MatRegister(MATMPISBAIJ,       MatCreate_MPISBAIJ);CHKERRQ(ierr);
118bdf89e91SBarry Smith   ierr = MatRegister(MATSEQSBAIJ,       MatCreate_SeqSBAIJ);CHKERRQ(ierr);
11917667f90SBarry Smith 
1202938c13dSDahai Guo   ierr = MatRegisterBaseName(MATBSTRM,MATSEQBSTRM,MATMPIBSTRM);CHKERRQ(ierr);
121bdf89e91SBarry Smith   ierr = MatRegister(MATMPIBSTRM,       MatCreate_MPIBSTRM);CHKERRQ(ierr);
122bdf89e91SBarry Smith   ierr = MatRegister(MATSEQBSTRM,       MatCreate_SeqBSTRM);CHKERRQ(ierr);
1232938c13dSDahai Guo 
1242938c13dSDahai Guo   ierr = MatRegisterBaseName(MATSBSTRM,MATSEQSBSTRM,MATMPISBSTRM);CHKERRQ(ierr);
125bdf89e91SBarry Smith   ierr = MatRegister(MATMPISBSTRM,      MatCreate_MPISBSTRM);CHKERRQ(ierr);
126bdf89e91SBarry Smith   ierr = MatRegister(MATSEQSBSTRM,      MatCreate_SeqSBSTRM);CHKERRQ(ierr);
1272938c13dSDahai Guo 
12801bebe75SBarry Smith   ierr = MatRegisterBaseName(MATDENSE,MATSEQDENSE,MATMPIDENSE);CHKERRQ(ierr);
129bdf89e91SBarry Smith   ierr = MatRegister(MATMPIDENSE,       MatCreate_MPIDense);CHKERRQ(ierr);
130bdf89e91SBarry Smith   ierr = MatRegister(MATSEQDENSE,       MatCreate_SeqDense);CHKERRQ(ierr);
13117667f90SBarry Smith 
132bdf89e91SBarry Smith   ierr = MatRegister(MATMPIADJ,         MatCreate_MPIAdj);CHKERRQ(ierr);
133bdf89e91SBarry Smith   ierr = MatRegister(MATSCATTER,        MatCreate_Scatter);CHKERRQ(ierr);
134bdf89e91SBarry Smith   ierr = MatRegister(MATBLOCKMAT,       MatCreate_BlockMat);CHKERRQ(ierr);
135bdf89e91SBarry Smith   ierr = MatRegister(MATNEST,           MatCreate_Nest);CHKERRQ(ierr);
13668326731SBarry Smith 
13701bebe75SBarry Smith 
1388154be41SBarry Smith #if defined PETSC_HAVE_CUSP
13901bebe75SBarry Smith   ierr = MatRegisterBaseName(MATAIJCUSP,MATSEQAIJCUSP,MATMPIAIJCUSP);CHKERRQ(ierr);
140bdf89e91SBarry Smith   ierr = MatRegister(MATSEQAIJCUSP,     MatCreate_SeqAIJCUSP);CHKERRQ(ierr);
141bdf89e91SBarry Smith   ierr = MatRegister(MATMPIAIJCUSP,     MatCreate_MPIAIJCUSP);CHKERRQ(ierr);
142c6570e9aSVictor Minden #endif
14301bebe75SBarry Smith 
1441019ffe6SMatthew G. Knepley #if defined PETSC_HAVE_CUSP
1459ae82921SPaul Mullowney   ierr = MatRegisterBaseName(MATAIJCUSPARSE,MATSEQAIJCUSPARSE,MATMPIAIJCUSPARSE);CHKERRQ(ierr);
146bdf89e91SBarry Smith   ierr = MatRegister(MATSEQAIJCUSPARSE, MatCreate_SeqAIJCUSPARSE);CHKERRQ(ierr);
147bdf89e91SBarry Smith   ierr = MatRegister(MATMPIAIJCUSPARSE, MatCreate_MPIAIJCUSPARSE);CHKERRQ(ierr);
1489ae82921SPaul Mullowney #endif
1499ae82921SPaul Mullowney 
1508f86e40fSKarl Rupp #if defined PETSC_HAVE_VIENNACL
1518f86e40fSKarl Rupp   ierr = MatRegisterBaseName(MATAIJVIENNACL,MATSEQAIJVIENNACL,MATMPIAIJVIENNACL);CHKERRQ(ierr);
152ab6435e1SKarl Rupp   ierr = MatRegister(MATSEQAIJVIENNACL, MatCreate_SeqAIJViennaCL);CHKERRQ(ierr);
153ab6435e1SKarl Rupp   ierr = MatRegister(MATMPIAIJVIENNACL, MatCreate_MPIAIJViennaCL);CHKERRQ(ierr);
1548f86e40fSKarl Rupp #endif
1558f86e40fSKarl Rupp 
1568f86e40fSKarl Rupp 
157dedccee8SHong Zhang #if defined PETSC_HAVE_FFTW
158bdf89e91SBarry Smith   ierr = MatRegister(MATFFTW,           MatCreate_FFTW);CHKERRQ(ierr);
159dedccee8SHong Zhang #endif
160db31f6deSJed Brown #if defined PETSC_HAVE_ELEMENTAL
161bdf89e91SBarry Smith   ierr = MatRegister(MATELEMENTAL,      MatCreate_Elemental);CHKERRQ(ierr);
162db31f6deSJed Brown #endif
163*c094ef40SMatthew G. Knepley 
164*c094ef40SMatthew G. Knepley   ierr = MatRegister(MATPREALLOCATOR,   MatCreate_Preallocator);CHKERRQ(ierr);
1658a95e4e9SBarry Smith   PetscFunctionReturn(0);
1668a95e4e9SBarry Smith }
167f7cf7585SBarry Smith 
1683a7fca6bSBarry Smith 
169