Actual source code: matregis.c
petsc-3.3-p7 2013-05-11
2: #include <petscmat.h> /*I "petscmat.h" I*/
4: EXTERN_C_BEGIN
5: extern PetscErrorCode MatCreate_MFFD(Mat);
6: extern PetscErrorCode MatCreate_MAIJ(Mat);
7: extern PetscErrorCode MatCreate_IS(Mat);
9: extern PetscErrorCode MatCreate_SeqAIJ(Mat);
10: extern PetscErrorCode MatCreate_MPIAIJ(Mat);
12: #if defined(PETSC_HAVE_PTHREADCLASSES)
13: extern PetscErrorCode MatCreate_SeqAIJPThread(Mat);
14: extern PetscErrorCode MatCreate_AIJPThread(Mat);
15: #endif
17: extern PetscErrorCode MatCreate_SeqBAIJ(Mat);
18: extern PetscErrorCode MatCreate_MPIBAIJ(Mat);
20: extern PetscErrorCode MatCreate_SeqSBAIJ(Mat);
21: extern PetscErrorCode MatCreate_MPISBAIJ(Mat);
23: extern PetscErrorCode MatCreate_SeqBSTRM(Mat);
24: extern PetscErrorCode MatCreate_MPIBSTRM(Mat);
26: extern PetscErrorCode MatCreate_SeqSBSTRM(Mat);
27: extern PetscErrorCode MatCreate_MPISBSTRM(Mat);
29: extern PetscErrorCode MatCreate_SeqDense(Mat);
30: extern PetscErrorCode MatCreate_MPIDense(Mat);
32: extern PetscErrorCode MatCreate_MPIAdj(Mat);
33: extern PetscErrorCode MatCreate_Shell(Mat);
34: extern PetscErrorCode MatCreate_Composite(Mat);
36: extern PetscErrorCode MatCreate_SeqAIJPERM(Mat);
37: extern PetscErrorCode MatCreate_MPIAIJPERM(Mat);
39: extern PetscErrorCode MatCreate_SeqAIJCRL(Mat);
40: extern PetscErrorCode MatCreate_MPIAIJCRL(Mat);
42: extern PetscErrorCode MatCreate_Scatter(Mat);
43: extern PetscErrorCode MatCreate_BlockMat(Mat);
44: extern PetscErrorCode MatCreate_Nest(Mat);
45: extern PetscErrorCode MatCreate_IJ(Mat);
47: #if defined PETSC_HAVE_CUSP
48: extern PetscErrorCode MatCreate_SeqAIJCUSP(Mat);
49: extern PetscErrorCode MatCreate_MPIAIJCUSP(Mat);
50: #endif
52: #if defined PETSC_HAVE_FFTW
53: extern PetscErrorCode MatCreate_FFTW(Mat);
54: #endif
55: EXTERN_C_END
56:
57: /*
58: This is used by MatSetType() to make sure that at least one
59: MatRegisterAll() is called. In general, if there is more than one
60: DLL, then MatRegisterAll() may be called several times.
61: */
62: extern PetscBool MatRegisterAllCalled;
66: /*@C
67: MatRegisterAll - Registers all of the matrix types in PETSc
69: Not Collective
71: Level: advanced
73: .keywords: KSP, register, all
75: .seealso: MatRegisterDestroy()
76: @*/
77: PetscErrorCode MatRegisterAll(const char path[])
78: {
82: MatRegisterAllCalled = PETSC_TRUE;
84: MatRegisterDynamic(MATMFFD, path,"MatCreate_MFFD", MatCreate_MFFD);
86: MatRegisterDynamic(MATMPIMAIJ, path,"MatCreate_MAIJ", MatCreate_MAIJ);
87: MatRegisterDynamic(MATSEQMAIJ, path,"MatCreate_MAIJ", MatCreate_MAIJ);
88: MatRegisterDynamic(MATMAIJ, path,"MatCreate_MAIJ", MatCreate_MAIJ);
90: MatRegisterDynamic(MATIS, path,"MatCreate_IS", MatCreate_IS);
91: MatRegisterDynamic(MATSHELL, path,"MatCreate_Shell", MatCreate_Shell);
92: MatRegisterDynamic(MATCOMPOSITE, path,"MatCreate_Composite", MatCreate_Composite);
94: MatRegisterBaseName(MATAIJ,MATSEQAIJ,MATMPIAIJ);
95: MatRegisterDynamic(MATMPIAIJ, path,"MatCreate_MPIAIJ", MatCreate_MPIAIJ);
96: MatRegisterDynamic(MATSEQAIJ, path,"MatCreate_SeqAIJ", MatCreate_SeqAIJ);
97: #if defined(PETSC_HAVE_PTHREADCLASSES)
98: MatRegisterBaseName(MATAIJPTHREAD,MATSEQAIJPTHREAD,0);
99: MatRegisterDynamic(MATSEQAIJPTHREAD, path,"MatCreate_SeqAIJPThread", MatCreate_SeqAIJPThread);
100: #endif
102: MatRegisterBaseName(MATAIJPERM,MATSEQAIJPERM,MATMPIAIJPERM);
103: MatRegisterDynamic(MATMPIAIJPERM, path,"MatCreate_MPIAIJPERM", MatCreate_MPIAIJPERM);
104: MatRegisterDynamic(MATSEQAIJPERM, path,"MatCreate_SeqAIJPERM", MatCreate_SeqAIJPERM);
106: MatRegisterBaseName(MATAIJCRL,MATSEQAIJCRL,MATMPIAIJCRL);
107: MatRegisterDynamic(MATSEQAIJCRL, path,"MatCreate_SeqAIJCRL", MatCreate_SeqAIJCRL);
108: MatRegisterDynamic(MATMPIAIJCRL, path,"MatCreate_MPIAIJCRL", MatCreate_MPIAIJCRL);
110: MatRegisterBaseName(MATBAIJ,MATSEQBAIJ,MATMPIBAIJ);
111: MatRegisterDynamic(MATMPIBAIJ, path,"MatCreate_MPIBAIJ", MatCreate_MPIBAIJ);
112: MatRegisterDynamic(MATSEQBAIJ, path,"MatCreate_SeqBAIJ", MatCreate_SeqBAIJ);
114: MatRegisterBaseName(MATSBAIJ,MATSEQSBAIJ,MATMPISBAIJ);
115: MatRegisterDynamic(MATMPISBAIJ, path,"MatCreate_MPISBAIJ", MatCreate_MPISBAIJ);
116: MatRegisterDynamic(MATSEQSBAIJ, path,"MatCreate_SeqSBAIJ", MatCreate_SeqSBAIJ);
118: MatRegisterBaseName(MATBSTRM,MATSEQBSTRM,MATMPIBSTRM);
119: MatRegisterDynamic(MATMPIBSTRM, path,"MatCreate_MPIBSTRM", MatCreate_MPIBSTRM);
120: MatRegisterDynamic(MATSEQBSTRM, path,"MatCreate_SeqBSTRM", MatCreate_SeqBSTRM);
122: MatRegisterBaseName(MATSBSTRM,MATSEQSBSTRM,MATMPISBSTRM);
123: MatRegisterDynamic(MATMPISBSTRM, path,"MatCreate_MPISBSTRM", MatCreate_MPISBSTRM);
124: MatRegisterDynamic(MATSEQSBSTRM, path,"MatCreate_SeqSBSTRM", MatCreate_SeqSBSTRM);
126: MatRegisterBaseName(MATDENSE,MATSEQDENSE,MATMPIDENSE);
127: MatRegisterDynamic(MATMPIDENSE, path,"MatCreate_MPIDense", MatCreate_MPIDense);
128: MatRegisterDynamic(MATSEQDENSE, path,"MatCreate_SeqDense", MatCreate_SeqDense);
130: MatRegisterDynamic(MATMPIADJ, path,"MatCreate_MPIAdj", MatCreate_MPIAdj);
131: MatRegisterDynamic(MATSCATTER, path,"MatCreate_Scatter", MatCreate_Scatter);
132: MatRegisterDynamic(MATBLOCKMAT, path,"MatCreate_BlockMat", MatCreate_BlockMat);
133: MatRegisterDynamic(MATNEST, path,"MatCreate_Nest", MatCreate_Nest);
135: MatRegisterDynamic(MATIJ, path,"MatCreate_IJ", MatCreate_IJ);
137: #if defined PETSC_HAVE_CUSP
138: MatRegisterBaseName(MATAIJCUSP,MATSEQAIJCUSP,MATMPIAIJCUSP);
139: MatRegisterDynamic(MATSEQAIJCUSP, path,"MatCreate_SeqAIJCUSP", MatCreate_SeqAIJCUSP);
140: MatRegisterDynamic(MATMPIAIJCUSP, path,"MatCreate_MPIAIJCUSP", MatCreate_MPIAIJCUSP);
141: #endif
143: #if defined PETSC_HAVE_FFTW
144: MatRegisterDynamic(MATFFTW, path,"MatCreate_FFTW", MatCreate_FFTW);
145: #endif
146: return(0);
147: }