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: }