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