xref: /petsc/src/mat/interface/matregis.c (revision f0c56d0f2c3a1036b3a8d7b2afc38648c23a998b)
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)
26*f0c56d0fSKris Buschelman EXTERN int MatCreate_SeqAIJSpooles(Mat);
27*f0c56d0fSKris Buschelman EXTERN int MatCreate_SeqSBAIJSpooles(Mat);
28*f0c56d0fSKris Buschelman EXTERN int MatCreate_MPIAIJSpooles(Mat);
29*f0c56d0fSKris Buschelman EXTERN int MatCreate_MPISBAIJSpooles(Mat);
30b3a1e11cSKris Buschelman #endif
3114b396bbSKris Buschelman #if defined(PETSC_HAVE_SUPERLU) && !defined(PETSC_USE_SINGLE)
32*f0c56d0fSKris Buschelman EXTERN int MatCreate_SuperLU(Mat);
3314b396bbSKris Buschelman #endif
34618c6428SHong Zhang #if defined(PETSC_HAVE_SUPERLU_DIST) && !defined(PETSC_USE_SINGLE)
35*f0c56d0fSKris Buschelman EXTERN int MatCreate_SuperLU_DIST(Mat);
36448de63eSKris Buschelman #endif
371677d0b8SKris Buschelman #if defined(PETSC_HAVE_UMFPACK) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
38*f0c56d0fSKris Buschelman EXTERN int MatCreate_UMFPACK(Mat);
391677d0b8SKris Buschelman #endif
40e8aa55a4SKris Buschelman #if defined(PETSC_HAVE_ESSL) && !defined(__cplusplus)
41*f0c56d0fSKris Buschelman EXTERN int MatCreate_Essl(Mat);
42e8aa55a4SKris Buschelman #endif
434eb8e494SKris Buschelman #if defined(PETSC_HAVE_LUSOL) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
44*f0c56d0fSKris Buschelman EXTERN int MatCreate_LUSOL(Mat);
454eb8e494SKris Buschelman #endif
46397b6df1SKris Buschelman #if defined(PETSC_HAVE_MUMPS) && !defined(PETSC_USE_SINGLE)
47*f0c56d0fSKris Buschelman EXTERN int MatCreate_AIJMUMPS(Mat);
48*f0c56d0fSKris Buschelman EXTERN int MatCreate_SBAIJMUMPS(Mat);
49397b6df1SKris Buschelman #endif
508da957c5SKris Buschelman #if defined(PETSC_HAVE_DSCPACK) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
51*f0c56d0fSKris Buschelman EXTERN int MatCreate_DSCPACK(Mat);
528da957c5SKris Buschelman #endif
538a95e4e9SBarry Smith EXTERN_C_END
548a95e4e9SBarry Smith 
558a95e4e9SBarry Smith /*
56f7cf7585SBarry Smith     This is used by MatSetType() to make sure that at least one
57f7cf7585SBarry Smith     MatRegisterAll() is called. In general, if there is more than one
58f7cf7585SBarry Smith     DLL, then MatRegisterAll() may be called several times.
598a95e4e9SBarry Smith */
60f7cf7585SBarry Smith EXTERN PetscTruth MatRegisterAllCalled;
618a95e4e9SBarry Smith 
624a2ae208SSatish Balay #undef __FUNCT__
634a2ae208SSatish Balay #define __FUNCT__ "MatRegisterAll"
648a95e4e9SBarry Smith /*@C
65f7cf7585SBarry Smith   MatRegisterAll - Registers all of the matrix types in PETSc
668a95e4e9SBarry Smith 
678a95e4e9SBarry Smith   Not Collective
688a95e4e9SBarry Smith 
698a95e4e9SBarry Smith   Level: advanced
708a95e4e9SBarry Smith 
718a95e4e9SBarry Smith .keywords: KSP, register, all
728a95e4e9SBarry Smith 
73f7cf7585SBarry Smith .seealso:  MatRegisterDestroy()
748a95e4e9SBarry Smith @*/
75f7cf7585SBarry Smith int MatRegisterAll(char *path)
768a95e4e9SBarry Smith {
778a95e4e9SBarry Smith   int ierr;
788a95e4e9SBarry Smith 
798a95e4e9SBarry Smith   PetscFunctionBegin;
80f7cf7585SBarry Smith   MatRegisterAllCalled = PETSC_TRUE;
818a95e4e9SBarry Smith 
82f7cf7585SBarry Smith   ierr = MatRegisterDynamic(MATMPIMAIJ, path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
83b9b97703SBarry Smith   ierr = MatRegisterDynamic(MATSEQMAIJ, path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
84273d9f13SBarry Smith 
85186905e3SBarry Smith   ierr = MatRegisterDynamic(MATIS,      path,"MatCreate_IS",      MatCreate_IS);CHKERRQ(ierr);
86273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSHELL,   path,"MatCreate_Shell",   MatCreate_Shell);CHKERRQ(ierr);
875d10bc3aSBarry Smith #if defined(PETSC_HAVE_BLOCKSOLVE) && !defined(PETSC_USE_COMPLEX)
88273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIROWBS,path,"MatCreate_MPIRowbs",MatCreate_MPIRowbs);CHKERRQ(ierr);
89273d9f13SBarry Smith #endif
90273d9f13SBarry Smith 
91273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJ,  path,"MatCreate_MPIAIJ",  MatCreate_MPIAIJ);CHKERRQ(ierr);
92273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJ,  path,"MatCreate_SeqAIJ",  MatCreate_SeqAIJ);CHKERRQ(ierr);
93273d9f13SBarry Smith 
94273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIBAIJ,  path,"MatCreate_MPIBAIJ",  MatCreate_MPIBAIJ);CHKERRQ(ierr);
95273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQBAIJ,  path,"MatCreate_SeqBAIJ",  MatCreate_SeqBAIJ);CHKERRQ(ierr);
96273d9f13SBarry Smith 
97273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPISBAIJ,  path,"MatCreate_MPISBAIJ",  MatCreate_MPISBAIJ);CHKERRQ(ierr);
98273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQSBAIJ,  path,"MatCreate_SeqSBAIJ",  MatCreate_SeqSBAIJ);CHKERRQ(ierr);
99273d9f13SBarry Smith 
100273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIBDIAG,  path,"MatCreate_MPIBDiag",  MatCreate_MPIBDiag);CHKERRQ(ierr);
101273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQBDIAG,  path,"MatCreate_SeqBDiag",  MatCreate_SeqBDiag);CHKERRQ(ierr);
102273d9f13SBarry Smith 
103273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIDENSE,  path,"MatCreate_MPIDense",  MatCreate_MPIDense);CHKERRQ(ierr);
104273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQDENSE,  path,"MatCreate_SeqDense",  MatCreate_SeqDense);CHKERRQ(ierr);
105273d9f13SBarry Smith 
106273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIADJ,    path,"MatCreate_MPIAdj",    MatCreate_MPIAdj);CHKERRQ(ierr);
107c7cd70f7SSatish Balay #if defined(__cplusplus) && !defined(PETSC_USE_COMPLEX) && !defined(PETSC_USE_SINGLE) && defined(PETSC_HAVE_CXX_NAMESPACE)
1086d88219bSBarry Smith   ierr = MatRegisterDynamic(MATESI,       path,"MatCreate_ESI",    MatCreate_ESI);CHKERRQ(ierr);
1096d88219bSBarry Smith   ierr = MatRegisterDynamic(MATPETSCESI,  path,"MatCreate_PetscESI",    MatCreate_PetscESI);CHKERRQ(ierr);
1106d88219bSBarry Smith #endif
111b3a1e11cSKris Buschelman #if defined(PETSC_HAVE_SPOOLES) && !defined(PETSC_USE_SINGLE)
112*f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATSEQAIJSPOOLES,  path,"MatCreate_SeqAIJSpooles",  MatCreate_SeqAIJSpooles);CHKERRQ(ierr);
113*f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATSEQSBAIJSPOOLES,path,"MatCreate_SeqSBAIJSpooles",MatCreate_SeqSBAIJSpooles);CHKERRQ(ierr);
114*f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATMPIAIJSPOOLES,  path,"MatCreate_MPIAIJSpooles",  MatCreate_MPIAIJSpooles);CHKERRQ(ierr);
115*f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATMPISBAIJSPOOLES,path,"MatCreate_MPISBAIJSpooles",MatCreate_MPISBAIJSpooles);CHKERRQ(ierr);
116b3a1e11cSKris Buschelman #endif
11714b396bbSKris Buschelman #if defined(PETSC_HAVE_SUPERLU) && !defined(PETSC_USE_SINGLE)
118*f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATSUPERLU,path,"MatCreate_SuperLU",MatCreate_SuperLU);CHKERRQ(ierr);
11914b396bbSKris Buschelman #endif
120618c6428SHong Zhang #if defined(PETSC_HAVE_SUPERLU_DIST) && !defined(PETSC_USE_SINGLE)
121*f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATSUPERLU_DIST,path,"MatCreate_SuperLU_DIST",MatCreate_SuperLU_DIST);CHKERRQ(ierr);
122448de63eSKris Buschelman #endif
1231677d0b8SKris Buschelman #if defined(PETSC_HAVE_UMFPACK) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
124*f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATUMFPACK,path,"MatCreate_UMFPACK",MatCreate_UMFPACK);CHKERRQ(ierr);
1251677d0b8SKris Buschelman #endif
126e8aa55a4SKris Buschelman #if defined(PETSC_HAVE_ESSL) && !defined(__cplusplus)
127*f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATESSL,path,"MatCreate_Essl",MatCreate_Essl);CHKERRQ(ierr);
128e8aa55a4SKris Buschelman #endif
1294eb8e494SKris Buschelman #if defined(PETSC_HAVE_LUSOL) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
130*f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATLUSOL,path,"MatCreate_LUSOL",MatCreate_LUSOL);CHKERRQ(ierr);
1314eb8e494SKris Buschelman #endif
132397b6df1SKris Buschelman #if defined(PETSC_HAVE_MUMPS) && !defined(PETSC_USE_SINGLE)
133397b6df1SKris Buschelman   ierr = MatRegisterDynamic(MATAIJMUMPS,  path,"MatCreate_AIJ_MUMPS",MatCreate_AIJ_MUMPS);CHKERRQ(ierr);
134397b6df1SKris Buschelman   ierr = MatRegisterDynamic(MATSBAIJMUMPS,path,"MatCreate_SBAIJ_MUMPS",MatCreate_SBAIJ_MUMPS);CHKERRQ(ierr);
135397b6df1SKris Buschelman #endif
1368da957c5SKris Buschelman #if defined(PETSC_HAVE_DSCPACK) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
137*f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATDSCPACK,path,"MatCreate_DSCPACK",MatCreate_DSCPACK);CHKERRQ(ierr);
1388da957c5SKris Buschelman #endif
1398a95e4e9SBarry Smith   PetscFunctionReturn(0);
1408a95e4e9SBarry Smith }
141f7cf7585SBarry Smith 
1423a7fca6bSBarry Smith 
143