18a95e4e9SBarry Smith 2c6db04a5SJed Brown #include <petscmat.h> /*I "petscmat.h" I*/ 38a95e4e9SBarry Smith 48a95e4e9SBarry Smith EXTERN_C_BEGIN 57087cfbeSBarry Smith extern PetscErrorCode MatCreate_MFFD(Mat); 67087cfbeSBarry Smith extern PetscErrorCode MatCreate_MAIJ(Mat); 77087cfbeSBarry Smith extern PetscErrorCode MatCreate_IS(Mat); 817667f90SBarry Smith 97087cfbeSBarry Smith extern PetscErrorCode MatCreate_SeqAIJ(Mat); 107087cfbeSBarry Smith extern PetscErrorCode MatCreate_MPIAIJ(Mat); 1117667f90SBarry Smith 12ff34cdc8SBarry Smith #if defined(PETSC_HAVE_PTHREADCLASSES) 137d6a0e61SBarry Smith extern PetscErrorCode MatCreate_SeqAIJPThread(Mat); 14*bf2c1783SBarry Smith extern PetscErrorCode MatCreate_AIJPThread(Mat); 15ba61063dSBarry Smith #endif 16ba61063dSBarry Smith 177087cfbeSBarry Smith extern PetscErrorCode MatCreate_SeqBAIJ(Mat); 187087cfbeSBarry Smith extern PetscErrorCode MatCreate_MPIBAIJ(Mat); 1917667f90SBarry Smith 207087cfbeSBarry Smith extern PetscErrorCode MatCreate_SeqSBAIJ(Mat); 217087cfbeSBarry Smith extern PetscErrorCode MatCreate_MPISBAIJ(Mat); 2217667f90SBarry Smith 232938c13dSDahai Guo extern PetscErrorCode MatCreate_SeqBSTRM(Mat); 242938c13dSDahai Guo extern PetscErrorCode MatCreate_MPIBSTRM(Mat); 252938c13dSDahai Guo 262938c13dSDahai Guo extern PetscErrorCode MatCreate_SeqSBSTRM(Mat); 272938c13dSDahai Guo extern PetscErrorCode MatCreate_MPISBSTRM(Mat); 282938c13dSDahai Guo 297087cfbeSBarry Smith extern PetscErrorCode MatCreate_SeqDense(Mat); 307087cfbeSBarry Smith extern PetscErrorCode MatCreate_MPIDense(Mat); 3117667f90SBarry Smith 327087cfbeSBarry Smith extern PetscErrorCode MatCreate_MPIAdj(Mat); 337087cfbeSBarry Smith extern PetscErrorCode MatCreate_Shell(Mat); 347087cfbeSBarry Smith extern PetscErrorCode MatCreate_Composite(Mat); 3517667f90SBarry Smith 367087cfbeSBarry Smith extern PetscErrorCode MatCreate_SeqAIJPERM(Mat); 377087cfbeSBarry Smith extern PetscErrorCode MatCreate_MPIAIJPERM(Mat); 3817667f90SBarry Smith 397087cfbeSBarry Smith extern PetscErrorCode MatCreate_SeqAIJCRL(Mat); 407087cfbeSBarry Smith extern PetscErrorCode MatCreate_MPIAIJCRL(Mat); 4117667f90SBarry Smith 427087cfbeSBarry Smith extern PetscErrorCode MatCreate_Scatter(Mat); 437087cfbeSBarry Smith extern PetscErrorCode MatCreate_BlockMat(Mat); 44c8883902SJed Brown extern PetscErrorCode MatCreate_Nest(Mat); 457087cfbeSBarry Smith extern PetscErrorCode MatCreate_DD(Mat); 46c6570e9aSVictor Minden 478154be41SBarry Smith #if defined PETSC_HAVE_CUSP 488154be41SBarry Smith extern PetscErrorCode MatCreate_SeqAIJCUSP(Mat); 498154be41SBarry Smith extern PetscErrorCode MatCreate_MPIAIJCUSP(Mat); 50c6570e9aSVictor Minden #endif 51c6570e9aSVictor Minden 52ba2f8784SDmitry Karpeev #if defined PETSC_HAVE_MATIM 537087cfbeSBarry Smith extern PetscErrorCode MatCreate_IM(Mat); 54ba2f8784SDmitry Karpeev #endif 55dedccee8SHong Zhang 56dedccee8SHong Zhang #if defined PETSC_HAVE_FFTW 57dedccee8SHong Zhang extern PetscErrorCode MatCreate_FFTW(Mat); 58dedccee8SHong Zhang #endif 59c0aa2d19SHong Zhang EXTERN_C_END 608a95e4e9SBarry Smith 618a95e4e9SBarry Smith /* 62f7cf7585SBarry Smith This is used by MatSetType() to make sure that at least one 63f7cf7585SBarry Smith MatRegisterAll() is called. In general, if there is more than one 64f7cf7585SBarry Smith DLL, then MatRegisterAll() may be called several times. 658a95e4e9SBarry Smith */ 6609573ac7SBarry Smith extern PetscBool MatRegisterAllCalled; 678a95e4e9SBarry Smith 684a2ae208SSatish Balay #undef __FUNCT__ 694a2ae208SSatish Balay #define __FUNCT__ "MatRegisterAll" 708a95e4e9SBarry Smith /*@C 71f7cf7585SBarry Smith MatRegisterAll - Registers all of the matrix types in PETSc 728a95e4e9SBarry Smith 738a95e4e9SBarry Smith Not Collective 748a95e4e9SBarry Smith 758a95e4e9SBarry Smith Level: advanced 768a95e4e9SBarry Smith 778a95e4e9SBarry Smith .keywords: KSP, register, all 788a95e4e9SBarry Smith 79f7cf7585SBarry Smith .seealso: MatRegisterDestroy() 808a95e4e9SBarry Smith @*/ 817087cfbeSBarry Smith PetscErrorCode MatRegisterAll(const char path[]) 828a95e4e9SBarry Smith { 83dfbe8321SBarry Smith PetscErrorCode ierr; 848a95e4e9SBarry Smith 858a95e4e9SBarry Smith PetscFunctionBegin; 86f7cf7585SBarry Smith MatRegisterAllCalled = PETSC_TRUE; 878a95e4e9SBarry Smith 88e884886fSBarry Smith ierr = MatRegisterDynamic(MATMFFD, path,"MatCreate_MFFD", MatCreate_MFFD);CHKERRQ(ierr); 89e884886fSBarry Smith 90f7cf7585SBarry Smith ierr = MatRegisterDynamic(MATMPIMAIJ, path,"MatCreate_MAIJ", MatCreate_MAIJ);CHKERRQ(ierr); 91b9b97703SBarry Smith ierr = MatRegisterDynamic(MATSEQMAIJ, path,"MatCreate_MAIJ", MatCreate_MAIJ);CHKERRQ(ierr); 92209238afSKris Buschelman ierr = MatRegisterDynamic(MATMAIJ, path,"MatCreate_MAIJ", MatCreate_MAIJ);CHKERRQ(ierr); 93273d9f13SBarry Smith 94186905e3SBarry Smith ierr = MatRegisterDynamic(MATIS, path,"MatCreate_IS", MatCreate_IS);CHKERRQ(ierr); 95273d9f13SBarry Smith ierr = MatRegisterDynamic(MATSHELL, path,"MatCreate_Shell", MatCreate_Shell);CHKERRQ(ierr); 96793850ffSBarry Smith ierr = MatRegisterDynamic(MATCOMPOSITE, path,"MatCreate_Composite", MatCreate_Composite);CHKERRQ(ierr); 9701bebe75SBarry Smith 9801bebe75SBarry Smith ierr = MatRegisterBaseName(MATAIJ,MATSEQAIJ,MATMPIAIJ);CHKERRQ(ierr); 99273d9f13SBarry Smith ierr = MatRegisterDynamic(MATMPIAIJ, path,"MatCreate_MPIAIJ", MatCreate_MPIAIJ);CHKERRQ(ierr); 100273d9f13SBarry Smith ierr = MatRegisterDynamic(MATSEQAIJ, path,"MatCreate_SeqAIJ", MatCreate_SeqAIJ);CHKERRQ(ierr); 101ff34cdc8SBarry Smith #if defined(PETSC_HAVE_PTHREADCLASSES) 102*bf2c1783SBarry Smith ierr = MatRegisterBaseName(MATAIJPTHREAD,MATSEQAIJPTHREAD,0);CHKERRQ(ierr); 1037d6a0e61SBarry Smith ierr = MatRegisterDynamic(MATSEQAIJPTHREAD, path,"MatCreate_SeqAIJPThread", MatCreate_SeqAIJPThread);CHKERRQ(ierr); 104faea8a20SBarry Smith #endif 10517667f90SBarry Smith 10601bebe75SBarry Smith ierr = MatRegisterBaseName(MATAIJPERM,MATSEQAIJPERM,MATMPIAIJPERM);CHKERRQ(ierr); 1075a11e1b2SBarry Smith ierr = MatRegisterDynamic(MATMPIAIJPERM, path,"MatCreate_MPIAIJPERM", MatCreate_MPIAIJPERM);CHKERRQ(ierr); 1085a11e1b2SBarry Smith ierr = MatRegisterDynamic(MATSEQAIJPERM, path,"MatCreate_SeqAIJPERM", MatCreate_SeqAIJPERM);CHKERRQ(ierr); 10917667f90SBarry Smith 11001bebe75SBarry Smith ierr = MatRegisterBaseName(MATAIJCRL,MATSEQAIJCRL,MATMPIAIJCRL);CHKERRQ(ierr); 1115a11e1b2SBarry Smith ierr = MatRegisterDynamic(MATSEQAIJCRL, path,"MatCreate_SeqAIJCRL", MatCreate_SeqAIJCRL);CHKERRQ(ierr); 1125a11e1b2SBarry Smith ierr = MatRegisterDynamic(MATMPIAIJCRL, path,"MatCreate_MPIAIJCRL", MatCreate_MPIAIJCRL);CHKERRQ(ierr); 113273d9f13SBarry Smith 11401bebe75SBarry Smith ierr = MatRegisterBaseName(MATBAIJ,MATSEQBAIJ,MATMPIBAIJ);CHKERRQ(ierr); 115273d9f13SBarry Smith ierr = MatRegisterDynamic(MATMPIBAIJ, path,"MatCreate_MPIBAIJ", MatCreate_MPIBAIJ);CHKERRQ(ierr); 116273d9f13SBarry Smith ierr = MatRegisterDynamic(MATSEQBAIJ, path,"MatCreate_SeqBAIJ", MatCreate_SeqBAIJ);CHKERRQ(ierr); 117273d9f13SBarry Smith 11801bebe75SBarry Smith ierr = MatRegisterBaseName(MATSBAIJ,MATSEQSBAIJ,MATMPISBAIJ);CHKERRQ(ierr); 119273d9f13SBarry Smith ierr = MatRegisterDynamic(MATMPISBAIJ, path,"MatCreate_MPISBAIJ", MatCreate_MPISBAIJ);CHKERRQ(ierr); 120273d9f13SBarry Smith ierr = MatRegisterDynamic(MATSEQSBAIJ, path,"MatCreate_SeqSBAIJ", MatCreate_SeqSBAIJ);CHKERRQ(ierr); 12117667f90SBarry Smith 1222938c13dSDahai Guo ierr = MatRegisterBaseName(MATBSTRM,MATSEQBSTRM,MATMPIBSTRM);CHKERRQ(ierr); 1232938c13dSDahai Guo ierr = MatRegisterDynamic(MATMPIBSTRM, path,"MatCreate_MPIBSTRM", MatCreate_MPIBSTRM);CHKERRQ(ierr); 1242938c13dSDahai Guo ierr = MatRegisterDynamic(MATSEQBSTRM, path,"MatCreate_SeqBSTRM", MatCreate_SeqBSTRM);CHKERRQ(ierr); 1252938c13dSDahai Guo 1262938c13dSDahai Guo ierr = MatRegisterBaseName(MATSBSTRM,MATSEQSBSTRM,MATMPISBSTRM);CHKERRQ(ierr); 1272938c13dSDahai Guo ierr = MatRegisterDynamic(MATMPISBSTRM, path,"MatCreate_MPISBSTRM", MatCreate_MPISBSTRM);CHKERRQ(ierr); 1282938c13dSDahai Guo ierr = MatRegisterDynamic(MATSEQSBSTRM, path,"MatCreate_SeqSBSTRM", MatCreate_SeqSBSTRM);CHKERRQ(ierr); 1292938c13dSDahai Guo 13001bebe75SBarry Smith ierr = MatRegisterBaseName(MATDENSE,MATSEQDENSE,MATMPIDENSE);CHKERRQ(ierr); 131273d9f13SBarry Smith ierr = MatRegisterDynamic(MATMPIDENSE, path,"MatCreate_MPIDense", MatCreate_MPIDense);CHKERRQ(ierr); 132273d9f13SBarry Smith ierr = MatRegisterDynamic(MATSEQDENSE, path,"MatCreate_SeqDense", MatCreate_SeqDense);CHKERRQ(ierr); 13317667f90SBarry Smith 134273d9f13SBarry Smith ierr = MatRegisterDynamic(MATMPIADJ, path,"MatCreate_MPIAdj", MatCreate_MPIAdj);CHKERRQ(ierr); 1352a6744ebSBarry Smith ierr = MatRegisterDynamic(MATSCATTER, path,"MatCreate_Scatter", MatCreate_Scatter);CHKERRQ(ierr); 136421e10b8SBarry Smith ierr = MatRegisterDynamic(MATBLOCKMAT, path,"MatCreate_BlockMat", MatCreate_BlockMat);CHKERRQ(ierr); 137c8883902SJed Brown ierr = MatRegisterDynamic(MATNEST, path,"MatCreate_Nest", MatCreate_Nest);CHKERRQ(ierr); 13868326731SBarry Smith 1394d6373a4SLisandro Dalcin /*ierr = MatRegisterDynamic(MATDD, path,"MatCreate_DD", MatCreate_DD);CHKERRQ(ierr);*/ 140ba2f8784SDmitry Karpeev #if defined PETSC_HAVE_MATIM 141ba2f8784SDmitry Karpeev ierr = MatRegisterDynamic(MATIM, path,"MatCreate_IM", MatCreate_IM);CHKERRQ(ierr); 142ba2f8784SDmitry Karpeev #endif 14301bebe75SBarry Smith 1448154be41SBarry Smith #if defined PETSC_HAVE_CUSP 14501bebe75SBarry Smith ierr = MatRegisterBaseName(MATAIJCUSP,MATSEQAIJCUSP,MATMPIAIJCUSP);CHKERRQ(ierr); 1468154be41SBarry Smith ierr = MatRegisterDynamic(MATSEQAIJCUSP, path,"MatCreate_SeqAIJCUSP", MatCreate_SeqAIJCUSP);CHKERRQ(ierr); 1478154be41SBarry Smith ierr = MatRegisterDynamic(MATMPIAIJCUSP, path,"MatCreate_MPIAIJCUSP", MatCreate_MPIAIJCUSP);CHKERRQ(ierr); 148c6570e9aSVictor Minden #endif 14901bebe75SBarry Smith 150dedccee8SHong Zhang #if defined PETSC_HAVE_FFTW 151dedccee8SHong Zhang ierr = MatRegisterDynamic(MATFFTW, path,"MatCreate_FFTW", MatCreate_FFTW);CHKERRQ(ierr); 152dedccee8SHong Zhang #endif 1538a95e4e9SBarry Smith PetscFunctionReturn(0); 1548a95e4e9SBarry Smith } 155f7cf7585SBarry Smith 1563a7fca6bSBarry Smith 157