18a95e4e9SBarry Smith 2af0996ceSBarry Smith #include <petsc/private/matimpl.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_SeqDense(Mat); 188cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIDense(Mat); 1917667f90SBarry Smith 208cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAdj(Mat); 218cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Shell(Mat); 228cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Composite(Mat); 2317667f90SBarry Smith 248cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJPERM(Mat); 258cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJPERM(Mat); 2617667f90SBarry Smith 278cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJCRL(Mat); 288cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJCRL(Mat); 2917667f90SBarry Smith 308cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Scatter(Mat); 318cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_BlockMat(Mat); 328cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Nest(Mat); 33c6570e9aSVictor Minden 348154be41SBarry Smith #if defined PETSC_HAVE_CUSP 358cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJCUSP(Mat); 368cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJCUSP(Mat); 37c6570e9aSVictor Minden #endif 38c6570e9aSVictor Minden 39c41cb2e2SAlejandro Lamas Daviña #if defined PETSC_HAVE_VECCUDA 408cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJCUSPARSE(Mat); 418cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJCUSPARSE(Mat); 429ae82921SPaul Mullowney #endif 439ae82921SPaul Mullowney 44d67ff14aSKarl Rupp #if defined PETSC_HAVE_VIENNACL 45d67ff14aSKarl Rupp PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJViennaCL(Mat); 468f86e40fSKarl Rupp PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJViennaCL(Mat); 47d67ff14aSKarl Rupp #endif 48d67ff14aSKarl Rupp 49dedccee8SHong Zhang #if defined PETSC_HAVE_FFTW 508cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_FFTW(Mat); 51dedccee8SHong Zhang #endif 528cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Elemental(Mat); 538a95e4e9SBarry Smith 54c094ef40SMatthew G. Knepley PETSC_EXTERN PetscErrorCode MatCreate_Preallocator(Mat); 55*a3b2e22bSHong Zhang PETSC_EXTERN PetscErrorCode MatCreate_Dummy(Mat); 56c094ef40SMatthew G. Knepley 5763c07aadSStefano Zampini #if defined PETSC_HAVE_HYPRE 5863c07aadSStefano Zampini PETSC_EXTERN PetscErrorCode MatCreate_HYPRE(Mat); 5963c07aadSStefano Zampini #endif 6063c07aadSStefano Zampini 618a95e4e9SBarry Smith /* 62f7cf7585SBarry Smith This is used by MatSetType() to make sure that at least one 63f7cf7585SBarry Smith MatRegisterAll() is called. In general, if there is more than one 64f7cf7585SBarry Smith DLL, then MatRegisterAll() may be called several times. 658a95e4e9SBarry Smith */ 6609573ac7SBarry Smith extern PetscBool MatRegisterAllCalled; 678a95e4e9SBarry Smith 688a95e4e9SBarry Smith /*@C 69f7cf7585SBarry Smith MatRegisterAll - Registers all of the matrix types in PETSc 708a95e4e9SBarry Smith 718a95e4e9SBarry Smith Not Collective 728a95e4e9SBarry Smith 738a95e4e9SBarry Smith Level: advanced 748a95e4e9SBarry Smith 758a95e4e9SBarry Smith .keywords: KSP, register, all 768a95e4e9SBarry Smith 77d7ee760dSBarry Smith .seealso: MatRegister() 788a95e4e9SBarry Smith @*/ 79607a6623SBarry Smith PetscErrorCode MatRegisterAll(void) 808a95e4e9SBarry Smith { 81dfbe8321SBarry Smith PetscErrorCode ierr; 828a95e4e9SBarry Smith 838a95e4e9SBarry Smith PetscFunctionBegin; 840f51fdf8SToby Isaac if (MatRegisterAllCalled) PetscFunctionReturn(0); 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 11701bebe75SBarry Smith ierr = MatRegisterBaseName(MATDENSE,MATSEQDENSE,MATMPIDENSE);CHKERRQ(ierr); 118bdf89e91SBarry Smith ierr = MatRegister(MATMPIDENSE, MatCreate_MPIDense);CHKERRQ(ierr); 119bdf89e91SBarry Smith ierr = MatRegister(MATSEQDENSE, MatCreate_SeqDense);CHKERRQ(ierr); 12017667f90SBarry Smith 121bdf89e91SBarry Smith ierr = MatRegister(MATMPIADJ, MatCreate_MPIAdj);CHKERRQ(ierr); 122bdf89e91SBarry Smith ierr = MatRegister(MATSCATTER, MatCreate_Scatter);CHKERRQ(ierr); 123bdf89e91SBarry Smith ierr = MatRegister(MATBLOCKMAT, MatCreate_BlockMat);CHKERRQ(ierr); 124bdf89e91SBarry Smith ierr = MatRegister(MATNEST, MatCreate_Nest);CHKERRQ(ierr); 12568326731SBarry Smith 1268154be41SBarry Smith #if defined PETSC_HAVE_CUSP 12701bebe75SBarry Smith ierr = MatRegisterBaseName(MATAIJCUSP,MATSEQAIJCUSP,MATMPIAIJCUSP);CHKERRQ(ierr); 128bdf89e91SBarry Smith ierr = MatRegister(MATSEQAIJCUSP, MatCreate_SeqAIJCUSP);CHKERRQ(ierr); 129bdf89e91SBarry Smith ierr = MatRegister(MATMPIAIJCUSP, MatCreate_MPIAIJCUSP);CHKERRQ(ierr); 130c6570e9aSVictor Minden #endif 13101bebe75SBarry Smith 132c41cb2e2SAlejandro Lamas Daviña #if defined PETSC_HAVE_VECCUDA 1339ae82921SPaul Mullowney ierr = MatRegisterBaseName(MATAIJCUSPARSE,MATSEQAIJCUSPARSE,MATMPIAIJCUSPARSE);CHKERRQ(ierr); 134bdf89e91SBarry Smith ierr = MatRegister(MATSEQAIJCUSPARSE, MatCreate_SeqAIJCUSPARSE);CHKERRQ(ierr); 135bdf89e91SBarry Smith ierr = MatRegister(MATMPIAIJCUSPARSE, MatCreate_MPIAIJCUSPARSE);CHKERRQ(ierr); 1369ae82921SPaul Mullowney #endif 1379ae82921SPaul Mullowney 1388f86e40fSKarl Rupp #if defined PETSC_HAVE_VIENNACL 1398f86e40fSKarl Rupp ierr = MatRegisterBaseName(MATAIJVIENNACL,MATSEQAIJVIENNACL,MATMPIAIJVIENNACL);CHKERRQ(ierr); 140ab6435e1SKarl Rupp ierr = MatRegister(MATSEQAIJVIENNACL, MatCreate_SeqAIJViennaCL);CHKERRQ(ierr); 141ab6435e1SKarl Rupp ierr = MatRegister(MATMPIAIJVIENNACL, MatCreate_MPIAIJViennaCL);CHKERRQ(ierr); 1428f86e40fSKarl Rupp #endif 1438f86e40fSKarl Rupp 144dedccee8SHong Zhang #if defined PETSC_HAVE_FFTW 145bdf89e91SBarry Smith ierr = MatRegister(MATFFTW, MatCreate_FFTW);CHKERRQ(ierr); 146dedccee8SHong Zhang #endif 147db31f6deSJed Brown #if defined PETSC_HAVE_ELEMENTAL 148bdf89e91SBarry Smith ierr = MatRegister(MATELEMENTAL, MatCreate_Elemental);CHKERRQ(ierr); 149db31f6deSJed Brown #endif 150c094ef40SMatthew G. Knepley 151c094ef40SMatthew G. Knepley ierr = MatRegister(MATPREALLOCATOR, MatCreate_Preallocator);CHKERRQ(ierr); 152*a3b2e22bSHong Zhang ierr = MatRegister(MATDUMMY, MatCreate_Dummy);CHKERRQ(ierr); 15363c07aadSStefano Zampini 15463c07aadSStefano Zampini #if defined PETSC_HAVE_HYPRE 15563c07aadSStefano Zampini ierr = MatRegister(MATHYPRE, MatCreate_HYPRE);CHKERRQ(ierr); 15663c07aadSStefano Zampini #endif 1578a95e4e9SBarry Smith PetscFunctionReturn(0); 1588a95e4e9SBarry Smith } 159f7cf7585SBarry Smith 1603a7fca6bSBarry Smith 161