18a95e4e9SBarry Smith 2c6db04a5SJed Brown #include <petscmat.h> /*I "petscmat.h" I*/ 38a95e4e9SBarry Smith 4*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MFFD(Mat); 5*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MAIJ(Mat); 6*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_IS(Mat); 717667f90SBarry Smith 8*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJ(Mat); 9*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJ(Mat); 1017667f90SBarry Smith 11*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqBAIJ(Mat); 12*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIBAIJ(Mat); 1317667f90SBarry Smith 14*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqSBAIJ(Mat); 15*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPISBAIJ(Mat); 1617667f90SBarry Smith 17*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqBSTRM(Mat); 18*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIBSTRM(Mat); 192938c13dSDahai Guo 20*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqSBSTRM(Mat); 21*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPISBSTRM(Mat); 222938c13dSDahai Guo 23*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqDense(Mat); 24*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIDense(Mat); 2517667f90SBarry Smith 26*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAdj(Mat); 27*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Shell(Mat); 28*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Composite(Mat); 2917667f90SBarry Smith 30*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJPERM(Mat); 31*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJPERM(Mat); 3217667f90SBarry Smith 33*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJCRL(Mat); 34*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJCRL(Mat); 3517667f90SBarry Smith 36*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Scatter(Mat); 37*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_BlockMat(Mat); 38*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Nest(Mat); 39c6570e9aSVictor Minden 408154be41SBarry Smith #if defined PETSC_HAVE_CUSP 41*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJCUSP(Mat); 42*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJCUSP(Mat); 43c6570e9aSVictor Minden #endif 44c6570e9aSVictor Minden 459ae82921SPaul Mullowney #if defined PETSC_HAVE_TXPETSCGPU 46*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJCUSPARSE(Mat); 47*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJCUSPARSE(Mat); 489ae82921SPaul Mullowney #endif 499ae82921SPaul Mullowney 50dedccee8SHong Zhang #if defined PETSC_HAVE_FFTW 51*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_FFTW(Mat); 52dedccee8SHong Zhang #endif 53*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Elemental(Mat); 548a95e4e9SBarry Smith 558a95e4e9SBarry Smith /* 56f7cf7585SBarry Smith This is used by MatSetType() to make sure that at least one 57f7cf7585SBarry Smith MatRegisterAll() is called. In general, if there is more than one 58f7cf7585SBarry Smith DLL, then MatRegisterAll() may be called several times. 598a95e4e9SBarry Smith */ 6009573ac7SBarry Smith extern PetscBool MatRegisterAllCalled; 618a95e4e9SBarry Smith 624a2ae208SSatish Balay #undef __FUNCT__ 634a2ae208SSatish Balay #define __FUNCT__ "MatRegisterAll" 648a95e4e9SBarry Smith /*@C 65f7cf7585SBarry Smith MatRegisterAll - Registers all of the matrix types in PETSc 668a95e4e9SBarry Smith 678a95e4e9SBarry Smith Not Collective 688a95e4e9SBarry Smith 698a95e4e9SBarry Smith Level: advanced 708a95e4e9SBarry Smith 718a95e4e9SBarry Smith .keywords: KSP, register, all 728a95e4e9SBarry Smith 73f7cf7585SBarry Smith .seealso: MatRegisterDestroy() 748a95e4e9SBarry Smith @*/ 757087cfbeSBarry Smith PetscErrorCode MatRegisterAll(const char path[]) 768a95e4e9SBarry Smith { 77dfbe8321SBarry Smith PetscErrorCode ierr; 788a95e4e9SBarry Smith 798a95e4e9SBarry Smith PetscFunctionBegin; 80f7cf7585SBarry Smith MatRegisterAllCalled = PETSC_TRUE; 818a95e4e9SBarry Smith 82e884886fSBarry Smith ierr = MatRegisterDynamic(MATMFFD, path,"MatCreate_MFFD", MatCreate_MFFD);CHKERRQ(ierr); 83e884886fSBarry Smith 84f7cf7585SBarry Smith ierr = MatRegisterDynamic(MATMPIMAIJ, path,"MatCreate_MAIJ", MatCreate_MAIJ);CHKERRQ(ierr); 85b9b97703SBarry Smith ierr = MatRegisterDynamic(MATSEQMAIJ, path,"MatCreate_MAIJ", MatCreate_MAIJ);CHKERRQ(ierr); 86209238afSKris Buschelman ierr = MatRegisterDynamic(MATMAIJ, path,"MatCreate_MAIJ", MatCreate_MAIJ);CHKERRQ(ierr); 87273d9f13SBarry Smith 88186905e3SBarry Smith ierr = MatRegisterDynamic(MATIS, path,"MatCreate_IS", MatCreate_IS);CHKERRQ(ierr); 89273d9f13SBarry Smith ierr = MatRegisterDynamic(MATSHELL, path,"MatCreate_Shell", MatCreate_Shell);CHKERRQ(ierr); 90793850ffSBarry Smith ierr = MatRegisterDynamic(MATCOMPOSITE, path,"MatCreate_Composite", MatCreate_Composite);CHKERRQ(ierr); 9101bebe75SBarry Smith 9201bebe75SBarry Smith ierr = MatRegisterBaseName(MATAIJ,MATSEQAIJ,MATMPIAIJ);CHKERRQ(ierr); 93273d9f13SBarry Smith ierr = MatRegisterDynamic(MATMPIAIJ, path,"MatCreate_MPIAIJ", MatCreate_MPIAIJ);CHKERRQ(ierr); 94273d9f13SBarry Smith ierr = MatRegisterDynamic(MATSEQAIJ, path,"MatCreate_SeqAIJ", MatCreate_SeqAIJ);CHKERRQ(ierr); 9517667f90SBarry Smith 9601bebe75SBarry Smith ierr = MatRegisterBaseName(MATAIJPERM,MATSEQAIJPERM,MATMPIAIJPERM);CHKERRQ(ierr); 975a11e1b2SBarry Smith ierr = MatRegisterDynamic(MATMPIAIJPERM, path,"MatCreate_MPIAIJPERM", MatCreate_MPIAIJPERM);CHKERRQ(ierr); 985a11e1b2SBarry Smith ierr = MatRegisterDynamic(MATSEQAIJPERM, path,"MatCreate_SeqAIJPERM", MatCreate_SeqAIJPERM);CHKERRQ(ierr); 9917667f90SBarry Smith 10001bebe75SBarry Smith ierr = MatRegisterBaseName(MATAIJCRL,MATSEQAIJCRL,MATMPIAIJCRL);CHKERRQ(ierr); 1015a11e1b2SBarry Smith ierr = MatRegisterDynamic(MATSEQAIJCRL, path,"MatCreate_SeqAIJCRL", MatCreate_SeqAIJCRL);CHKERRQ(ierr); 1025a11e1b2SBarry Smith ierr = MatRegisterDynamic(MATMPIAIJCRL, path,"MatCreate_MPIAIJCRL", MatCreate_MPIAIJCRL);CHKERRQ(ierr); 103273d9f13SBarry Smith 10401bebe75SBarry Smith ierr = MatRegisterBaseName(MATBAIJ,MATSEQBAIJ,MATMPIBAIJ);CHKERRQ(ierr); 105273d9f13SBarry Smith ierr = MatRegisterDynamic(MATMPIBAIJ, path,"MatCreate_MPIBAIJ", MatCreate_MPIBAIJ);CHKERRQ(ierr); 106273d9f13SBarry Smith ierr = MatRegisterDynamic(MATSEQBAIJ, path,"MatCreate_SeqBAIJ", MatCreate_SeqBAIJ);CHKERRQ(ierr); 107273d9f13SBarry Smith 10801bebe75SBarry Smith ierr = MatRegisterBaseName(MATSBAIJ,MATSEQSBAIJ,MATMPISBAIJ);CHKERRQ(ierr); 109273d9f13SBarry Smith ierr = MatRegisterDynamic(MATMPISBAIJ, path,"MatCreate_MPISBAIJ", MatCreate_MPISBAIJ);CHKERRQ(ierr); 110273d9f13SBarry Smith ierr = MatRegisterDynamic(MATSEQSBAIJ, path,"MatCreate_SeqSBAIJ", MatCreate_SeqSBAIJ);CHKERRQ(ierr); 11117667f90SBarry Smith 1122938c13dSDahai Guo ierr = MatRegisterBaseName(MATBSTRM,MATSEQBSTRM,MATMPIBSTRM);CHKERRQ(ierr); 1132938c13dSDahai Guo ierr = MatRegisterDynamic(MATMPIBSTRM, path,"MatCreate_MPIBSTRM", MatCreate_MPIBSTRM);CHKERRQ(ierr); 1142938c13dSDahai Guo ierr = MatRegisterDynamic(MATSEQBSTRM, path,"MatCreate_SeqBSTRM", MatCreate_SeqBSTRM);CHKERRQ(ierr); 1152938c13dSDahai Guo 1162938c13dSDahai Guo ierr = MatRegisterBaseName(MATSBSTRM,MATSEQSBSTRM,MATMPISBSTRM);CHKERRQ(ierr); 1172938c13dSDahai Guo ierr = MatRegisterDynamic(MATMPISBSTRM, path,"MatCreate_MPISBSTRM", MatCreate_MPISBSTRM);CHKERRQ(ierr); 1182938c13dSDahai Guo ierr = MatRegisterDynamic(MATSEQSBSTRM, path,"MatCreate_SeqSBSTRM", MatCreate_SeqSBSTRM);CHKERRQ(ierr); 1192938c13dSDahai Guo 12001bebe75SBarry Smith ierr = MatRegisterBaseName(MATDENSE,MATSEQDENSE,MATMPIDENSE);CHKERRQ(ierr); 121273d9f13SBarry Smith ierr = MatRegisterDynamic(MATMPIDENSE, path,"MatCreate_MPIDense", MatCreate_MPIDense);CHKERRQ(ierr); 122273d9f13SBarry Smith ierr = MatRegisterDynamic(MATSEQDENSE, path,"MatCreate_SeqDense", MatCreate_SeqDense);CHKERRQ(ierr); 12317667f90SBarry Smith 124273d9f13SBarry Smith ierr = MatRegisterDynamic(MATMPIADJ, path,"MatCreate_MPIAdj", MatCreate_MPIAdj);CHKERRQ(ierr); 1252a6744ebSBarry Smith ierr = MatRegisterDynamic(MATSCATTER, path,"MatCreate_Scatter", MatCreate_Scatter);CHKERRQ(ierr); 126421e10b8SBarry Smith ierr = MatRegisterDynamic(MATBLOCKMAT, path,"MatCreate_BlockMat", MatCreate_BlockMat);CHKERRQ(ierr); 127c8883902SJed Brown ierr = MatRegisterDynamic(MATNEST, path,"MatCreate_Nest", MatCreate_Nest);CHKERRQ(ierr); 12868326731SBarry Smith 12901bebe75SBarry Smith 1308154be41SBarry Smith #if defined PETSC_HAVE_CUSP 13101bebe75SBarry Smith ierr = MatRegisterBaseName(MATAIJCUSP,MATSEQAIJCUSP,MATMPIAIJCUSP);CHKERRQ(ierr); 1328154be41SBarry Smith ierr = MatRegisterDynamic(MATSEQAIJCUSP, path,"MatCreate_SeqAIJCUSP", MatCreate_SeqAIJCUSP);CHKERRQ(ierr); 1338154be41SBarry Smith ierr = MatRegisterDynamic(MATMPIAIJCUSP, path,"MatCreate_MPIAIJCUSP", MatCreate_MPIAIJCUSP);CHKERRQ(ierr); 134c6570e9aSVictor Minden #endif 13501bebe75SBarry Smith 1369ae82921SPaul Mullowney #if defined PETSC_HAVE_TXPETSCGPU 1379ae82921SPaul Mullowney ierr = MatRegisterBaseName(MATAIJCUSPARSE,MATSEQAIJCUSPARSE,MATMPIAIJCUSPARSE);CHKERRQ(ierr); 1389ae82921SPaul Mullowney ierr = MatRegisterDynamic(MATSEQAIJCUSPARSE, path,"MatCreate_SeqAIJCUSPARSE", MatCreate_SeqAIJCUSPARSE);CHKERRQ(ierr); 1399ae82921SPaul Mullowney ierr = MatRegisterDynamic(MATMPIAIJCUSPARSE, path,"MatCreate_MPIAIJCUSPARSE", MatCreate_MPIAIJCUSPARSE);CHKERRQ(ierr); 1409ae82921SPaul Mullowney #endif 1419ae82921SPaul Mullowney 142dedccee8SHong Zhang #if defined PETSC_HAVE_FFTW 143dedccee8SHong Zhang ierr = MatRegisterDynamic(MATFFTW, path,"MatCreate_FFTW", MatCreate_FFTW);CHKERRQ(ierr); 144dedccee8SHong Zhang #endif 145db31f6deSJed Brown #if defined PETSC_HAVE_ELEMENTAL 146db31f6deSJed Brown ierr = MatRegisterDynamic(MATELEMENTAL, path,"MatCreate_Elemental", MatCreate_Elemental);CHKERRQ(ierr); 147db31f6deSJed Brown #endif 1488a95e4e9SBarry Smith PetscFunctionReturn(0); 1498a95e4e9SBarry Smith } 150f7cf7585SBarry Smith 1513a7fca6bSBarry Smith 152