xref: /petsc/src/mat/interface/matregis.c (revision 7087cfbefd1a42b179f217f9994fb6cb0d0c1824)
1be1d678aSKris Buschelman #define PETSCMAT_DLL
28a95e4e9SBarry Smith 
3f7cf7585SBarry Smith #include "petscmat.h"  /*I "petscmat.h" I*/
48a95e4e9SBarry Smith 
58a95e4e9SBarry Smith EXTERN_C_BEGIN
6*7087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MFFD(Mat);
7*7087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MAIJ(Mat);
8*7087cfbeSBarry Smith extern PetscErrorCode  MatCreate_IS(Mat);
917667f90SBarry Smith 
10*7087cfbeSBarry Smith extern PetscErrorCode  MatCreate_AIJ(Mat);
11*7087cfbeSBarry Smith extern PetscErrorCode  MatCreate_SeqAIJ(Mat);
12*7087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MPIAIJ(Mat);
1317667f90SBarry Smith 
14*7087cfbeSBarry Smith extern PetscErrorCode  MatCreate_BAIJ(Mat);
15*7087cfbeSBarry Smith extern PetscErrorCode  MatCreate_SeqBAIJ(Mat);
16*7087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MPIBAIJ(Mat);
1717667f90SBarry Smith 
18*7087cfbeSBarry Smith extern PetscErrorCode  MatCreate_SBAIJ(Mat);
19*7087cfbeSBarry Smith extern PetscErrorCode  MatCreate_SeqSBAIJ(Mat);
20*7087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MPISBAIJ(Mat);
2117667f90SBarry Smith 
22*7087cfbeSBarry Smith extern PetscErrorCode  MatCreate_Dense(Mat);
23*7087cfbeSBarry Smith extern PetscErrorCode  MatCreate_SeqDense(Mat);
24*7087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MPIDense(Mat);
2517667f90SBarry Smith 
26*7087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MPIAdj(Mat);
27*7087cfbeSBarry Smith extern PetscErrorCode  MatCreate_Shell(Mat);
28*7087cfbeSBarry Smith extern PetscErrorCode  MatCreate_Composite(Mat);
2917667f90SBarry Smith 
30*7087cfbeSBarry Smith extern PetscErrorCode  MatCreate_AIJPERM(Mat);
31*7087cfbeSBarry Smith extern PetscErrorCode  MatCreate_SeqAIJPERM(Mat);
32*7087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MPIAIJPERM(Mat);
3317667f90SBarry Smith 
34*7087cfbeSBarry Smith extern PetscErrorCode  MatCreate_AIJCRL(Mat);
35*7087cfbeSBarry Smith extern PetscErrorCode  MatCreate_SeqAIJCRL(Mat);
36*7087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MPIAIJCRL(Mat);
3717667f90SBarry Smith 
38*7087cfbeSBarry Smith extern PetscErrorCode  MatCreate_Scatter(Mat);
39*7087cfbeSBarry Smith extern PetscErrorCode  MatCreate_BlockMat(Mat);
4068326731SBarry Smith 
41*7087cfbeSBarry Smith extern PetscErrorCode  MatCreate_DD(Mat);
42c6570e9aSVictor Minden 
43c6570e9aSVictor Minden #if defined PETSC_HAVE_CUDA
44*7087cfbeSBarry Smith extern PetscErrorCode  MatCreate_SeqAIJCUDA(Mat);
45*7087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MPIAIJCUDA(Mat);
46*7087cfbeSBarry Smith extern PetscErrorCode  MatCreate_AIJCUDA(Mat);
47c6570e9aSVictor Minden #endif
48c6570e9aSVictor Minden 
49ba2f8784SDmitry Karpeev #if defined PETSC_HAVE_MATIM
50*7087cfbeSBarry Smith extern PetscErrorCode  MatCreate_IM(Mat);
51ba2f8784SDmitry Karpeev #endif
52c0aa2d19SHong Zhang EXTERN_C_END
538a95e4e9SBarry Smith 
548a95e4e9SBarry Smith /*
55f7cf7585SBarry Smith     This is used by MatSetType() to make sure that at least one
56f7cf7585SBarry Smith     MatRegisterAll() is called. In general, if there is more than one
57f7cf7585SBarry Smith     DLL, then MatRegisterAll() may be called several times.
588a95e4e9SBarry Smith */
5909573ac7SBarry Smith extern PetscBool  MatRegisterAllCalled;
608a95e4e9SBarry Smith 
614a2ae208SSatish Balay #undef __FUNCT__
624a2ae208SSatish Balay #define __FUNCT__ "MatRegisterAll"
638a95e4e9SBarry Smith /*@C
64f7cf7585SBarry Smith   MatRegisterAll - Registers all of the matrix types in PETSc
658a95e4e9SBarry Smith 
668a95e4e9SBarry Smith   Not Collective
678a95e4e9SBarry Smith 
688a95e4e9SBarry Smith   Level: advanced
698a95e4e9SBarry Smith 
708a95e4e9SBarry Smith .keywords: KSP, register, all
718a95e4e9SBarry Smith 
72f7cf7585SBarry Smith .seealso:  MatRegisterDestroy()
738a95e4e9SBarry Smith @*/
74*7087cfbeSBarry Smith PetscErrorCode  MatRegisterAll(const char path[])
758a95e4e9SBarry Smith {
76dfbe8321SBarry Smith   PetscErrorCode ierr;
778a95e4e9SBarry Smith 
788a95e4e9SBarry Smith   PetscFunctionBegin;
79f7cf7585SBarry Smith   MatRegisterAllCalled = PETSC_TRUE;
808a95e4e9SBarry Smith 
81e884886fSBarry Smith   ierr = MatRegisterDynamic(MATMFFD,           path,"MatCreate_MFFD",    MatCreate_MFFD);CHKERRQ(ierr);
82e884886fSBarry Smith 
83f7cf7585SBarry Smith   ierr = MatRegisterDynamic(MATMPIMAIJ,        path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
84b9b97703SBarry Smith   ierr = MatRegisterDynamic(MATSEQMAIJ,        path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
85209238afSKris Buschelman   ierr = MatRegisterDynamic(MATMAIJ,           path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
86273d9f13SBarry Smith 
87186905e3SBarry Smith   ierr = MatRegisterDynamic(MATIS,             path,"MatCreate_IS",      MatCreate_IS);CHKERRQ(ierr);
88273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSHELL,          path,"MatCreate_Shell",   MatCreate_Shell);CHKERRQ(ierr);
89793850ffSBarry Smith   ierr = MatRegisterDynamic(MATCOMPOSITE,      path,"MatCreate_Composite",   MatCreate_Composite);CHKERRQ(ierr);
9017667f90SBarry Smith   ierr = MatRegisterDynamic(MATAIJ,            path,"MatCreate_AIJ",         MatCreate_AIJ);CHKERRQ(ierr);
91273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJ,         path,"MatCreate_MPIAIJ",      MatCreate_MPIAIJ);CHKERRQ(ierr);
92273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJ,         path,"MatCreate_SeqAIJ",      MatCreate_SeqAIJ);CHKERRQ(ierr);
9317667f90SBarry Smith 
945a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATAIJPERM,        path,"MatCreate_AIJPERM",    MatCreate_AIJPERM);CHKERRQ(ierr);
955a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJPERM,     path,"MatCreate_MPIAIJPERM", MatCreate_MPIAIJPERM);CHKERRQ(ierr);
965a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJPERM,     path,"MatCreate_SeqAIJPERM", MatCreate_SeqAIJPERM);CHKERRQ(ierr);
9717667f90SBarry Smith 
985a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATAIJCRL,         path,"MatCreate_AIJCRL",     MatCreate_AIJCRL);CHKERRQ(ierr);
995a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJCRL,      path,"MatCreate_SeqAIJCRL",  MatCreate_SeqAIJCRL);CHKERRQ(ierr);
1005a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJCRL,      path,"MatCreate_MPIAIJCRL",  MatCreate_MPIAIJCRL);CHKERRQ(ierr);
101273d9f13SBarry Smith 
10217667f90SBarry Smith   ierr = MatRegisterDynamic(MATBAIJ,           path,"MatCreate_BAIJ",       MatCreate_BAIJ);CHKERRQ(ierr);
103273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIBAIJ,        path,"MatCreate_MPIBAIJ",    MatCreate_MPIBAIJ);CHKERRQ(ierr);
104273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQBAIJ,        path,"MatCreate_SeqBAIJ",    MatCreate_SeqBAIJ);CHKERRQ(ierr);
105273d9f13SBarry Smith 
10617667f90SBarry Smith   ierr = MatRegisterDynamic(MATSBAIJ,          path,"MatCreate_SBAIJ",     MatCreate_SBAIJ);CHKERRQ(ierr);
107273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPISBAIJ,       path,"MatCreate_MPISBAIJ",  MatCreate_MPISBAIJ);CHKERRQ(ierr);
108273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQSBAIJ,       path,"MatCreate_SeqSBAIJ",  MatCreate_SeqSBAIJ);CHKERRQ(ierr);
10917667f90SBarry Smith 
11017667f90SBarry Smith   ierr = MatRegisterDynamic(MATDENSE,          path,"MatCreate_Dense",     MatCreate_Dense);CHKERRQ(ierr);
111273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIDENSE,       path,"MatCreate_MPIDense",  MatCreate_MPIDense);CHKERRQ(ierr);
112273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQDENSE,       path,"MatCreate_SeqDense",  MatCreate_SeqDense);CHKERRQ(ierr);
11317667f90SBarry Smith 
114273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIADJ,         path,"MatCreate_MPIAdj",    MatCreate_MPIAdj);CHKERRQ(ierr);
1152a6744ebSBarry Smith   ierr = MatRegisterDynamic(MATSCATTER,        path,"MatCreate_Scatter",   MatCreate_Scatter);CHKERRQ(ierr);
116421e10b8SBarry Smith   ierr = MatRegisterDynamic(MATBLOCKMAT,       path,"MatCreate_BlockMat",   MatCreate_BlockMat);CHKERRQ(ierr);
11768326731SBarry Smith 
1184d6373a4SLisandro Dalcin   /*ierr = MatRegisterDynamic(MATDD,             path,"MatCreate_DD",   MatCreate_DD);CHKERRQ(ierr);*/
119ba2f8784SDmitry Karpeev #if defined PETSC_HAVE_MATIM
120ba2f8784SDmitry Karpeev   ierr = MatRegisterDynamic(MATIM,            path,"MatCreate_IM",   MatCreate_IM);CHKERRQ(ierr);
121ba2f8784SDmitry Karpeev #endif
122c6570e9aSVictor Minden #if defined PETSC_HAVE_CUDA
123c6570e9aSVictor Minden   ierr = MatRegisterDynamic(MATSEQAIJCUDA,     path,"MatCreate_SeqAIJCUDA",      MatCreate_SeqAIJCUDA);CHKERRQ(ierr);
1244182d338SVictor Minden   ierr = MatRegisterDynamic(MATMPIAIJCUDA,     path,"MatCreate_MPIAIJCUDA",      MatCreate_MPIAIJCUDA);CHKERRQ(ierr);
1259db58ca8SBarry Smith   ierr = MatRegisterDynamic(MATAIJCUDA,        path,"MatCreate_AIJCUDA",         MatCreate_AIJCUDA);CHKERRQ(ierr);
126c6570e9aSVictor Minden #endif
1278a95e4e9SBarry Smith   PetscFunctionReturn(0);
1288a95e4e9SBarry Smith }
129f7cf7585SBarry Smith 
1303a7fca6bSBarry Smith 
131