18a95e4e9SBarry Smith 2c6db04a5SJed Brown #include <petscmat.h> /*I "petscmat.h" I*/ 38a95e4e9SBarry Smith 48cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MFFD(Mat); 58cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MAIJ(Mat); 68cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_IS(Mat); 717667f90SBarry Smith 88cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJ(Mat); 98cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJ(Mat); 1017667f90SBarry Smith 118cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqBAIJ(Mat); 128cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIBAIJ(Mat); 1317667f90SBarry Smith 148cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqSBAIJ(Mat); 158cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPISBAIJ(Mat); 1617667f90SBarry Smith 178cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqBSTRM(Mat); 188cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIBSTRM(Mat); 192938c13dSDahai Guo 208cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqSBSTRM(Mat); 218cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPISBSTRM(Mat); 222938c13dSDahai Guo 238cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqDense(Mat); 248cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIDense(Mat); 2517667f90SBarry Smith 268cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAdj(Mat); 278cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Shell(Mat); 288cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Composite(Mat); 2917667f90SBarry Smith 308cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJPERM(Mat); 318cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJPERM(Mat); 3217667f90SBarry Smith 338cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJCRL(Mat); 348cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJCRL(Mat); 3517667f90SBarry Smith 368cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Scatter(Mat); 378cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_BlockMat(Mat); 388cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Nest(Mat); 39c6570e9aSVictor Minden 408154be41SBarry Smith #if defined PETSC_HAVE_CUSP 418cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJCUSP(Mat); 428cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJCUSP(Mat); 43c6570e9aSVictor Minden #endif 44c6570e9aSVictor Minden 459ae82921SPaul Mullowney #if defined PETSC_HAVE_TXPETSCGPU 468cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJCUSPARSE(Mat); 478cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJCUSPARSE(Mat); 489ae82921SPaul Mullowney #endif 499ae82921SPaul Mullowney 50d67ff14aSKarl Rupp #if defined PETSC_HAVE_VIENNACL 51d67ff14aSKarl Rupp PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJViennaCL(Mat); 52*8f86e40fSKarl Rupp PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJViennaCL(Mat); 53d67ff14aSKarl Rupp #endif 54d67ff14aSKarl Rupp 55dedccee8SHong Zhang #if defined PETSC_HAVE_FFTW 568cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_FFTW(Mat); 57dedccee8SHong Zhang #endif 588cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Elemental(Mat); 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 @*/ 80607a6623SBarry Smith PetscErrorCode MatRegisterAll(void) 818a95e4e9SBarry Smith { 82dfbe8321SBarry Smith PetscErrorCode ierr; 838a95e4e9SBarry Smith 848a95e4e9SBarry Smith PetscFunctionBegin; 85f7cf7585SBarry Smith MatRegisterAllCalled = PETSC_TRUE; 868a95e4e9SBarry Smith 87bdf89e91SBarry Smith ierr = MatRegister(MATMFFD, MatCreate_MFFD);CHKERRQ(ierr); 88e884886fSBarry Smith 89bdf89e91SBarry Smith ierr = MatRegister(MATMPIMAIJ, MatCreate_MAIJ);CHKERRQ(ierr); 90bdf89e91SBarry Smith ierr = MatRegister(MATSEQMAIJ, MatCreate_MAIJ);CHKERRQ(ierr); 91bdf89e91SBarry Smith ierr = MatRegister(MATMAIJ, MatCreate_MAIJ);CHKERRQ(ierr); 92273d9f13SBarry Smith 93bdf89e91SBarry Smith ierr = MatRegister(MATIS, MatCreate_IS);CHKERRQ(ierr); 94bdf89e91SBarry Smith ierr = MatRegister(MATSHELL, MatCreate_Shell);CHKERRQ(ierr); 95bdf89e91SBarry Smith ierr = MatRegister(MATCOMPOSITE, MatCreate_Composite);CHKERRQ(ierr); 9601bebe75SBarry Smith 9701bebe75SBarry Smith ierr = MatRegisterBaseName(MATAIJ,MATSEQAIJ,MATMPIAIJ);CHKERRQ(ierr); 98bdf89e91SBarry Smith ierr = MatRegister(MATMPIAIJ, MatCreate_MPIAIJ);CHKERRQ(ierr); 99bdf89e91SBarry Smith ierr = MatRegister(MATSEQAIJ, MatCreate_SeqAIJ);CHKERRQ(ierr); 10017667f90SBarry Smith 10101bebe75SBarry Smith ierr = MatRegisterBaseName(MATAIJPERM,MATSEQAIJPERM,MATMPIAIJPERM);CHKERRQ(ierr); 102bdf89e91SBarry Smith ierr = MatRegister(MATMPIAIJPERM, MatCreate_MPIAIJPERM);CHKERRQ(ierr); 103bdf89e91SBarry Smith ierr = MatRegister(MATSEQAIJPERM, MatCreate_SeqAIJPERM);CHKERRQ(ierr); 10417667f90SBarry Smith 10501bebe75SBarry Smith ierr = MatRegisterBaseName(MATAIJCRL,MATSEQAIJCRL,MATMPIAIJCRL);CHKERRQ(ierr); 106bdf89e91SBarry Smith ierr = MatRegister(MATSEQAIJCRL, MatCreate_SeqAIJCRL);CHKERRQ(ierr); 107bdf89e91SBarry Smith ierr = MatRegister(MATMPIAIJCRL, MatCreate_MPIAIJCRL);CHKERRQ(ierr); 108273d9f13SBarry Smith 10901bebe75SBarry Smith ierr = MatRegisterBaseName(MATBAIJ,MATSEQBAIJ,MATMPIBAIJ);CHKERRQ(ierr); 110bdf89e91SBarry Smith ierr = MatRegister(MATMPIBAIJ, MatCreate_MPIBAIJ);CHKERRQ(ierr); 111bdf89e91SBarry Smith ierr = MatRegister(MATSEQBAIJ, MatCreate_SeqBAIJ);CHKERRQ(ierr); 112273d9f13SBarry Smith 11301bebe75SBarry Smith ierr = MatRegisterBaseName(MATSBAIJ,MATSEQSBAIJ,MATMPISBAIJ);CHKERRQ(ierr); 114bdf89e91SBarry Smith ierr = MatRegister(MATMPISBAIJ, MatCreate_MPISBAIJ);CHKERRQ(ierr); 115bdf89e91SBarry Smith ierr = MatRegister(MATSEQSBAIJ, MatCreate_SeqSBAIJ);CHKERRQ(ierr); 11617667f90SBarry Smith 1172938c13dSDahai Guo ierr = MatRegisterBaseName(MATBSTRM,MATSEQBSTRM,MATMPIBSTRM);CHKERRQ(ierr); 118bdf89e91SBarry Smith ierr = MatRegister(MATMPIBSTRM, MatCreate_MPIBSTRM);CHKERRQ(ierr); 119bdf89e91SBarry Smith ierr = MatRegister(MATSEQBSTRM, MatCreate_SeqBSTRM);CHKERRQ(ierr); 1202938c13dSDahai Guo 1212938c13dSDahai Guo ierr = MatRegisterBaseName(MATSBSTRM,MATSEQSBSTRM,MATMPISBSTRM);CHKERRQ(ierr); 122bdf89e91SBarry Smith ierr = MatRegister(MATMPISBSTRM, MatCreate_MPISBSTRM);CHKERRQ(ierr); 123bdf89e91SBarry Smith ierr = MatRegister(MATSEQSBSTRM, MatCreate_SeqSBSTRM);CHKERRQ(ierr); 1242938c13dSDahai Guo 12501bebe75SBarry Smith ierr = MatRegisterBaseName(MATDENSE,MATSEQDENSE,MATMPIDENSE);CHKERRQ(ierr); 126bdf89e91SBarry Smith ierr = MatRegister(MATMPIDENSE, MatCreate_MPIDense);CHKERRQ(ierr); 127bdf89e91SBarry Smith ierr = MatRegister(MATSEQDENSE, MatCreate_SeqDense);CHKERRQ(ierr); 12817667f90SBarry Smith 129bdf89e91SBarry Smith ierr = MatRegister(MATMPIADJ, MatCreate_MPIAdj);CHKERRQ(ierr); 130bdf89e91SBarry Smith ierr = MatRegister(MATSCATTER, MatCreate_Scatter);CHKERRQ(ierr); 131bdf89e91SBarry Smith ierr = MatRegister(MATBLOCKMAT, MatCreate_BlockMat);CHKERRQ(ierr); 132bdf89e91SBarry Smith ierr = MatRegister(MATNEST, MatCreate_Nest);CHKERRQ(ierr); 13368326731SBarry Smith 13401bebe75SBarry Smith 1358154be41SBarry Smith #if defined PETSC_HAVE_CUSP 13601bebe75SBarry Smith ierr = MatRegisterBaseName(MATAIJCUSP,MATSEQAIJCUSP,MATMPIAIJCUSP);CHKERRQ(ierr); 137bdf89e91SBarry Smith ierr = MatRegister(MATSEQAIJCUSP, MatCreate_SeqAIJCUSP);CHKERRQ(ierr); 138bdf89e91SBarry Smith ierr = MatRegister(MATMPIAIJCUSP, MatCreate_MPIAIJCUSP);CHKERRQ(ierr); 139c6570e9aSVictor Minden #endif 14001bebe75SBarry Smith 1419ae82921SPaul Mullowney #if defined PETSC_HAVE_TXPETSCGPU 1429ae82921SPaul Mullowney ierr = MatRegisterBaseName(MATAIJCUSPARSE,MATSEQAIJCUSPARSE,MATMPIAIJCUSPARSE);CHKERRQ(ierr); 143bdf89e91SBarry Smith ierr = MatRegister(MATSEQAIJCUSPARSE, MatCreate_SeqAIJCUSPARSE);CHKERRQ(ierr); 144bdf89e91SBarry Smith ierr = MatRegister(MATMPIAIJCUSPARSE, MatCreate_MPIAIJCUSPARSE);CHKERRQ(ierr); 1459ae82921SPaul Mullowney #endif 1469ae82921SPaul Mullowney 147*8f86e40fSKarl Rupp #if defined PETSC_HAVE_VIENNACL 148*8f86e40fSKarl Rupp ierr = MatRegisterBaseName(MATAIJVIENNACL,MATSEQAIJVIENNACL,MATMPIAIJVIENNACL);CHKERRQ(ierr); 149*8f86e40fSKarl Rupp ierr = MatRegisterDynamic(MATSEQAIJVIENNACL, path,"MatCreate_SeqAIJViennaCL", MatCreate_SeqAIJViennaCL);CHKERRQ(ierr); 150*8f86e40fSKarl Rupp ierr = MatRegisterDynamic(MATMPIAIJVIENNACL, path,"MatCreate_MPIAIJViennaCL", MatCreate_MPIAIJViennaCL);CHKERRQ(ierr); 151*8f86e40fSKarl Rupp #endif 152*8f86e40fSKarl Rupp 153*8f86e40fSKarl Rupp 154dedccee8SHong Zhang #if defined PETSC_HAVE_FFTW 155bdf89e91SBarry Smith ierr = MatRegister(MATFFTW, MatCreate_FFTW);CHKERRQ(ierr); 156dedccee8SHong Zhang #endif 157db31f6deSJed Brown #if defined PETSC_HAVE_ELEMENTAL 158bdf89e91SBarry Smith ierr = MatRegister(MATELEMENTAL, MatCreate_Elemental);CHKERRQ(ierr); 159db31f6deSJed Brown #endif 1608a95e4e9SBarry Smith PetscFunctionReturn(0); 1618a95e4e9SBarry Smith } 162f7cf7585SBarry Smith 1633a7fca6bSBarry Smith 164