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