xref: /petsc/src/mat/interface/matregis.c (revision 448de63ea3ecde4d26bc0435d1cb2a01d7671c6c)
1 /*$Id: matregis.c,v 1.10 2001/06/21 21:16:17 bsmith Exp $*/
2 
3 #include "petscmat.h"  /*I "petscmat.h" I*/
4 
5 EXTERN_C_BEGIN
6 EXTERN int MatCreate_MAIJ(Mat);
7 EXTERN int MatCreate_IS(Mat);
8 EXTERN int MatCreate_MPIRowbs(Mat);
9 EXTERN int MatCreate_SeqAIJ(Mat);
10 EXTERN int MatCreate_MPIAIJ(Mat);
11 EXTERN int MatCreate_SeqBAIJ(Mat);
12 EXTERN int MatCreate_MPIBAIJ(Mat);
13 EXTERN int MatCreate_SeqSBAIJ(Mat);
14 EXTERN int MatCreate_MPISBAIJ(Mat);
15 EXTERN int MatCreate_SeqBDiag(Mat);
16 EXTERN int MatCreate_MPIBDiag(Mat);
17 EXTERN int MatCreate_SeqDense(Mat);
18 EXTERN int MatCreate_MPIDense(Mat);
19 EXTERN int MatCreate_MPIAdj(Mat);
20 EXTERN int MatCreate_Shell(Mat);
21 #if defined(__cplusplus)
22 EXTERN int MatCreate_ESI(Mat);
23 EXTERN int MatCreate_PetscESI(Mat);
24 #endif
25 #if defined(PETSC_HAVE_SPOOLES) && !defined(PETSC_USE_SINGLE)
26 EXTERN int MatCreate_SeqAIJ_Spooles(Mat);
27 EXTERN int MatCreate_SeqSBAIJ_Spooles(Mat);
28 EXTERN int MatCreate_MPIAIJ_Spooles(Mat);
29 EXTERN int MatCreate_MPISBAIJ_Spooles(Mat);
30 #endif
31 #if defined(PETSC_HAVE_SUPERLU) && !defined(PETSC_USE_SINGLE)
32 EXTERN int MatCreate_SeqAIJ_SuperLU(Mat);
33 #endif
34 #if defined(PETSC_HAVE_SUPERLUDIST) && !defined(PETSC_USE_SINGLE)
35 EXTERN int MatCreate_MPIAIJ_SuperLU_DIST(Mat);
36 #endif
37 EXTERN_C_END
38 
39 /*
40     This is used by MatSetType() to make sure that at least one
41     MatRegisterAll() is called. In general, if there is more than one
42     DLL, then MatRegisterAll() may be called several times.
43 */
44 EXTERN PetscTruth MatRegisterAllCalled;
45 
46 #undef __FUNCT__
47 #define __FUNCT__ "MatRegisterAll"
48 /*@C
49   MatRegisterAll - Registers all of the matrix types in PETSc
50 
51   Not Collective
52 
53   Level: advanced
54 
55 .keywords: KSP, register, all
56 
57 .seealso:  MatRegisterDestroy()
58 @*/
59 int MatRegisterAll(char *path)
60 {
61   int ierr;
62 
63   PetscFunctionBegin;
64   MatRegisterAllCalled = PETSC_TRUE;
65 
66   ierr = MatRegisterDynamic(MATMPIMAIJ, path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
67   ierr = MatRegisterDynamic(MATSEQMAIJ, path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
68 
69   ierr = MatRegisterDynamic(MATIS,      path,"MatCreate_IS",      MatCreate_IS);CHKERRQ(ierr);
70   ierr = MatRegisterDynamic(MATSHELL,   path,"MatCreate_Shell",   MatCreate_Shell);CHKERRQ(ierr);
71 #if defined(PETSC_HAVE_BLOCKSOLVE) && !defined(PETSC_USE_COMPLEX)
72   ierr = MatRegisterDynamic(MATMPIROWBS,path,"MatCreate_MPIRowbs",MatCreate_MPIRowbs);CHKERRQ(ierr);
73 #endif
74 
75   ierr = MatRegisterDynamic(MATMPIAIJ,  path,"MatCreate_MPIAIJ",  MatCreate_MPIAIJ);CHKERRQ(ierr);
76   ierr = MatRegisterDynamic(MATSEQAIJ,  path,"MatCreate_SeqAIJ",  MatCreate_SeqAIJ);CHKERRQ(ierr);
77 
78   ierr = MatRegisterDynamic(MATMPIBAIJ,  path,"MatCreate_MPIBAIJ",  MatCreate_MPIBAIJ);CHKERRQ(ierr);
79   ierr = MatRegisterDynamic(MATSEQBAIJ,  path,"MatCreate_SeqBAIJ",  MatCreate_SeqBAIJ);CHKERRQ(ierr);
80 
81   ierr = MatRegisterDynamic(MATMPISBAIJ,  path,"MatCreate_MPISBAIJ",  MatCreate_MPISBAIJ);CHKERRQ(ierr);
82   ierr = MatRegisterDynamic(MATSEQSBAIJ,  path,"MatCreate_SeqSBAIJ",  MatCreate_SeqSBAIJ);CHKERRQ(ierr);
83 
84   ierr = MatRegisterDynamic(MATMPIBDIAG,  path,"MatCreate_MPIBDiag",  MatCreate_MPIBDiag);CHKERRQ(ierr);
85   ierr = MatRegisterDynamic(MATSEQBDIAG,  path,"MatCreate_SeqBDiag",  MatCreate_SeqBDiag);CHKERRQ(ierr);
86 
87   ierr = MatRegisterDynamic(MATMPIDENSE,  path,"MatCreate_MPIDense",  MatCreate_MPIDense);CHKERRQ(ierr);
88   ierr = MatRegisterDynamic(MATSEQDENSE,  path,"MatCreate_SeqDense",  MatCreate_SeqDense);CHKERRQ(ierr);
89 
90   ierr = MatRegisterDynamic(MATMPIADJ,    path,"MatCreate_MPIAdj",    MatCreate_MPIAdj);CHKERRQ(ierr);
91 #if defined(__cplusplus) && !defined(PETSC_USE_COMPLEX) && !defined(PETSC_USE_SINGLE) && defined(PETSC_HAVE_CXX_NAMESPACE)
92   ierr = MatRegisterDynamic(MATESI,       path,"MatCreate_ESI",    MatCreate_ESI);CHKERRQ(ierr);
93   ierr = MatRegisterDynamic(MATPETSCESI,  path,"MatCreate_PetscESI",    MatCreate_PetscESI);CHKERRQ(ierr);
94 #endif
95 #if defined(PETSC_HAVE_SPOOLES) && !defined(PETSC_USE_SINGLE)
96   ierr = MatRegisterDynamic(MATSEQAIJSPOOLES,  path,"MatCreate_SeqAIJ_Spooles",  MatCreate_SeqAIJ_Spooles);CHKERRQ(ierr);
97   ierr = MatRegisterDynamic(MATSEQSBAIJSPOOLES,path,"MatCreate_SeqSBAIJ_Spooles",MatCreate_SeqSBAIJ_Spooles);CHKERRQ(ierr);
98   ierr = MatRegisterDynamic(MATMPIAIJSPOOLES,  path,"MatCreate_MPIAIJ_Spooles",  MatCreate_MPIAIJ_Spooles);CHKERRQ(ierr);
99   ierr = MatRegisterDynamic(MATMPISBAIJSPOOLES,path,"MatCreate_MPISBAIJ_Spooles",MatCreate_MPISBAIJ_Spooles);CHKERRQ(ierr);
100 #endif
101 #if defined(PETSC_HAVE_SUPERLU) && !defined(PETSC_USE_SINGLE)
102   ierr = MatRegisterDynamic(MATSUPERLU,path,"MatCreate_SeqAIJ_SuperLU",MatCreate_SeqAIJ_SuperLU);CHKERRQ(ierr);
103 #endif
104 #if defined(PETSC_HAVE_SUPERLUDIST) && !defined(PETSC_USE_SINGLE)
105   ierr = MatRegisterDynamic(MATSUPERLUDIST,path,"MatCreate_MPIAIJ_SuperLU_DIST",MatCreate_MPIAIJ_SuperLU_DIST);CHKERRQ(ierr);
106 #endif
107   PetscFunctionReturn(0);
108 }
109 
110 
111