xref: /petsc/src/mat/interface/matregis.c (revision a30ec4eab21047868b4ea34d315622f953eb6ffa)
1 
2 #include <petsc/private/matimpl.h>  /*I "petscmat.h" I*/
3 
4 PETSC_EXTERN PetscErrorCode MatCreate_MFFD(Mat);
5 PETSC_EXTERN PetscErrorCode MatCreate_MAIJ(Mat);
6 PETSC_EXTERN PetscErrorCode MatCreate_IS(Mat);
7 
8 PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJ(Mat);
9 PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJ(Mat);
10 
11 PETSC_EXTERN PetscErrorCode MatCreate_SeqBAIJ(Mat);
12 PETSC_EXTERN PetscErrorCode MatCreate_MPIBAIJ(Mat);
13 
14 PETSC_EXTERN PetscErrorCode MatCreate_SeqSBAIJ(Mat);
15 PETSC_EXTERN PetscErrorCode MatCreate_MPISBAIJ(Mat);
16 
17 PETSC_EXTERN PetscErrorCode MatCreate_SeqDense(Mat);
18 PETSC_EXTERN PetscErrorCode MatCreate_MPIDense(Mat);
19 
20 PETSC_EXTERN PetscErrorCode MatCreate_MPIAdj(Mat);
21 PETSC_EXTERN PetscErrorCode MatCreate_Shell(Mat);
22 PETSC_EXTERN PetscErrorCode MatCreate_Composite(Mat);
23 
24 PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJPERM(Mat);
25 PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJPERM(Mat);
26 
27 PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJCRL(Mat);
28 PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJCRL(Mat);
29 
30 PETSC_EXTERN PetscErrorCode MatCreate_Scatter(Mat);
31 PETSC_EXTERN PetscErrorCode MatCreate_BlockMat(Mat);
32 PETSC_EXTERN PetscErrorCode MatCreate_Nest(Mat);
33 
34 #if defined PETSC_HAVE_CUSP
35 PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJCUSP(Mat);
36 PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJCUSP(Mat);
37 #endif
38 
39 #if defined PETSC_HAVE_VECCUDA
40 PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJCUSPARSE(Mat);
41 PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJCUSPARSE(Mat);
42 #endif
43 
44 #if defined PETSC_HAVE_VIENNACL
45 PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJViennaCL(Mat);
46 PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJViennaCL(Mat);
47 #endif
48 
49 #if defined PETSC_HAVE_FFTW
50 PETSC_EXTERN PetscErrorCode MatCreate_FFTW(Mat);
51 #endif
52 PETSC_EXTERN PetscErrorCode MatCreate_Elemental(Mat);
53 
54 PETSC_EXTERN PetscErrorCode MatCreate_Preallocator(Mat);
55 PETSC_EXTERN PetscErrorCode MatCreate_Dummy(Mat);
56 
57 #if defined PETSC_HAVE_HYPRE
58 PETSC_EXTERN PetscErrorCode MatCreate_HYPRE(Mat);
59 #endif
60 
61 /*@C
62   MatRegisterAll - Registers all of the matrix types in PETSc
63 
64   Not Collective
65 
66   Level: advanced
67 
68 .keywords: KSP, register, all
69 
70 .seealso:  MatRegister()
71 @*/
72 PetscErrorCode  MatRegisterAll(void)
73 {
74   PetscErrorCode ierr;
75 
76   PetscFunctionBegin;
77   if (MatRegisterAllCalled) PetscFunctionReturn(0);
78   MatRegisterAllCalled = PETSC_TRUE;
79 
80   ierr = MatRegister(MATMFFD,           MatCreate_MFFD);CHKERRQ(ierr);
81 
82   ierr = MatRegister(MATMPIMAIJ,        MatCreate_MAIJ);CHKERRQ(ierr);
83   ierr = MatRegister(MATSEQMAIJ,        MatCreate_MAIJ);CHKERRQ(ierr);
84   ierr = MatRegister(MATMAIJ,           MatCreate_MAIJ);CHKERRQ(ierr);
85 
86   ierr = MatRegister(MATIS,             MatCreate_IS);CHKERRQ(ierr);
87   ierr = MatRegister(MATSHELL,          MatCreate_Shell);CHKERRQ(ierr);
88   ierr = MatRegister(MATCOMPOSITE,      MatCreate_Composite);CHKERRQ(ierr);
89 
90   ierr = MatRegisterBaseName(MATAIJ,MATSEQAIJ,MATMPIAIJ);CHKERRQ(ierr);
91   ierr = MatRegister(MATMPIAIJ,         MatCreate_MPIAIJ);CHKERRQ(ierr);
92   ierr = MatRegister(MATSEQAIJ,         MatCreate_SeqAIJ);CHKERRQ(ierr);
93 
94   ierr = MatRegisterBaseName(MATAIJPERM,MATSEQAIJPERM,MATMPIAIJPERM);CHKERRQ(ierr);
95   ierr = MatRegister(MATMPIAIJPERM,     MatCreate_MPIAIJPERM);CHKERRQ(ierr);
96   ierr = MatRegister(MATSEQAIJPERM,     MatCreate_SeqAIJPERM);CHKERRQ(ierr);
97 
98   ierr = MatRegisterBaseName(MATAIJCRL,MATSEQAIJCRL,MATMPIAIJCRL);CHKERRQ(ierr);
99   ierr = MatRegister(MATSEQAIJCRL,      MatCreate_SeqAIJCRL);CHKERRQ(ierr);
100   ierr = MatRegister(MATMPIAIJCRL,      MatCreate_MPIAIJCRL);CHKERRQ(ierr);
101 
102   ierr = MatRegisterBaseName(MATBAIJ,MATSEQBAIJ,MATMPIBAIJ);CHKERRQ(ierr);
103   ierr = MatRegister(MATMPIBAIJ,        MatCreate_MPIBAIJ);CHKERRQ(ierr);
104   ierr = MatRegister(MATSEQBAIJ,        MatCreate_SeqBAIJ);CHKERRQ(ierr);
105 
106   ierr = MatRegisterBaseName(MATSBAIJ,MATSEQSBAIJ,MATMPISBAIJ);CHKERRQ(ierr);
107   ierr = MatRegister(MATMPISBAIJ,       MatCreate_MPISBAIJ);CHKERRQ(ierr);
108   ierr = MatRegister(MATSEQSBAIJ,       MatCreate_SeqSBAIJ);CHKERRQ(ierr);
109 
110   ierr = MatRegisterBaseName(MATDENSE,MATSEQDENSE,MATMPIDENSE);CHKERRQ(ierr);
111   ierr = MatRegister(MATMPIDENSE,       MatCreate_MPIDense);CHKERRQ(ierr);
112   ierr = MatRegister(MATSEQDENSE,       MatCreate_SeqDense);CHKERRQ(ierr);
113 
114   ierr = MatRegister(MATMPIADJ,         MatCreate_MPIAdj);CHKERRQ(ierr);
115   ierr = MatRegister(MATSCATTER,        MatCreate_Scatter);CHKERRQ(ierr);
116   ierr = MatRegister(MATBLOCKMAT,       MatCreate_BlockMat);CHKERRQ(ierr);
117   ierr = MatRegister(MATNEST,           MatCreate_Nest);CHKERRQ(ierr);
118 
119 #if defined PETSC_HAVE_CUSP
120   ierr = MatRegisterBaseName(MATAIJCUSP,MATSEQAIJCUSP,MATMPIAIJCUSP);CHKERRQ(ierr);
121   ierr = MatRegister(MATSEQAIJCUSP,     MatCreate_SeqAIJCUSP);CHKERRQ(ierr);
122   ierr = MatRegister(MATMPIAIJCUSP,     MatCreate_MPIAIJCUSP);CHKERRQ(ierr);
123 #endif
124 
125 #if defined PETSC_HAVE_VECCUDA
126   ierr = MatRegisterBaseName(MATAIJCUSPARSE,MATSEQAIJCUSPARSE,MATMPIAIJCUSPARSE);CHKERRQ(ierr);
127   ierr = MatRegister(MATSEQAIJCUSPARSE, MatCreate_SeqAIJCUSPARSE);CHKERRQ(ierr);
128   ierr = MatRegister(MATMPIAIJCUSPARSE, MatCreate_MPIAIJCUSPARSE);CHKERRQ(ierr);
129 #endif
130 
131 #if defined PETSC_HAVE_VIENNACL
132   ierr = MatRegisterBaseName(MATAIJVIENNACL,MATSEQAIJVIENNACL,MATMPIAIJVIENNACL);CHKERRQ(ierr);
133   ierr = MatRegister(MATSEQAIJVIENNACL, MatCreate_SeqAIJViennaCL);CHKERRQ(ierr);
134   ierr = MatRegister(MATMPIAIJVIENNACL, MatCreate_MPIAIJViennaCL);CHKERRQ(ierr);
135 #endif
136 
137 #if defined PETSC_HAVE_FFTW
138   ierr = MatRegister(MATFFTW,           MatCreate_FFTW);CHKERRQ(ierr);
139 #endif
140 #if defined PETSC_HAVE_ELEMENTAL
141   ierr = MatRegister(MATELEMENTAL,      MatCreate_Elemental);CHKERRQ(ierr);
142 #endif
143 
144   ierr = MatRegister(MATPREALLOCATOR,   MatCreate_Preallocator);CHKERRQ(ierr);
145   ierr = MatRegister(MATDUMMY,          MatCreate_Dummy);CHKERRQ(ierr);
146 
147 #if defined PETSC_HAVE_HYPRE
148   ierr = MatRegister(MATHYPRE,          MatCreate_HYPRE);CHKERRQ(ierr);
149 #endif
150   PetscFunctionReturn(0);
151 }
152 
153 
154