xref: /petsc/src/mat/interface/matregis.c (revision 7d0a6c19129e7069c8a40e210b34ed62989173db)
1 
2 #include "petscmat.h"  /*I "petscmat.h" I*/
3 
4 EXTERN_C_BEGIN
5 extern PetscErrorCode  MatCreate_MFFD(Mat);
6 extern PetscErrorCode  MatCreate_MAIJ(Mat);
7 extern PetscErrorCode  MatCreate_IS(Mat);
8 
9 extern PetscErrorCode  MatCreate_AIJ(Mat);
10 extern PetscErrorCode  MatCreate_SeqAIJ(Mat);
11 extern PetscErrorCode  MatCreate_MPIAIJ(Mat);
12 
13 extern PetscErrorCode  MatCreate_BAIJ(Mat);
14 extern PetscErrorCode  MatCreate_SeqBAIJ(Mat);
15 extern PetscErrorCode  MatCreate_MPIBAIJ(Mat);
16 
17 extern PetscErrorCode  MatCreate_SBAIJ(Mat);
18 extern PetscErrorCode  MatCreate_SeqSBAIJ(Mat);
19 extern PetscErrorCode  MatCreate_MPISBAIJ(Mat);
20 
21 extern PetscErrorCode  MatCreate_Dense(Mat);
22 extern PetscErrorCode  MatCreate_SeqDense(Mat);
23 extern PetscErrorCode  MatCreate_MPIDense(Mat);
24 
25 extern PetscErrorCode  MatCreate_MPIAdj(Mat);
26 extern PetscErrorCode  MatCreate_Shell(Mat);
27 extern PetscErrorCode  MatCreate_Composite(Mat);
28 
29 extern PetscErrorCode  MatCreate_AIJPERM(Mat);
30 extern PetscErrorCode  MatCreate_SeqAIJPERM(Mat);
31 extern PetscErrorCode  MatCreate_MPIAIJPERM(Mat);
32 
33 extern PetscErrorCode  MatCreate_AIJCRL(Mat);
34 extern PetscErrorCode  MatCreate_SeqAIJCRL(Mat);
35 extern PetscErrorCode  MatCreate_MPIAIJCRL(Mat);
36 
37 extern PetscErrorCode  MatCreate_Scatter(Mat);
38 extern PetscErrorCode  MatCreate_BlockMat(Mat);
39 extern PetscErrorCode  MatCreate_Nest(Mat);
40 extern PetscErrorCode  MatCreate_DD(Mat);
41 
42 #if defined PETSC_HAVE_CUSP
43 extern PetscErrorCode  MatCreate_SeqAIJCUSP(Mat);
44 extern PetscErrorCode  MatCreate_MPIAIJCUSP(Mat);
45 extern PetscErrorCode  MatCreate_AIJCUSP(Mat);
46 #endif
47 
48 #if defined PETSC_HAVE_MATIM
49 extern PetscErrorCode  MatCreate_IM(Mat);
50 #endif
51 
52 #if defined PETSC_HAVE_FFTW
53 extern PetscErrorCode  MatCreate_FFTW(Mat);
54 #endif
55 EXTERN_C_END
56 
57 /*
58     This is used by MatSetType() to make sure that at least one
59     MatRegisterAll() is called. In general, if there is more than one
60     DLL, then MatRegisterAll() may be called several times.
61 */
62 extern PetscBool  MatRegisterAllCalled;
63 
64 #undef __FUNCT__
65 #define __FUNCT__ "MatRegisterAll"
66 /*@C
67   MatRegisterAll - Registers all of the matrix types in PETSc
68 
69   Not Collective
70 
71   Level: advanced
72 
73 .keywords: KSP, register, all
74 
75 .seealso:  MatRegisterDestroy()
76 @*/
77 PetscErrorCode  MatRegisterAll(const char path[])
78 {
79   PetscErrorCode ierr;
80 
81   PetscFunctionBegin;
82   MatRegisterAllCalled = PETSC_TRUE;
83 
84   ierr = MatRegisterDynamic(MATMFFD,           path,"MatCreate_MFFD",    MatCreate_MFFD);CHKERRQ(ierr);
85 
86   ierr = MatRegisterDynamic(MATMPIMAIJ,        path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
87   ierr = MatRegisterDynamic(MATSEQMAIJ,        path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
88   ierr = MatRegisterDynamic(MATMAIJ,           path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
89 
90   ierr = MatRegisterDynamic(MATIS,             path,"MatCreate_IS",      MatCreate_IS);CHKERRQ(ierr);
91   ierr = MatRegisterDynamic(MATSHELL,          path,"MatCreate_Shell",   MatCreate_Shell);CHKERRQ(ierr);
92   ierr = MatRegisterDynamic(MATCOMPOSITE,      path,"MatCreate_Composite",   MatCreate_Composite);CHKERRQ(ierr);
93   ierr = MatRegisterDynamic(MATAIJ,            path,"MatCreate_AIJ",         MatCreate_AIJ);CHKERRQ(ierr);
94   ierr = MatRegisterDynamic(MATMPIAIJ,         path,"MatCreate_MPIAIJ",      MatCreate_MPIAIJ);CHKERRQ(ierr);
95   ierr = MatRegisterDynamic(MATSEQAIJ,         path,"MatCreate_SeqAIJ",      MatCreate_SeqAIJ);CHKERRQ(ierr);
96 
97   ierr = MatRegisterDynamic(MATAIJPERM,        path,"MatCreate_AIJPERM",    MatCreate_AIJPERM);CHKERRQ(ierr);
98   ierr = MatRegisterDynamic(MATMPIAIJPERM,     path,"MatCreate_MPIAIJPERM", MatCreate_MPIAIJPERM);CHKERRQ(ierr);
99   ierr = MatRegisterDynamic(MATSEQAIJPERM,     path,"MatCreate_SeqAIJPERM", MatCreate_SeqAIJPERM);CHKERRQ(ierr);
100 
101   ierr = MatRegisterDynamic(MATAIJCRL,         path,"MatCreate_AIJCRL",     MatCreate_AIJCRL);CHKERRQ(ierr);
102   ierr = MatRegisterDynamic(MATSEQAIJCRL,      path,"MatCreate_SeqAIJCRL",  MatCreate_SeqAIJCRL);CHKERRQ(ierr);
103   ierr = MatRegisterDynamic(MATMPIAIJCRL,      path,"MatCreate_MPIAIJCRL",  MatCreate_MPIAIJCRL);CHKERRQ(ierr);
104 
105   ierr = MatRegisterDynamic(MATBAIJ,           path,"MatCreate_BAIJ",       MatCreate_BAIJ);CHKERRQ(ierr);
106   ierr = MatRegisterDynamic(MATMPIBAIJ,        path,"MatCreate_MPIBAIJ",    MatCreate_MPIBAIJ);CHKERRQ(ierr);
107   ierr = MatRegisterDynamic(MATSEQBAIJ,        path,"MatCreate_SeqBAIJ",    MatCreate_SeqBAIJ);CHKERRQ(ierr);
108 
109   ierr = MatRegisterDynamic(MATSBAIJ,          path,"MatCreate_SBAIJ",     MatCreate_SBAIJ);CHKERRQ(ierr);
110   ierr = MatRegisterDynamic(MATMPISBAIJ,       path,"MatCreate_MPISBAIJ",  MatCreate_MPISBAIJ);CHKERRQ(ierr);
111   ierr = MatRegisterDynamic(MATSEQSBAIJ,       path,"MatCreate_SeqSBAIJ",  MatCreate_SeqSBAIJ);CHKERRQ(ierr);
112 
113   ierr = MatRegisterDynamic(MATDENSE,          path,"MatCreate_Dense",     MatCreate_Dense);CHKERRQ(ierr);
114   ierr = MatRegisterDynamic(MATMPIDENSE,       path,"MatCreate_MPIDense",  MatCreate_MPIDense);CHKERRQ(ierr);
115   ierr = MatRegisterDynamic(MATSEQDENSE,       path,"MatCreate_SeqDense",  MatCreate_SeqDense);CHKERRQ(ierr);
116 
117   ierr = MatRegisterDynamic(MATMPIADJ,         path,"MatCreate_MPIAdj",    MatCreate_MPIAdj);CHKERRQ(ierr);
118   ierr = MatRegisterDynamic(MATSCATTER,        path,"MatCreate_Scatter",   MatCreate_Scatter);CHKERRQ(ierr);
119   ierr = MatRegisterDynamic(MATBLOCKMAT,       path,"MatCreate_BlockMat",  MatCreate_BlockMat);CHKERRQ(ierr);
120   ierr = MatRegisterDynamic(MATNEST,           path,"MatCreate_Nest",      MatCreate_Nest);CHKERRQ(ierr);
121 
122   /*ierr = MatRegisterDynamic(MATDD,             path,"MatCreate_DD",   MatCreate_DD);CHKERRQ(ierr);*/
123 #if defined PETSC_HAVE_MATIM
124   ierr = MatRegisterDynamic(MATIM,             path,"MatCreate_IM",   MatCreate_IM);CHKERRQ(ierr);
125 #endif
126 #if defined PETSC_HAVE_CUSP
127   ierr = MatRegisterDynamic(MATSEQAIJCUSP,     path,"MatCreate_SeqAIJCUSP",  MatCreate_SeqAIJCUSP);CHKERRQ(ierr);
128   ierr = MatRegisterDynamic(MATMPIAIJCUSP,     path,"MatCreate_MPIAIJCUSP",  MatCreate_MPIAIJCUSP);CHKERRQ(ierr);
129   ierr = MatRegisterDynamic(MATAIJCUSP,        path,"MatCreate_AIJCUSP",     MatCreate_AIJCUSP);CHKERRQ(ierr);
130 #endif
131 #if defined PETSC_HAVE_FFTW
132   ierr = MatRegisterDynamic(MATFFTW,           path,"MatCreate_FFTW",        MatCreate_FFTW);CHKERRQ(ierr);
133 #endif
134   PetscFunctionReturn(0);
135 }
136 
137 
138