1 /*$Id: matregis.c,v 1.10 2001/06/21 21:16:17 bsmith Exp $*/ 2 3 #include "petscmat.h" /*I "petscmat.h" I*/ 4 5 EXTERN_C_BEGIN 6 EXTERN int MatCreate_MAIJ(Mat); 7 EXTERN int MatCreate_IS(Mat); 8 EXTERN int MatCreate_MPIRowbs(Mat); 9 EXTERN int MatCreate_SeqAIJ(Mat); 10 EXTERN int MatCreate_MPIAIJ(Mat); 11 EXTERN int MatCreate_SeqBAIJ(Mat); 12 EXTERN int MatCreate_MPIBAIJ(Mat); 13 EXTERN int MatCreate_SeqSBAIJ(Mat); 14 EXTERN int MatCreate_MPISBAIJ(Mat); 15 EXTERN int MatCreate_SeqBDiag(Mat); 16 EXTERN int MatCreate_MPIBDiag(Mat); 17 EXTERN int MatCreate_SeqDense(Mat); 18 EXTERN int MatCreate_MPIDense(Mat); 19 EXTERN int MatCreate_MPIAdj(Mat); 20 EXTERN int MatCreate_Shell(Mat); 21 #if defined(__cplusplus) 22 EXTERN int MatCreate_ESI(Mat); 23 EXTERN int MatCreate_PetscESI(Mat); 24 #endif 25 #if defined(PETSC_HAVE_SPOOLES) && !defined(PETSC_USE_SINGLE) 26 EXTERN int MatCreate_SeqAIJSpooles(Mat); 27 EXTERN int MatCreate_SeqSBAIJSpooles(Mat); 28 EXTERN int MatCreate_MPIAIJSpooles(Mat); 29 EXTERN int MatCreate_MPISBAIJSpooles(Mat); 30 #endif 31 #if defined(PETSC_HAVE_SUPERLU) && !defined(PETSC_USE_SINGLE) 32 EXTERN int MatCreate_SuperLU(Mat); 33 #endif 34 #if defined(PETSC_HAVE_SUPERLU_DIST) && !defined(PETSC_USE_SINGLE) 35 EXTERN int MatCreate_SuperLU_DIST(Mat); 36 #endif 37 #if defined(PETSC_HAVE_UMFPACK) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX) 38 EXTERN int MatCreate_UMFPACK(Mat); 39 #endif 40 #if defined(PETSC_HAVE_ESSL) && !defined(__cplusplus) 41 EXTERN int MatCreate_Essl(Mat); 42 #endif 43 #if defined(PETSC_HAVE_LUSOL) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX) 44 EXTERN int MatCreate_LUSOL(Mat); 45 #endif 46 #if defined(PETSC_HAVE_MUMPS) && !defined(PETSC_USE_SINGLE) 47 EXTERN int MatCreate_AIJMUMPS(Mat); 48 EXTERN int MatCreate_SBAIJMUMPS(Mat); 49 #endif 50 #if defined(PETSC_HAVE_DSCPACK) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX) 51 EXTERN int MatCreate_DSCPACK(Mat); 52 #endif 53 EXTERN_C_END 54 55 /* 56 This is used by MatSetType() to make sure that at least one 57 MatRegisterAll() is called. In general, if there is more than one 58 DLL, then MatRegisterAll() may be called several times. 59 */ 60 EXTERN PetscTruth MatRegisterAllCalled; 61 62 #undef __FUNCT__ 63 #define __FUNCT__ "MatRegisterAll" 64 /*@C 65 MatRegisterAll - Registers all of the matrix types in PETSc 66 67 Not Collective 68 69 Level: advanced 70 71 .keywords: KSP, register, all 72 73 .seealso: MatRegisterDestroy() 74 @*/ 75 int MatRegisterAll(char *path) 76 { 77 int ierr; 78 79 PetscFunctionBegin; 80 MatRegisterAllCalled = PETSC_TRUE; 81 82 ierr = MatRegisterDynamic(MATMPIMAIJ, path,"MatCreate_MAIJ", MatCreate_MAIJ);CHKERRQ(ierr); 83 ierr = MatRegisterDynamic(MATSEQMAIJ, path,"MatCreate_MAIJ", MatCreate_MAIJ);CHKERRQ(ierr); 84 85 ierr = MatRegisterDynamic(MATIS, path,"MatCreate_IS", MatCreate_IS);CHKERRQ(ierr); 86 ierr = MatRegisterDynamic(MATSHELL, path,"MatCreate_Shell", MatCreate_Shell);CHKERRQ(ierr); 87 #if defined(PETSC_HAVE_BLOCKSOLVE) && !defined(PETSC_USE_COMPLEX) 88 ierr = MatRegisterDynamic(MATMPIROWBS,path,"MatCreate_MPIRowbs",MatCreate_MPIRowbs);CHKERRQ(ierr); 89 #endif 90 91 ierr = MatRegisterDynamic(MATMPIAIJ, path,"MatCreate_MPIAIJ", MatCreate_MPIAIJ);CHKERRQ(ierr); 92 ierr = MatRegisterDynamic(MATSEQAIJ, path,"MatCreate_SeqAIJ", MatCreate_SeqAIJ);CHKERRQ(ierr); 93 94 ierr = MatRegisterDynamic(MATMPIBAIJ, path,"MatCreate_MPIBAIJ", MatCreate_MPIBAIJ);CHKERRQ(ierr); 95 ierr = MatRegisterDynamic(MATSEQBAIJ, path,"MatCreate_SeqBAIJ", MatCreate_SeqBAIJ);CHKERRQ(ierr); 96 97 ierr = MatRegisterDynamic(MATMPISBAIJ, path,"MatCreate_MPISBAIJ", MatCreate_MPISBAIJ);CHKERRQ(ierr); 98 ierr = MatRegisterDynamic(MATSEQSBAIJ, path,"MatCreate_SeqSBAIJ", MatCreate_SeqSBAIJ);CHKERRQ(ierr); 99 100 ierr = MatRegisterDynamic(MATMPIBDIAG, path,"MatCreate_MPIBDiag", MatCreate_MPIBDiag);CHKERRQ(ierr); 101 ierr = MatRegisterDynamic(MATSEQBDIAG, path,"MatCreate_SeqBDiag", MatCreate_SeqBDiag);CHKERRQ(ierr); 102 103 ierr = MatRegisterDynamic(MATMPIDENSE, path,"MatCreate_MPIDense", MatCreate_MPIDense);CHKERRQ(ierr); 104 ierr = MatRegisterDynamic(MATSEQDENSE, path,"MatCreate_SeqDense", MatCreate_SeqDense);CHKERRQ(ierr); 105 106 ierr = MatRegisterDynamic(MATMPIADJ, path,"MatCreate_MPIAdj", MatCreate_MPIAdj);CHKERRQ(ierr); 107 #if defined(__cplusplus) && !defined(PETSC_USE_COMPLEX) && !defined(PETSC_USE_SINGLE) && defined(PETSC_HAVE_CXX_NAMESPACE) 108 ierr = MatRegisterDynamic(MATESI, path,"MatCreate_ESI", MatCreate_ESI);CHKERRQ(ierr); 109 ierr = MatRegisterDynamic(MATPETSCESI, path,"MatCreate_PetscESI", MatCreate_PetscESI);CHKERRQ(ierr); 110 #endif 111 #if defined(PETSC_HAVE_SPOOLES) && !defined(PETSC_USE_SINGLE) 112 ierr = MatRegisterDynamic(MATSEQAIJSPOOLES, path,"MatCreate_SeqAIJSpooles", MatCreate_SeqAIJSpooles);CHKERRQ(ierr); 113 ierr = MatRegisterDynamic(MATSEQSBAIJSPOOLES,path,"MatCreate_SeqSBAIJSpooles",MatCreate_SeqSBAIJSpooles);CHKERRQ(ierr); 114 ierr = MatRegisterDynamic(MATMPIAIJSPOOLES, path,"MatCreate_MPIAIJSpooles", MatCreate_MPIAIJSpooles);CHKERRQ(ierr); 115 ierr = MatRegisterDynamic(MATMPISBAIJSPOOLES,path,"MatCreate_MPISBAIJSpooles",MatCreate_MPISBAIJSpooles);CHKERRQ(ierr); 116 #endif 117 #if defined(PETSC_HAVE_SUPERLU) && !defined(PETSC_USE_SINGLE) 118 ierr = MatRegisterDynamic(MATSUPERLU,path,"MatCreate_SuperLU",MatCreate_SuperLU);CHKERRQ(ierr); 119 #endif 120 #if defined(PETSC_HAVE_SUPERLU_DIST) && !defined(PETSC_USE_SINGLE) 121 ierr = MatRegisterDynamic(MATSUPERLU_DIST,path,"MatCreate_SuperLU_DIST",MatCreate_SuperLU_DIST);CHKERRQ(ierr); 122 #endif 123 #if defined(PETSC_HAVE_UMFPACK) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX) 124 ierr = MatRegisterDynamic(MATUMFPACK,path,"MatCreate_UMFPACK",MatCreate_UMFPACK);CHKERRQ(ierr); 125 #endif 126 #if defined(PETSC_HAVE_ESSL) && !defined(__cplusplus) 127 ierr = MatRegisterDynamic(MATESSL,path,"MatCreate_Essl",MatCreate_Essl);CHKERRQ(ierr); 128 #endif 129 #if defined(PETSC_HAVE_LUSOL) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX) 130 ierr = MatRegisterDynamic(MATLUSOL,path,"MatCreate_LUSOL",MatCreate_LUSOL);CHKERRQ(ierr); 131 #endif 132 #if defined(PETSC_HAVE_MUMPS) && !defined(PETSC_USE_SINGLE) 133 ierr = MatRegisterDynamic(MATAIJMUMPS, path,"MatCreate_AIJ_MUMPS",MatCreate_AIJ_MUMPS);CHKERRQ(ierr); 134 ierr = MatRegisterDynamic(MATSBAIJMUMPS,path,"MatCreate_SBAIJ_MUMPS",MatCreate_SBAIJ_MUMPS);CHKERRQ(ierr); 135 #endif 136 #if defined(PETSC_HAVE_DSCPACK) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX) 137 ierr = MatRegisterDynamic(MATDSCPACK,path,"MatCreate_DSCPACK",MatCreate_DSCPACK);CHKERRQ(ierr); 138 #endif 139 PetscFunctionReturn(0); 140 } 141 142 143