xref: /petsc/src/mat/interface/matregis.c (revision 814655b831001cc2c5390a0269bf1b7bc476caca)
1be1d678aSKris Buschelman #define PETSCMAT_DLL
28a95e4e9SBarry Smith 
3f7cf7585SBarry Smith #include "petscmat.h"  /*I "petscmat.h" I*/
48a95e4e9SBarry Smith 
58a95e4e9SBarry Smith EXTERN_C_BEGIN
6be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MAIJ(Mat);
7be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_IS(Mat);
8be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPIRowbs(Mat);
9be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SeqAIJ(Mat);
10be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPIAIJ(Mat);
11be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_AIJ(Mat);
12be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SeqBAIJ(Mat);
13be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPIBAIJ(Mat);
14be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_BAIJ(Mat);
15be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SeqSBAIJ(Mat);
16be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPISBAIJ(Mat);
17be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SBAIJ(Mat);
18be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SeqBDiag(Mat);
19be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPIBDiag(Mat);
20be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_BDiag(Mat);
21be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SeqDense(Mat);
22be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPIDense(Mat);
23be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_Dense(Mat);
24be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPIAdj(Mat);
25be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_Shell(Mat);
2620f673eaSBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SeqCSRPERM(Mat);
2720f673eaSBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPICSRPERM(Mat);
28*814655b8SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_CSRPERM(Mat);
292515c552SBarry Smith #if defined(PETSC_HAVE_SPOOLES)
30be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SeqAIJSpooles(Mat);
31be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SeqSBAIJSpooles(Mat);
32be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPIAIJSpooles(Mat);
33be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPISBAIJSpooles(Mat);
34be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_AIJSpooles(Mat);
35be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SBAIJSpooles(Mat);
36b3a1e11cSKris Buschelman #endif
372515c552SBarry Smith #if defined(PETSC_HAVE_SUPERLU)
38be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SuperLU(Mat);
3914b396bbSKris Buschelman #endif
402515c552SBarry Smith #if defined(PETSC_HAVE_SUPERLU_DIST)
41be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SuperLU_DIST(Mat);
42448de63eSKris Buschelman #endif
432515c552SBarry Smith #if defined(PETSC_HAVE_UMFPACK)
44be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_UMFPACK(Mat);
451677d0b8SKris Buschelman #endif
467b43e47cSBarry Smith #if defined(PETSC_HAVE_ESSL) && !defined(PETSC_USE_COMPLEX)
47be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_Essl(Mat);
48e8aa55a4SKris Buschelman #endif
492515c552SBarry Smith #if defined(PETSC_HAVE_LUSOL)
50be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_LUSOL(Mat);
514eb8e494SKris Buschelman #endif
522515c552SBarry Smith #if defined(PETSC_HAVE_MUMPS)
53be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_AIJMUMPS(Mat);
54be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SBAIJMUMPS(Mat);
55397b6df1SKris Buschelman #endif
562515c552SBarry Smith #if defined(PETSC_HAVE_DSCPACK)
57be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_DSCPACK(Mat);
588da957c5SKris Buschelman #endif
592515c552SBarry Smith #if defined(PETSC_HAVE_MATLAB)
60be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_Matlab(Mat);
617065e2aaSKris Buschelman #endif
628a95e4e9SBarry Smith EXTERN_C_END
638a95e4e9SBarry Smith 
648a95e4e9SBarry Smith /*
65f7cf7585SBarry Smith     This is used by MatSetType() to make sure that at least one
66f7cf7585SBarry Smith     MatRegisterAll() is called. In general, if there is more than one
67f7cf7585SBarry Smith     DLL, then MatRegisterAll() may be called several times.
688a95e4e9SBarry Smith */
69f7cf7585SBarry Smith EXTERN PetscTruth MatRegisterAllCalled;
708a95e4e9SBarry Smith 
714a2ae208SSatish Balay #undef __FUNCT__
724a2ae208SSatish Balay #define __FUNCT__ "MatRegisterAll"
738a95e4e9SBarry Smith /*@C
74f7cf7585SBarry Smith   MatRegisterAll - Registers all of the matrix types in PETSc
758a95e4e9SBarry Smith 
768a95e4e9SBarry Smith   Not Collective
778a95e4e9SBarry Smith 
788a95e4e9SBarry Smith   Level: advanced
798a95e4e9SBarry Smith 
808a95e4e9SBarry Smith .keywords: KSP, register, all
818a95e4e9SBarry Smith 
82f7cf7585SBarry Smith .seealso:  MatRegisterDestroy()
838a95e4e9SBarry Smith @*/
84be1d678aSKris Buschelman PetscErrorCode PETSCMAT_DLLEXPORT MatRegisterAll(const char path[])
858a95e4e9SBarry Smith {
86dfbe8321SBarry Smith   PetscErrorCode ierr;
878a95e4e9SBarry Smith 
888a95e4e9SBarry Smith   PetscFunctionBegin;
89f7cf7585SBarry Smith   MatRegisterAllCalled = PETSC_TRUE;
908a95e4e9SBarry Smith 
91f7cf7585SBarry Smith   ierr = MatRegisterDynamic(MATMPIMAIJ, path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
92b9b97703SBarry Smith   ierr = MatRegisterDynamic(MATSEQMAIJ, path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
93209238afSKris Buschelman   ierr = MatRegisterDynamic(MATMAIJ,    path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
94273d9f13SBarry Smith 
95186905e3SBarry Smith   ierr = MatRegisterDynamic(MATIS,      path,"MatCreate_IS",      MatCreate_IS);CHKERRQ(ierr);
96273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSHELL,   path,"MatCreate_Shell",   MatCreate_Shell);CHKERRQ(ierr);
972515c552SBarry Smith #if defined(PETSC_HAVE_BLOCKSOLVE)
98273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIROWBS,path,"MatCreate_MPIRowbs",MatCreate_MPIRowbs);CHKERRQ(ierr);
99273d9f13SBarry Smith #endif
100273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJ,  path,"MatCreate_MPIAIJ",      MatCreate_MPIAIJ);CHKERRQ(ierr);
101273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJ,  path,"MatCreate_SeqAIJ",      MatCreate_SeqAIJ);CHKERRQ(ierr);
102*814655b8SBarry Smith   ierr = MatRegisterDynamic(MATCSRPERM,  path,"MatCreate_CSRPERM",  MatCreate_CSRPERM);CHKERRQ(ierr);
103381ac109SSatish Balay   ierr = MatRegisterDynamic(MATMPICSRPERM,  path,"MatCreate_MPICSRPERM",  MatCreate_MPICSRPERM);CHKERRQ(ierr);
104381ac109SSatish Balay   ierr = MatRegisterDynamic(MATSEQCSRPERM,  path,"MatCreate_SeqCSRPERM",  MatCreate_SeqCSRPERM);CHKERRQ(ierr);
105209238afSKris Buschelman   ierr = MatRegisterDynamic(MATAIJ,     path,"MatCreate_AIJ",         MatCreate_AIJ);CHKERRQ(ierr);
106273d9f13SBarry Smith 
107273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIBAIJ,  path,"MatCreate_MPIBAIJ",    MatCreate_MPIBAIJ);CHKERRQ(ierr);
108273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQBAIJ,  path,"MatCreate_SeqBAIJ",    MatCreate_SeqBAIJ);CHKERRQ(ierr);
109209238afSKris Buschelman   ierr = MatRegisterDynamic(MATBAIJ,     path,"MatCreate_BAIJ",       MatCreate_BAIJ);CHKERRQ(ierr);
110273d9f13SBarry Smith 
111273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPISBAIJ,  path,"MatCreate_MPISBAIJ",  MatCreate_MPISBAIJ);CHKERRQ(ierr);
112273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQSBAIJ,  path,"MatCreate_SeqSBAIJ",  MatCreate_SeqSBAIJ);CHKERRQ(ierr);
113209238afSKris Buschelman   ierr = MatRegisterDynamic(MATSBAIJ,     path,"MatCreate_SBAIJ",     MatCreate_SBAIJ);CHKERRQ(ierr);
114273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIBDIAG,  path,"MatCreate_MPIBDiag",  MatCreate_MPIBDiag);CHKERRQ(ierr);
115273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQBDIAG,  path,"MatCreate_SeqBDiag",  MatCreate_SeqBDiag);CHKERRQ(ierr);
116209238afSKris Buschelman   ierr = MatRegisterDynamic(MATBDIAG,     path,"MatCreate_BDiag",     MatCreate_BDiag);CHKERRQ(ierr);
117273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIDENSE,  path,"MatCreate_MPIDense",  MatCreate_MPIDense);CHKERRQ(ierr);
118273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQDENSE,  path,"MatCreate_SeqDense",  MatCreate_SeqDense);CHKERRQ(ierr);
119209238afSKris Buschelman   ierr = MatRegisterDynamic(MATDENSE,     path,"MatCreate_Dense",     MatCreate_Dense);CHKERRQ(ierr);
120273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIADJ,    path,"MatCreate_MPIAdj",    MatCreate_MPIAdj);CHKERRQ(ierr);
1212515c552SBarry Smith #if defined(PETSC_HAVE_SPOOLES)
122f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATSEQAIJSPOOLES,  path,"MatCreate_SeqAIJSpooles",  MatCreate_SeqAIJSpooles);CHKERRQ(ierr);
123f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATSEQSBAIJSPOOLES,path,"MatCreate_SeqSBAIJSpooles",MatCreate_SeqSBAIJSpooles);CHKERRQ(ierr);
124f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATMPIAIJSPOOLES,  path,"MatCreate_MPIAIJSpooles",  MatCreate_MPIAIJSpooles);CHKERRQ(ierr);
125f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATMPISBAIJSPOOLES,path,"MatCreate_MPISBAIJSpooles",MatCreate_MPISBAIJSpooles);CHKERRQ(ierr);
126bb4d4166SHong Zhang   ierr = MatRegisterDynamic(MATAIJSPOOLES,     path,"MatCreate_AIJSpooles",     MatCreate_AIJSpooles);CHKERRQ(ierr);
127bb4d4166SHong Zhang   ierr = MatRegisterDynamic(MATSBAIJSPOOLES,   path,"MatCreate_SBAIJSpooles",   MatCreate_SBAIJSpooles);CHKERRQ(ierr);
128b3a1e11cSKris Buschelman #endif
1292515c552SBarry Smith #if defined(PETSC_HAVE_SUPERLU)
130f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATSUPERLU,path,"MatCreate_SuperLU",MatCreate_SuperLU);CHKERRQ(ierr);
13114b396bbSKris Buschelman #endif
1322515c552SBarry Smith #if defined(PETSC_HAVE_SUPERLU_DIST)
133f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATSUPERLU_DIST,path,"MatCreate_SuperLU_DIST",MatCreate_SuperLU_DIST);CHKERRQ(ierr);
134448de63eSKris Buschelman #endif
1352515c552SBarry Smith #if defined(PETSC_HAVE_UMFPACK)
136f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATUMFPACK,path,"MatCreate_UMFPACK",MatCreate_UMFPACK);CHKERRQ(ierr);
1371677d0b8SKris Buschelman #endif
1387b43e47cSBarry Smith #if defined(PETSC_HAVE_ESSL) && !defined(PETSC_USE_COMPLEX)
139f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATESSL,path,"MatCreate_Essl",MatCreate_Essl);CHKERRQ(ierr);
140e8aa55a4SKris Buschelman #endif
1412515c552SBarry Smith #if defined(PETSC_HAVE_LUSOL)
142f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATLUSOL,path,"MatCreate_LUSOL",MatCreate_LUSOL);CHKERRQ(ierr);
1434eb8e494SKris Buschelman #endif
1442515c552SBarry Smith #if defined(PETSC_HAVE_MUMPS)
145123bf89aSSatish Balay   ierr = MatRegisterDynamic(MATAIJMUMPS,  path,"MatCreate_AIJMUMPS",MatCreate_AIJMUMPS);CHKERRQ(ierr);
146123bf89aSSatish Balay   ierr = MatRegisterDynamic(MATSBAIJMUMPS,path,"MatCreate_SBAIJMUMPS",MatCreate_SBAIJMUMPS);CHKERRQ(ierr);
147397b6df1SKris Buschelman #endif
1482515c552SBarry Smith #if defined(PETSC_HAVE_DSCPACK)
149f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATDSCPACK,path,"MatCreate_DSCPACK",MatCreate_DSCPACK);CHKERRQ(ierr);
1508da957c5SKris Buschelman #endif
1512515c552SBarry Smith #if defined(PETSC_HAVE_MATLAB)
1527065e2aaSKris Buschelman   ierr = MatRegisterDynamic(MATMATLAB,path,"MatCreate_Matlab",MatCreate_Matlab);CHKERRQ(ierr);
1537065e2aaSKris Buschelman #endif
1548a95e4e9SBarry Smith   PetscFunctionReturn(0);
1558a95e4e9SBarry Smith }
156f7cf7585SBarry Smith 
1573a7fca6bSBarry Smith 
158