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 52dedccee8SHong Zhang #if defined PETSC_HAVE_FFTW 53dedccee8SHong Zhang extern PetscErrorCode MatCreate_FFTW(Mat); 54dedccee8SHong Zhang #endif 55*db31f6deSJed Brown extern PetscErrorCode MatCreate_Elemental(Mat); 56c0aa2d19SHong Zhang EXTERN_C_END 578a95e4e9SBarry Smith 588a95e4e9SBarry Smith /* 59f7cf7585SBarry Smith This is used by MatSetType() to make sure that at least one 60f7cf7585SBarry Smith MatRegisterAll() is called. In general, if there is more than one 61f7cf7585SBarry Smith DLL, then MatRegisterAll() may be called several times. 628a95e4e9SBarry Smith */ 6309573ac7SBarry Smith extern PetscBool MatRegisterAllCalled; 648a95e4e9SBarry Smith 654a2ae208SSatish Balay #undef __FUNCT__ 664a2ae208SSatish Balay #define __FUNCT__ "MatRegisterAll" 678a95e4e9SBarry Smith /*@C 68f7cf7585SBarry Smith MatRegisterAll - Registers all of the matrix types in PETSc 698a95e4e9SBarry Smith 708a95e4e9SBarry Smith Not Collective 718a95e4e9SBarry Smith 728a95e4e9SBarry Smith Level: advanced 738a95e4e9SBarry Smith 748a95e4e9SBarry Smith .keywords: KSP, register, all 758a95e4e9SBarry Smith 76f7cf7585SBarry Smith .seealso: MatRegisterDestroy() 778a95e4e9SBarry Smith @*/ 787087cfbeSBarry Smith PetscErrorCode MatRegisterAll(const char path[]) 798a95e4e9SBarry Smith { 80dfbe8321SBarry Smith PetscErrorCode ierr; 818a95e4e9SBarry Smith 828a95e4e9SBarry Smith PetscFunctionBegin; 83f7cf7585SBarry Smith MatRegisterAllCalled = PETSC_TRUE; 848a95e4e9SBarry Smith 85e884886fSBarry Smith ierr = MatRegisterDynamic(MATMFFD, path,"MatCreate_MFFD", MatCreate_MFFD);CHKERRQ(ierr); 86e884886fSBarry Smith 87f7cf7585SBarry Smith ierr = MatRegisterDynamic(MATMPIMAIJ, path,"MatCreate_MAIJ", MatCreate_MAIJ);CHKERRQ(ierr); 88b9b97703SBarry Smith ierr = MatRegisterDynamic(MATSEQMAIJ, path,"MatCreate_MAIJ", MatCreate_MAIJ);CHKERRQ(ierr); 89209238afSKris Buschelman ierr = MatRegisterDynamic(MATMAIJ, path,"MatCreate_MAIJ", MatCreate_MAIJ);CHKERRQ(ierr); 90273d9f13SBarry Smith 91186905e3SBarry Smith ierr = MatRegisterDynamic(MATIS, path,"MatCreate_IS", MatCreate_IS);CHKERRQ(ierr); 92273d9f13SBarry Smith ierr = MatRegisterDynamic(MATSHELL, path,"MatCreate_Shell", MatCreate_Shell);CHKERRQ(ierr); 93793850ffSBarry Smith ierr = MatRegisterDynamic(MATCOMPOSITE, path,"MatCreate_Composite", MatCreate_Composite);CHKERRQ(ierr); 9401bebe75SBarry Smith 9501bebe75SBarry Smith ierr = MatRegisterBaseName(MATAIJ,MATSEQAIJ,MATMPIAIJ);CHKERRQ(ierr); 96273d9f13SBarry Smith ierr = MatRegisterDynamic(MATMPIAIJ, path,"MatCreate_MPIAIJ", MatCreate_MPIAIJ);CHKERRQ(ierr); 97273d9f13SBarry Smith ierr = MatRegisterDynamic(MATSEQAIJ, path,"MatCreate_SeqAIJ", MatCreate_SeqAIJ);CHKERRQ(ierr); 98ff34cdc8SBarry Smith #if defined(PETSC_HAVE_PTHREADCLASSES) 99bf2c1783SBarry Smith ierr = MatRegisterBaseName(MATAIJPTHREAD,MATSEQAIJPTHREAD,0);CHKERRQ(ierr); 1007d6a0e61SBarry Smith ierr = MatRegisterDynamic(MATSEQAIJPTHREAD, path,"MatCreate_SeqAIJPThread", MatCreate_SeqAIJPThread);CHKERRQ(ierr); 101faea8a20SBarry Smith #endif 10217667f90SBarry Smith 10301bebe75SBarry Smith ierr = MatRegisterBaseName(MATAIJPERM,MATSEQAIJPERM,MATMPIAIJPERM);CHKERRQ(ierr); 1045a11e1b2SBarry Smith ierr = MatRegisterDynamic(MATMPIAIJPERM, path,"MatCreate_MPIAIJPERM", MatCreate_MPIAIJPERM);CHKERRQ(ierr); 1055a11e1b2SBarry Smith ierr = MatRegisterDynamic(MATSEQAIJPERM, path,"MatCreate_SeqAIJPERM", MatCreate_SeqAIJPERM);CHKERRQ(ierr); 10617667f90SBarry Smith 10701bebe75SBarry Smith ierr = MatRegisterBaseName(MATAIJCRL,MATSEQAIJCRL,MATMPIAIJCRL);CHKERRQ(ierr); 1085a11e1b2SBarry Smith ierr = MatRegisterDynamic(MATSEQAIJCRL, path,"MatCreate_SeqAIJCRL", MatCreate_SeqAIJCRL);CHKERRQ(ierr); 1095a11e1b2SBarry Smith ierr = MatRegisterDynamic(MATMPIAIJCRL, path,"MatCreate_MPIAIJCRL", MatCreate_MPIAIJCRL);CHKERRQ(ierr); 110273d9f13SBarry Smith 11101bebe75SBarry Smith ierr = MatRegisterBaseName(MATBAIJ,MATSEQBAIJ,MATMPIBAIJ);CHKERRQ(ierr); 112273d9f13SBarry Smith ierr = MatRegisterDynamic(MATMPIBAIJ, path,"MatCreate_MPIBAIJ", MatCreate_MPIBAIJ);CHKERRQ(ierr); 113273d9f13SBarry Smith ierr = MatRegisterDynamic(MATSEQBAIJ, path,"MatCreate_SeqBAIJ", MatCreate_SeqBAIJ);CHKERRQ(ierr); 114273d9f13SBarry Smith 11501bebe75SBarry Smith ierr = MatRegisterBaseName(MATSBAIJ,MATSEQSBAIJ,MATMPISBAIJ);CHKERRQ(ierr); 116273d9f13SBarry Smith ierr = MatRegisterDynamic(MATMPISBAIJ, path,"MatCreate_MPISBAIJ", MatCreate_MPISBAIJ);CHKERRQ(ierr); 117273d9f13SBarry Smith ierr = MatRegisterDynamic(MATSEQSBAIJ, path,"MatCreate_SeqSBAIJ", MatCreate_SeqSBAIJ);CHKERRQ(ierr); 11817667f90SBarry Smith 1192938c13dSDahai Guo ierr = MatRegisterBaseName(MATBSTRM,MATSEQBSTRM,MATMPIBSTRM);CHKERRQ(ierr); 1202938c13dSDahai Guo ierr = MatRegisterDynamic(MATMPIBSTRM, path,"MatCreate_MPIBSTRM", MatCreate_MPIBSTRM);CHKERRQ(ierr); 1212938c13dSDahai Guo ierr = MatRegisterDynamic(MATSEQBSTRM, path,"MatCreate_SeqBSTRM", MatCreate_SeqBSTRM);CHKERRQ(ierr); 1222938c13dSDahai Guo 1232938c13dSDahai Guo ierr = MatRegisterBaseName(MATSBSTRM,MATSEQSBSTRM,MATMPISBSTRM);CHKERRQ(ierr); 1242938c13dSDahai Guo ierr = MatRegisterDynamic(MATMPISBSTRM, path,"MatCreate_MPISBSTRM", MatCreate_MPISBSTRM);CHKERRQ(ierr); 1252938c13dSDahai Guo ierr = MatRegisterDynamic(MATSEQSBSTRM, path,"MatCreate_SeqSBSTRM", MatCreate_SeqSBSTRM);CHKERRQ(ierr); 1262938c13dSDahai Guo 12701bebe75SBarry Smith ierr = MatRegisterBaseName(MATDENSE,MATSEQDENSE,MATMPIDENSE);CHKERRQ(ierr); 128273d9f13SBarry Smith ierr = MatRegisterDynamic(MATMPIDENSE, path,"MatCreate_MPIDense", MatCreate_MPIDense);CHKERRQ(ierr); 129273d9f13SBarry Smith ierr = MatRegisterDynamic(MATSEQDENSE, path,"MatCreate_SeqDense", MatCreate_SeqDense);CHKERRQ(ierr); 13017667f90SBarry Smith 131273d9f13SBarry Smith ierr = MatRegisterDynamic(MATMPIADJ, path,"MatCreate_MPIAdj", MatCreate_MPIAdj);CHKERRQ(ierr); 1322a6744ebSBarry Smith ierr = MatRegisterDynamic(MATSCATTER, path,"MatCreate_Scatter", MatCreate_Scatter);CHKERRQ(ierr); 133421e10b8SBarry Smith ierr = MatRegisterDynamic(MATBLOCKMAT, path,"MatCreate_BlockMat", MatCreate_BlockMat);CHKERRQ(ierr); 134c8883902SJed Brown ierr = MatRegisterDynamic(MATNEST, path,"MatCreate_Nest", MatCreate_Nest);CHKERRQ(ierr); 13568326731SBarry Smith 1365edff473SDmitry Karpeev ierr = MatRegisterDynamic(MATIJ, path,"MatCreate_IJ", MatCreate_IJ);CHKERRQ(ierr); 13701bebe75SBarry Smith 1388154be41SBarry Smith #if defined PETSC_HAVE_CUSP 13901bebe75SBarry Smith ierr = MatRegisterBaseName(MATAIJCUSP,MATSEQAIJCUSP,MATMPIAIJCUSP);CHKERRQ(ierr); 1408154be41SBarry Smith ierr = MatRegisterDynamic(MATSEQAIJCUSP, path,"MatCreate_SeqAIJCUSP", MatCreate_SeqAIJCUSP);CHKERRQ(ierr); 1418154be41SBarry Smith ierr = MatRegisterDynamic(MATMPIAIJCUSP, path,"MatCreate_MPIAIJCUSP", MatCreate_MPIAIJCUSP);CHKERRQ(ierr); 142c6570e9aSVictor Minden #endif 14301bebe75SBarry Smith 144dedccee8SHong Zhang #if defined PETSC_HAVE_FFTW 145dedccee8SHong Zhang ierr = MatRegisterDynamic(MATFFTW, path,"MatCreate_FFTW", MatCreate_FFTW);CHKERRQ(ierr); 146dedccee8SHong Zhang #endif 147*db31f6deSJed Brown #if defined PETSC_HAVE_ELEMENTAL 148*db31f6deSJed Brown ierr = MatRegisterDynamic(MATELEMENTAL, path,"MatCreate_Elemental", MatCreate_Elemental);CHKERRQ(ierr); 149*db31f6deSJed Brown #endif 1508a95e4e9SBarry Smith PetscFunctionReturn(0); 1518a95e4e9SBarry Smith } 152f7cf7585SBarry Smith 1533a7fca6bSBarry Smith 154