Actual source code: matregis.c
2: #include <petscmat.h> /*I "petscmat.h" I*/
12: #if defined(PETSC_HAVE_PTHREADCLASSES)
15: #endif
47: #if defined PETSC_HAVE_CUSP
50: #endif
52: #if defined PETSC_HAVE_MATIM
54: #endif
56: #if defined PETSC_HAVE_FFTW
58: #endif
60:
61: /*
62: This is used by MatSetType() to make sure that at least one
63: MatRegisterAll() is called. In general, if there is more than one
64: DLL, then MatRegisterAll() may be called several times.
65: */
70: /*@C
71: MatRegisterAll - Registers all of the matrix types in PETSc
73: Not Collective
75: Level: advanced
77: .keywords: KSP, register, all
79: .seealso: MatRegisterDestroy()
80: @*/
81: PetscErrorCode MatRegisterAll(const char path[])
82: {
86: MatRegisterAllCalled = PETSC_TRUE;
88: MatRegisterDynamic(MATMFFD, path,"MatCreate_MFFD", MatCreate_MFFD);
90: MatRegisterDynamic(MATMPIMAIJ, path,"MatCreate_MAIJ", MatCreate_MAIJ);
91: MatRegisterDynamic(MATSEQMAIJ, path,"MatCreate_MAIJ", MatCreate_MAIJ);
92: MatRegisterDynamic(MATMAIJ, path,"MatCreate_MAIJ", MatCreate_MAIJ);
94: MatRegisterDynamic(MATIS, path,"MatCreate_IS", MatCreate_IS);
95: MatRegisterDynamic(MATSHELL, path,"MatCreate_Shell", MatCreate_Shell);
96: MatRegisterDynamic(MATCOMPOSITE, path,"MatCreate_Composite", MatCreate_Composite);
98: MatRegisterBaseName(MATAIJ,MATSEQAIJ,MATMPIAIJ);
99: MatRegisterDynamic(MATMPIAIJ, path,"MatCreate_MPIAIJ", MatCreate_MPIAIJ);
100: MatRegisterDynamic(MATSEQAIJ, path,"MatCreate_SeqAIJ", MatCreate_SeqAIJ);
101: #if defined(PETSC_HAVE_PTHREADCLASSES)
102: MatRegisterBaseName(MATAIJPTHREAD,MATSEQAIJPTHREAD,0);
103: MatRegisterDynamic(MATSEQAIJPTHREAD, path,"MatCreate_SeqAIJPThread", MatCreate_SeqAIJPThread);
104: #endif
106: MatRegisterBaseName(MATAIJPERM,MATSEQAIJPERM,MATMPIAIJPERM);
107: MatRegisterDynamic(MATMPIAIJPERM, path,"MatCreate_MPIAIJPERM", MatCreate_MPIAIJPERM);
108: MatRegisterDynamic(MATSEQAIJPERM, path,"MatCreate_SeqAIJPERM", MatCreate_SeqAIJPERM);
110: MatRegisterBaseName(MATAIJCRL,MATSEQAIJCRL,MATMPIAIJCRL);
111: MatRegisterDynamic(MATSEQAIJCRL, path,"MatCreate_SeqAIJCRL", MatCreate_SeqAIJCRL);
112: MatRegisterDynamic(MATMPIAIJCRL, path,"MatCreate_MPIAIJCRL", MatCreate_MPIAIJCRL);
114: MatRegisterBaseName(MATBAIJ,MATSEQBAIJ,MATMPIBAIJ);
115: MatRegisterDynamic(MATMPIBAIJ, path,"MatCreate_MPIBAIJ", MatCreate_MPIBAIJ);
116: MatRegisterDynamic(MATSEQBAIJ, path,"MatCreate_SeqBAIJ", MatCreate_SeqBAIJ);
118: MatRegisterBaseName(MATSBAIJ,MATSEQSBAIJ,MATMPISBAIJ);
119: MatRegisterDynamic(MATMPISBAIJ, path,"MatCreate_MPISBAIJ", MatCreate_MPISBAIJ);
120: MatRegisterDynamic(MATSEQSBAIJ, path,"MatCreate_SeqSBAIJ", MatCreate_SeqSBAIJ);
122: MatRegisterBaseName(MATBSTRM,MATSEQBSTRM,MATMPIBSTRM);
123: MatRegisterDynamic(MATMPIBSTRM, path,"MatCreate_MPIBSTRM", MatCreate_MPIBSTRM);
124: MatRegisterDynamic(MATSEQBSTRM, path,"MatCreate_SeqBSTRM", MatCreate_SeqBSTRM);
126: MatRegisterBaseName(MATSBSTRM,MATSEQSBSTRM,MATMPISBSTRM);
127: MatRegisterDynamic(MATMPISBSTRM, path,"MatCreate_MPISBSTRM", MatCreate_MPISBSTRM);
128: MatRegisterDynamic(MATSEQSBSTRM, path,"MatCreate_SeqSBSTRM", MatCreate_SeqSBSTRM);
130: MatRegisterBaseName(MATDENSE,MATSEQDENSE,MATMPIDENSE);
131: MatRegisterDynamic(MATMPIDENSE, path,"MatCreate_MPIDense", MatCreate_MPIDense);
132: MatRegisterDynamic(MATSEQDENSE, path,"MatCreate_SeqDense", MatCreate_SeqDense);
134: MatRegisterDynamic(MATMPIADJ, path,"MatCreate_MPIAdj", MatCreate_MPIAdj);
135: MatRegisterDynamic(MATSCATTER, path,"MatCreate_Scatter", MatCreate_Scatter);
136: MatRegisterDynamic(MATBLOCKMAT, path,"MatCreate_BlockMat", MatCreate_BlockMat);
137: MatRegisterDynamic(MATNEST, path,"MatCreate_Nest", MatCreate_Nest);
139: /*MatRegisterDynamic(MATDD, path,"MatCreate_DD", MatCreate_DD);*/
140: #if defined PETSC_HAVE_MATIM
141: MatRegisterDynamic(MATIM, path,"MatCreate_IM", MatCreate_IM);
142: #endif
144: #if defined PETSC_HAVE_CUSP
145: MatRegisterBaseName(MATAIJCUSP,MATSEQAIJCUSP,MATMPIAIJCUSP);
146: MatRegisterDynamic(MATSEQAIJCUSP, path,"MatCreate_SeqAIJCUSP", MatCreate_SeqAIJCUSP);
147: MatRegisterDynamic(MATMPIAIJCUSP, path,"MatCreate_MPIAIJCUSP", MatCreate_MPIAIJCUSP);
148: #endif
150: #if defined PETSC_HAVE_FFTW
151: MatRegisterDynamic(MATFFTW, path,"MatCreate_FFTW", MatCreate_FFTW);
152: #endif
153: return(0);
154: }