xref: /petsc/src/mat/interface/matregis.c (revision 5fcf39f41380148f1cbc91cddd1179762f126f1f)
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_MPIAIJ_Spooles(Mat);
28 #endif
29 EXTERN_C_END
30 
31 /*
32     This is used by MatSetType() to make sure that at least one
33     MatRegisterAll() is called. In general, if there is more than one
34     DLL, then MatRegisterAll() may be called several times.
35 */
36 EXTERN PetscTruth MatRegisterAllCalled;
37 
38 #undef __FUNCT__
39 #define __FUNCT__ "MatRegisterAll"
40 /*@C
41   MatRegisterAll - Registers all of the matrix types in PETSc
42 
43   Not Collective
44 
45   Level: advanced
46 
47 .keywords: KSP, register, all
48 
49 .seealso:  MatRegisterDestroy()
50 @*/
51 int MatRegisterAll(char *path)
52 {
53   int ierr;
54 
55   PetscFunctionBegin;
56   MatRegisterAllCalled = PETSC_TRUE;
57 
58   ierr = MatRegisterDynamic(MATMPIMAIJ, path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
59   ierr = MatRegisterDynamic(MATSEQMAIJ, path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
60 
61   ierr = MatRegisterDynamic(MATIS,      path,"MatCreate_IS",      MatCreate_IS);CHKERRQ(ierr);
62   ierr = MatRegisterDynamic(MATSHELL,   path,"MatCreate_Shell",   MatCreate_Shell);CHKERRQ(ierr);
63 #if defined(PETSC_HAVE_BLOCKSOLVE) && !defined(PETSC_USE_COMPLEX)
64   ierr = MatRegisterDynamic(MATMPIROWBS,path,"MatCreate_MPIRowbs",MatCreate_MPIRowbs);CHKERRQ(ierr);
65 #endif
66 
67   ierr = MatRegisterDynamic(MATMPIAIJ,  path,"MatCreate_MPIAIJ",  MatCreate_MPIAIJ);CHKERRQ(ierr);
68   ierr = MatRegisterDynamic(MATSEQAIJ,  path,"MatCreate_SeqAIJ",  MatCreate_SeqAIJ);CHKERRQ(ierr);
69 
70   ierr = MatRegisterDynamic(MATMPIBAIJ,  path,"MatCreate_MPIBAIJ",  MatCreate_MPIBAIJ);CHKERRQ(ierr);
71   ierr = MatRegisterDynamic(MATSEQBAIJ,  path,"MatCreate_SeqBAIJ",  MatCreate_SeqBAIJ);CHKERRQ(ierr);
72 
73   ierr = MatRegisterDynamic(MATMPISBAIJ,  path,"MatCreate_MPISBAIJ",  MatCreate_MPISBAIJ);CHKERRQ(ierr);
74   ierr = MatRegisterDynamic(MATSEQSBAIJ,  path,"MatCreate_SeqSBAIJ",  MatCreate_SeqSBAIJ);CHKERRQ(ierr);
75 
76   ierr = MatRegisterDynamic(MATMPIBDIAG,  path,"MatCreate_MPIBDiag",  MatCreate_MPIBDiag);CHKERRQ(ierr);
77   ierr = MatRegisterDynamic(MATSEQBDIAG,  path,"MatCreate_SeqBDiag",  MatCreate_SeqBDiag);CHKERRQ(ierr);
78 
79   ierr = MatRegisterDynamic(MATMPIDENSE,  path,"MatCreate_MPIDense",  MatCreate_MPIDense);CHKERRQ(ierr);
80   ierr = MatRegisterDynamic(MATSEQDENSE,  path,"MatCreate_SeqDense",  MatCreate_SeqDense);CHKERRQ(ierr);
81 
82   ierr = MatRegisterDynamic(MATMPIADJ,    path,"MatCreate_MPIAdj",    MatCreate_MPIAdj);CHKERRQ(ierr);
83 #if defined(__cplusplus) && !defined(PETSC_USE_COMPLEX) && !defined(PETSC_USE_SINGLE) && defined(PETSC_HAVE_CXX_NAMESPACE)
84   ierr = MatRegisterDynamic(MATESI,       path,"MatCreate_ESI",    MatCreate_ESI);CHKERRQ(ierr);
85   ierr = MatRegisterDynamic(MATPETSCESI,  path,"MatCreate_PetscESI",    MatCreate_PetscESI);CHKERRQ(ierr);
86 #endif
87 #if defined(PETSC_HAVE_SPOOLES) && !defined(PETSC_USE_SINGLE)
88   ierr = MatRegisterDynamic(MATSEQAIJSPOOLES,path,"MatCreate_SeqAIJ_Spooles",MatCreate_SeqAIJ_Spooles);CHKERRQ(ierr);
89   ierr = MatRegisterDynamic(MATMPIAIJSPOOLES,path,"MatCreate_MPIAIJ_Spooles",MatCreate_MPIAIJ_Spooles);CHKERRQ(ierr);
90 #endif
91   PetscFunctionReturn(0);
92 }
93 
94 
95