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