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); 649bd79ccSDebojyoti Ghosh PETSC_EXTERN PetscErrorCode MatCreate_KAIJ(Mat); 78cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_IS(Mat); 817667f90SBarry Smith 98cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJ(Mat); 108cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJ(Mat); 1117667f90SBarry Smith 128cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqBAIJ(Mat); 138cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIBAIJ(Mat); 1417667f90SBarry Smith 158cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqSBAIJ(Mat); 168cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPISBAIJ(Mat); 1717667f90SBarry Smith 188cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqDense(Mat); 19637a0070SStefano Zampini PETSC_EXTERN PetscErrorCode MatCreate_MPIDense(Mat); 20bfc799aaSStefano Zampini #if defined(PETSC_HAVE_CUDA) 21bfc799aaSStefano Zampini PETSC_EXTERN PetscErrorCode MatCreate_SeqDenseCUDA(Mat); 22637a0070SStefano Zampini PETSC_EXTERN PetscErrorCode MatCreate_MPIDenseCUDA(Mat); 23bfc799aaSStefano Zampini #endif 2417667f90SBarry Smith 258cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAdj(Mat); 268cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Shell(Mat); 278cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Composite(Mat); 2817667f90SBarry Smith 298cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJPERM(Mat); 308cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJPERM(Mat); 3117667f90SBarry Smith 324dfdc2d9SRichard Tran Mills PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJSELL(Mat); 334dfdc2d9SRichard Tran Mills PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJSELL(Mat); 344dfdc2d9SRichard Tran Mills 35bfc799aaSStefano Zampini #if defined(PETSC_HAVE_MKL_SPARSE) 364a2a386eSRichard Tran Mills PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJMKL(Mat); 37a84739b8SRichard Tran Mills PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJMKL(Mat); 38b9e7e5c1SBarry Smith #endif 39b5b72c8aSIrina Sokolova 40bfc799aaSStefano Zampini #if defined(PETSC_HAVE_MKL_SPARSE_OPTIMIZE) 41b5b72c8aSIrina Sokolova PETSC_EXTERN PetscErrorCode MatCreate_SeqBAIJMKL(Mat); 42b5b72c8aSIrina Sokolova PETSC_EXTERN PetscErrorCode MatCreate_MPIBAIJMKL(Mat); 43191b95cbSRichard Tran Mills #endif 444a2a386eSRichard Tran Mills 458cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJCRL(Mat); 468cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJCRL(Mat); 4717667f90SBarry Smith 488cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Scatter(Mat); 498cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_BlockMat(Mat); 508cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Nest(Mat); 51c6570e9aSVictor Minden 52d4002b98SHong Zhang PETSC_EXTERN PetscErrorCode MatCreate_SeqSELL(Mat); 53d4002b98SHong Zhang PETSC_EXTERN PetscErrorCode MatCreate_MPISELL(Mat); 545e26d47bSHong Zhang 55bfc799aaSStefano Zampini #if defined(PETSC_HAVE_CUDA) 568cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJCUSPARSE(Mat); 578cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJCUSPARSE(Mat); 589ae82921SPaul Mullowney #endif 599ae82921SPaul Mullowney 60bfc799aaSStefano Zampini #if defined(PETSC_HAVE_VIENNACL) 61d67ff14aSKarl Rupp PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJViennaCL(Mat); 628f86e40fSKarl Rupp PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJViennaCL(Mat); 63d67ff14aSKarl Rupp #endif 64d67ff14aSKarl Rupp 658c3ff71bSJunchao Zhang #if defined(PETSC_HAVE_KOKKOS_KERNELS) 668c3ff71bSJunchao Zhang PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJKokkos(Mat); 678c3ff71bSJunchao Zhang PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJKokkos(Mat); 688c3ff71bSJunchao Zhang #endif 698c3ff71bSJunchao Zhang 70bfc799aaSStefano Zampini #if defined(PETSC_HAVE_FFTW) 718cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_FFTW(Mat); 72dedccee8SHong Zhang #endif 73d8304050SJose E. Roman #if defined(PETSC_HAVE_ELEMENTAL) 748cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Elemental(Mat); 75d8304050SJose E. Roman #endif 76d24d4204SJose E. Roman #if defined(PETSC_HAVE_SCALAPACK) 77d24d4204SJose E. Roman PETSC_EXTERN PetscErrorCode MatCreate_ScaLAPACK(Mat); 78d24d4204SJose E. Roman #endif 798a95e4e9SBarry Smith 80c094ef40SMatthew G. Knepley PETSC_EXTERN PetscErrorCode MatCreate_Preallocator(Mat); 81a3b2e22bSHong Zhang PETSC_EXTERN PetscErrorCode MatCreate_Dummy(Mat); 82c094ef40SMatthew G. Knepley 83bfc799aaSStefano Zampini #if defined(PETSC_HAVE_HYPRE) 8463c07aadSStefano Zampini PETSC_EXTERN PetscErrorCode MatCreate_HYPRE(Mat); 8563c07aadSStefano Zampini #endif 8663c07aadSStefano Zampini 873423f386SBarry Smith PETSC_EXTERN PetscErrorCode MatCreate_ConstantDiagonal(Mat); 88a0d2e7d8SStefano Zampini 89a0d2e7d8SStefano Zampini #if defined(PETSC_HAVE_HARA) 90a0d2e7d8SStefano Zampini PETSC_EXTERN PetscErrorCode MatCreate_HARA(Mat); 91a0d2e7d8SStefano Zampini #endif 92a0d2e7d8SStefano Zampini 93*c7a4214aSPierre Jolivet #if defined(PETSC_HAVE_HTOOL) 94*c7a4214aSPierre Jolivet PETSC_EXTERN PetscErrorCode MatCreate_Htool(Mat); 95*c7a4214aSPierre Jolivet #endif 96*c7a4214aSPierre Jolivet 978a95e4e9SBarry Smith /*@C 98f7cf7585SBarry Smith MatRegisterAll - Registers all of the matrix types in PETSc 998a95e4e9SBarry Smith 1008a95e4e9SBarry Smith Not Collective 1018a95e4e9SBarry Smith 1028a95e4e9SBarry Smith Level: advanced 1038a95e4e9SBarry Smith 104d7ee760dSBarry Smith .seealso: MatRegister() 1058a95e4e9SBarry Smith @*/ 106607a6623SBarry Smith PetscErrorCode MatRegisterAll(void) 1078a95e4e9SBarry Smith { 108dfbe8321SBarry Smith PetscErrorCode ierr; 1098a95e4e9SBarry Smith 1108a95e4e9SBarry Smith PetscFunctionBegin; 1110f51fdf8SToby Isaac if (MatRegisterAllCalled) PetscFunctionReturn(0); 112f7cf7585SBarry Smith MatRegisterAllCalled = PETSC_TRUE; 1138a95e4e9SBarry Smith 114bdf89e91SBarry Smith ierr = MatRegister(MATMFFD, MatCreate_MFFD);CHKERRQ(ierr); 115e884886fSBarry Smith 116bdf89e91SBarry Smith ierr = MatRegister(MATMPIMAIJ, MatCreate_MAIJ);CHKERRQ(ierr); 117bdf89e91SBarry Smith ierr = MatRegister(MATSEQMAIJ, MatCreate_MAIJ);CHKERRQ(ierr); 118bdf89e91SBarry Smith ierr = MatRegister(MATMAIJ, MatCreate_MAIJ);CHKERRQ(ierr); 119273d9f13SBarry Smith 12049bd79ccSDebojyoti Ghosh ierr = MatRegister(MATMPIKAIJ, MatCreate_KAIJ);CHKERRQ(ierr); 12149bd79ccSDebojyoti Ghosh ierr = MatRegister(MATSEQKAIJ, MatCreate_KAIJ);CHKERRQ(ierr); 12249bd79ccSDebojyoti Ghosh ierr = MatRegister(MATKAIJ, MatCreate_KAIJ);CHKERRQ(ierr); 12349bd79ccSDebojyoti Ghosh 124bdf89e91SBarry Smith ierr = MatRegister(MATIS, MatCreate_IS);CHKERRQ(ierr); 125bdf89e91SBarry Smith ierr = MatRegister(MATSHELL, MatCreate_Shell);CHKERRQ(ierr); 126bdf89e91SBarry Smith ierr = MatRegister(MATCOMPOSITE, MatCreate_Composite);CHKERRQ(ierr); 12701bebe75SBarry Smith 12823bebc0bSBarry Smith ierr = MatRegisterRootName(MATAIJ,MATSEQAIJ,MATMPIAIJ);CHKERRQ(ierr); 129bdf89e91SBarry Smith ierr = MatRegister(MATMPIAIJ, MatCreate_MPIAIJ);CHKERRQ(ierr); 130bdf89e91SBarry Smith ierr = MatRegister(MATSEQAIJ, MatCreate_SeqAIJ);CHKERRQ(ierr); 13117667f90SBarry Smith 13223bebc0bSBarry Smith ierr = MatRegisterRootName(MATAIJPERM,MATSEQAIJPERM,MATMPIAIJPERM);CHKERRQ(ierr); 133bdf89e91SBarry Smith ierr = MatRegister(MATMPIAIJPERM, MatCreate_MPIAIJPERM);CHKERRQ(ierr); 134bdf89e91SBarry Smith ierr = MatRegister(MATSEQAIJPERM, MatCreate_SeqAIJPERM);CHKERRQ(ierr); 13517667f90SBarry Smith 13623bebc0bSBarry Smith ierr = MatRegisterRootName(MATAIJSELL,MATSEQAIJSELL,MATMPIAIJSELL);CHKERRQ(ierr); 1374dfdc2d9SRichard Tran Mills ierr = MatRegister(MATMPIAIJSELL, MatCreate_MPIAIJSELL);CHKERRQ(ierr); 1384dfdc2d9SRichard Tran Mills ierr = MatRegister(MATSEQAIJSELL, MatCreate_SeqAIJSELL);CHKERRQ(ierr); 1394dfdc2d9SRichard Tran Mills 140bfc799aaSStefano Zampini #if defined(PETSC_HAVE_MKL_SPARSE) 14123bebc0bSBarry Smith ierr = MatRegisterRootName(MATAIJMKL, MATSEQAIJMKL,MATMPIAIJMKL);CHKERRQ(ierr); 142a84739b8SRichard Tran Mills ierr = MatRegister(MATMPIAIJMKL, MatCreate_MPIAIJMKL);CHKERRQ(ierr); 1434a2a386eSRichard Tran Mills ierr = MatRegister(MATSEQAIJMKL, MatCreate_SeqAIJMKL);CHKERRQ(ierr); 144b9e7e5c1SBarry Smith #endif 145b5b72c8aSIrina Sokolova 146bfc799aaSStefano Zampini #if defined(PETSC_HAVE_MKL_SPARSE_OPTIMIZE) 14723bebc0bSBarry Smith ierr = MatRegisterRootName(MATBAIJMKL,MATSEQBAIJMKL,MATMPIBAIJMKL);CHKERRQ(ierr); 148b5b72c8aSIrina Sokolova ierr = MatRegister(MATMPIBAIJMKL, MatCreate_MPIBAIJMKL);CHKERRQ(ierr); 149b5b72c8aSIrina Sokolova ierr = MatRegister(MATSEQBAIJMKL, MatCreate_SeqBAIJMKL);CHKERRQ(ierr); 150191b95cbSRichard Tran Mills #endif 1514a2a386eSRichard Tran Mills 15223bebc0bSBarry Smith ierr = MatRegisterRootName(MATAIJCRL,MATSEQAIJCRL,MATMPIAIJCRL);CHKERRQ(ierr); 153bdf89e91SBarry Smith ierr = MatRegister(MATSEQAIJCRL, MatCreate_SeqAIJCRL);CHKERRQ(ierr); 154bdf89e91SBarry Smith ierr = MatRegister(MATMPIAIJCRL, MatCreate_MPIAIJCRL);CHKERRQ(ierr); 155273d9f13SBarry Smith 15623bebc0bSBarry Smith ierr = MatRegisterRootName(MATBAIJ,MATSEQBAIJ,MATMPIBAIJ);CHKERRQ(ierr); 157bdf89e91SBarry Smith ierr = MatRegister(MATMPIBAIJ, MatCreate_MPIBAIJ);CHKERRQ(ierr); 158bdf89e91SBarry Smith ierr = MatRegister(MATSEQBAIJ, MatCreate_SeqBAIJ);CHKERRQ(ierr); 159273d9f13SBarry Smith 16023bebc0bSBarry Smith ierr = MatRegisterRootName(MATSBAIJ,MATSEQSBAIJ,MATMPISBAIJ);CHKERRQ(ierr); 161bdf89e91SBarry Smith ierr = MatRegister(MATMPISBAIJ, MatCreate_MPISBAIJ);CHKERRQ(ierr); 162bdf89e91SBarry Smith ierr = MatRegister(MATSEQSBAIJ, MatCreate_SeqSBAIJ);CHKERRQ(ierr); 16317667f90SBarry Smith 16423bebc0bSBarry Smith ierr = MatRegisterRootName(MATDENSE,MATSEQDENSE,MATMPIDENSE);CHKERRQ(ierr); 165bdf89e91SBarry Smith ierr = MatRegister(MATMPIDENSE, MatCreate_MPIDense);CHKERRQ(ierr); 166bdf89e91SBarry Smith ierr = MatRegister(MATSEQDENSE, MatCreate_SeqDense);CHKERRQ(ierr); 167bfc799aaSStefano Zampini #if defined(PETSC_HAVE_CUDA) 168637a0070SStefano Zampini ierr = MatRegisterRootName(MATDENSECUDA,MATSEQDENSECUDA,MATMPIDENSECUDA);CHKERRQ(ierr); 169bfc799aaSStefano Zampini ierr = MatRegister(MATSEQDENSECUDA, MatCreate_SeqDenseCUDA);CHKERRQ(ierr); 170637a0070SStefano Zampini ierr = MatRegister(MATMPIDENSECUDA, MatCreate_MPIDenseCUDA);CHKERRQ(ierr); 171bfc799aaSStefano Zampini #endif 17217667f90SBarry Smith 173bdf89e91SBarry Smith ierr = MatRegister(MATMPIADJ, MatCreate_MPIAdj);CHKERRQ(ierr); 174bdf89e91SBarry Smith ierr = MatRegister(MATSCATTER, MatCreate_Scatter);CHKERRQ(ierr); 175bdf89e91SBarry Smith ierr = MatRegister(MATBLOCKMAT, MatCreate_BlockMat);CHKERRQ(ierr); 176bdf89e91SBarry Smith ierr = MatRegister(MATNEST, MatCreate_Nest);CHKERRQ(ierr); 17768326731SBarry Smith 17823bebc0bSBarry Smith ierr = MatRegisterRootName(MATSELL,MATSEQSELL,MATMPISELL);CHKERRQ(ierr); 179d4002b98SHong Zhang ierr = MatRegister(MATMPISELL, MatCreate_MPISELL);CHKERRQ(ierr); 180d4002b98SHong Zhang ierr = MatRegister(MATSEQSELL, MatCreate_SeqSELL);CHKERRQ(ierr); 1815e26d47bSHong Zhang 182bfc799aaSStefano Zampini #if defined(PETSC_HAVE_CUDA) 18323bebc0bSBarry Smith ierr = MatRegisterRootName(MATAIJCUSPARSE,MATSEQAIJCUSPARSE,MATMPIAIJCUSPARSE);CHKERRQ(ierr); 184bdf89e91SBarry Smith ierr = MatRegister(MATSEQAIJCUSPARSE, MatCreate_SeqAIJCUSPARSE);CHKERRQ(ierr); 185bdf89e91SBarry Smith ierr = MatRegister(MATMPIAIJCUSPARSE, MatCreate_MPIAIJCUSPARSE);CHKERRQ(ierr); 1869ae82921SPaul Mullowney #endif 1879ae82921SPaul Mullowney 188bfc799aaSStefano Zampini #if defined(PETSC_HAVE_VIENNACL) 18923bebc0bSBarry Smith ierr = MatRegisterRootName(MATAIJVIENNACL,MATSEQAIJVIENNACL,MATMPIAIJVIENNACL);CHKERRQ(ierr); 190ab6435e1SKarl Rupp ierr = MatRegister(MATSEQAIJVIENNACL, MatCreate_SeqAIJViennaCL);CHKERRQ(ierr); 191ab6435e1SKarl Rupp ierr = MatRegister(MATMPIAIJVIENNACL, MatCreate_MPIAIJViennaCL);CHKERRQ(ierr); 1928f86e40fSKarl Rupp #endif 1938f86e40fSKarl Rupp 1948c3ff71bSJunchao Zhang #if defined(PETSC_HAVE_KOKKOS_KERNELS) 1958c3ff71bSJunchao Zhang ierr = MatRegisterRootName(MATAIJKOKKOS,MATSEQAIJKOKKOS,MATMPIAIJKOKKOS);CHKERRQ(ierr); 1968c3ff71bSJunchao Zhang ierr = MatRegister(MATSEQAIJKOKKOS, MatCreate_SeqAIJKokkos);CHKERRQ(ierr); 1978c3ff71bSJunchao Zhang ierr = MatRegister(MATMPIAIJKOKKOS, MatCreate_MPIAIJKokkos);CHKERRQ(ierr); 1988c3ff71bSJunchao Zhang #endif 1998c3ff71bSJunchao Zhang 200bfc799aaSStefano Zampini #if defined(PETSC_HAVE_FFTW) 201bdf89e91SBarry Smith ierr = MatRegister(MATFFTW, MatCreate_FFTW);CHKERRQ(ierr); 202dedccee8SHong Zhang #endif 203bfc799aaSStefano Zampini #if defined(PETSC_HAVE_ELEMENTAL) 204bdf89e91SBarry Smith ierr = MatRegister(MATELEMENTAL, MatCreate_Elemental);CHKERRQ(ierr); 205db31f6deSJed Brown #endif 206d24d4204SJose E. Roman #if defined(PETSC_HAVE_SCALAPACK) 207d24d4204SJose E. Roman ierr = MatRegister(MATSCALAPACK, MatCreate_ScaLAPACK);CHKERRQ(ierr); 208d24d4204SJose E. Roman #endif 209c094ef40SMatthew G. Knepley 210c094ef40SMatthew G. Knepley ierr = MatRegister(MATPREALLOCATOR, MatCreate_Preallocator);CHKERRQ(ierr); 211a3b2e22bSHong Zhang ierr = MatRegister(MATDUMMY, MatCreate_Dummy);CHKERRQ(ierr); 21263c07aadSStefano Zampini 2133423f386SBarry Smith ierr = MatRegister(MATCONSTANTDIAGONAL,MatCreate_ConstantDiagonal);CHKERRQ(ierr); 2143423f386SBarry Smith 215bfc799aaSStefano Zampini #if defined(PETSC_HAVE_HYPRE) 21663c07aadSStefano Zampini ierr = MatRegister(MATHYPRE, MatCreate_HYPRE);CHKERRQ(ierr); 21763c07aadSStefano Zampini #endif 218a0d2e7d8SStefano Zampini 219a0d2e7d8SStefano Zampini #if defined(PETSC_HAVE_HARA) 220a0d2e7d8SStefano Zampini ierr = MatRegister(MATHARA, MatCreate_HARA);CHKERRQ(ierr); 221a0d2e7d8SStefano Zampini #endif 222*c7a4214aSPierre Jolivet 223*c7a4214aSPierre Jolivet #if defined(PETSC_HAVE_HTOOL) 224*c7a4214aSPierre Jolivet ierr = MatRegister(MATHTOOL, MatCreate_Htool);CHKERRQ(ierr); 225*c7a4214aSPierre Jolivet #endif 2268a95e4e9SBarry Smith PetscFunctionReturn(0); 2278a95e4e9SBarry Smith } 228