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 #if defined(PETSC_HAVE_LUSOL) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX) 44 EXTERN int MatCreate_SeqAIJ_LUSOL(Mat); 45 #endif 46 #if defined(PETSC_HAVE_MUMPS) && !defined(PETSC_USE_SINGLE) 47 EXTERN int MatCreate_AIJ_MUMPS(Mat); 48 EXTERN int MatCreate_SBAIJ_MUMPS(Mat); 49 #endif 50 EXTERN_C_END 51 52 /* 53 This is used by MatSetType() to make sure that at least one 54 MatRegisterAll() is called. In general, if there is more than one 55 DLL, then MatRegisterAll() may be called several times. 56 */ 57 EXTERN PetscTruth MatRegisterAllCalled; 58 59 #undef __FUNCT__ 60 #define __FUNCT__ "MatRegisterAll" 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: MatRegisterDestroy() 71 @*/ 72 int MatRegisterAll(char *path) 73 { 74 int ierr; 75 76 PetscFunctionBegin; 77 MatRegisterAllCalled = PETSC_TRUE; 78 79 ierr = MatRegisterDynamic(MATMPIMAIJ, path,"MatCreate_MAIJ", MatCreate_MAIJ);CHKERRQ(ierr); 80 ierr = MatRegisterDynamic(MATSEQMAIJ, path,"MatCreate_MAIJ", MatCreate_MAIJ);CHKERRQ(ierr); 81 82 ierr = MatRegisterDynamic(MATIS, path,"MatCreate_IS", MatCreate_IS);CHKERRQ(ierr); 83 ierr = MatRegisterDynamic(MATSHELL, path,"MatCreate_Shell", MatCreate_Shell);CHKERRQ(ierr); 84 #if defined(PETSC_HAVE_BLOCKSOLVE) && !defined(PETSC_USE_COMPLEX) 85 ierr = MatRegisterDynamic(MATMPIROWBS,path,"MatCreate_MPIRowbs",MatCreate_MPIRowbs);CHKERRQ(ierr); 86 #endif 87 88 ierr = MatRegisterDynamic(MATMPIAIJ, path,"MatCreate_MPIAIJ", MatCreate_MPIAIJ);CHKERRQ(ierr); 89 ierr = MatRegisterDynamic(MATSEQAIJ, path,"MatCreate_SeqAIJ", MatCreate_SeqAIJ);CHKERRQ(ierr); 90 91 ierr = MatRegisterDynamic(MATMPIBAIJ, path,"MatCreate_MPIBAIJ", MatCreate_MPIBAIJ);CHKERRQ(ierr); 92 ierr = MatRegisterDynamic(MATSEQBAIJ, path,"MatCreate_SeqBAIJ", MatCreate_SeqBAIJ);CHKERRQ(ierr); 93 94 ierr = MatRegisterDynamic(MATMPISBAIJ, path,"MatCreate_MPISBAIJ", MatCreate_MPISBAIJ);CHKERRQ(ierr); 95 ierr = MatRegisterDynamic(MATSEQSBAIJ, path,"MatCreate_SeqSBAIJ", MatCreate_SeqSBAIJ);CHKERRQ(ierr); 96 97 ierr = MatRegisterDynamic(MATMPIBDIAG, path,"MatCreate_MPIBDiag", MatCreate_MPIBDiag);CHKERRQ(ierr); 98 ierr = MatRegisterDynamic(MATSEQBDIAG, path,"MatCreate_SeqBDiag", MatCreate_SeqBDiag);CHKERRQ(ierr); 99 100 ierr = MatRegisterDynamic(MATMPIDENSE, path,"MatCreate_MPIDense", MatCreate_MPIDense);CHKERRQ(ierr); 101 ierr = MatRegisterDynamic(MATSEQDENSE, path,"MatCreate_SeqDense", MatCreate_SeqDense);CHKERRQ(ierr); 102 103 ierr = MatRegisterDynamic(MATMPIADJ, path,"MatCreate_MPIAdj", MatCreate_MPIAdj);CHKERRQ(ierr); 104 #if defined(__cplusplus) && !defined(PETSC_USE_COMPLEX) && !defined(PETSC_USE_SINGLE) && defined(PETSC_HAVE_CXX_NAMESPACE) 105 ierr = MatRegisterDynamic(MATESI, path,"MatCreate_ESI", MatCreate_ESI);CHKERRQ(ierr); 106 ierr = MatRegisterDynamic(MATPETSCESI, path,"MatCreate_PetscESI", MatCreate_PetscESI);CHKERRQ(ierr); 107 #endif 108 #if defined(PETSC_HAVE_SPOOLES) && !defined(PETSC_USE_SINGLE) 109 ierr = MatRegisterDynamic(MATSEQAIJSPOOLES, path,"MatCreate_SeqAIJ_Spooles", MatCreate_SeqAIJ_Spooles);CHKERRQ(ierr); 110 ierr = MatRegisterDynamic(MATSEQSBAIJSPOOLES,path,"MatCreate_SeqSBAIJ_Spooles",MatCreate_SeqSBAIJ_Spooles);CHKERRQ(ierr); 111 ierr = MatRegisterDynamic(MATMPIAIJSPOOLES, path,"MatCreate_MPIAIJ_Spooles", MatCreate_MPIAIJ_Spooles);CHKERRQ(ierr); 112 ierr = MatRegisterDynamic(MATMPISBAIJSPOOLES,path,"MatCreate_MPISBAIJ_Spooles",MatCreate_MPISBAIJ_Spooles);CHKERRQ(ierr); 113 #endif 114 #if defined(PETSC_HAVE_SUPERLU) && !defined(PETSC_USE_SINGLE) 115 ierr = MatRegisterDynamic(MATSUPERLU,path,"MatCreate_SeqAIJ_SuperLU",MatCreate_SeqAIJ_SuperLU);CHKERRQ(ierr); 116 #endif 117 #if defined(PETSC_HAVE_SUPERLUDIST) && !defined(PETSC_USE_SINGLE) 118 ierr = MatRegisterDynamic(MATSUPERLU_DIST,path,"MatCreate_MPIAIJ_SuperLU_DIST",MatCreate_MPIAIJ_SuperLU_DIST);CHKERRQ(ierr); 119 #endif 120 #if defined(PETSC_HAVE_UMFPACK) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX) 121 ierr = MatRegisterDynamic(MATUMFPACK,path,"MatCreate_SeqAIJ_UMFPACK",MatCreate_SeqAIJ_UMFPACK);CHKERRQ(ierr); 122 #endif 123 #if defined(PETSC_HAVE_ESSL) && !defined(__cplusplus) 124 ierr = MatRegisterDynamic(MATESSL,path,"MatCreate_SeqAIJ_Essl",MatCreate_SeqAIJ_Essl);CHKERRQ(ierr); 125 #endif 126 #if defined(PETSC_HAVE_LUSOL) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX) 127 ierr = MatRegisterDynamic(MATLUSOL,path,"MatCreate_SeqAIJ_LUSOL",MatCreate_SeqAIJ_LUSOL);CHKERRQ(ierr); 128 #endif 129 #if defined(PETSC_HAVE_MUMPS) && !defined(PETSC_USE_SINGLE) 130 ierr = MatRegisterDynamic(MATAIJMUMPS, path,"MatCreate_AIJ_MUMPS",MatCreate_AIJ_MUMPS);CHKERRQ(ierr); 131 ierr = MatRegisterDynamic(MATSBAIJMUMPS,path,"MatCreate_SBAIJ_MUMPS",MatCreate_SBAIJ_MUMPS);CHKERRQ(ierr); 132 #endif 133 PetscFunctionReturn(0); 134 } 135 136 137