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 12*ff34cdc8SBarry Smith #if defined(PETSC_HAVE_PTHREADCLASSES) 13ba61063dSBarry Smith extern PetscErrorCode MatCreate_SeqPThreadAIJ(Mat); 14ba61063dSBarry Smith #endif 15ba61063dSBarry Smith 167087cfbeSBarry Smith extern PetscErrorCode MatCreate_SeqBAIJ(Mat); 177087cfbeSBarry Smith extern PetscErrorCode MatCreate_MPIBAIJ(Mat); 1817667f90SBarry Smith 197087cfbeSBarry Smith extern PetscErrorCode MatCreate_SeqSBAIJ(Mat); 207087cfbeSBarry Smith extern PetscErrorCode MatCreate_MPISBAIJ(Mat); 2117667f90SBarry Smith 222938c13dSDahai Guo extern PetscErrorCode MatCreate_SeqBSTRM(Mat); 232938c13dSDahai Guo extern PetscErrorCode MatCreate_MPIBSTRM(Mat); 242938c13dSDahai Guo 252938c13dSDahai Guo extern PetscErrorCode MatCreate_SeqSBSTRM(Mat); 262938c13dSDahai Guo extern PetscErrorCode MatCreate_MPISBSTRM(Mat); 272938c13dSDahai Guo 287087cfbeSBarry Smith extern PetscErrorCode MatCreate_SeqDense(Mat); 297087cfbeSBarry Smith extern PetscErrorCode MatCreate_MPIDense(Mat); 3017667f90SBarry Smith 317087cfbeSBarry Smith extern PetscErrorCode MatCreate_MPIAdj(Mat); 327087cfbeSBarry Smith extern PetscErrorCode MatCreate_Shell(Mat); 337087cfbeSBarry Smith extern PetscErrorCode MatCreate_Composite(Mat); 3417667f90SBarry Smith 357087cfbeSBarry Smith extern PetscErrorCode MatCreate_SeqAIJPERM(Mat); 367087cfbeSBarry Smith extern PetscErrorCode MatCreate_MPIAIJPERM(Mat); 3717667f90SBarry Smith 387087cfbeSBarry Smith extern PetscErrorCode MatCreate_SeqAIJCRL(Mat); 397087cfbeSBarry Smith extern PetscErrorCode MatCreate_MPIAIJCRL(Mat); 4017667f90SBarry Smith 417087cfbeSBarry Smith extern PetscErrorCode MatCreate_Scatter(Mat); 427087cfbeSBarry Smith extern PetscErrorCode MatCreate_BlockMat(Mat); 43c8883902SJed Brown extern PetscErrorCode MatCreate_Nest(Mat); 447087cfbeSBarry Smith extern PetscErrorCode MatCreate_DD(Mat); 45c6570e9aSVictor Minden 468154be41SBarry Smith #if defined PETSC_HAVE_CUSP 478154be41SBarry Smith extern PetscErrorCode MatCreate_SeqAIJCUSP(Mat); 488154be41SBarry Smith extern PetscErrorCode MatCreate_MPIAIJCUSP(Mat); 49c6570e9aSVictor Minden #endif 50c6570e9aSVictor Minden 51ba2f8784SDmitry Karpeev #if defined PETSC_HAVE_MATIM 527087cfbeSBarry Smith extern PetscErrorCode MatCreate_IM(Mat); 53ba2f8784SDmitry Karpeev #endif 54dedccee8SHong Zhang 55dedccee8SHong Zhang #if defined PETSC_HAVE_FFTW 56dedccee8SHong Zhang extern PetscErrorCode MatCreate_FFTW(Mat); 57dedccee8SHong Zhang #endif 58c0aa2d19SHong Zhang EXTERN_C_END 598a95e4e9SBarry Smith 608a95e4e9SBarry Smith /* 61f7cf7585SBarry Smith This is used by MatSetType() to make sure that at least one 62f7cf7585SBarry Smith MatRegisterAll() is called. In general, if there is more than one 63f7cf7585SBarry Smith DLL, then MatRegisterAll() may be called several times. 648a95e4e9SBarry Smith */ 6509573ac7SBarry Smith extern PetscBool MatRegisterAllCalled; 668a95e4e9SBarry Smith 674a2ae208SSatish Balay #undef __FUNCT__ 684a2ae208SSatish Balay #define __FUNCT__ "MatRegisterAll" 698a95e4e9SBarry Smith /*@C 70f7cf7585SBarry Smith MatRegisterAll - Registers all of the matrix types in PETSc 718a95e4e9SBarry Smith 728a95e4e9SBarry Smith Not Collective 738a95e4e9SBarry Smith 748a95e4e9SBarry Smith Level: advanced 758a95e4e9SBarry Smith 768a95e4e9SBarry Smith .keywords: KSP, register, all 778a95e4e9SBarry Smith 78f7cf7585SBarry Smith .seealso: MatRegisterDestroy() 798a95e4e9SBarry Smith @*/ 807087cfbeSBarry Smith PetscErrorCode MatRegisterAll(const char path[]) 818a95e4e9SBarry Smith { 82dfbe8321SBarry Smith PetscErrorCode ierr; 838a95e4e9SBarry Smith 848a95e4e9SBarry Smith PetscFunctionBegin; 85f7cf7585SBarry Smith MatRegisterAllCalled = PETSC_TRUE; 868a95e4e9SBarry Smith 87e884886fSBarry Smith ierr = MatRegisterDynamic(MATMFFD, path,"MatCreate_MFFD", MatCreate_MFFD);CHKERRQ(ierr); 88e884886fSBarry Smith 89f7cf7585SBarry Smith ierr = MatRegisterDynamic(MATMPIMAIJ, path,"MatCreate_MAIJ", MatCreate_MAIJ);CHKERRQ(ierr); 90b9b97703SBarry Smith ierr = MatRegisterDynamic(MATSEQMAIJ, path,"MatCreate_MAIJ", MatCreate_MAIJ);CHKERRQ(ierr); 91209238afSKris Buschelman ierr = MatRegisterDynamic(MATMAIJ, path,"MatCreate_MAIJ", MatCreate_MAIJ);CHKERRQ(ierr); 92273d9f13SBarry Smith 93186905e3SBarry Smith ierr = MatRegisterDynamic(MATIS, path,"MatCreate_IS", MatCreate_IS);CHKERRQ(ierr); 94273d9f13SBarry Smith ierr = MatRegisterDynamic(MATSHELL, path,"MatCreate_Shell", MatCreate_Shell);CHKERRQ(ierr); 95793850ffSBarry Smith ierr = MatRegisterDynamic(MATCOMPOSITE, path,"MatCreate_Composite", MatCreate_Composite);CHKERRQ(ierr); 9601bebe75SBarry Smith 9701bebe75SBarry Smith ierr = MatRegisterBaseName(MATAIJ,MATSEQAIJ,MATMPIAIJ);CHKERRQ(ierr); 98273d9f13SBarry Smith ierr = MatRegisterDynamic(MATMPIAIJ, path,"MatCreate_MPIAIJ", MatCreate_MPIAIJ);CHKERRQ(ierr); 99273d9f13SBarry Smith ierr = MatRegisterDynamic(MATSEQAIJ, path,"MatCreate_SeqAIJ", MatCreate_SeqAIJ);CHKERRQ(ierr); 100*ff34cdc8SBarry Smith #if defined(PETSC_HAVE_PTHREADCLASSES) 101faea8a20SBarry Smith ierr = MatRegisterDynamic(MATSEQPTHREADAIJ, path,"MatCreate_SeqPThreadAIJ", MatCreate_SeqPThreadAIJ);CHKERRQ(ierr); 102faea8a20SBarry Smith #endif 10317667f90SBarry Smith 10401bebe75SBarry Smith ierr = MatRegisterBaseName(MATAIJPERM,MATSEQAIJPERM,MATMPIAIJPERM);CHKERRQ(ierr); 1055a11e1b2SBarry Smith ierr = MatRegisterDynamic(MATMPIAIJPERM, path,"MatCreate_MPIAIJPERM", MatCreate_MPIAIJPERM);CHKERRQ(ierr); 1065a11e1b2SBarry Smith ierr = MatRegisterDynamic(MATSEQAIJPERM, path,"MatCreate_SeqAIJPERM", MatCreate_SeqAIJPERM);CHKERRQ(ierr); 10717667f90SBarry Smith 10801bebe75SBarry Smith ierr = MatRegisterBaseName(MATAIJCRL,MATSEQAIJCRL,MATMPIAIJCRL);CHKERRQ(ierr); 1095a11e1b2SBarry Smith ierr = MatRegisterDynamic(MATSEQAIJCRL, path,"MatCreate_SeqAIJCRL", MatCreate_SeqAIJCRL);CHKERRQ(ierr); 1105a11e1b2SBarry Smith ierr = MatRegisterDynamic(MATMPIAIJCRL, path,"MatCreate_MPIAIJCRL", MatCreate_MPIAIJCRL);CHKERRQ(ierr); 111273d9f13SBarry Smith 11201bebe75SBarry Smith ierr = MatRegisterBaseName(MATBAIJ,MATSEQBAIJ,MATMPIBAIJ);CHKERRQ(ierr); 113273d9f13SBarry Smith ierr = MatRegisterDynamic(MATMPIBAIJ, path,"MatCreate_MPIBAIJ", MatCreate_MPIBAIJ);CHKERRQ(ierr); 114273d9f13SBarry Smith ierr = MatRegisterDynamic(MATSEQBAIJ, path,"MatCreate_SeqBAIJ", MatCreate_SeqBAIJ);CHKERRQ(ierr); 115273d9f13SBarry Smith 11601bebe75SBarry Smith ierr = MatRegisterBaseName(MATSBAIJ,MATSEQSBAIJ,MATMPISBAIJ);CHKERRQ(ierr); 117273d9f13SBarry Smith ierr = MatRegisterDynamic(MATMPISBAIJ, path,"MatCreate_MPISBAIJ", MatCreate_MPISBAIJ);CHKERRQ(ierr); 118273d9f13SBarry Smith ierr = MatRegisterDynamic(MATSEQSBAIJ, path,"MatCreate_SeqSBAIJ", MatCreate_SeqSBAIJ);CHKERRQ(ierr); 11917667f90SBarry Smith 1202938c13dSDahai Guo ierr = MatRegisterBaseName(MATBSTRM,MATSEQBSTRM,MATMPIBSTRM);CHKERRQ(ierr); 1212938c13dSDahai Guo ierr = MatRegisterDynamic(MATMPIBSTRM, path,"MatCreate_MPIBSTRM", MatCreate_MPIBSTRM);CHKERRQ(ierr); 1222938c13dSDahai Guo ierr = MatRegisterDynamic(MATSEQBSTRM, path,"MatCreate_SeqBSTRM", MatCreate_SeqBSTRM);CHKERRQ(ierr); 1232938c13dSDahai Guo 1242938c13dSDahai Guo ierr = MatRegisterBaseName(MATSBSTRM,MATSEQSBSTRM,MATMPISBSTRM);CHKERRQ(ierr); 1252938c13dSDahai Guo ierr = MatRegisterDynamic(MATMPISBSTRM, path,"MatCreate_MPISBSTRM", MatCreate_MPISBSTRM);CHKERRQ(ierr); 1262938c13dSDahai Guo ierr = MatRegisterDynamic(MATSEQSBSTRM, path,"MatCreate_SeqSBSTRM", MatCreate_SeqSBSTRM);CHKERRQ(ierr); 1272938c13dSDahai Guo 12801bebe75SBarry Smith ierr = MatRegisterBaseName(MATDENSE,MATSEQDENSE,MATMPIDENSE);CHKERRQ(ierr); 129273d9f13SBarry Smith ierr = MatRegisterDynamic(MATMPIDENSE, path,"MatCreate_MPIDense", MatCreate_MPIDense);CHKERRQ(ierr); 130273d9f13SBarry Smith ierr = MatRegisterDynamic(MATSEQDENSE, path,"MatCreate_SeqDense", MatCreate_SeqDense);CHKERRQ(ierr); 13117667f90SBarry Smith 132273d9f13SBarry Smith ierr = MatRegisterDynamic(MATMPIADJ, path,"MatCreate_MPIAdj", MatCreate_MPIAdj);CHKERRQ(ierr); 1332a6744ebSBarry Smith ierr = MatRegisterDynamic(MATSCATTER, path,"MatCreate_Scatter", MatCreate_Scatter);CHKERRQ(ierr); 134421e10b8SBarry Smith ierr = MatRegisterDynamic(MATBLOCKMAT, path,"MatCreate_BlockMat", MatCreate_BlockMat);CHKERRQ(ierr); 135c8883902SJed Brown ierr = MatRegisterDynamic(MATNEST, path,"MatCreate_Nest", MatCreate_Nest);CHKERRQ(ierr); 13668326731SBarry Smith 1374d6373a4SLisandro Dalcin /*ierr = MatRegisterDynamic(MATDD, path,"MatCreate_DD", MatCreate_DD);CHKERRQ(ierr);*/ 138ba2f8784SDmitry Karpeev #if defined PETSC_HAVE_MATIM 139ba2f8784SDmitry Karpeev ierr = MatRegisterDynamic(MATIM, path,"MatCreate_IM", MatCreate_IM);CHKERRQ(ierr); 140ba2f8784SDmitry Karpeev #endif 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 148dedccee8SHong Zhang #if defined PETSC_HAVE_FFTW 149dedccee8SHong Zhang ierr = MatRegisterDynamic(MATFFTW, path,"MatCreate_FFTW", MatCreate_FFTW);CHKERRQ(ierr); 150dedccee8SHong Zhang #endif 1518a95e4e9SBarry Smith PetscFunctionReturn(0); 1528a95e4e9SBarry Smith } 153f7cf7585SBarry Smith 1543a7fca6bSBarry Smith 155