Actual source code: matregis.c
2: #include <petsc/private/matimpl.h>
4: PETSC_EXTERN PetscErrorCode MatCreate_MFFD(Mat);
5: PETSC_EXTERN PetscErrorCode MatCreate_MAIJ(Mat);
6: PETSC_EXTERN PetscErrorCode MatCreate_KAIJ(Mat);
7: PETSC_EXTERN PetscErrorCode MatCreate_IS(Mat);
9: PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJ(Mat);
10: PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJ(Mat);
12: PETSC_EXTERN PetscErrorCode MatCreate_SeqBAIJ(Mat);
13: PETSC_EXTERN PetscErrorCode MatCreate_MPIBAIJ(Mat);
15: PETSC_EXTERN PetscErrorCode MatCreate_SeqSBAIJ(Mat);
16: PETSC_EXTERN PetscErrorCode MatCreate_MPISBAIJ(Mat);
18: PETSC_EXTERN PetscErrorCode MatCreate_SeqDense(Mat);
19: PETSC_EXTERN PetscErrorCode MatCreate_MPIDense(Mat);
20: #if defined(PETSC_HAVE_CUDA)
21: PETSC_EXTERN PetscErrorCode MatCreate_SeqDenseCUDA(Mat);
22: PETSC_EXTERN PetscErrorCode MatCreate_MPIDenseCUDA(Mat);
23: #endif
25: PETSC_EXTERN PetscErrorCode MatCreate_MPIAdj(Mat);
26: PETSC_EXTERN PetscErrorCode MatCreate_Shell(Mat);
27: PETSC_EXTERN PetscErrorCode MatCreate_Composite(Mat);
29: PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJPERM(Mat);
30: PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJPERM(Mat);
32: PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJSELL(Mat);
33: PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJSELL(Mat);
35: #if defined(PETSC_HAVE_MKL_SPARSE)
36: PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJMKL(Mat);
37: PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJMKL(Mat);
38: #endif
40: #if defined(PETSC_HAVE_MKL_SPARSE_OPTIMIZE)
41: PETSC_EXTERN PetscErrorCode MatCreate_SeqBAIJMKL(Mat);
42: PETSC_EXTERN PetscErrorCode MatCreate_MPIBAIJMKL(Mat);
43: #endif
45: PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJCRL(Mat);
46: PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJCRL(Mat);
48: PETSC_EXTERN PetscErrorCode MatCreate_Scatter(Mat);
49: PETSC_EXTERN PetscErrorCode MatCreate_BlockMat(Mat);
50: PETSC_EXTERN PetscErrorCode MatCreate_Nest(Mat);
52: PETSC_EXTERN PetscErrorCode MatCreate_SeqSELL(Mat);
53: PETSC_EXTERN PetscErrorCode MatCreate_MPISELL(Mat);
55: #if defined(PETSC_HAVE_CUDA)
56: PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJCUSPARSE(Mat);
57: PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJCUSPARSE(Mat);
58: #endif
60: #if defined(PETSC_HAVE_VIENNACL)
61: PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJViennaCL(Mat);
62: PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJViennaCL(Mat);
63: #endif
65: #if defined(PETSC_HAVE_KOKKOS_KERNELS)
66: PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJKokkos(Mat);
67: PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJKokkos(Mat);
68: #endif
70: #if defined(PETSC_HAVE_FFTW)
71: PETSC_EXTERN PetscErrorCode MatCreate_FFTW(Mat);
72: #endif
73: #if defined(PETSC_HAVE_ELEMENTAL)
74: PETSC_EXTERN PetscErrorCode MatCreate_Elemental(Mat);
75: #endif
76: #if defined(PETSC_HAVE_SCALAPACK)
77: PETSC_EXTERN PetscErrorCode MatCreate_ScaLAPACK(Mat);
78: #endif
80: PETSC_EXTERN PetscErrorCode MatCreate_Preallocator(Mat);
81: PETSC_EXTERN PetscErrorCode MatCreate_Dummy(Mat);
83: #if defined(PETSC_HAVE_HYPRE)
84: PETSC_EXTERN PetscErrorCode MatCreate_HYPRE(Mat);
85: #endif
87: PETSC_EXTERN PetscErrorCode MatCreate_ConstantDiagonal(Mat);
89: #if defined(PETSC_HAVE_H2OPUS)
90: PETSC_EXTERN PetscErrorCode MatCreate_H2OPUS(Mat);
91: #endif
93: #if defined(PETSC_HAVE_HTOOL)
94: PETSC_EXTERN PetscErrorCode MatCreate_Htool(Mat);
95: #endif
97: /*@C
98: MatRegisterAll - Registers all of the matrix types in PETSc
100: Not Collective
102: Level: advanced
104: .seealso: MatRegister()
105: @*/
106: PetscErrorCode MatRegisterAll(void)
107: {
108: if (MatRegisterAllCalled) return 0;
109: MatRegisterAllCalled = PETSC_TRUE;
111: MatRegister(MATMFFD, MatCreate_MFFD);
113: MatRegister(MATMPIMAIJ, MatCreate_MAIJ);
114: MatRegister(MATSEQMAIJ, MatCreate_MAIJ);
115: MatRegister(MATMAIJ, MatCreate_MAIJ);
117: MatRegister(MATMPIKAIJ, MatCreate_KAIJ);
118: MatRegister(MATSEQKAIJ, MatCreate_KAIJ);
119: MatRegister(MATKAIJ, MatCreate_KAIJ);
121: MatRegister(MATIS, MatCreate_IS);
122: MatRegister(MATSHELL, MatCreate_Shell);
123: MatRegister(MATCOMPOSITE, MatCreate_Composite);
125: MatRegisterRootName(MATAIJ,MATSEQAIJ,MATMPIAIJ);
126: MatRegister(MATMPIAIJ, MatCreate_MPIAIJ);
127: MatRegister(MATSEQAIJ, MatCreate_SeqAIJ);
129: MatRegisterRootName(MATAIJPERM,MATSEQAIJPERM,MATMPIAIJPERM);
130: MatRegister(MATMPIAIJPERM, MatCreate_MPIAIJPERM);
131: MatRegister(MATSEQAIJPERM, MatCreate_SeqAIJPERM);
133: MatRegisterRootName(MATAIJSELL,MATSEQAIJSELL,MATMPIAIJSELL);
134: MatRegister(MATMPIAIJSELL, MatCreate_MPIAIJSELL);
135: MatRegister(MATSEQAIJSELL, MatCreate_SeqAIJSELL);
137: #if defined(PETSC_HAVE_MKL_SPARSE)
138: MatRegisterRootName(MATAIJMKL, MATSEQAIJMKL,MATMPIAIJMKL);
139: MatRegister(MATMPIAIJMKL, MatCreate_MPIAIJMKL);
140: MatRegister(MATSEQAIJMKL, MatCreate_SeqAIJMKL);
141: #endif
143: #if defined(PETSC_HAVE_MKL_SPARSE_OPTIMIZE)
144: MatRegisterRootName(MATBAIJMKL,MATSEQBAIJMKL,MATMPIBAIJMKL);
145: MatRegister(MATMPIBAIJMKL, MatCreate_MPIBAIJMKL);
146: MatRegister(MATSEQBAIJMKL, MatCreate_SeqBAIJMKL);
147: #endif
149: MatRegisterRootName(MATAIJCRL,MATSEQAIJCRL,MATMPIAIJCRL);
150: MatRegister(MATSEQAIJCRL, MatCreate_SeqAIJCRL);
151: MatRegister(MATMPIAIJCRL, MatCreate_MPIAIJCRL);
153: MatRegisterRootName(MATBAIJ,MATSEQBAIJ,MATMPIBAIJ);
154: MatRegister(MATMPIBAIJ, MatCreate_MPIBAIJ);
155: MatRegister(MATSEQBAIJ, MatCreate_SeqBAIJ);
157: MatRegisterRootName(MATSBAIJ,MATSEQSBAIJ,MATMPISBAIJ);
158: MatRegister(MATMPISBAIJ, MatCreate_MPISBAIJ);
159: MatRegister(MATSEQSBAIJ, MatCreate_SeqSBAIJ);
161: MatRegisterRootName(MATDENSE,MATSEQDENSE,MATMPIDENSE);
162: MatRegister(MATMPIDENSE, MatCreate_MPIDense);
163: MatRegister(MATSEQDENSE, MatCreate_SeqDense);
164: #if defined(PETSC_HAVE_CUDA)
165: MatRegisterRootName(MATDENSECUDA,MATSEQDENSECUDA,MATMPIDENSECUDA);
166: MatRegister(MATSEQDENSECUDA, MatCreate_SeqDenseCUDA);
167: MatRegister(MATMPIDENSECUDA, MatCreate_MPIDenseCUDA);
168: #endif
170: MatRegister(MATMPIADJ, MatCreate_MPIAdj);
171: MatRegister(MATSCATTER, MatCreate_Scatter);
172: MatRegister(MATBLOCKMAT, MatCreate_BlockMat);
173: MatRegister(MATNEST, MatCreate_Nest);
175: MatRegisterRootName(MATSELL,MATSEQSELL,MATMPISELL);
176: MatRegister(MATMPISELL, MatCreate_MPISELL);
177: MatRegister(MATSEQSELL, MatCreate_SeqSELL);
179: #if defined(PETSC_HAVE_CUDA)
180: MatRegisterRootName(MATAIJCUSPARSE,MATSEQAIJCUSPARSE,MATMPIAIJCUSPARSE);
181: MatRegister(MATSEQAIJCUSPARSE, MatCreate_SeqAIJCUSPARSE);
182: MatRegister(MATMPIAIJCUSPARSE, MatCreate_MPIAIJCUSPARSE);
183: #endif
185: #if defined(PETSC_HAVE_VIENNACL)
186: MatRegisterRootName(MATAIJVIENNACL,MATSEQAIJVIENNACL,MATMPIAIJVIENNACL);
187: MatRegister(MATSEQAIJVIENNACL, MatCreate_SeqAIJViennaCL);
188: MatRegister(MATMPIAIJVIENNACL, MatCreate_MPIAIJViennaCL);
189: #endif
191: #if defined(PETSC_HAVE_KOKKOS_KERNELS)
192: MatRegisterRootName(MATAIJKOKKOS,MATSEQAIJKOKKOS,MATMPIAIJKOKKOS);
193: MatRegister(MATSEQAIJKOKKOS, MatCreate_SeqAIJKokkos);
194: MatRegister(MATMPIAIJKOKKOS, MatCreate_MPIAIJKokkos);
195: #endif
197: #if defined(PETSC_HAVE_FFTW)
198: MatRegister(MATFFTW, MatCreate_FFTW);
199: #endif
200: #if defined(PETSC_HAVE_ELEMENTAL)
201: MatRegister(MATELEMENTAL, MatCreate_Elemental);
202: #endif
203: #if defined(PETSC_HAVE_SCALAPACK)
204: MatRegister(MATSCALAPACK, MatCreate_ScaLAPACK);
205: #endif
207: MatRegister(MATPREALLOCATOR, MatCreate_Preallocator);
208: MatRegister(MATDUMMY, MatCreate_Dummy);
210: MatRegister(MATCONSTANTDIAGONAL,MatCreate_ConstantDiagonal);
212: #if defined(PETSC_HAVE_HYPRE)
213: MatRegister(MATHYPRE, MatCreate_HYPRE);
214: #endif
216: #if defined(PETSC_HAVE_H2OPUS)
217: MatRegister(MATH2OPUS, MatCreate_H2OPUS);
218: #endif
220: #if defined(PETSC_HAVE_HTOOL)
221: MatRegister(MATHTOOL, MatCreate_Htool);
222: #endif
223: return 0;
224: }