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