xref: /petsc/src/mat/interface/matregis.c (revision d72ddd2aff95d5d19347ed35509056eaf052125a)
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
371677d0b8SKris Buschelman #if defined(PETSC_HAVE_UMFPACK) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
381677d0b8SKris Buschelman EXTERN int MatCreate_SeqAIJ_UMFPACK(Mat);
391677d0b8SKris Buschelman #endif
40e8aa55a4SKris Buschelman #if defined(PETSC_HAVE_ESSL) && !defined(__cplusplus)
41e8aa55a4SKris Buschelman EXTERN int MatCreate_SeqAIJ_Essl(Mat);
42e8aa55a4SKris Buschelman #endif
434eb8e494SKris Buschelman #if defined(PETSC_HAVE_LUSOL) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
444eb8e494SKris Buschelman EXTERN int MatCreate_SeqAIJ_LUSOL(Mat);
454eb8e494SKris Buschelman #endif
46397b6df1SKris Buschelman #if defined(PETSC_HAVE_MUMPS) && !defined(PETSC_USE_SINGLE)
47397b6df1SKris Buschelman EXTERN int MatCreate_AIJ_MUMPS(Mat);
48397b6df1SKris Buschelman EXTERN int MatCreate_SBAIJ_MUMPS(Mat);
49397b6df1SKris Buschelman #endif
508a95e4e9SBarry Smith EXTERN_C_END
518a95e4e9SBarry Smith 
528a95e4e9SBarry Smith /*
53f7cf7585SBarry Smith     This is used by MatSetType() to make sure that at least one
54f7cf7585SBarry Smith     MatRegisterAll() is called. In general, if there is more than one
55f7cf7585SBarry Smith     DLL, then MatRegisterAll() may be called several times.
568a95e4e9SBarry Smith */
57f7cf7585SBarry Smith EXTERN PetscTruth MatRegisterAllCalled;
588a95e4e9SBarry Smith 
594a2ae208SSatish Balay #undef __FUNCT__
604a2ae208SSatish Balay #define __FUNCT__ "MatRegisterAll"
618a95e4e9SBarry Smith /*@C
62f7cf7585SBarry Smith   MatRegisterAll - Registers all of the matrix types in PETSc
638a95e4e9SBarry Smith 
648a95e4e9SBarry Smith   Not Collective
658a95e4e9SBarry Smith 
668a95e4e9SBarry Smith   Level: advanced
678a95e4e9SBarry Smith 
688a95e4e9SBarry Smith .keywords: KSP, register, all
698a95e4e9SBarry Smith 
70f7cf7585SBarry Smith .seealso:  MatRegisterDestroy()
718a95e4e9SBarry Smith @*/
72f7cf7585SBarry Smith int MatRegisterAll(char *path)
738a95e4e9SBarry Smith {
748a95e4e9SBarry Smith   int ierr;
758a95e4e9SBarry Smith 
768a95e4e9SBarry Smith   PetscFunctionBegin;
77f7cf7585SBarry Smith   MatRegisterAllCalled = PETSC_TRUE;
788a95e4e9SBarry Smith 
79f7cf7585SBarry Smith   ierr = MatRegisterDynamic(MATMPIMAIJ, path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
80b9b97703SBarry Smith   ierr = MatRegisterDynamic(MATSEQMAIJ, path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
81273d9f13SBarry Smith 
82186905e3SBarry Smith   ierr = MatRegisterDynamic(MATIS,      path,"MatCreate_IS",      MatCreate_IS);CHKERRQ(ierr);
83273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSHELL,   path,"MatCreate_Shell",   MatCreate_Shell);CHKERRQ(ierr);
845d10bc3aSBarry Smith #if defined(PETSC_HAVE_BLOCKSOLVE) && !defined(PETSC_USE_COMPLEX)
85273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIROWBS,path,"MatCreate_MPIRowbs",MatCreate_MPIRowbs);CHKERRQ(ierr);
86273d9f13SBarry Smith #endif
87273d9f13SBarry Smith 
88273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJ,  path,"MatCreate_MPIAIJ",  MatCreate_MPIAIJ);CHKERRQ(ierr);
89273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJ,  path,"MatCreate_SeqAIJ",  MatCreate_SeqAIJ);CHKERRQ(ierr);
90273d9f13SBarry Smith 
91273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIBAIJ,  path,"MatCreate_MPIBAIJ",  MatCreate_MPIBAIJ);CHKERRQ(ierr);
92273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQBAIJ,  path,"MatCreate_SeqBAIJ",  MatCreate_SeqBAIJ);CHKERRQ(ierr);
93273d9f13SBarry Smith 
94273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPISBAIJ,  path,"MatCreate_MPISBAIJ",  MatCreate_MPISBAIJ);CHKERRQ(ierr);
95273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQSBAIJ,  path,"MatCreate_SeqSBAIJ",  MatCreate_SeqSBAIJ);CHKERRQ(ierr);
96273d9f13SBarry Smith 
97273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIBDIAG,  path,"MatCreate_MPIBDiag",  MatCreate_MPIBDiag);CHKERRQ(ierr);
98273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQBDIAG,  path,"MatCreate_SeqBDiag",  MatCreate_SeqBDiag);CHKERRQ(ierr);
99273d9f13SBarry Smith 
100273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIDENSE,  path,"MatCreate_MPIDense",  MatCreate_MPIDense);CHKERRQ(ierr);
101273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQDENSE,  path,"MatCreate_SeqDense",  MatCreate_SeqDense);CHKERRQ(ierr);
102273d9f13SBarry Smith 
103273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIADJ,    path,"MatCreate_MPIAdj",    MatCreate_MPIAdj);CHKERRQ(ierr);
104c7cd70f7SSatish Balay #if defined(__cplusplus) && !defined(PETSC_USE_COMPLEX) && !defined(PETSC_USE_SINGLE) && defined(PETSC_HAVE_CXX_NAMESPACE)
1056d88219bSBarry Smith   ierr = MatRegisterDynamic(MATESI,       path,"MatCreate_ESI",    MatCreate_ESI);CHKERRQ(ierr);
1066d88219bSBarry Smith   ierr = MatRegisterDynamic(MATPETSCESI,  path,"MatCreate_PetscESI",    MatCreate_PetscESI);CHKERRQ(ierr);
1076d88219bSBarry Smith #endif
108b3a1e11cSKris Buschelman #if defined(PETSC_HAVE_SPOOLES) && !defined(PETSC_USE_SINGLE)
109b3a1e11cSKris Buschelman   ierr = MatRegisterDynamic(MATSEQAIJSPOOLES,  path,"MatCreate_SeqAIJ_Spooles",  MatCreate_SeqAIJ_Spooles);CHKERRQ(ierr);
1109abb65ffSKris Buschelman   ierr = MatRegisterDynamic(MATSEQSBAIJSPOOLES,path,"MatCreate_SeqSBAIJ_Spooles",MatCreate_SeqSBAIJ_Spooles);CHKERRQ(ierr);
111d10c748bSKris Buschelman   ierr = MatRegisterDynamic(MATMPIAIJSPOOLES,  path,"MatCreate_MPIAIJ_Spooles",  MatCreate_MPIAIJ_Spooles);CHKERRQ(ierr);
11222191285SKris Buschelman   ierr = MatRegisterDynamic(MATMPISBAIJSPOOLES,path,"MatCreate_MPISBAIJ_Spooles",MatCreate_MPISBAIJ_Spooles);CHKERRQ(ierr);
113b3a1e11cSKris Buschelman #endif
11414b396bbSKris Buschelman #if defined(PETSC_HAVE_SUPERLU) && !defined(PETSC_USE_SINGLE)
11514b396bbSKris Buschelman   ierr = MatRegisterDynamic(MATSUPERLU,path,"MatCreate_SeqAIJ_SuperLU",MatCreate_SeqAIJ_SuperLU);CHKERRQ(ierr);
11614b396bbSKris Buschelman #endif
117448de63eSKris Buschelman #if defined(PETSC_HAVE_SUPERLUDIST) && !defined(PETSC_USE_SINGLE)
118*d72ddd2aSKris Buschelman   ierr = MatRegisterDynamic(MATSUPERLU_DIST,path,"MatCreate_MPIAIJ_SuperLU_DIST",MatCreate_MPIAIJ_SuperLU_DIST);CHKERRQ(ierr);
119448de63eSKris Buschelman #endif
1201677d0b8SKris Buschelman #if defined(PETSC_HAVE_UMFPACK) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
1211677d0b8SKris Buschelman   ierr = MatRegisterDynamic(MATUMFPACK,path,"MatCreate_SeqAIJ_UMFPACK",MatCreate_SeqAIJ_UMFPACK);CHKERRQ(ierr);
1221677d0b8SKris Buschelman #endif
123e8aa55a4SKris Buschelman #if defined(PETSC_HAVE_ESSL) && !defined(__cplusplus)
124e8aa55a4SKris Buschelman   ierr = MatRegisterDynamic(MATESSL,path,"MatCreate_SeqAIJ_Essl",MatCreate_SeqAIJ_Essl);CHKERRQ(ierr);
125e8aa55a4SKris Buschelman #endif
1264eb8e494SKris Buschelman #if defined(PETSC_HAVE_LUSOL) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_COMPLEX)
1274eb8e494SKris Buschelman   ierr = MatRegisterDynamic(MATLUSOL,path,"MatCreate_SeqAIJ_LUSOL",MatCreate_SeqAIJ_LUSOL);CHKERRQ(ierr);
1284eb8e494SKris Buschelman #endif
129397b6df1SKris Buschelman #if defined(PETSC_HAVE_MUMPS) && !defined(PETSC_USE_SINGLE)
130397b6df1SKris Buschelman   ierr = MatRegisterDynamic(MATAIJMUMPS,  path,"MatCreate_AIJ_MUMPS",MatCreate_AIJ_MUMPS);CHKERRQ(ierr);
131397b6df1SKris Buschelman   ierr = MatRegisterDynamic(MATSBAIJMUMPS,path,"MatCreate_SBAIJ_MUMPS",MatCreate_SBAIJ_MUMPS);CHKERRQ(ierr);
132397b6df1SKris Buschelman #endif
1338a95e4e9SBarry Smith   PetscFunctionReturn(0);
1348a95e4e9SBarry Smith }
135f7cf7585SBarry Smith 
1363a7fca6bSBarry Smith 
137