xref: /petsc/src/mat/interface/matregis.c (revision 4182d33823a43670297842bff62981fec901bf51)
1be1d678aSKris Buschelman #define PETSCMAT_DLL
28a95e4e9SBarry Smith 
3f7cf7585SBarry Smith #include "petscmat.h"  /*I "petscmat.h" I*/
48a95e4e9SBarry Smith 
58a95e4e9SBarry Smith EXTERN_C_BEGIN
6e884886fSBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MFFD(Mat);
7be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MAIJ(Mat);
8be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_IS(Mat);
917667f90SBarry Smith 
1017667f90SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_AIJ(Mat);
11be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SeqAIJ(Mat);
12be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPIAIJ(Mat);
1317667f90SBarry Smith 
1417667f90SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_BAIJ(Mat);
15be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SeqBAIJ(Mat);
16be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPIBAIJ(Mat);
1717667f90SBarry Smith 
1817667f90SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SBAIJ(Mat);
19be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SeqSBAIJ(Mat);
20be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPISBAIJ(Mat);
2117667f90SBarry Smith 
2217667f90SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_Dense(Mat);
23be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SeqDense(Mat);
24be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPIDense(Mat);
2517667f90SBarry Smith 
26be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPIAdj(Mat);
27be1d678aSKris Buschelman EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_Shell(Mat);
28793850ffSBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_Composite(Mat);
2917667f90SBarry Smith 
3017667f90SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_CSRPERM(Mat);
3120f673eaSBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SeqCSRPERM(Mat);
3217667f90SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPICSRPERM(Mat);
3317667f90SBarry Smith 
3417667f90SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_CRL(Mat);
3581824310SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SeqCRL(Mat);
361472f72bSBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPICRL(Mat);
3717667f90SBarry Smith 
382a6744ebSBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_Scatter(Mat);
39421e10b8SBarry Smith EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_BlockMat(Mat);
4068326731SBarry Smith 
41dbc6227fSDmitry Karpeev EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_DD(Mat);
42c6570e9aSVictor Minden 
43c6570e9aSVictor Minden #if defined PETSC_HAVE_CUDA
44c6570e9aSVictor Minden EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_SeqAIJCUDA(Mat);
45*4182d338SVictor Minden EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_MPIAIJCUDA(Mat);
46c6570e9aSVictor Minden #endif
47c6570e9aSVictor Minden 
48ba2f8784SDmitry Karpeev #if defined PETSC_HAVE_MATIM
49ba2f8784SDmitry Karpeev EXTERN PetscErrorCode PETSCMAT_DLLEXPORT MatCreate_IM(Mat);
50ba2f8784SDmitry Karpeev #endif
51c0aa2d19SHong Zhang EXTERN_C_END
528a95e4e9SBarry Smith 
538a95e4e9SBarry Smith /*
54f7cf7585SBarry Smith     This is used by MatSetType() to make sure that at least one
55f7cf7585SBarry Smith     MatRegisterAll() is called. In general, if there is more than one
56f7cf7585SBarry Smith     DLL, then MatRegisterAll() may be called several times.
578a95e4e9SBarry Smith */
58f7cf7585SBarry Smith EXTERN PetscTruth MatRegisterAllCalled;
598a95e4e9SBarry Smith 
604a2ae208SSatish Balay #undef __FUNCT__
614a2ae208SSatish Balay #define __FUNCT__ "MatRegisterAll"
628a95e4e9SBarry Smith /*@C
63f7cf7585SBarry Smith   MatRegisterAll - Registers all of the matrix types in PETSc
648a95e4e9SBarry Smith 
658a95e4e9SBarry Smith   Not Collective
668a95e4e9SBarry Smith 
678a95e4e9SBarry Smith   Level: advanced
688a95e4e9SBarry Smith 
698a95e4e9SBarry Smith .keywords: KSP, register, all
708a95e4e9SBarry Smith 
71f7cf7585SBarry Smith .seealso:  MatRegisterDestroy()
728a95e4e9SBarry Smith @*/
73be1d678aSKris Buschelman PetscErrorCode PETSCMAT_DLLEXPORT MatRegisterAll(const char path[])
748a95e4e9SBarry Smith {
75dfbe8321SBarry Smith   PetscErrorCode ierr;
768a95e4e9SBarry Smith 
778a95e4e9SBarry Smith   PetscFunctionBegin;
78f7cf7585SBarry Smith   MatRegisterAllCalled = PETSC_TRUE;
798a95e4e9SBarry Smith 
80e884886fSBarry Smith   ierr = MatRegisterDynamic(MATMFFD,           path,"MatCreate_MFFD",    MatCreate_MFFD);CHKERRQ(ierr);
81e884886fSBarry 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);
84209238afSKris Buschelman   ierr = MatRegisterDynamic(MATMAIJ,           path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
85273d9f13SBarry Smith 
86186905e3SBarry Smith   ierr = MatRegisterDynamic(MATIS,             path,"MatCreate_IS",      MatCreate_IS);CHKERRQ(ierr);
87273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSHELL,          path,"MatCreate_Shell",   MatCreate_Shell);CHKERRQ(ierr);
88793850ffSBarry Smith   ierr = MatRegisterDynamic(MATCOMPOSITE,      path,"MatCreate_Composite",   MatCreate_Composite);CHKERRQ(ierr);
8917667f90SBarry Smith   ierr = MatRegisterDynamic(MATAIJ,            path,"MatCreate_AIJ",         MatCreate_AIJ);CHKERRQ(ierr);
90273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJ,         path,"MatCreate_MPIAIJ",      MatCreate_MPIAIJ);CHKERRQ(ierr);
91273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJ,         path,"MatCreate_SeqAIJ",      MatCreate_SeqAIJ);CHKERRQ(ierr);
9217667f90SBarry Smith 
93814655b8SBarry Smith   ierr = MatRegisterDynamic(MATCSRPERM,        path,"MatCreate_CSRPERM",  MatCreate_CSRPERM);CHKERRQ(ierr);
94381ac109SSatish Balay   ierr = MatRegisterDynamic(MATMPICSRPERM,     path,"MatCreate_MPICSRPERM",  MatCreate_MPICSRPERM);CHKERRQ(ierr);
95381ac109SSatish Balay   ierr = MatRegisterDynamic(MATSEQCSRPERM,     path,"MatCreate_SeqCSRPERM",  MatCreate_SeqCSRPERM);CHKERRQ(ierr);
9617667f90SBarry Smith 
9717667f90SBarry Smith   ierr = MatRegisterDynamic(MATCRL,            path,"MatCreate_CRL",         MatCreate_CRL);CHKERRQ(ierr);
9881824310SBarry Smith   ierr = MatRegisterDynamic(MATSEQCRL,         path,"MatCreate_SeqCRL",      MatCreate_SeqCRL);CHKERRQ(ierr);
99c02b24c5SBarry Smith   ierr = MatRegisterDynamic(MATMPICRL,         path,"MatCreate_MPICRL",      MatCreate_MPICRL);CHKERRQ(ierr);
100273d9f13SBarry Smith 
10117667f90SBarry Smith   ierr = MatRegisterDynamic(MATBAIJ,           path,"MatCreate_BAIJ",       MatCreate_BAIJ);CHKERRQ(ierr);
102273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIBAIJ,        path,"MatCreate_MPIBAIJ",    MatCreate_MPIBAIJ);CHKERRQ(ierr);
103273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQBAIJ,        path,"MatCreate_SeqBAIJ",    MatCreate_SeqBAIJ);CHKERRQ(ierr);
104273d9f13SBarry Smith 
10517667f90SBarry Smith   ierr = MatRegisterDynamic(MATSBAIJ,          path,"MatCreate_SBAIJ",     MatCreate_SBAIJ);CHKERRQ(ierr);
106273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPISBAIJ,       path,"MatCreate_MPISBAIJ",  MatCreate_MPISBAIJ);CHKERRQ(ierr);
107273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQSBAIJ,       path,"MatCreate_SeqSBAIJ",  MatCreate_SeqSBAIJ);CHKERRQ(ierr);
10817667f90SBarry Smith 
10917667f90SBarry Smith   ierr = MatRegisterDynamic(MATDENSE,          path,"MatCreate_Dense",     MatCreate_Dense);CHKERRQ(ierr);
110273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIDENSE,       path,"MatCreate_MPIDense",  MatCreate_MPIDense);CHKERRQ(ierr);
111273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQDENSE,       path,"MatCreate_SeqDense",  MatCreate_SeqDense);CHKERRQ(ierr);
11217667f90SBarry Smith 
113273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIADJ,         path,"MatCreate_MPIAdj",    MatCreate_MPIAdj);CHKERRQ(ierr);
1142a6744ebSBarry Smith   ierr = MatRegisterDynamic(MATSCATTER,        path,"MatCreate_Scatter",   MatCreate_Scatter);CHKERRQ(ierr);
115421e10b8SBarry Smith   ierr = MatRegisterDynamic(MATBLOCKMAT,       path,"MatCreate_BlockMat",   MatCreate_BlockMat);CHKERRQ(ierr);
11668326731SBarry Smith 
117b2bf4413SMatthew G Knepley   ierr = MatRegisterDynamic(MATDD,             path,"MatCreate_DD",   MatCreate_DD);CHKERRQ(ierr);
118ba2f8784SDmitry Karpeev #if defined PETSC_HAVE_MATIM
119ba2f8784SDmitry Karpeev   ierr = MatRegisterDynamic(MATIM,            path,"MatCreate_IM",   MatCreate_IM);CHKERRQ(ierr);
120ba2f8784SDmitry Karpeev #endif
121c6570e9aSVictor Minden #if defined PETSC_HAVE_CUDA
122c6570e9aSVictor Minden   ierr = MatRegisterDynamic(MATSEQAIJCUDA,     path,"MatCreate_SeqAIJCUDA",      MatCreate_SeqAIJCUDA);CHKERRQ(ierr);
123*4182d338SVictor Minden   ierr = MatRegisterDynamic(MATMPIAIJCUDA,     path,"MatCreate_MPIAIJCUDA",      MatCreate_MPIAIJCUDA);CHKERRQ(ierr);
124c6570e9aSVictor Minden #endif
1258a95e4e9SBarry Smith   PetscFunctionReturn(0);
1268a95e4e9SBarry Smith }
127f7cf7585SBarry Smith 
1283a7fca6bSBarry Smith 
129