xref: /petsc/src/mat/interface/matregis.c (revision 1677d0b88caff045fb399525ae6e8dad78c032c0)
173f4d377SMatthew Knepley /*$Id: matregis.c,v 1.10 2001/06/21 21:16:17 bsmith Exp $*/
28a95e4e9SBarry Smith 
3f7cf7585SBarry Smith #include "petscmat.h"  /*I "petscmat.h" I*/
48a95e4e9SBarry Smith 
58a95e4e9SBarry Smith EXTERN_C_BEGIN
6f7cf7585SBarry Smith EXTERN int MatCreate_MAIJ(Mat);
7186905e3SBarry Smith EXTERN int MatCreate_IS(Mat);
8273d9f13SBarry Smith EXTERN int MatCreate_MPIRowbs(Mat);
9273d9f13SBarry Smith EXTERN int MatCreate_SeqAIJ(Mat);
10273d9f13SBarry Smith EXTERN int MatCreate_MPIAIJ(Mat);
11273d9f13SBarry Smith EXTERN int MatCreate_SeqBAIJ(Mat);
12273d9f13SBarry Smith EXTERN int MatCreate_MPIBAIJ(Mat);
13273d9f13SBarry Smith EXTERN int MatCreate_SeqSBAIJ(Mat);
14273d9f13SBarry Smith EXTERN int MatCreate_MPISBAIJ(Mat);
15273d9f13SBarry Smith EXTERN int MatCreate_SeqBDiag(Mat);
16273d9f13SBarry Smith EXTERN int MatCreate_MPIBDiag(Mat);
17273d9f13SBarry Smith EXTERN int MatCreate_SeqDense(Mat);
18273d9f13SBarry Smith EXTERN int MatCreate_MPIDense(Mat);
19273d9f13SBarry Smith EXTERN int MatCreate_MPIAdj(Mat);
20273d9f13SBarry Smith EXTERN int MatCreate_Shell(Mat);
21064f8208SBarry Smith #if defined(__cplusplus)
226d88219bSBarry Smith EXTERN int MatCreate_ESI(Mat);
236d88219bSBarry Smith EXTERN int MatCreate_PetscESI(Mat);
246d88219bSBarry Smith #endif
25b3a1e11cSKris Buschelman #if defined(PETSC_HAVE_SPOOLES) && !defined(PETSC_USE_SINGLE)
26b3a1e11cSKris Buschelman EXTERN int MatCreate_SeqAIJ_Spooles(Mat);
279abb65ffSKris Buschelman EXTERN int MatCreate_SeqSBAIJ_Spooles(Mat);
28d10c748bSKris Buschelman EXTERN int MatCreate_MPIAIJ_Spooles(Mat);
2922191285SKris Buschelman EXTERN int MatCreate_MPISBAIJ_Spooles(Mat);
30b3a1e11cSKris Buschelman #endif
3114b396bbSKris Buschelman #if defined(PETSC_HAVE_SUPERLU) && !defined(PETSC_USE_SINGLE)
32e740cb95SKris Buschelman EXTERN int MatCreate_SeqAIJ_SuperLU(Mat);
3314b396bbSKris Buschelman #endif
34448de63eSKris Buschelman #if defined(PETSC_HAVE_SUPERLUDIST) && !defined(PETSC_USE_SINGLE)
35448de63eSKris Buschelman EXTERN int MatCreate_MPIAIJ_SuperLU_DIST(Mat);
36448de63eSKris Buschelman #endif
37*1677d0b8SKris Buschelman #if defined(PETSC_HAVE_UMFPACK) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
38*1677d0b8SKris Buschelman EXTERN int MatCreate_SeqAIJ_UMFPACK(Mat);
39*1677d0b8SKris Buschelman #endif
408a95e4e9SBarry Smith EXTERN_C_END
418a95e4e9SBarry Smith 
428a95e4e9SBarry Smith /*
43f7cf7585SBarry Smith     This is used by MatSetType() to make sure that at least one
44f7cf7585SBarry Smith     MatRegisterAll() is called. In general, if there is more than one
45f7cf7585SBarry Smith     DLL, then MatRegisterAll() may be called several times.
468a95e4e9SBarry Smith */
47f7cf7585SBarry Smith EXTERN PetscTruth MatRegisterAllCalled;
488a95e4e9SBarry Smith 
494a2ae208SSatish Balay #undef __FUNCT__
504a2ae208SSatish Balay #define __FUNCT__ "MatRegisterAll"
518a95e4e9SBarry Smith /*@C
52f7cf7585SBarry Smith   MatRegisterAll - Registers all of the matrix types in PETSc
538a95e4e9SBarry Smith 
548a95e4e9SBarry Smith   Not Collective
558a95e4e9SBarry Smith 
568a95e4e9SBarry Smith   Level: advanced
578a95e4e9SBarry Smith 
588a95e4e9SBarry Smith .keywords: KSP, register, all
598a95e4e9SBarry Smith 
60f7cf7585SBarry Smith .seealso:  MatRegisterDestroy()
618a95e4e9SBarry Smith @*/
62f7cf7585SBarry Smith int MatRegisterAll(char *path)
638a95e4e9SBarry Smith {
648a95e4e9SBarry Smith   int ierr;
658a95e4e9SBarry Smith 
668a95e4e9SBarry Smith   PetscFunctionBegin;
67f7cf7585SBarry Smith   MatRegisterAllCalled = PETSC_TRUE;
688a95e4e9SBarry Smith 
69f7cf7585SBarry Smith   ierr = MatRegisterDynamic(MATMPIMAIJ, path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
70b9b97703SBarry Smith   ierr = MatRegisterDynamic(MATSEQMAIJ, path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
71273d9f13SBarry Smith 
72186905e3SBarry Smith   ierr = MatRegisterDynamic(MATIS,      path,"MatCreate_IS",      MatCreate_IS);CHKERRQ(ierr);
73273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSHELL,   path,"MatCreate_Shell",   MatCreate_Shell);CHKERRQ(ierr);
745d10bc3aSBarry Smith #if defined(PETSC_HAVE_BLOCKSOLVE) && !defined(PETSC_USE_COMPLEX)
75273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIROWBS,path,"MatCreate_MPIRowbs",MatCreate_MPIRowbs);CHKERRQ(ierr);
76273d9f13SBarry Smith #endif
77273d9f13SBarry Smith 
78273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJ,  path,"MatCreate_MPIAIJ",  MatCreate_MPIAIJ);CHKERRQ(ierr);
79273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJ,  path,"MatCreate_SeqAIJ",  MatCreate_SeqAIJ);CHKERRQ(ierr);
80273d9f13SBarry Smith 
81273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIBAIJ,  path,"MatCreate_MPIBAIJ",  MatCreate_MPIBAIJ);CHKERRQ(ierr);
82273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQBAIJ,  path,"MatCreate_SeqBAIJ",  MatCreate_SeqBAIJ);CHKERRQ(ierr);
83273d9f13SBarry Smith 
84273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPISBAIJ,  path,"MatCreate_MPISBAIJ",  MatCreate_MPISBAIJ);CHKERRQ(ierr);
85273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQSBAIJ,  path,"MatCreate_SeqSBAIJ",  MatCreate_SeqSBAIJ);CHKERRQ(ierr);
86273d9f13SBarry Smith 
87273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIBDIAG,  path,"MatCreate_MPIBDiag",  MatCreate_MPIBDiag);CHKERRQ(ierr);
88273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQBDIAG,  path,"MatCreate_SeqBDiag",  MatCreate_SeqBDiag);CHKERRQ(ierr);
89273d9f13SBarry Smith 
90273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIDENSE,  path,"MatCreate_MPIDense",  MatCreate_MPIDense);CHKERRQ(ierr);
91273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQDENSE,  path,"MatCreate_SeqDense",  MatCreate_SeqDense);CHKERRQ(ierr);
92273d9f13SBarry Smith 
93273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIADJ,    path,"MatCreate_MPIAdj",    MatCreate_MPIAdj);CHKERRQ(ierr);
94c7cd70f7SSatish Balay #if defined(__cplusplus) && !defined(PETSC_USE_COMPLEX) && !defined(PETSC_USE_SINGLE) && defined(PETSC_HAVE_CXX_NAMESPACE)
956d88219bSBarry Smith   ierr = MatRegisterDynamic(MATESI,       path,"MatCreate_ESI",    MatCreate_ESI);CHKERRQ(ierr);
966d88219bSBarry Smith   ierr = MatRegisterDynamic(MATPETSCESI,  path,"MatCreate_PetscESI",    MatCreate_PetscESI);CHKERRQ(ierr);
976d88219bSBarry Smith #endif
98b3a1e11cSKris Buschelman #if defined(PETSC_HAVE_SPOOLES) && !defined(PETSC_USE_SINGLE)
99b3a1e11cSKris Buschelman   ierr = MatRegisterDynamic(MATSEQAIJSPOOLES,  path,"MatCreate_SeqAIJ_Spooles",  MatCreate_SeqAIJ_Spooles);CHKERRQ(ierr);
1009abb65ffSKris Buschelman   ierr = MatRegisterDynamic(MATSEQSBAIJSPOOLES,path,"MatCreate_SeqSBAIJ_Spooles",MatCreate_SeqSBAIJ_Spooles);CHKERRQ(ierr);
101d10c748bSKris Buschelman   ierr = MatRegisterDynamic(MATMPIAIJSPOOLES,  path,"MatCreate_MPIAIJ_Spooles",  MatCreate_MPIAIJ_Spooles);CHKERRQ(ierr);
10222191285SKris Buschelman   ierr = MatRegisterDynamic(MATMPISBAIJSPOOLES,path,"MatCreate_MPISBAIJ_Spooles",MatCreate_MPISBAIJ_Spooles);CHKERRQ(ierr);
103b3a1e11cSKris Buschelman #endif
10414b396bbSKris Buschelman #if defined(PETSC_HAVE_SUPERLU) && !defined(PETSC_USE_SINGLE)
10514b396bbSKris Buschelman   ierr = MatRegisterDynamic(MATSUPERLU,path,"MatCreate_SeqAIJ_SuperLU",MatCreate_SeqAIJ_SuperLU);CHKERRQ(ierr);
10614b396bbSKris Buschelman #endif
107448de63eSKris Buschelman #if defined(PETSC_HAVE_SUPERLUDIST) && !defined(PETSC_USE_SINGLE)
108448de63eSKris Buschelman   ierr = MatRegisterDynamic(MATSUPERLUDIST,path,"MatCreate_MPIAIJ_SuperLU_DIST",MatCreate_MPIAIJ_SuperLU_DIST);CHKERRQ(ierr);
109448de63eSKris Buschelman #endif
110*1677d0b8SKris Buschelman #if defined(PETSC_HAVE_UMFPACK) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
111*1677d0b8SKris Buschelman   ierr = MatRegisterDynamic(MATUMFPACK,path,"MatCreate_SeqAIJ_UMFPACK",MatCreate_SeqAIJ_UMFPACK);CHKERRQ(ierr);
112*1677d0b8SKris Buschelman #endif
1138a95e4e9SBarry Smith   PetscFunctionReturn(0);
1148a95e4e9SBarry Smith }
115f7cf7585SBarry Smith 
1163a7fca6bSBarry Smith 
117