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); 14bf2c1783SBarry 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); 455edff473SDmitry Karpeev extern PetscErrorCode MatCreate_IJ(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 52*9ae82921SPaul Mullowney #if defined PETSC_HAVE_TXPETSCGPU 53*9ae82921SPaul Mullowney extern PetscErrorCode MatCreate_SeqAIJCUSPARSE(Mat); 54*9ae82921SPaul Mullowney extern PetscErrorCode MatCreate_MPIAIJCUSPARSE(Mat); 55*9ae82921SPaul Mullowney #endif 56*9ae82921SPaul Mullowney 57dedccee8SHong Zhang #if defined PETSC_HAVE_FFTW 58dedccee8SHong Zhang extern PetscErrorCode MatCreate_FFTW(Mat); 59dedccee8SHong Zhang #endif 60c0aa2d19SHong Zhang EXTERN_C_END 618a95e4e9SBarry Smith 628a95e4e9SBarry Smith /* 63f7cf7585SBarry Smith This is used by MatSetType() to make sure that at least one 64f7cf7585SBarry Smith MatRegisterAll() is called. In general, if there is more than one 65f7cf7585SBarry Smith DLL, then MatRegisterAll() may be called several times. 668a95e4e9SBarry Smith */ 6709573ac7SBarry Smith extern PetscBool MatRegisterAllCalled; 688a95e4e9SBarry Smith 694a2ae208SSatish Balay #undef __FUNCT__ 704a2ae208SSatish Balay #define __FUNCT__ "MatRegisterAll" 718a95e4e9SBarry Smith /*@C 72f7cf7585SBarry Smith MatRegisterAll - Registers all of the matrix types in PETSc 738a95e4e9SBarry Smith 748a95e4e9SBarry Smith Not Collective 758a95e4e9SBarry Smith 768a95e4e9SBarry Smith Level: advanced 778a95e4e9SBarry Smith 788a95e4e9SBarry Smith .keywords: KSP, register, all 798a95e4e9SBarry Smith 80f7cf7585SBarry Smith .seealso: MatRegisterDestroy() 818a95e4e9SBarry Smith @*/ 827087cfbeSBarry Smith PetscErrorCode MatRegisterAll(const char path[]) 838a95e4e9SBarry Smith { 84dfbe8321SBarry Smith PetscErrorCode ierr; 858a95e4e9SBarry Smith 868a95e4e9SBarry Smith PetscFunctionBegin; 87f7cf7585SBarry Smith MatRegisterAllCalled = PETSC_TRUE; 888a95e4e9SBarry Smith 89e884886fSBarry Smith ierr = MatRegisterDynamic(MATMFFD, path,"MatCreate_MFFD", MatCreate_MFFD);CHKERRQ(ierr); 90e884886fSBarry Smith 91f7cf7585SBarry Smith ierr = MatRegisterDynamic(MATMPIMAIJ, path,"MatCreate_MAIJ", MatCreate_MAIJ);CHKERRQ(ierr); 92b9b97703SBarry Smith ierr = MatRegisterDynamic(MATSEQMAIJ, path,"MatCreate_MAIJ", MatCreate_MAIJ);CHKERRQ(ierr); 93209238afSKris Buschelman ierr = MatRegisterDynamic(MATMAIJ, path,"MatCreate_MAIJ", MatCreate_MAIJ);CHKERRQ(ierr); 94273d9f13SBarry Smith 95186905e3SBarry Smith ierr = MatRegisterDynamic(MATIS, path,"MatCreate_IS", MatCreate_IS);CHKERRQ(ierr); 96273d9f13SBarry Smith ierr = MatRegisterDynamic(MATSHELL, path,"MatCreate_Shell", MatCreate_Shell);CHKERRQ(ierr); 97793850ffSBarry Smith ierr = MatRegisterDynamic(MATCOMPOSITE, path,"MatCreate_Composite", MatCreate_Composite);CHKERRQ(ierr); 9801bebe75SBarry Smith 9901bebe75SBarry Smith ierr = MatRegisterBaseName(MATAIJ,MATSEQAIJ,MATMPIAIJ);CHKERRQ(ierr); 100273d9f13SBarry Smith ierr = MatRegisterDynamic(MATMPIAIJ, path,"MatCreate_MPIAIJ", MatCreate_MPIAIJ);CHKERRQ(ierr); 101273d9f13SBarry Smith ierr = MatRegisterDynamic(MATSEQAIJ, path,"MatCreate_SeqAIJ", MatCreate_SeqAIJ);CHKERRQ(ierr); 102ff34cdc8SBarry Smith #if defined(PETSC_HAVE_PTHREADCLASSES) 103bf2c1783SBarry Smith ierr = MatRegisterBaseName(MATAIJPTHREAD,MATSEQAIJPTHREAD,0);CHKERRQ(ierr); 1047d6a0e61SBarry Smith ierr = MatRegisterDynamic(MATSEQAIJPTHREAD, path,"MatCreate_SeqAIJPThread", MatCreate_SeqAIJPThread);CHKERRQ(ierr); 105faea8a20SBarry Smith #endif 10617667f90SBarry Smith 10701bebe75SBarry Smith ierr = MatRegisterBaseName(MATAIJPERM,MATSEQAIJPERM,MATMPIAIJPERM);CHKERRQ(ierr); 1085a11e1b2SBarry Smith ierr = MatRegisterDynamic(MATMPIAIJPERM, path,"MatCreate_MPIAIJPERM", MatCreate_MPIAIJPERM);CHKERRQ(ierr); 1095a11e1b2SBarry Smith ierr = MatRegisterDynamic(MATSEQAIJPERM, path,"MatCreate_SeqAIJPERM", MatCreate_SeqAIJPERM);CHKERRQ(ierr); 11017667f90SBarry Smith 11101bebe75SBarry Smith ierr = MatRegisterBaseName(MATAIJCRL,MATSEQAIJCRL,MATMPIAIJCRL);CHKERRQ(ierr); 1125a11e1b2SBarry Smith ierr = MatRegisterDynamic(MATSEQAIJCRL, path,"MatCreate_SeqAIJCRL", MatCreate_SeqAIJCRL);CHKERRQ(ierr); 1135a11e1b2SBarry Smith ierr = MatRegisterDynamic(MATMPIAIJCRL, path,"MatCreate_MPIAIJCRL", MatCreate_MPIAIJCRL);CHKERRQ(ierr); 114273d9f13SBarry Smith 11501bebe75SBarry Smith ierr = MatRegisterBaseName(MATBAIJ,MATSEQBAIJ,MATMPIBAIJ);CHKERRQ(ierr); 116273d9f13SBarry Smith ierr = MatRegisterDynamic(MATMPIBAIJ, path,"MatCreate_MPIBAIJ", MatCreate_MPIBAIJ);CHKERRQ(ierr); 117273d9f13SBarry Smith ierr = MatRegisterDynamic(MATSEQBAIJ, path,"MatCreate_SeqBAIJ", MatCreate_SeqBAIJ);CHKERRQ(ierr); 118273d9f13SBarry Smith 11901bebe75SBarry Smith ierr = MatRegisterBaseName(MATSBAIJ,MATSEQSBAIJ,MATMPISBAIJ);CHKERRQ(ierr); 120273d9f13SBarry Smith ierr = MatRegisterDynamic(MATMPISBAIJ, path,"MatCreate_MPISBAIJ", MatCreate_MPISBAIJ);CHKERRQ(ierr); 121273d9f13SBarry Smith ierr = MatRegisterDynamic(MATSEQSBAIJ, path,"MatCreate_SeqSBAIJ", MatCreate_SeqSBAIJ);CHKERRQ(ierr); 12217667f90SBarry Smith 1232938c13dSDahai Guo ierr = MatRegisterBaseName(MATBSTRM,MATSEQBSTRM,MATMPIBSTRM);CHKERRQ(ierr); 1242938c13dSDahai Guo ierr = MatRegisterDynamic(MATMPIBSTRM, path,"MatCreate_MPIBSTRM", MatCreate_MPIBSTRM);CHKERRQ(ierr); 1252938c13dSDahai Guo ierr = MatRegisterDynamic(MATSEQBSTRM, path,"MatCreate_SeqBSTRM", MatCreate_SeqBSTRM);CHKERRQ(ierr); 1262938c13dSDahai Guo 1272938c13dSDahai Guo ierr = MatRegisterBaseName(MATSBSTRM,MATSEQSBSTRM,MATMPISBSTRM);CHKERRQ(ierr); 1282938c13dSDahai Guo ierr = MatRegisterDynamic(MATMPISBSTRM, path,"MatCreate_MPISBSTRM", MatCreate_MPISBSTRM);CHKERRQ(ierr); 1292938c13dSDahai Guo ierr = MatRegisterDynamic(MATSEQSBSTRM, path,"MatCreate_SeqSBSTRM", MatCreate_SeqSBSTRM);CHKERRQ(ierr); 1302938c13dSDahai Guo 13101bebe75SBarry Smith ierr = MatRegisterBaseName(MATDENSE,MATSEQDENSE,MATMPIDENSE);CHKERRQ(ierr); 132273d9f13SBarry Smith ierr = MatRegisterDynamic(MATMPIDENSE, path,"MatCreate_MPIDense", MatCreate_MPIDense);CHKERRQ(ierr); 133273d9f13SBarry Smith ierr = MatRegisterDynamic(MATSEQDENSE, path,"MatCreate_SeqDense", MatCreate_SeqDense);CHKERRQ(ierr); 13417667f90SBarry Smith 135273d9f13SBarry Smith ierr = MatRegisterDynamic(MATMPIADJ, path,"MatCreate_MPIAdj", MatCreate_MPIAdj);CHKERRQ(ierr); 1362a6744ebSBarry Smith ierr = MatRegisterDynamic(MATSCATTER, path,"MatCreate_Scatter", MatCreate_Scatter);CHKERRQ(ierr); 137421e10b8SBarry Smith ierr = MatRegisterDynamic(MATBLOCKMAT, path,"MatCreate_BlockMat", MatCreate_BlockMat);CHKERRQ(ierr); 138c8883902SJed Brown ierr = MatRegisterDynamic(MATNEST, path,"MatCreate_Nest", MatCreate_Nest);CHKERRQ(ierr); 13968326731SBarry Smith 1405edff473SDmitry Karpeev ierr = MatRegisterDynamic(MATIJ, path,"MatCreate_IJ", MatCreate_IJ);CHKERRQ(ierr); 14101bebe75SBarry Smith 1428154be41SBarry Smith #if defined PETSC_HAVE_CUSP 14301bebe75SBarry Smith ierr = MatRegisterBaseName(MATAIJCUSP,MATSEQAIJCUSP,MATMPIAIJCUSP);CHKERRQ(ierr); 1448154be41SBarry Smith ierr = MatRegisterDynamic(MATSEQAIJCUSP, path,"MatCreate_SeqAIJCUSP", MatCreate_SeqAIJCUSP);CHKERRQ(ierr); 1458154be41SBarry Smith ierr = MatRegisterDynamic(MATMPIAIJCUSP, path,"MatCreate_MPIAIJCUSP", MatCreate_MPIAIJCUSP);CHKERRQ(ierr); 146c6570e9aSVictor Minden #endif 14701bebe75SBarry Smith 148*9ae82921SPaul Mullowney #if defined PETSC_HAVE_TXPETSCGPU 149*9ae82921SPaul Mullowney ierr = MatRegisterBaseName(MATAIJCUSPARSE,MATSEQAIJCUSPARSE,MATMPIAIJCUSPARSE);CHKERRQ(ierr); 150*9ae82921SPaul Mullowney ierr = MatRegisterDynamic(MATSEQAIJCUSPARSE, path,"MatCreate_SeqAIJCUSPARSE", MatCreate_SeqAIJCUSPARSE);CHKERRQ(ierr); 151*9ae82921SPaul Mullowney ierr = MatRegisterDynamic(MATMPIAIJCUSPARSE, path,"MatCreate_MPIAIJCUSPARSE", MatCreate_MPIAIJCUSPARSE);CHKERRQ(ierr); 152*9ae82921SPaul Mullowney #endif 153*9ae82921SPaul Mullowney 154dedccee8SHong Zhang #if defined PETSC_HAVE_FFTW 155dedccee8SHong Zhang ierr = MatRegisterDynamic(MATFFTW, path,"MatCreate_FFTW", MatCreate_FFTW);CHKERRQ(ierr); 156dedccee8SHong Zhang #endif 1578a95e4e9SBarry Smith PetscFunctionReturn(0); 1588a95e4e9SBarry Smith } 159f7cf7585SBarry Smith 1603a7fca6bSBarry Smith 161