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*ba61063dSBarry Smith #if defined(PETSC_USE_PTHREAD_CLASSES) 13*ba61063dSBarry Smith extern PetscErrorCode MatCreate_SeqPThreadAIJ(Mat); 14*ba61063dSBarry Smith #endif 15*ba61063dSBarry 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); 9851d315f7SKerry Stevens ierr = MatRegisterDynamic(MATSEQPTHREADAIJ, path,"MatCreate_SeqPThreadAIJ", MatCreate_SeqPThreadAIJ);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); 10117667f90SBarry Smith 10201bebe75SBarry Smith ierr = MatRegisterBaseName(MATAIJPERM,MATSEQAIJPERM,MATMPIAIJPERM);CHKERRQ(ierr); 1035a11e1b2SBarry Smith ierr = MatRegisterDynamic(MATMPIAIJPERM, path,"MatCreate_MPIAIJPERM", MatCreate_MPIAIJPERM);CHKERRQ(ierr); 1045a11e1b2SBarry Smith ierr = MatRegisterDynamic(MATSEQAIJPERM, path,"MatCreate_SeqAIJPERM", MatCreate_SeqAIJPERM);CHKERRQ(ierr); 10517667f90SBarry Smith 10601bebe75SBarry Smith ierr = MatRegisterBaseName(MATAIJCRL,MATSEQAIJCRL,MATMPIAIJCRL);CHKERRQ(ierr); 1075a11e1b2SBarry Smith ierr = MatRegisterDynamic(MATSEQAIJCRL, path,"MatCreate_SeqAIJCRL", MatCreate_SeqAIJCRL);CHKERRQ(ierr); 1085a11e1b2SBarry Smith ierr = MatRegisterDynamic(MATMPIAIJCRL, path,"MatCreate_MPIAIJCRL", MatCreate_MPIAIJCRL);CHKERRQ(ierr); 109273d9f13SBarry Smith 11001bebe75SBarry Smith ierr = MatRegisterBaseName(MATBAIJ,MATSEQBAIJ,MATMPIBAIJ);CHKERRQ(ierr); 111273d9f13SBarry Smith ierr = MatRegisterDynamic(MATMPIBAIJ, path,"MatCreate_MPIBAIJ", MatCreate_MPIBAIJ);CHKERRQ(ierr); 112273d9f13SBarry Smith ierr = MatRegisterDynamic(MATSEQBAIJ, path,"MatCreate_SeqBAIJ", MatCreate_SeqBAIJ);CHKERRQ(ierr); 113273d9f13SBarry Smith 11401bebe75SBarry Smith ierr = MatRegisterBaseName(MATSBAIJ,MATSEQSBAIJ,MATMPISBAIJ);CHKERRQ(ierr); 115273d9f13SBarry Smith ierr = MatRegisterDynamic(MATMPISBAIJ, path,"MatCreate_MPISBAIJ", MatCreate_MPISBAIJ);CHKERRQ(ierr); 116273d9f13SBarry Smith ierr = MatRegisterDynamic(MATSEQSBAIJ, path,"MatCreate_SeqSBAIJ", MatCreate_SeqSBAIJ);CHKERRQ(ierr); 11717667f90SBarry Smith 1182938c13dSDahai Guo ierr = MatRegisterBaseName(MATBSTRM,MATSEQBSTRM,MATMPIBSTRM);CHKERRQ(ierr); 1192938c13dSDahai Guo ierr = MatRegisterDynamic(MATMPIBSTRM, path,"MatCreate_MPIBSTRM", MatCreate_MPIBSTRM);CHKERRQ(ierr); 1202938c13dSDahai Guo ierr = MatRegisterDynamic(MATSEQBSTRM, path,"MatCreate_SeqBSTRM", MatCreate_SeqBSTRM);CHKERRQ(ierr); 1212938c13dSDahai Guo 1222938c13dSDahai Guo ierr = MatRegisterBaseName(MATSBSTRM,MATSEQSBSTRM,MATMPISBSTRM);CHKERRQ(ierr); 1232938c13dSDahai Guo ierr = MatRegisterDynamic(MATMPISBSTRM, path,"MatCreate_MPISBSTRM", MatCreate_MPISBSTRM);CHKERRQ(ierr); 1242938c13dSDahai Guo ierr = MatRegisterDynamic(MATSEQSBSTRM, path,"MatCreate_SeqSBSTRM", MatCreate_SeqSBSTRM);CHKERRQ(ierr); 1252938c13dSDahai Guo 12601bebe75SBarry Smith ierr = MatRegisterBaseName(MATDENSE,MATSEQDENSE,MATMPIDENSE);CHKERRQ(ierr); 127273d9f13SBarry Smith ierr = MatRegisterDynamic(MATMPIDENSE, path,"MatCreate_MPIDense", MatCreate_MPIDense);CHKERRQ(ierr); 128273d9f13SBarry Smith ierr = MatRegisterDynamic(MATSEQDENSE, path,"MatCreate_SeqDense", MatCreate_SeqDense);CHKERRQ(ierr); 12917667f90SBarry Smith 130273d9f13SBarry Smith ierr = MatRegisterDynamic(MATMPIADJ, path,"MatCreate_MPIAdj", MatCreate_MPIAdj);CHKERRQ(ierr); 1312a6744ebSBarry Smith ierr = MatRegisterDynamic(MATSCATTER, path,"MatCreate_Scatter", MatCreate_Scatter);CHKERRQ(ierr); 132421e10b8SBarry Smith ierr = MatRegisterDynamic(MATBLOCKMAT, path,"MatCreate_BlockMat", MatCreate_BlockMat);CHKERRQ(ierr); 133c8883902SJed Brown ierr = MatRegisterDynamic(MATNEST, path,"MatCreate_Nest", MatCreate_Nest);CHKERRQ(ierr); 13468326731SBarry Smith 1354d6373a4SLisandro Dalcin /*ierr = MatRegisterDynamic(MATDD, path,"MatCreate_DD", MatCreate_DD);CHKERRQ(ierr);*/ 136ba2f8784SDmitry Karpeev #if defined PETSC_HAVE_MATIM 137ba2f8784SDmitry Karpeev ierr = MatRegisterDynamic(MATIM, path,"MatCreate_IM", MatCreate_IM);CHKERRQ(ierr); 138ba2f8784SDmitry Karpeev #endif 13901bebe75SBarry Smith 1408154be41SBarry Smith #if defined PETSC_HAVE_CUSP 14101bebe75SBarry Smith ierr = MatRegisterBaseName(MATAIJCUSP,MATSEQAIJCUSP,MATMPIAIJCUSP);CHKERRQ(ierr); 1428154be41SBarry Smith ierr = MatRegisterDynamic(MATSEQAIJCUSP, path,"MatCreate_SeqAIJCUSP", MatCreate_SeqAIJCUSP);CHKERRQ(ierr); 1438154be41SBarry Smith ierr = MatRegisterDynamic(MATMPIAIJCUSP, path,"MatCreate_MPIAIJCUSP", MatCreate_MPIAIJCUSP);CHKERRQ(ierr); 144c6570e9aSVictor Minden #endif 14501bebe75SBarry Smith 146dedccee8SHong Zhang #if defined PETSC_HAVE_FFTW 147dedccee8SHong Zhang ierr = MatRegisterDynamic(MATFFTW, path,"MatCreate_FFTW", MatCreate_FFTW);CHKERRQ(ierr); 148dedccee8SHong Zhang #endif 1498a95e4e9SBarry Smith PetscFunctionReturn(0); 1508a95e4e9SBarry Smith } 151f7cf7585SBarry Smith 1523a7fca6bSBarry Smith 153