xref: /petsc/src/mat/interface/matregis.c (revision 4a2a386e7b5808d98dd84541432cdb5471934af8)
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*4a2a386eSRichard Tran Mills PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJMKL(Mat);
28*4a2a386eSRichard Tran Mills /* PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJMKL(Mat); */
29*4a2a386eSRichard Tran Mills /* Uncomment above line when I have MPIAIJMKL completed. -- RTM */
30*4a2a386eSRichard Tran Mills 
318cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJCRL(Mat);
328cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJCRL(Mat);
3317667f90SBarry Smith 
348cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Scatter(Mat);
358cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_BlockMat(Mat);
368cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Nest(Mat);
37c6570e9aSVictor Minden 
388154be41SBarry Smith #if defined PETSC_HAVE_CUSP
398cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJCUSP(Mat);
408cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJCUSP(Mat);
41c6570e9aSVictor Minden #endif
42c6570e9aSVictor Minden 
43c41cb2e2SAlejandro Lamas Daviña #if defined PETSC_HAVE_VECCUDA
448cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJCUSPARSE(Mat);
458cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJCUSPARSE(Mat);
469ae82921SPaul Mullowney #endif
479ae82921SPaul Mullowney 
48d67ff14aSKarl Rupp #if defined PETSC_HAVE_VIENNACL
49d67ff14aSKarl Rupp PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJViennaCL(Mat);
508f86e40fSKarl Rupp PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJViennaCL(Mat);
51d67ff14aSKarl Rupp #endif
52d67ff14aSKarl Rupp 
53dedccee8SHong Zhang #if defined PETSC_HAVE_FFTW
548cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_FFTW(Mat);
55dedccee8SHong Zhang #endif
568cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Elemental(Mat);
578a95e4e9SBarry Smith 
58c094ef40SMatthew G. Knepley PETSC_EXTERN PetscErrorCode MatCreate_Preallocator(Mat);
59a3b2e22bSHong Zhang PETSC_EXTERN PetscErrorCode MatCreate_Dummy(Mat);
60c094ef40SMatthew G. Knepley 
6163c07aadSStefano Zampini #if defined PETSC_HAVE_HYPRE
6263c07aadSStefano Zampini PETSC_EXTERN PetscErrorCode MatCreate_HYPRE(Mat);
6363c07aadSStefano Zampini #endif
6463c07aadSStefano Zampini 
658a95e4e9SBarry Smith /*@C
66f7cf7585SBarry Smith   MatRegisterAll - Registers all of the matrix types in PETSc
678a95e4e9SBarry Smith 
688a95e4e9SBarry Smith   Not Collective
698a95e4e9SBarry Smith 
708a95e4e9SBarry Smith   Level: advanced
718a95e4e9SBarry Smith 
728a95e4e9SBarry Smith .keywords: KSP, register, all
738a95e4e9SBarry Smith 
74d7ee760dSBarry Smith .seealso:  MatRegister()
758a95e4e9SBarry Smith @*/
76607a6623SBarry Smith PetscErrorCode  MatRegisterAll(void)
778a95e4e9SBarry Smith {
78dfbe8321SBarry Smith   PetscErrorCode ierr;
798a95e4e9SBarry Smith 
808a95e4e9SBarry Smith   PetscFunctionBegin;
810f51fdf8SToby Isaac   if (MatRegisterAllCalled) PetscFunctionReturn(0);
82f7cf7585SBarry Smith   MatRegisterAllCalled = PETSC_TRUE;
838a95e4e9SBarry Smith 
84bdf89e91SBarry Smith   ierr = MatRegister(MATMFFD,           MatCreate_MFFD);CHKERRQ(ierr);
85e884886fSBarry Smith 
86bdf89e91SBarry Smith   ierr = MatRegister(MATMPIMAIJ,        MatCreate_MAIJ);CHKERRQ(ierr);
87bdf89e91SBarry Smith   ierr = MatRegister(MATSEQMAIJ,        MatCreate_MAIJ);CHKERRQ(ierr);
88bdf89e91SBarry Smith   ierr = MatRegister(MATMAIJ,           MatCreate_MAIJ);CHKERRQ(ierr);
89273d9f13SBarry Smith 
90bdf89e91SBarry Smith   ierr = MatRegister(MATIS,             MatCreate_IS);CHKERRQ(ierr);
91bdf89e91SBarry Smith   ierr = MatRegister(MATSHELL,          MatCreate_Shell);CHKERRQ(ierr);
92bdf89e91SBarry Smith   ierr = MatRegister(MATCOMPOSITE,      MatCreate_Composite);CHKERRQ(ierr);
9301bebe75SBarry Smith 
9401bebe75SBarry Smith   ierr = MatRegisterBaseName(MATAIJ,MATSEQAIJ,MATMPIAIJ);CHKERRQ(ierr);
95bdf89e91SBarry Smith   ierr = MatRegister(MATMPIAIJ,         MatCreate_MPIAIJ);CHKERRQ(ierr);
96bdf89e91SBarry Smith   ierr = MatRegister(MATSEQAIJ,         MatCreate_SeqAIJ);CHKERRQ(ierr);
9717667f90SBarry Smith 
9801bebe75SBarry Smith   ierr = MatRegisterBaseName(MATAIJPERM,MATSEQAIJPERM,MATMPIAIJPERM);CHKERRQ(ierr);
99bdf89e91SBarry Smith   ierr = MatRegister(MATMPIAIJPERM,     MatCreate_MPIAIJPERM);CHKERRQ(ierr);
100bdf89e91SBarry Smith   ierr = MatRegister(MATSEQAIJPERM,     MatCreate_SeqAIJPERM);CHKERRQ(ierr);
10117667f90SBarry Smith 
102*4a2a386eSRichard Tran Mills   ierr = MatRegisterBaseName(MATAIJMKL,MATSEQAIJMKL,MATMPIAIJMKL);CHKERRQ(ierr);
103*4a2a386eSRichard Tran Mills   /* ierr = MatRegister(MATMPIAIJMKL,     MatCreate_MPIAIJMKL);CHKERRQ(ierr); */
104*4a2a386eSRichard Tran Mills   /* Uncomment above line when I have MPIAIJMKL implemented. --RTM */
105*4a2a386eSRichard Tran Mills   ierr = MatRegister(MATSEQAIJMKL,     MatCreate_SeqAIJMKL);CHKERRQ(ierr);
106*4a2a386eSRichard Tran Mills 
10701bebe75SBarry Smith   ierr = MatRegisterBaseName(MATAIJCRL,MATSEQAIJCRL,MATMPIAIJCRL);CHKERRQ(ierr);
108bdf89e91SBarry Smith   ierr = MatRegister(MATSEQAIJCRL,      MatCreate_SeqAIJCRL);CHKERRQ(ierr);
109bdf89e91SBarry Smith   ierr = MatRegister(MATMPIAIJCRL,      MatCreate_MPIAIJCRL);CHKERRQ(ierr);
110273d9f13SBarry Smith 
11101bebe75SBarry Smith   ierr = MatRegisterBaseName(MATBAIJ,MATSEQBAIJ,MATMPIBAIJ);CHKERRQ(ierr);
112bdf89e91SBarry Smith   ierr = MatRegister(MATMPIBAIJ,        MatCreate_MPIBAIJ);CHKERRQ(ierr);
113bdf89e91SBarry Smith   ierr = MatRegister(MATSEQBAIJ,        MatCreate_SeqBAIJ);CHKERRQ(ierr);
114273d9f13SBarry Smith 
11501bebe75SBarry Smith   ierr = MatRegisterBaseName(MATSBAIJ,MATSEQSBAIJ,MATMPISBAIJ);CHKERRQ(ierr);
116bdf89e91SBarry Smith   ierr = MatRegister(MATMPISBAIJ,       MatCreate_MPISBAIJ);CHKERRQ(ierr);
117bdf89e91SBarry Smith   ierr = MatRegister(MATSEQSBAIJ,       MatCreate_SeqSBAIJ);CHKERRQ(ierr);
11817667f90SBarry Smith 
11901bebe75SBarry Smith   ierr = MatRegisterBaseName(MATDENSE,MATSEQDENSE,MATMPIDENSE);CHKERRQ(ierr);
120bdf89e91SBarry Smith   ierr = MatRegister(MATMPIDENSE,       MatCreate_MPIDense);CHKERRQ(ierr);
121bdf89e91SBarry Smith   ierr = MatRegister(MATSEQDENSE,       MatCreate_SeqDense);CHKERRQ(ierr);
12217667f90SBarry Smith 
123bdf89e91SBarry Smith   ierr = MatRegister(MATMPIADJ,         MatCreate_MPIAdj);CHKERRQ(ierr);
124bdf89e91SBarry Smith   ierr = MatRegister(MATSCATTER,        MatCreate_Scatter);CHKERRQ(ierr);
125bdf89e91SBarry Smith   ierr = MatRegister(MATBLOCKMAT,       MatCreate_BlockMat);CHKERRQ(ierr);
126bdf89e91SBarry Smith   ierr = MatRegister(MATNEST,           MatCreate_Nest);CHKERRQ(ierr);
12768326731SBarry Smith 
1288154be41SBarry Smith #if defined PETSC_HAVE_CUSP
12901bebe75SBarry Smith   ierr = MatRegisterBaseName(MATAIJCUSP,MATSEQAIJCUSP,MATMPIAIJCUSP);CHKERRQ(ierr);
130bdf89e91SBarry Smith   ierr = MatRegister(MATSEQAIJCUSP,     MatCreate_SeqAIJCUSP);CHKERRQ(ierr);
131bdf89e91SBarry Smith   ierr = MatRegister(MATMPIAIJCUSP,     MatCreate_MPIAIJCUSP);CHKERRQ(ierr);
132c6570e9aSVictor Minden #endif
13301bebe75SBarry Smith 
134c41cb2e2SAlejandro Lamas Daviña #if defined PETSC_HAVE_VECCUDA
1359ae82921SPaul Mullowney   ierr = MatRegisterBaseName(MATAIJCUSPARSE,MATSEQAIJCUSPARSE,MATMPIAIJCUSPARSE);CHKERRQ(ierr);
136bdf89e91SBarry Smith   ierr = MatRegister(MATSEQAIJCUSPARSE, MatCreate_SeqAIJCUSPARSE);CHKERRQ(ierr);
137bdf89e91SBarry Smith   ierr = MatRegister(MATMPIAIJCUSPARSE, MatCreate_MPIAIJCUSPARSE);CHKERRQ(ierr);
1389ae82921SPaul Mullowney #endif
1399ae82921SPaul Mullowney 
1408f86e40fSKarl Rupp #if defined PETSC_HAVE_VIENNACL
1418f86e40fSKarl Rupp   ierr = MatRegisterBaseName(MATAIJVIENNACL,MATSEQAIJVIENNACL,MATMPIAIJVIENNACL);CHKERRQ(ierr);
142ab6435e1SKarl Rupp   ierr = MatRegister(MATSEQAIJVIENNACL, MatCreate_SeqAIJViennaCL);CHKERRQ(ierr);
143ab6435e1SKarl Rupp   ierr = MatRegister(MATMPIAIJVIENNACL, MatCreate_MPIAIJViennaCL);CHKERRQ(ierr);
1448f86e40fSKarl Rupp #endif
1458f86e40fSKarl Rupp 
146dedccee8SHong Zhang #if defined PETSC_HAVE_FFTW
147bdf89e91SBarry Smith   ierr = MatRegister(MATFFTW,           MatCreate_FFTW);CHKERRQ(ierr);
148dedccee8SHong Zhang #endif
149db31f6deSJed Brown #if defined PETSC_HAVE_ELEMENTAL
150bdf89e91SBarry Smith   ierr = MatRegister(MATELEMENTAL,      MatCreate_Elemental);CHKERRQ(ierr);
151db31f6deSJed Brown #endif
152c094ef40SMatthew G. Knepley 
153c094ef40SMatthew G. Knepley   ierr = MatRegister(MATPREALLOCATOR,   MatCreate_Preallocator);CHKERRQ(ierr);
154a3b2e22bSHong Zhang   ierr = MatRegister(MATDUMMY,          MatCreate_Dummy);CHKERRQ(ierr);
15563c07aadSStefano Zampini 
15663c07aadSStefano Zampini #if defined PETSC_HAVE_HYPRE
15763c07aadSStefano Zampini   ierr = MatRegister(MATHYPRE,          MatCreate_HYPRE);CHKERRQ(ierr);
15863c07aadSStefano Zampini #endif
1598a95e4e9SBarry Smith   PetscFunctionReturn(0);
1608a95e4e9SBarry Smith }
161f7cf7585SBarry Smith 
1623a7fca6bSBarry Smith 
163