xref: /petsc/src/mat/interface/matregis.c (revision bdf9f3d3ccc86466618c693352bf9edad17b81e8)
1 
2 #include "petscmat.h"  /*I "petscmat.h" I*/
3 
4 EXTERN_C_BEGIN
5 EXTERN PetscErrorCode MatCreate_MAIJ(Mat);
6 EXTERN PetscErrorCode MatCreate_IS(Mat);
7 EXTERN PetscErrorCode MatCreate_MPIRowbs(Mat);
8 EXTERN PetscErrorCode MatCreate_SeqAIJ(Mat);
9 EXTERN PetscErrorCode MatCreate_MPIAIJ(Mat);
10 EXTERN PetscErrorCode MatCreate_AIJ(Mat);
11 EXTERN PetscErrorCode MatCreate_SeqBAIJ(Mat);
12 EXTERN PetscErrorCode MatCreate_MPIBAIJ(Mat);
13 EXTERN PetscErrorCode MatCreate_BAIJ(Mat);
14 EXTERN PetscErrorCode MatCreate_SeqSBAIJ(Mat);
15 EXTERN PetscErrorCode MatCreate_MPISBAIJ(Mat);
16 EXTERN PetscErrorCode MatCreate_SBAIJ(Mat);
17 EXTERN PetscErrorCode MatCreate_SeqBDiag(Mat);
18 EXTERN PetscErrorCode MatCreate_MPIBDiag(Mat);
19 EXTERN PetscErrorCode MatCreate_BDiag(Mat);
20 EXTERN PetscErrorCode MatCreate_SeqDense(Mat);
21 EXTERN PetscErrorCode MatCreate_MPIDense(Mat);
22 EXTERN PetscErrorCode MatCreate_Dense(Mat);
23 EXTERN PetscErrorCode MatCreate_MPIAdj(Mat);
24 EXTERN PetscErrorCode MatCreate_Shell(Mat);
25 #if defined(PETSC_HAVE_SPOOLES) && !defined(PETSC_USE_SINGLE)
26 EXTERN PetscErrorCode MatCreate_SeqAIJSpooles(Mat);
27 EXTERN PetscErrorCode MatCreate_SeqSBAIJSpooles(Mat);
28 EXTERN PetscErrorCode MatCreate_MPIAIJSpooles(Mat);
29 EXTERN PetscErrorCode MatCreate_MPISBAIJSpooles(Mat);
30 EXTERN PetscErrorCode MatCreate_AIJSpooles(Mat);
31 EXTERN PetscErrorCode MatCreate_SBAIJSpooles(Mat);
32 #endif
33 #if defined(PETSC_HAVE_SUPERLU) && !defined(PETSC_USE_SINGLE)
34 EXTERN PetscErrorCode MatCreate_SuperLU(Mat);
35 #endif
36 #if defined(PETSC_HAVE_SUPERLU_DIST) && !defined(PETSC_USE_SINGLE)
37 EXTERN PetscErrorCode MatCreate_SuperLU_DIST(Mat);
38 #endif
39 #if defined(PETSC_HAVE_UMFPACK) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
40 EXTERN PetscErrorCode MatCreate_UMFPACK(Mat);
41 #endif
42 #if defined(PETSC_HAVE_ESSL) && !defined(__cplusplus)
43 EXTERN PetscErrorCode MatCreate_Essl(Mat);
44 #endif
45 #if defined(PETSC_HAVE_LUSOL) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
46 EXTERN PetscErrorCode MatCreate_LUSOL(Mat);
47 #endif
48 #if defined(PETSC_HAVE_MUMPS) && !defined(PETSC_USE_SINGLE)
49 EXTERN PetscErrorCode MatCreate_AIJMUMPS(Mat);
50 EXTERN PetscErrorCode MatCreate_SBAIJMUMPS(Mat);
51 #endif
52 #if defined(PETSC_HAVE_DSCPACK) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
53 EXTERN PetscErrorCode MatCreate_DSCPACK(Mat);
54 #endif
55 #if defined(PETSC_HAVE_MATLAB) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
56 EXTERN PetscErrorCode MatCreate_Matlab(Mat);
57 #endif
58 EXTERN_C_END
59 
60 /*
61     This is used by MatSetType() to make sure that at least one
62     MatRegisterAll() is called. In general, if there is more than one
63     DLL, then MatRegisterAll() may be called several times.
64 */
65 EXTERN PetscTruth MatRegisterAllCalled;
66 
67 #undef __FUNCT__
68 #define __FUNCT__ "MatRegisterAll"
69 /*@C
70   MatRegisterAll - Registers all of the matrix types in PETSc
71 
72   Not Collective
73 
74   Level: advanced
75 
76 .keywords: KSP, register, all
77 
78 .seealso:  MatRegisterDestroy()
79 @*/
80 PetscErrorCode MatRegisterAll(const char path[])
81 {
82   PetscErrorCode ierr;
83 
84   PetscFunctionBegin;
85   MatRegisterAllCalled = PETSC_TRUE;
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 #if defined(PETSC_HAVE_BLOCKSOLVE) && !defined(PETSC_USE_COMPLEX)
94   ierr = MatRegisterDynamic(MATMPIROWBS,path,"MatCreate_MPIRowbs",MatCreate_MPIRowbs);CHKERRQ(ierr);
95 #endif
96 
97   ierr = MatRegisterDynamic(MATMPIAIJ,  path,"MatCreate_MPIAIJ",  MatCreate_MPIAIJ);CHKERRQ(ierr);
98   ierr = MatRegisterDynamic(MATSEQAIJ,  path,"MatCreate_SeqAIJ",  MatCreate_SeqAIJ);CHKERRQ(ierr);
99   ierr = MatRegisterDynamic(MATAIJ,     path,"MatCreate_AIJ",     MatCreate_AIJ);CHKERRQ(ierr);
100 
101   ierr = MatRegisterDynamic(MATMPIBAIJ,  path,"MatCreate_MPIBAIJ",  MatCreate_MPIBAIJ);CHKERRQ(ierr);
102   ierr = MatRegisterDynamic(MATSEQBAIJ,  path,"MatCreate_SeqBAIJ",  MatCreate_SeqBAIJ);CHKERRQ(ierr);
103   ierr = MatRegisterDynamic(MATBAIJ,     path,"MatCreate_BAIJ",     MatCreate_BAIJ);CHKERRQ(ierr);
104 
105   ierr = MatRegisterDynamic(MATMPISBAIJ,  path,"MatCreate_MPISBAIJ",  MatCreate_MPISBAIJ);CHKERRQ(ierr);
106   ierr = MatRegisterDynamic(MATSEQSBAIJ,  path,"MatCreate_SeqSBAIJ",  MatCreate_SeqSBAIJ);CHKERRQ(ierr);
107   ierr = MatRegisterDynamic(MATSBAIJ,     path,"MatCreate_SBAIJ",     MatCreate_SBAIJ);CHKERRQ(ierr);
108 
109   ierr = MatRegisterDynamic(MATMPIBDIAG,  path,"MatCreate_MPIBDiag",  MatCreate_MPIBDiag);CHKERRQ(ierr);
110   ierr = MatRegisterDynamic(MATSEQBDIAG,  path,"MatCreate_SeqBDiag",  MatCreate_SeqBDiag);CHKERRQ(ierr);
111   ierr = MatRegisterDynamic(MATBDIAG,     path,"MatCreate_BDiag",     MatCreate_BDiag);CHKERRQ(ierr);
112 
113   ierr = MatRegisterDynamic(MATMPIDENSE,  path,"MatCreate_MPIDense",  MatCreate_MPIDense);CHKERRQ(ierr);
114   ierr = MatRegisterDynamic(MATSEQDENSE,  path,"MatCreate_SeqDense",  MatCreate_SeqDense);CHKERRQ(ierr);
115   ierr = MatRegisterDynamic(MATDENSE,     path,"MatCreate_Dense",     MatCreate_Dense);CHKERRQ(ierr);
116 
117   ierr = MatRegisterDynamic(MATMPIADJ,    path,"MatCreate_MPIAdj",    MatCreate_MPIAdj);CHKERRQ(ierr);
118 #if defined(PETSC_HAVE_SPOOLES) && !defined(PETSC_USE_SINGLE)
119   ierr = MatRegisterDynamic(MATSEQAIJSPOOLES,  path,"MatCreate_SeqAIJSpooles",  MatCreate_SeqAIJSpooles);CHKERRQ(ierr);
120   ierr = MatRegisterDynamic(MATSEQSBAIJSPOOLES,path,"MatCreate_SeqSBAIJSpooles",MatCreate_SeqSBAIJSpooles);CHKERRQ(ierr);
121   ierr = MatRegisterDynamic(MATMPIAIJSPOOLES,  path,"MatCreate_MPIAIJSpooles",  MatCreate_MPIAIJSpooles);CHKERRQ(ierr);
122   ierr = MatRegisterDynamic(MATMPISBAIJSPOOLES,path,"MatCreate_MPISBAIJSpooles",MatCreate_MPISBAIJSpooles);CHKERRQ(ierr);
123   ierr = MatRegisterDynamic(MATAIJSPOOLES,  path,"MatCreate_AIJSpooles",MatCreate_AIJSpooles);CHKERRQ(ierr);
124   ierr = MatRegisterDynamic(MATSBAIJSPOOLES,path,"MatCreate_SBAIJSpooles",MatCreate_SBAIJSpooles);CHKERRQ(ierr);
125 #endif
126 #if defined(PETSC_HAVE_SUPERLU) && !defined(PETSC_USE_SINGLE)
127   ierr = MatRegisterDynamic(MATSUPERLU,path,"MatCreate_SuperLU",MatCreate_SuperLU);CHKERRQ(ierr);
128 #endif
129 #if defined(PETSC_HAVE_SUPERLU_DIST) && !defined(PETSC_USE_SINGLE)
130   ierr = MatRegisterDynamic(MATSUPERLU_DIST,path,"MatCreate_SuperLU_DIST",MatCreate_SuperLU_DIST);CHKERRQ(ierr);
131 #endif
132 #if defined(PETSC_HAVE_UMFPACK) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
133   ierr = MatRegisterDynamic(MATUMFPACK,path,"MatCreate_UMFPACK",MatCreate_UMFPACK);CHKERRQ(ierr);
134 #endif
135 #if defined(PETSC_HAVE_ESSL) && !defined(__cplusplus)
136   ierr = MatRegisterDynamic(MATESSL,path,"MatCreate_Essl",MatCreate_Essl);CHKERRQ(ierr);
137 #endif
138 #if defined(PETSC_HAVE_LUSOL) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
139   ierr = MatRegisterDynamic(MATLUSOL,path,"MatCreate_LUSOL",MatCreate_LUSOL);CHKERRQ(ierr);
140 #endif
141 #if defined(PETSC_HAVE_MUMPS) && !defined(PETSC_USE_SINGLE)
142   ierr = MatRegisterDynamic(MATAIJMUMPS,  path,"MatCreate_AIJMUMPS",MatCreate_AIJMUMPS);CHKERRQ(ierr);
143   ierr = MatRegisterDynamic(MATSBAIJMUMPS,path,"MatCreate_SBAIJMUMPS",MatCreate_SBAIJMUMPS);CHKERRQ(ierr);
144 #endif
145 #if defined(PETSC_HAVE_DSCPACK) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
146   ierr = MatRegisterDynamic(MATDSCPACK,path,"MatCreate_DSCPACK",MatCreate_DSCPACK);CHKERRQ(ierr);
147 #endif
148 #if defined(PETSC_HAVE_MATLAB) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
149   ierr = MatRegisterDynamic(MATMATLAB,path,"MatCreate_Matlab",MatCreate_Matlab);CHKERRQ(ierr);
150 #endif
151   PetscFunctionReturn(0);
152 }
153 
154 
155