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); 18*bfc799aaSStefano Zampini #if defined(PETSC_HAVE_CUDA) 19*bfc799aaSStefano Zampini PETSC_EXTERN PetscErrorCode MatCreate_SeqDenseCUDA(Mat); 20*bfc799aaSStefano Zampini #endif 218cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIDense(Mat); 2217667f90SBarry Smith 238cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAdj(Mat); 248cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Shell(Mat); 258cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Composite(Mat); 2617667f90SBarry Smith 278cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJPERM(Mat); 288cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJPERM(Mat); 2917667f90SBarry Smith 304dfdc2d9SRichard Tran Mills PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJSELL(Mat); 314dfdc2d9SRichard Tran Mills PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJSELL(Mat); 324dfdc2d9SRichard Tran Mills 33*bfc799aaSStefano Zampini #if defined(PETSC_HAVE_MKL_SPARSE) 344a2a386eSRichard Tran Mills PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJMKL(Mat); 35a84739b8SRichard Tran Mills PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJMKL(Mat); 36b9e7e5c1SBarry Smith #endif 37b5b72c8aSIrina Sokolova 38*bfc799aaSStefano Zampini #if defined(PETSC_HAVE_MKL_SPARSE_OPTIMIZE) 39b5b72c8aSIrina Sokolova PETSC_EXTERN PetscErrorCode MatCreate_SeqBAIJMKL(Mat); 40b5b72c8aSIrina Sokolova PETSC_EXTERN PetscErrorCode MatCreate_MPIBAIJMKL(Mat); 41191b95cbSRichard Tran Mills #endif 424a2a386eSRichard Tran Mills 438cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJCRL(Mat); 448cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJCRL(Mat); 4517667f90SBarry Smith 468cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Scatter(Mat); 478cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_BlockMat(Mat); 488cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Nest(Mat); 49c6570e9aSVictor Minden 50d4002b98SHong Zhang PETSC_EXTERN PetscErrorCode MatCreate_SeqSELL(Mat); 51d4002b98SHong Zhang PETSC_EXTERN PetscErrorCode MatCreate_MPISELL(Mat); 525e26d47bSHong Zhang 53*bfc799aaSStefano Zampini #if defined(PETSC_HAVE_CUDA) 548cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJCUSPARSE(Mat); 558cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJCUSPARSE(Mat); 569ae82921SPaul Mullowney #endif 579ae82921SPaul Mullowney 58*bfc799aaSStefano Zampini #if defined(PETSC_HAVE_VIENNACL) 59d67ff14aSKarl Rupp PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJViennaCL(Mat); 608f86e40fSKarl Rupp PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJViennaCL(Mat); 61d67ff14aSKarl Rupp #endif 62d67ff14aSKarl Rupp 63*bfc799aaSStefano Zampini #if defined(PETSC_HAVE_FFTW) 648cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_FFTW(Mat); 65dedccee8SHong Zhang #endif 668cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Elemental(Mat); 678a95e4e9SBarry Smith 68c094ef40SMatthew G. Knepley PETSC_EXTERN PetscErrorCode MatCreate_Preallocator(Mat); 69a3b2e22bSHong Zhang PETSC_EXTERN PetscErrorCode MatCreate_Dummy(Mat); 70c094ef40SMatthew G. Knepley 71*bfc799aaSStefano Zampini #if defined(PETSC_HAVE_HYPRE) 7263c07aadSStefano Zampini PETSC_EXTERN PetscErrorCode MatCreate_HYPRE(Mat); 7363c07aadSStefano Zampini #endif 7463c07aadSStefano Zampini 753423f386SBarry Smith PETSC_EXTERN PetscErrorCode MatCreate_ConstantDiagonal(Mat); 768a95e4e9SBarry Smith /*@C 77f7cf7585SBarry Smith MatRegisterAll - Registers all of the matrix types in PETSc 788a95e4e9SBarry Smith 798a95e4e9SBarry Smith Not Collective 808a95e4e9SBarry Smith 818a95e4e9SBarry Smith Level: advanced 828a95e4e9SBarry Smith 83d7ee760dSBarry Smith .seealso: MatRegister() 848a95e4e9SBarry Smith @*/ 85607a6623SBarry Smith PetscErrorCode MatRegisterAll(void) 868a95e4e9SBarry Smith { 87dfbe8321SBarry Smith PetscErrorCode ierr; 888a95e4e9SBarry Smith 898a95e4e9SBarry Smith PetscFunctionBegin; 900f51fdf8SToby Isaac if (MatRegisterAllCalled) PetscFunctionReturn(0); 91f7cf7585SBarry Smith MatRegisterAllCalled = PETSC_TRUE; 928a95e4e9SBarry Smith 93bdf89e91SBarry Smith ierr = MatRegister(MATMFFD, MatCreate_MFFD);CHKERRQ(ierr); 94e884886fSBarry Smith 95bdf89e91SBarry Smith ierr = MatRegister(MATMPIMAIJ, MatCreate_MAIJ);CHKERRQ(ierr); 96bdf89e91SBarry Smith ierr = MatRegister(MATSEQMAIJ, MatCreate_MAIJ);CHKERRQ(ierr); 97bdf89e91SBarry Smith ierr = MatRegister(MATMAIJ, MatCreate_MAIJ);CHKERRQ(ierr); 98273d9f13SBarry Smith 99bdf89e91SBarry Smith ierr = MatRegister(MATIS, MatCreate_IS);CHKERRQ(ierr); 100bdf89e91SBarry Smith ierr = MatRegister(MATSHELL, MatCreate_Shell);CHKERRQ(ierr); 101bdf89e91SBarry Smith ierr = MatRegister(MATCOMPOSITE, MatCreate_Composite);CHKERRQ(ierr); 10201bebe75SBarry Smith 10323bebc0bSBarry Smith ierr = MatRegisterRootName(MATAIJ,MATSEQAIJ,MATMPIAIJ);CHKERRQ(ierr); 104bdf89e91SBarry Smith ierr = MatRegister(MATMPIAIJ, MatCreate_MPIAIJ);CHKERRQ(ierr); 105bdf89e91SBarry Smith ierr = MatRegister(MATSEQAIJ, MatCreate_SeqAIJ);CHKERRQ(ierr); 10617667f90SBarry Smith 10723bebc0bSBarry Smith ierr = MatRegisterRootName(MATAIJPERM,MATSEQAIJPERM,MATMPIAIJPERM);CHKERRQ(ierr); 108bdf89e91SBarry Smith ierr = MatRegister(MATMPIAIJPERM, MatCreate_MPIAIJPERM);CHKERRQ(ierr); 109bdf89e91SBarry Smith ierr = MatRegister(MATSEQAIJPERM, MatCreate_SeqAIJPERM);CHKERRQ(ierr); 11017667f90SBarry Smith 11123bebc0bSBarry Smith ierr = MatRegisterRootName(MATAIJSELL,MATSEQAIJSELL,MATMPIAIJSELL);CHKERRQ(ierr); 1124dfdc2d9SRichard Tran Mills ierr = MatRegister(MATMPIAIJSELL, MatCreate_MPIAIJSELL);CHKERRQ(ierr); 1134dfdc2d9SRichard Tran Mills ierr = MatRegister(MATSEQAIJSELL, MatCreate_SeqAIJSELL);CHKERRQ(ierr); 1144dfdc2d9SRichard Tran Mills 115*bfc799aaSStefano Zampini #if defined(PETSC_HAVE_MKL_SPARSE) 11623bebc0bSBarry Smith ierr = MatRegisterRootName(MATAIJMKL, MATSEQAIJMKL,MATMPIAIJMKL);CHKERRQ(ierr); 117a84739b8SRichard Tran Mills ierr = MatRegister(MATMPIAIJMKL, MatCreate_MPIAIJMKL);CHKERRQ(ierr); 1184a2a386eSRichard Tran Mills ierr = MatRegister(MATSEQAIJMKL, MatCreate_SeqAIJMKL);CHKERRQ(ierr); 119b9e7e5c1SBarry Smith #endif 120b5b72c8aSIrina Sokolova 121*bfc799aaSStefano Zampini #if defined(PETSC_HAVE_MKL_SPARSE_OPTIMIZE) 12223bebc0bSBarry Smith ierr = MatRegisterRootName(MATBAIJMKL,MATSEQBAIJMKL,MATMPIBAIJMKL);CHKERRQ(ierr); 123b5b72c8aSIrina Sokolova ierr = MatRegister(MATMPIBAIJMKL, MatCreate_MPIBAIJMKL);CHKERRQ(ierr); 124b5b72c8aSIrina Sokolova ierr = MatRegister(MATSEQBAIJMKL, MatCreate_SeqBAIJMKL);CHKERRQ(ierr); 125191b95cbSRichard Tran Mills #endif 1264a2a386eSRichard Tran Mills 12723bebc0bSBarry Smith ierr = MatRegisterRootName(MATAIJCRL,MATSEQAIJCRL,MATMPIAIJCRL);CHKERRQ(ierr); 128bdf89e91SBarry Smith ierr = MatRegister(MATSEQAIJCRL, MatCreate_SeqAIJCRL);CHKERRQ(ierr); 129bdf89e91SBarry Smith ierr = MatRegister(MATMPIAIJCRL, MatCreate_MPIAIJCRL);CHKERRQ(ierr); 130273d9f13SBarry Smith 13123bebc0bSBarry Smith ierr = MatRegisterRootName(MATBAIJ,MATSEQBAIJ,MATMPIBAIJ);CHKERRQ(ierr); 132bdf89e91SBarry Smith ierr = MatRegister(MATMPIBAIJ, MatCreate_MPIBAIJ);CHKERRQ(ierr); 133bdf89e91SBarry Smith ierr = MatRegister(MATSEQBAIJ, MatCreate_SeqBAIJ);CHKERRQ(ierr); 134273d9f13SBarry Smith 13523bebc0bSBarry Smith ierr = MatRegisterRootName(MATSBAIJ,MATSEQSBAIJ,MATMPISBAIJ);CHKERRQ(ierr); 136bdf89e91SBarry Smith ierr = MatRegister(MATMPISBAIJ, MatCreate_MPISBAIJ);CHKERRQ(ierr); 137bdf89e91SBarry Smith ierr = MatRegister(MATSEQSBAIJ, MatCreate_SeqSBAIJ);CHKERRQ(ierr); 13817667f90SBarry Smith 13923bebc0bSBarry Smith ierr = MatRegisterRootName(MATDENSE,MATSEQDENSE,MATMPIDENSE);CHKERRQ(ierr); 140bdf89e91SBarry Smith ierr = MatRegister(MATMPIDENSE, MatCreate_MPIDense);CHKERRQ(ierr); 141bdf89e91SBarry Smith ierr = MatRegister(MATSEQDENSE, MatCreate_SeqDense);CHKERRQ(ierr); 142*bfc799aaSStefano Zampini #if defined(PETSC_HAVE_CUDA) 143*bfc799aaSStefano Zampini ierr = MatRegister(MATSEQDENSECUDA, MatCreate_SeqDenseCUDA);CHKERRQ(ierr); 144*bfc799aaSStefano Zampini #endif 14517667f90SBarry Smith 146bdf89e91SBarry Smith ierr = MatRegister(MATMPIADJ, MatCreate_MPIAdj);CHKERRQ(ierr); 147bdf89e91SBarry Smith ierr = MatRegister(MATSCATTER, MatCreate_Scatter);CHKERRQ(ierr); 148bdf89e91SBarry Smith ierr = MatRegister(MATBLOCKMAT, MatCreate_BlockMat);CHKERRQ(ierr); 149bdf89e91SBarry Smith ierr = MatRegister(MATNEST, MatCreate_Nest);CHKERRQ(ierr); 15068326731SBarry Smith 15123bebc0bSBarry Smith ierr = MatRegisterRootName(MATSELL,MATSEQSELL,MATMPISELL);CHKERRQ(ierr); 152d4002b98SHong Zhang ierr = MatRegister(MATMPISELL, MatCreate_MPISELL);CHKERRQ(ierr); 153d4002b98SHong Zhang ierr = MatRegister(MATSEQSELL, MatCreate_SeqSELL);CHKERRQ(ierr); 1545e26d47bSHong Zhang 155*bfc799aaSStefano Zampini #if defined(PETSC_HAVE_CUDA) 15623bebc0bSBarry Smith ierr = MatRegisterRootName(MATAIJCUSPARSE,MATSEQAIJCUSPARSE,MATMPIAIJCUSPARSE);CHKERRQ(ierr); 157bdf89e91SBarry Smith ierr = MatRegister(MATSEQAIJCUSPARSE, MatCreate_SeqAIJCUSPARSE);CHKERRQ(ierr); 158bdf89e91SBarry Smith ierr = MatRegister(MATMPIAIJCUSPARSE, MatCreate_MPIAIJCUSPARSE);CHKERRQ(ierr); 1599ae82921SPaul Mullowney #endif 1609ae82921SPaul Mullowney 161*bfc799aaSStefano Zampini #if defined(PETSC_HAVE_VIENNACL) 16223bebc0bSBarry Smith ierr = MatRegisterRootName(MATAIJVIENNACL,MATSEQAIJVIENNACL,MATMPIAIJVIENNACL);CHKERRQ(ierr); 163ab6435e1SKarl Rupp ierr = MatRegister(MATSEQAIJVIENNACL, MatCreate_SeqAIJViennaCL);CHKERRQ(ierr); 164ab6435e1SKarl Rupp ierr = MatRegister(MATMPIAIJVIENNACL, MatCreate_MPIAIJViennaCL);CHKERRQ(ierr); 1658f86e40fSKarl Rupp #endif 1668f86e40fSKarl Rupp 167*bfc799aaSStefano Zampini #if defined(PETSC_HAVE_FFTW) 168bdf89e91SBarry Smith ierr = MatRegister(MATFFTW, MatCreate_FFTW);CHKERRQ(ierr); 169dedccee8SHong Zhang #endif 170*bfc799aaSStefano Zampini #if defined(PETSC_HAVE_ELEMENTAL) 171bdf89e91SBarry Smith ierr = MatRegister(MATELEMENTAL, MatCreate_Elemental);CHKERRQ(ierr); 172db31f6deSJed Brown #endif 173c094ef40SMatthew G. Knepley 174c094ef40SMatthew G. Knepley ierr = MatRegister(MATPREALLOCATOR, MatCreate_Preallocator);CHKERRQ(ierr); 175a3b2e22bSHong Zhang ierr = MatRegister(MATDUMMY, MatCreate_Dummy);CHKERRQ(ierr); 17663c07aadSStefano Zampini 1773423f386SBarry Smith ierr = MatRegister(MATCONSTANTDIAGONAL,MatCreate_ConstantDiagonal);CHKERRQ(ierr); 1783423f386SBarry Smith 179*bfc799aaSStefano Zampini #if defined(PETSC_HAVE_HYPRE) 18063c07aadSStefano Zampini ierr = MatRegister(MATHYPRE, MatCreate_HYPRE);CHKERRQ(ierr); 18163c07aadSStefano Zampini #endif 1828a95e4e9SBarry Smith PetscFunctionReturn(0); 1838a95e4e9SBarry Smith } 184