xref: /petsc/src/mat/interface/matregis.c (revision 1128540423b0e543a2d50f9645353fc1286bdec2)
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);
2781824310SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SeqCRL(Mat);
281472f72bSBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPICRL(Mat);
29*11285404SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_CRL(Mat);
3020f673eaSBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPICSRPERM(Mat);
31814655b8SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_CSRPERM(Mat);
322515c552SBarry Smith #if defined(PETSC_HAVE_SPOOLES)
33be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SeqAIJSpooles(Mat);
34be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SeqSBAIJSpooles(Mat);
35be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPIAIJSpooles(Mat);
36be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPISBAIJSpooles(Mat);
37be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_AIJSpooles(Mat);
38be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SBAIJSpooles(Mat);
39b3a1e11cSKris Buschelman #endif
402515c552SBarry Smith #if defined(PETSC_HAVE_SUPERLU)
41be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SuperLU(Mat);
4214b396bbSKris Buschelman #endif
432515c552SBarry Smith #if defined(PETSC_HAVE_SUPERLU_DIST)
44be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SuperLU_DIST(Mat);
45448de63eSKris Buschelman #endif
462515c552SBarry Smith #if defined(PETSC_HAVE_UMFPACK)
47be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_UMFPACK(Mat);
481677d0b8SKris Buschelman #endif
497b43e47cSBarry Smith #if defined(PETSC_HAVE_ESSL) && !defined(PETSC_USE_COMPLEX)
50be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_Essl(Mat);
51e8aa55a4SKris Buschelman #endif
522515c552SBarry Smith #if defined(PETSC_HAVE_LUSOL)
53be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_LUSOL(Mat);
544eb8e494SKris Buschelman #endif
552515c552SBarry Smith #if defined(PETSC_HAVE_MUMPS)
56be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_AIJMUMPS(Mat);
57be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SBAIJMUMPS(Mat);
58397b6df1SKris Buschelman #endif
592515c552SBarry Smith #if defined(PETSC_HAVE_DSCPACK)
60be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_DSCPACK(Mat);
618da957c5SKris Buschelman #endif
622515c552SBarry Smith #if defined(PETSC_HAVE_MATLAB)
63be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_Matlab(Mat);
647065e2aaSKris Buschelman #endif
65c0aa2d19SHong Zhang #if defined(PETSC_HAVE_PLAPACK)
66c0aa2d19SHong Zhang EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_Plapack(Mat);
67c0aa2d19SHong Zhang #endif
68c0aa2d19SHong Zhang EXTERN_C_END
698a95e4e9SBarry Smith 
708a95e4e9SBarry Smith /*
71f7cf7585SBarry Smith     This is used by MatSetType() to make sure that at least one
72f7cf7585SBarry Smith     MatRegisterAll() is called. In general, if there is more than one
73f7cf7585SBarry Smith     DLL, then MatRegisterAll() may be called several times.
748a95e4e9SBarry Smith */
75f7cf7585SBarry Smith EXTERN PetscTruth MatRegisterAllCalled;
768a95e4e9SBarry Smith 
774a2ae208SSatish Balay #undef __FUNCT__
784a2ae208SSatish Balay #define __FUNCT__ "MatRegisterAll"
798a95e4e9SBarry Smith /*@C
80f7cf7585SBarry Smith   MatRegisterAll - Registers all of the matrix types in PETSc
818a95e4e9SBarry Smith 
828a95e4e9SBarry Smith   Not Collective
838a95e4e9SBarry Smith 
848a95e4e9SBarry Smith   Level: advanced
858a95e4e9SBarry Smith 
868a95e4e9SBarry Smith .keywords: KSP, register, all
878a95e4e9SBarry Smith 
88f7cf7585SBarry Smith .seealso:  MatRegisterDestroy()
898a95e4e9SBarry Smith @*/
90be1d678aSKris Buschelman PetscErrorCode PETSCMAT_DLLEXPORT MatRegisterAll(const char path[])
918a95e4e9SBarry Smith {
92dfbe8321SBarry Smith   PetscErrorCode ierr;
938a95e4e9SBarry Smith 
948a95e4e9SBarry Smith   PetscFunctionBegin;
95f7cf7585SBarry Smith   MatRegisterAllCalled = PETSC_TRUE;
968a95e4e9SBarry Smith 
97f7cf7585SBarry Smith   ierr = MatRegisterDynamic(MATMPIMAIJ, path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
98b9b97703SBarry Smith   ierr = MatRegisterDynamic(MATSEQMAIJ, path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
99209238afSKris Buschelman   ierr = MatRegisterDynamic(MATMAIJ,    path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
100273d9f13SBarry Smith 
101186905e3SBarry Smith   ierr = MatRegisterDynamic(MATIS,      path,"MatCreate_IS",      MatCreate_IS);CHKERRQ(ierr);
102273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSHELL,   path,"MatCreate_Shell",   MatCreate_Shell);CHKERRQ(ierr);
1032515c552SBarry Smith #if defined(PETSC_HAVE_BLOCKSOLVE)
104273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIROWBS,path,"MatCreate_MPIRowbs",MatCreate_MPIRowbs);CHKERRQ(ierr);
105273d9f13SBarry Smith #endif
106273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJ,  path,"MatCreate_MPIAIJ",      MatCreate_MPIAIJ);CHKERRQ(ierr);
107273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJ,  path,"MatCreate_SeqAIJ",      MatCreate_SeqAIJ);CHKERRQ(ierr);
108814655b8SBarry Smith   ierr = MatRegisterDynamic(MATCSRPERM,  path,"MatCreate_CSRPERM",  MatCreate_CSRPERM);CHKERRQ(ierr);
109381ac109SSatish Balay   ierr = MatRegisterDynamic(MATMPICSRPERM,  path,"MatCreate_MPICSRPERM",  MatCreate_MPICSRPERM);CHKERRQ(ierr);
110381ac109SSatish Balay   ierr = MatRegisterDynamic(MATSEQCSRPERM,  path,"MatCreate_SeqCSRPERM",  MatCreate_SeqCSRPERM);CHKERRQ(ierr);
11181824310SBarry Smith   ierr = MatRegisterDynamic(MATSEQCRL,  path,"MatCreate_SeqCRL",      MatCreate_SeqCRL);CHKERRQ(ierr);
112c02b24c5SBarry Smith   ierr = MatRegisterDynamic(MATMPICRL,  path,"MatCreate_MPICRL",      MatCreate_MPICRL);CHKERRQ(ierr);
113*11285404SBarry Smith   ierr = MatRegisterDynamic(MATCRL,     path,"MatCreate_CRL",         MatCreate_CRL);CHKERRQ(ierr);
114209238afSKris Buschelman   ierr = MatRegisterDynamic(MATAIJ,     path,"MatCreate_AIJ",         MatCreate_AIJ);CHKERRQ(ierr);
115273d9f13SBarry Smith 
116273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIBAIJ,  path,"MatCreate_MPIBAIJ",    MatCreate_MPIBAIJ);CHKERRQ(ierr);
117273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQBAIJ,  path,"MatCreate_SeqBAIJ",    MatCreate_SeqBAIJ);CHKERRQ(ierr);
118209238afSKris Buschelman   ierr = MatRegisterDynamic(MATBAIJ,     path,"MatCreate_BAIJ",       MatCreate_BAIJ);CHKERRQ(ierr);
119273d9f13SBarry Smith 
120273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPISBAIJ,  path,"MatCreate_MPISBAIJ",  MatCreate_MPISBAIJ);CHKERRQ(ierr);
121273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQSBAIJ,  path,"MatCreate_SeqSBAIJ",  MatCreate_SeqSBAIJ);CHKERRQ(ierr);
122209238afSKris Buschelman   ierr = MatRegisterDynamic(MATSBAIJ,     path,"MatCreate_SBAIJ",     MatCreate_SBAIJ);CHKERRQ(ierr);
123273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIBDIAG,  path,"MatCreate_MPIBDiag",  MatCreate_MPIBDiag);CHKERRQ(ierr);
124273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQBDIAG,  path,"MatCreate_SeqBDiag",  MatCreate_SeqBDiag);CHKERRQ(ierr);
125209238afSKris Buschelman   ierr = MatRegisterDynamic(MATBDIAG,     path,"MatCreate_BDiag",     MatCreate_BDiag);CHKERRQ(ierr);
126273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIDENSE,  path,"MatCreate_MPIDense",  MatCreate_MPIDense);CHKERRQ(ierr);
127273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQDENSE,  path,"MatCreate_SeqDense",  MatCreate_SeqDense);CHKERRQ(ierr);
128209238afSKris Buschelman   ierr = MatRegisterDynamic(MATDENSE,     path,"MatCreate_Dense",     MatCreate_Dense);CHKERRQ(ierr);
129273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIADJ,    path,"MatCreate_MPIAdj",    MatCreate_MPIAdj);CHKERRQ(ierr);
1302515c552SBarry Smith #if defined(PETSC_HAVE_SPOOLES)
131f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATSEQAIJSPOOLES,  path,"MatCreate_SeqAIJSpooles",  MatCreate_SeqAIJSpooles);CHKERRQ(ierr);
132f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATSEQSBAIJSPOOLES,path,"MatCreate_SeqSBAIJSpooles",MatCreate_SeqSBAIJSpooles);CHKERRQ(ierr);
133f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATMPIAIJSPOOLES,  path,"MatCreate_MPIAIJSpooles",  MatCreate_MPIAIJSpooles);CHKERRQ(ierr);
134f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATMPISBAIJSPOOLES,path,"MatCreate_MPISBAIJSpooles",MatCreate_MPISBAIJSpooles);CHKERRQ(ierr);
135bb4d4166SHong Zhang   ierr = MatRegisterDynamic(MATAIJSPOOLES,     path,"MatCreate_AIJSpooles",     MatCreate_AIJSpooles);CHKERRQ(ierr);
136bb4d4166SHong Zhang   ierr = MatRegisterDynamic(MATSBAIJSPOOLES,   path,"MatCreate_SBAIJSpooles",   MatCreate_SBAIJSpooles);CHKERRQ(ierr);
137b3a1e11cSKris Buschelman #endif
1382515c552SBarry Smith #if defined(PETSC_HAVE_SUPERLU)
139f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATSUPERLU,path,"MatCreate_SuperLU",MatCreate_SuperLU);CHKERRQ(ierr);
14014b396bbSKris Buschelman #endif
1412515c552SBarry Smith #if defined(PETSC_HAVE_SUPERLU_DIST)
142f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATSUPERLU_DIST,path,"MatCreate_SuperLU_DIST",MatCreate_SuperLU_DIST);CHKERRQ(ierr);
143448de63eSKris Buschelman #endif
1442515c552SBarry Smith #if defined(PETSC_HAVE_UMFPACK)
145f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATUMFPACK,path,"MatCreate_UMFPACK",MatCreate_UMFPACK);CHKERRQ(ierr);
1461677d0b8SKris Buschelman #endif
1477b43e47cSBarry Smith #if defined(PETSC_HAVE_ESSL) && !defined(PETSC_USE_COMPLEX)
148f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATESSL,path,"MatCreate_Essl",MatCreate_Essl);CHKERRQ(ierr);
149e8aa55a4SKris Buschelman #endif
1502515c552SBarry Smith #if defined(PETSC_HAVE_LUSOL)
151f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATLUSOL,path,"MatCreate_LUSOL",MatCreate_LUSOL);CHKERRQ(ierr);
1524eb8e494SKris Buschelman #endif
1532515c552SBarry Smith #if defined(PETSC_HAVE_MUMPS)
154123bf89aSSatish Balay   ierr = MatRegisterDynamic(MATAIJMUMPS,  path,"MatCreate_AIJMUMPS",MatCreate_AIJMUMPS);CHKERRQ(ierr);
155123bf89aSSatish Balay   ierr = MatRegisterDynamic(MATSBAIJMUMPS,path,"MatCreate_SBAIJMUMPS",MatCreate_SBAIJMUMPS);CHKERRQ(ierr);
156397b6df1SKris Buschelman #endif
1572515c552SBarry Smith #if defined(PETSC_HAVE_DSCPACK)
158f0c56d0fSKris Buschelman   ierr = MatRegisterDynamic(MATDSCPACK,path,"MatCreate_DSCPACK",MatCreate_DSCPACK);CHKERRQ(ierr);
1598da957c5SKris Buschelman #endif
1602515c552SBarry Smith #if defined(PETSC_HAVE_MATLAB)
1617065e2aaSKris Buschelman   ierr = MatRegisterDynamic(MATMATLAB,path,"MatCreate_Matlab",MatCreate_Matlab);CHKERRQ(ierr);
1627065e2aaSKris Buschelman #endif
163c0aa2d19SHong Zhang #if defined(PETSC_HAVE_PLAPACK)
164c0aa2d19SHong Zhang   ierr = MatRegisterDynamic(MATPLAPACK,path,"MatCreate_Plapack",MatCreate_Plapack);CHKERRQ(ierr);
165c0aa2d19SHong Zhang #endif
1668a95e4e9SBarry Smith   PetscFunctionReturn(0);
1678a95e4e9SBarry Smith }
168f7cf7585SBarry Smith 
1693a7fca6bSBarry Smith 
170