1 2 #include <petsc/private/matimpl.h> /*I "petscmat.h" I*/ 3 4 PETSC_EXTERN PetscErrorCode MatCreate_MFFD(Mat); 5 PETSC_EXTERN PetscErrorCode MatCreate_MAIJ(Mat); 6 PETSC_EXTERN PetscErrorCode MatCreate_IS(Mat); 7 8 PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJ(Mat); 9 PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJ(Mat); 10 11 PETSC_EXTERN PetscErrorCode MatCreate_SeqBAIJ(Mat); 12 PETSC_EXTERN PetscErrorCode MatCreate_MPIBAIJ(Mat); 13 14 PETSC_EXTERN PetscErrorCode MatCreate_SeqSBAIJ(Mat); 15 PETSC_EXTERN PetscErrorCode MatCreate_MPISBAIJ(Mat); 16 17 PETSC_EXTERN PetscErrorCode MatCreate_SeqDense(Mat); 18 PETSC_EXTERN PetscErrorCode MatCreate_MPIDense(Mat); 19 20 PETSC_EXTERN PetscErrorCode MatCreate_MPIAdj(Mat); 21 PETSC_EXTERN PetscErrorCode MatCreate_Shell(Mat); 22 PETSC_EXTERN PetscErrorCode MatCreate_Composite(Mat); 23 24 PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJPERM(Mat); 25 PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJPERM(Mat); 26 27 PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJCRL(Mat); 28 PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJCRL(Mat); 29 30 PETSC_EXTERN PetscErrorCode MatCreate_Scatter(Mat); 31 PETSC_EXTERN PetscErrorCode MatCreate_BlockMat(Mat); 32 PETSC_EXTERN PetscErrorCode MatCreate_Nest(Mat); 33 34 #if defined PETSC_HAVE_CUSP 35 PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJCUSP(Mat); 36 PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJCUSP(Mat); 37 #endif 38 39 #if defined PETSC_HAVE_VECCUDA 40 PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJCUSPARSE(Mat); 41 PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJCUSPARSE(Mat); 42 #endif 43 44 #if defined PETSC_HAVE_VIENNACL 45 PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJViennaCL(Mat); 46 PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJViennaCL(Mat); 47 #endif 48 49 #if defined PETSC_HAVE_FFTW 50 PETSC_EXTERN PetscErrorCode MatCreate_FFTW(Mat); 51 #endif 52 PETSC_EXTERN PetscErrorCode MatCreate_Elemental(Mat); 53 54 PETSC_EXTERN PetscErrorCode MatCreate_Preallocator(Mat); 55 PETSC_EXTERN PetscErrorCode MatCreate_Dummy(Mat); 56 57 #if defined PETSC_HAVE_HYPRE 58 PETSC_EXTERN PetscErrorCode MatCreate_HYPRE(Mat); 59 #endif 60 61 /*@C 62 MatRegisterAll - Registers all of the matrix types in PETSc 63 64 Not Collective 65 66 Level: advanced 67 68 .keywords: KSP, register, all 69 70 .seealso: MatRegister() 71 @*/ 72 PetscErrorCode MatRegisterAll(void) 73 { 74 PetscErrorCode ierr; 75 76 PetscFunctionBegin; 77 if (MatRegisterAllCalled) PetscFunctionReturn(0); 78 MatRegisterAllCalled = PETSC_TRUE; 79 80 ierr = MatRegister(MATMFFD, MatCreate_MFFD);CHKERRQ(ierr); 81 82 ierr = MatRegister(MATMPIMAIJ, MatCreate_MAIJ);CHKERRQ(ierr); 83 ierr = MatRegister(MATSEQMAIJ, MatCreate_MAIJ);CHKERRQ(ierr); 84 ierr = MatRegister(MATMAIJ, MatCreate_MAIJ);CHKERRQ(ierr); 85 86 ierr = MatRegister(MATIS, MatCreate_IS);CHKERRQ(ierr); 87 ierr = MatRegister(MATSHELL, MatCreate_Shell);CHKERRQ(ierr); 88 ierr = MatRegister(MATCOMPOSITE, MatCreate_Composite);CHKERRQ(ierr); 89 90 ierr = MatRegisterBaseName(MATAIJ,MATSEQAIJ,MATMPIAIJ);CHKERRQ(ierr); 91 ierr = MatRegister(MATMPIAIJ, MatCreate_MPIAIJ);CHKERRQ(ierr); 92 ierr = MatRegister(MATSEQAIJ, MatCreate_SeqAIJ);CHKERRQ(ierr); 93 94 ierr = MatRegisterBaseName(MATAIJPERM,MATSEQAIJPERM,MATMPIAIJPERM);CHKERRQ(ierr); 95 ierr = MatRegister(MATMPIAIJPERM, MatCreate_MPIAIJPERM);CHKERRQ(ierr); 96 ierr = MatRegister(MATSEQAIJPERM, MatCreate_SeqAIJPERM);CHKERRQ(ierr); 97 98 ierr = MatRegisterBaseName(MATAIJCRL,MATSEQAIJCRL,MATMPIAIJCRL);CHKERRQ(ierr); 99 ierr = MatRegister(MATSEQAIJCRL, MatCreate_SeqAIJCRL);CHKERRQ(ierr); 100 ierr = MatRegister(MATMPIAIJCRL, MatCreate_MPIAIJCRL);CHKERRQ(ierr); 101 102 ierr = MatRegisterBaseName(MATBAIJ,MATSEQBAIJ,MATMPIBAIJ);CHKERRQ(ierr); 103 ierr = MatRegister(MATMPIBAIJ, MatCreate_MPIBAIJ);CHKERRQ(ierr); 104 ierr = MatRegister(MATSEQBAIJ, MatCreate_SeqBAIJ);CHKERRQ(ierr); 105 106 ierr = MatRegisterBaseName(MATSBAIJ,MATSEQSBAIJ,MATMPISBAIJ);CHKERRQ(ierr); 107 ierr = MatRegister(MATMPISBAIJ, MatCreate_MPISBAIJ);CHKERRQ(ierr); 108 ierr = MatRegister(MATSEQSBAIJ, MatCreate_SeqSBAIJ);CHKERRQ(ierr); 109 110 ierr = MatRegisterBaseName(MATDENSE,MATSEQDENSE,MATMPIDENSE);CHKERRQ(ierr); 111 ierr = MatRegister(MATMPIDENSE, MatCreate_MPIDense);CHKERRQ(ierr); 112 ierr = MatRegister(MATSEQDENSE, MatCreate_SeqDense);CHKERRQ(ierr); 113 114 ierr = MatRegister(MATMPIADJ, MatCreate_MPIAdj);CHKERRQ(ierr); 115 ierr = MatRegister(MATSCATTER, MatCreate_Scatter);CHKERRQ(ierr); 116 ierr = MatRegister(MATBLOCKMAT, MatCreate_BlockMat);CHKERRQ(ierr); 117 ierr = MatRegister(MATNEST, MatCreate_Nest);CHKERRQ(ierr); 118 119 #if defined PETSC_HAVE_CUSP 120 ierr = MatRegisterBaseName(MATAIJCUSP,MATSEQAIJCUSP,MATMPIAIJCUSP);CHKERRQ(ierr); 121 ierr = MatRegister(MATSEQAIJCUSP, MatCreate_SeqAIJCUSP);CHKERRQ(ierr); 122 ierr = MatRegister(MATMPIAIJCUSP, MatCreate_MPIAIJCUSP);CHKERRQ(ierr); 123 #endif 124 125 #if defined PETSC_HAVE_VECCUDA 126 ierr = MatRegisterBaseName(MATAIJCUSPARSE,MATSEQAIJCUSPARSE,MATMPIAIJCUSPARSE);CHKERRQ(ierr); 127 ierr = MatRegister(MATSEQAIJCUSPARSE, MatCreate_SeqAIJCUSPARSE);CHKERRQ(ierr); 128 ierr = MatRegister(MATMPIAIJCUSPARSE, MatCreate_MPIAIJCUSPARSE);CHKERRQ(ierr); 129 #endif 130 131 #if defined PETSC_HAVE_VIENNACL 132 ierr = MatRegisterBaseName(MATAIJVIENNACL,MATSEQAIJVIENNACL,MATMPIAIJVIENNACL);CHKERRQ(ierr); 133 ierr = MatRegister(MATSEQAIJVIENNACL, MatCreate_SeqAIJViennaCL);CHKERRQ(ierr); 134 ierr = MatRegister(MATMPIAIJVIENNACL, MatCreate_MPIAIJViennaCL);CHKERRQ(ierr); 135 #endif 136 137 #if defined PETSC_HAVE_FFTW 138 ierr = MatRegister(MATFFTW, MatCreate_FFTW);CHKERRQ(ierr); 139 #endif 140 #if defined PETSC_HAVE_ELEMENTAL 141 ierr = MatRegister(MATELEMENTAL, MatCreate_Elemental);CHKERRQ(ierr); 142 #endif 143 144 ierr = MatRegister(MATPREALLOCATOR, MatCreate_Preallocator);CHKERRQ(ierr); 145 ierr = MatRegister(MATDUMMY, MatCreate_Dummy);CHKERRQ(ierr); 146 147 #if defined PETSC_HAVE_HYPRE 148 ierr = MatRegister(MATHYPRE, MatCreate_HYPRE);CHKERRQ(ierr); 149 #endif 150 PetscFunctionReturn(0); 151 } 152 153 154