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_SeqAIJ_Spooles(Mat); 27 EXTERN int MatCreate_SeqSBAIJ_Spooles(Mat); 28 EXTERN int MatCreate_MPIAIJ_Spooles(Mat); 29 EXTERN int MatCreate_MPISBAIJ_Spooles(Mat); 30 #endif 31 #if defined(PETSC_HAVE_SUPERLU) && !defined(PETSC_USE_SINGLE) 32 EXTERN int MatCreate_SeqAIJ_SuperLU(Mat); 33 #endif 34 #if defined(PETSC_HAVE_SUPERLUDIST) && !defined(PETSC_USE_SINGLE) 35 EXTERN int MatCreate_MPIAIJ_SuperLU_DIST(Mat); 36 #endif 37 #if defined(PETSC_HAVE_UMFPACK) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX) 38 EXTERN int MatCreate_SeqAIJ_UMFPACK(Mat); 39 #endif 40 #if defined(PETSC_HAVE_ESSL) && !defined(__cplusplus) 41 EXTERN int MatCreate_SeqAIJ_Essl(Mat); 42 #endif 43 EXTERN_C_END 44 45 /* 46 This is used by MatSetType() to make sure that at least one 47 MatRegisterAll() is called. In general, if there is more than one 48 DLL, then MatRegisterAll() may be called several times. 49 */ 50 EXTERN PetscTruth MatRegisterAllCalled; 51 52 #undef __FUNCT__ 53 #define __FUNCT__ "MatRegisterAll" 54 /*@C 55 MatRegisterAll - Registers all of the matrix types in PETSc 56 57 Not Collective 58 59 Level: advanced 60 61 .keywords: KSP, register, all 62 63 .seealso: MatRegisterDestroy() 64 @*/ 65 int MatRegisterAll(char *path) 66 { 67 int ierr; 68 69 PetscFunctionBegin; 70 MatRegisterAllCalled = PETSC_TRUE; 71 72 ierr = MatRegisterDynamic(MATMPIMAIJ, path,"MatCreate_MAIJ", MatCreate_MAIJ);CHKERRQ(ierr); 73 ierr = MatRegisterDynamic(MATSEQMAIJ, path,"MatCreate_MAIJ", MatCreate_MAIJ);CHKERRQ(ierr); 74 75 ierr = MatRegisterDynamic(MATIS, path,"MatCreate_IS", MatCreate_IS);CHKERRQ(ierr); 76 ierr = MatRegisterDynamic(MATSHELL, path,"MatCreate_Shell", MatCreate_Shell);CHKERRQ(ierr); 77 #if defined(PETSC_HAVE_BLOCKSOLVE) && !defined(PETSC_USE_COMPLEX) 78 ierr = MatRegisterDynamic(MATMPIROWBS,path,"MatCreate_MPIRowbs",MatCreate_MPIRowbs);CHKERRQ(ierr); 79 #endif 80 81 ierr = MatRegisterDynamic(MATMPIAIJ, path,"MatCreate_MPIAIJ", MatCreate_MPIAIJ);CHKERRQ(ierr); 82 ierr = MatRegisterDynamic(MATSEQAIJ, path,"MatCreate_SeqAIJ", MatCreate_SeqAIJ);CHKERRQ(ierr); 83 84 ierr = MatRegisterDynamic(MATMPIBAIJ, path,"MatCreate_MPIBAIJ", MatCreate_MPIBAIJ);CHKERRQ(ierr); 85 ierr = MatRegisterDynamic(MATSEQBAIJ, path,"MatCreate_SeqBAIJ", MatCreate_SeqBAIJ);CHKERRQ(ierr); 86 87 ierr = MatRegisterDynamic(MATMPISBAIJ, path,"MatCreate_MPISBAIJ", MatCreate_MPISBAIJ);CHKERRQ(ierr); 88 ierr = MatRegisterDynamic(MATSEQSBAIJ, path,"MatCreate_SeqSBAIJ", MatCreate_SeqSBAIJ);CHKERRQ(ierr); 89 90 ierr = MatRegisterDynamic(MATMPIBDIAG, path,"MatCreate_MPIBDiag", MatCreate_MPIBDiag);CHKERRQ(ierr); 91 ierr = MatRegisterDynamic(MATSEQBDIAG, path,"MatCreate_SeqBDiag", MatCreate_SeqBDiag);CHKERRQ(ierr); 92 93 ierr = MatRegisterDynamic(MATMPIDENSE, path,"MatCreate_MPIDense", MatCreate_MPIDense);CHKERRQ(ierr); 94 ierr = MatRegisterDynamic(MATSEQDENSE, path,"MatCreate_SeqDense", MatCreate_SeqDense);CHKERRQ(ierr); 95 96 ierr = MatRegisterDynamic(MATMPIADJ, path,"MatCreate_MPIAdj", MatCreate_MPIAdj);CHKERRQ(ierr); 97 #if defined(__cplusplus) && !defined(PETSC_USE_COMPLEX) && !defined(PETSC_USE_SINGLE) && defined(PETSC_HAVE_CXX_NAMESPACE) 98 ierr = MatRegisterDynamic(MATESI, path,"MatCreate_ESI", MatCreate_ESI);CHKERRQ(ierr); 99 ierr = MatRegisterDynamic(MATPETSCESI, path,"MatCreate_PetscESI", MatCreate_PetscESI);CHKERRQ(ierr); 100 #endif 101 #if defined(PETSC_HAVE_SPOOLES) && !defined(PETSC_USE_SINGLE) 102 ierr = MatRegisterDynamic(MATSEQAIJSPOOLES, path,"MatCreate_SeqAIJ_Spooles", MatCreate_SeqAIJ_Spooles);CHKERRQ(ierr); 103 ierr = MatRegisterDynamic(MATSEQSBAIJSPOOLES,path,"MatCreate_SeqSBAIJ_Spooles",MatCreate_SeqSBAIJ_Spooles);CHKERRQ(ierr); 104 ierr = MatRegisterDynamic(MATMPIAIJSPOOLES, path,"MatCreate_MPIAIJ_Spooles", MatCreate_MPIAIJ_Spooles);CHKERRQ(ierr); 105 ierr = MatRegisterDynamic(MATMPISBAIJSPOOLES,path,"MatCreate_MPISBAIJ_Spooles",MatCreate_MPISBAIJ_Spooles);CHKERRQ(ierr); 106 #endif 107 #if defined(PETSC_HAVE_SUPERLU) && !defined(PETSC_USE_SINGLE) 108 ierr = MatRegisterDynamic(MATSUPERLU,path,"MatCreate_SeqAIJ_SuperLU",MatCreate_SeqAIJ_SuperLU);CHKERRQ(ierr); 109 #endif 110 #if defined(PETSC_HAVE_SUPERLUDIST) && !defined(PETSC_USE_SINGLE) 111 ierr = MatRegisterDynamic(MATSUPERLUDIST,path,"MatCreate_MPIAIJ_SuperLU_DIST",MatCreate_MPIAIJ_SuperLU_DIST);CHKERRQ(ierr); 112 #endif 113 #if defined(PETSC_HAVE_UMFPACK) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX) 114 ierr = MatRegisterDynamic(MATUMFPACK,path,"MatCreate_SeqAIJ_UMFPACK",MatCreate_SeqAIJ_UMFPACK);CHKERRQ(ierr); 115 #endif 116 #if defined(PETSC_HAVE_ESSL) && !defined(__cplusplus) 117 ierr = MatRegisterDynamic(MATESSL,path,"MatCreate_SeqAIJ_Essl",MatCreate_SeqAIJ_Essl);CHKERRQ(ierr); 118 #endif 119 PetscFunctionReturn(0); 120 } 121 122 123