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 8953022affSStefano Zampini #if defined(PETSC_HAVE_H2OPUS) 9053022affSStefano Zampini PETSC_EXTERN PetscErrorCode MatCreate_H2OPUS(Mat); 91a0d2e7d8SStefano Zampini #endif 92a0d2e7d8SStefano Zampini 93c7a4214aSPierre Jolivet #if defined(PETSC_HAVE_HTOOL) 94c7a4214aSPierre Jolivet PETSC_EXTERN PetscErrorCode MatCreate_Htool(Mat); 95c7a4214aSPierre Jolivet #endif 96c7a4214aSPierre 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 10411a5261eSBarry Smith .seealso: `MatType`, `MatSetType()`, `MatRegister()` 1058a95e4e9SBarry Smith @*/ 106*d71ae5a4SJacob Faibussowitsch PetscErrorCode MatRegisterAll(void) 107*d71ae5a4SJacob Faibussowitsch { 1088a95e4e9SBarry Smith PetscFunctionBegin; 1090f51fdf8SToby Isaac if (MatRegisterAllCalled) PetscFunctionReturn(0); 110f7cf7585SBarry Smith MatRegisterAllCalled = PETSC_TRUE; 1118a95e4e9SBarry Smith 1129566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMFFD, MatCreate_MFFD)); 113e884886fSBarry Smith 1149566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPIMAIJ, MatCreate_MAIJ)); 1159566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQMAIJ, MatCreate_MAIJ)); 1169566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMAIJ, MatCreate_MAIJ)); 117273d9f13SBarry Smith 1189566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPIKAIJ, MatCreate_KAIJ)); 1199566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQKAIJ, MatCreate_KAIJ)); 1209566063dSJacob Faibussowitsch PetscCall(MatRegister(MATKAIJ, MatCreate_KAIJ)); 12149bd79ccSDebojyoti Ghosh 1229566063dSJacob Faibussowitsch PetscCall(MatRegister(MATIS, MatCreate_IS)); 1239566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSHELL, MatCreate_Shell)); 1249566063dSJacob Faibussowitsch PetscCall(MatRegister(MATCOMPOSITE, MatCreate_Composite)); 12501bebe75SBarry Smith 1269566063dSJacob Faibussowitsch PetscCall(MatRegisterRootName(MATAIJ, MATSEQAIJ, MATMPIAIJ)); 1279566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPIAIJ, MatCreate_MPIAIJ)); 1289566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQAIJ, MatCreate_SeqAIJ)); 12917667f90SBarry Smith 1309566063dSJacob Faibussowitsch PetscCall(MatRegisterRootName(MATAIJPERM, MATSEQAIJPERM, MATMPIAIJPERM)); 1319566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPIAIJPERM, MatCreate_MPIAIJPERM)); 1329566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQAIJPERM, MatCreate_SeqAIJPERM)); 13317667f90SBarry Smith 1349566063dSJacob Faibussowitsch PetscCall(MatRegisterRootName(MATAIJSELL, MATSEQAIJSELL, MATMPIAIJSELL)); 1359566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPIAIJSELL, MatCreate_MPIAIJSELL)); 1369566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQAIJSELL, MatCreate_SeqAIJSELL)); 1374dfdc2d9SRichard Tran Mills 138bfc799aaSStefano Zampini #if defined(PETSC_HAVE_MKL_SPARSE) 1399566063dSJacob Faibussowitsch PetscCall(MatRegisterRootName(MATAIJMKL, MATSEQAIJMKL, MATMPIAIJMKL)); 1409566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPIAIJMKL, MatCreate_MPIAIJMKL)); 1419566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQAIJMKL, MatCreate_SeqAIJMKL)); 142b9e7e5c1SBarry Smith #endif 143b5b72c8aSIrina Sokolova 144bfc799aaSStefano Zampini #if defined(PETSC_HAVE_MKL_SPARSE_OPTIMIZE) 1459566063dSJacob Faibussowitsch PetscCall(MatRegisterRootName(MATBAIJMKL, MATSEQBAIJMKL, MATMPIBAIJMKL)); 1469566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPIBAIJMKL, MatCreate_MPIBAIJMKL)); 1479566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQBAIJMKL, MatCreate_SeqBAIJMKL)); 148191b95cbSRichard Tran Mills #endif 1494a2a386eSRichard Tran Mills 1509566063dSJacob Faibussowitsch PetscCall(MatRegisterRootName(MATAIJCRL, MATSEQAIJCRL, MATMPIAIJCRL)); 1519566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQAIJCRL, MatCreate_SeqAIJCRL)); 1529566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPIAIJCRL, MatCreate_MPIAIJCRL)); 153273d9f13SBarry Smith 1549566063dSJacob Faibussowitsch PetscCall(MatRegisterRootName(MATBAIJ, MATSEQBAIJ, MATMPIBAIJ)); 1559566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPIBAIJ, MatCreate_MPIBAIJ)); 1569566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQBAIJ, MatCreate_SeqBAIJ)); 157273d9f13SBarry Smith 1589566063dSJacob Faibussowitsch PetscCall(MatRegisterRootName(MATSBAIJ, MATSEQSBAIJ, MATMPISBAIJ)); 1599566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPISBAIJ, MatCreate_MPISBAIJ)); 1609566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQSBAIJ, MatCreate_SeqSBAIJ)); 16117667f90SBarry Smith 1629566063dSJacob Faibussowitsch PetscCall(MatRegisterRootName(MATDENSE, MATSEQDENSE, MATMPIDENSE)); 1639566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPIDENSE, MatCreate_MPIDense)); 1649566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQDENSE, MatCreate_SeqDense)); 165bfc799aaSStefano Zampini #if defined(PETSC_HAVE_CUDA) 1669566063dSJacob Faibussowitsch PetscCall(MatRegisterRootName(MATDENSECUDA, MATSEQDENSECUDA, MATMPIDENSECUDA)); 1679566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQDENSECUDA, MatCreate_SeqDenseCUDA)); 1689566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPIDENSECUDA, MatCreate_MPIDenseCUDA)); 169bfc799aaSStefano Zampini #endif 17017667f90SBarry Smith 1719566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPIADJ, MatCreate_MPIAdj)); 1729566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSCATTER, MatCreate_Scatter)); 1739566063dSJacob Faibussowitsch PetscCall(MatRegister(MATBLOCKMAT, MatCreate_BlockMat)); 1749566063dSJacob Faibussowitsch PetscCall(MatRegister(MATNEST, MatCreate_Nest)); 17568326731SBarry Smith 1769566063dSJacob Faibussowitsch PetscCall(MatRegisterRootName(MATSELL, MATSEQSELL, MATMPISELL)); 1779566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPISELL, MatCreate_MPISELL)); 1789566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQSELL, MatCreate_SeqSELL)); 1795e26d47bSHong Zhang 180bfc799aaSStefano Zampini #if defined(PETSC_HAVE_CUDA) 1819566063dSJacob Faibussowitsch PetscCall(MatRegisterRootName(MATAIJCUSPARSE, MATSEQAIJCUSPARSE, MATMPIAIJCUSPARSE)); 1829566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQAIJCUSPARSE, MatCreate_SeqAIJCUSPARSE)); 1839566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPIAIJCUSPARSE, MatCreate_MPIAIJCUSPARSE)); 1849ae82921SPaul Mullowney #endif 1859ae82921SPaul Mullowney 186bfc799aaSStefano Zampini #if defined(PETSC_HAVE_VIENNACL) 1879566063dSJacob Faibussowitsch PetscCall(MatRegisterRootName(MATAIJVIENNACL, MATSEQAIJVIENNACL, MATMPIAIJVIENNACL)); 1889566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQAIJVIENNACL, MatCreate_SeqAIJViennaCL)); 1899566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPIAIJVIENNACL, MatCreate_MPIAIJViennaCL)); 1908f86e40fSKarl Rupp #endif 1918f86e40fSKarl Rupp 1928c3ff71bSJunchao Zhang #if defined(PETSC_HAVE_KOKKOS_KERNELS) 1939566063dSJacob Faibussowitsch PetscCall(MatRegisterRootName(MATAIJKOKKOS, MATSEQAIJKOKKOS, MATMPIAIJKOKKOS)); 1949566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSEQAIJKOKKOS, MatCreate_SeqAIJKokkos)); 1959566063dSJacob Faibussowitsch PetscCall(MatRegister(MATMPIAIJKOKKOS, MatCreate_MPIAIJKokkos)); 1968c3ff71bSJunchao Zhang #endif 1978c3ff71bSJunchao Zhang 198bfc799aaSStefano Zampini #if defined(PETSC_HAVE_FFTW) 1999566063dSJacob Faibussowitsch PetscCall(MatRegister(MATFFTW, MatCreate_FFTW)); 200dedccee8SHong Zhang #endif 201bfc799aaSStefano Zampini #if defined(PETSC_HAVE_ELEMENTAL) 2029566063dSJacob Faibussowitsch PetscCall(MatRegister(MATELEMENTAL, MatCreate_Elemental)); 203db31f6deSJed Brown #endif 204d24d4204SJose E. Roman #if defined(PETSC_HAVE_SCALAPACK) 2059566063dSJacob Faibussowitsch PetscCall(MatRegister(MATSCALAPACK, MatCreate_ScaLAPACK)); 206d24d4204SJose E. Roman #endif 207c094ef40SMatthew G. Knepley 2089566063dSJacob Faibussowitsch PetscCall(MatRegister(MATPREALLOCATOR, MatCreate_Preallocator)); 2099566063dSJacob Faibussowitsch PetscCall(MatRegister(MATDUMMY, MatCreate_Dummy)); 21063c07aadSStefano Zampini 2119566063dSJacob Faibussowitsch PetscCall(MatRegister(MATCONSTANTDIAGONAL, MatCreate_ConstantDiagonal)); 2123423f386SBarry Smith 213bfc799aaSStefano Zampini #if defined(PETSC_HAVE_HYPRE) 2149566063dSJacob Faibussowitsch PetscCall(MatRegister(MATHYPRE, MatCreate_HYPRE)); 21563c07aadSStefano Zampini #endif 216a0d2e7d8SStefano Zampini 21753022affSStefano Zampini #if defined(PETSC_HAVE_H2OPUS) 2189566063dSJacob Faibussowitsch PetscCall(MatRegister(MATH2OPUS, MatCreate_H2OPUS)); 219a0d2e7d8SStefano Zampini #endif 220c7a4214aSPierre Jolivet 221c7a4214aSPierre Jolivet #if defined(PETSC_HAVE_HTOOL) 2229566063dSJacob Faibussowitsch PetscCall(MatRegister(MATHTOOL, MatCreate_Htool)); 223c7a4214aSPierre Jolivet #endif 2248a95e4e9SBarry Smith PetscFunctionReturn(0); 2258a95e4e9SBarry Smith } 226