xref: /petsc/src/mat/interface/matregis.c (revision ff34cdc8f286383efa9ea24b8a1730ec7fd5ed01)
18a95e4e9SBarry Smith 
2c6db04a5SJed Brown #include <petscmat.h>  /*I "petscmat.h" I*/
38a95e4e9SBarry Smith 
48a95e4e9SBarry Smith EXTERN_C_BEGIN
57087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MFFD(Mat);
67087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MAIJ(Mat);
77087cfbeSBarry Smith extern PetscErrorCode  MatCreate_IS(Mat);
817667f90SBarry Smith 
97087cfbeSBarry Smith extern PetscErrorCode  MatCreate_SeqAIJ(Mat);
107087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MPIAIJ(Mat);
1117667f90SBarry Smith 
12*ff34cdc8SBarry Smith #if defined(PETSC_HAVE_PTHREADCLASSES)
13ba61063dSBarry Smith extern PetscErrorCode  MatCreate_SeqPThreadAIJ(Mat);
14ba61063dSBarry Smith #endif
15ba61063dSBarry Smith 
167087cfbeSBarry Smith extern PetscErrorCode  MatCreate_SeqBAIJ(Mat);
177087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MPIBAIJ(Mat);
1817667f90SBarry Smith 
197087cfbeSBarry Smith extern PetscErrorCode  MatCreate_SeqSBAIJ(Mat);
207087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MPISBAIJ(Mat);
2117667f90SBarry Smith 
222938c13dSDahai Guo extern PetscErrorCode  MatCreate_SeqBSTRM(Mat);
232938c13dSDahai Guo extern PetscErrorCode  MatCreate_MPIBSTRM(Mat);
242938c13dSDahai Guo 
252938c13dSDahai Guo extern PetscErrorCode  MatCreate_SeqSBSTRM(Mat);
262938c13dSDahai Guo extern PetscErrorCode  MatCreate_MPISBSTRM(Mat);
272938c13dSDahai Guo 
287087cfbeSBarry Smith extern PetscErrorCode  MatCreate_SeqDense(Mat);
297087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MPIDense(Mat);
3017667f90SBarry Smith 
317087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MPIAdj(Mat);
327087cfbeSBarry Smith extern PetscErrorCode  MatCreate_Shell(Mat);
337087cfbeSBarry Smith extern PetscErrorCode  MatCreate_Composite(Mat);
3417667f90SBarry Smith 
357087cfbeSBarry Smith extern PetscErrorCode  MatCreate_SeqAIJPERM(Mat);
367087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MPIAIJPERM(Mat);
3717667f90SBarry Smith 
387087cfbeSBarry Smith extern PetscErrorCode  MatCreate_SeqAIJCRL(Mat);
397087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MPIAIJCRL(Mat);
4017667f90SBarry Smith 
417087cfbeSBarry Smith extern PetscErrorCode  MatCreate_Scatter(Mat);
427087cfbeSBarry Smith extern PetscErrorCode  MatCreate_BlockMat(Mat);
43c8883902SJed Brown extern PetscErrorCode  MatCreate_Nest(Mat);
447087cfbeSBarry Smith extern PetscErrorCode  MatCreate_DD(Mat);
45c6570e9aSVictor Minden 
468154be41SBarry Smith #if defined PETSC_HAVE_CUSP
478154be41SBarry Smith extern PetscErrorCode  MatCreate_SeqAIJCUSP(Mat);
488154be41SBarry Smith extern PetscErrorCode  MatCreate_MPIAIJCUSP(Mat);
49c6570e9aSVictor Minden #endif
50c6570e9aSVictor Minden 
51ba2f8784SDmitry Karpeev #if defined PETSC_HAVE_MATIM
527087cfbeSBarry Smith extern PetscErrorCode  MatCreate_IM(Mat);
53ba2f8784SDmitry Karpeev #endif
54dedccee8SHong Zhang 
55dedccee8SHong Zhang #if defined PETSC_HAVE_FFTW
56dedccee8SHong Zhang extern PetscErrorCode  MatCreate_FFTW(Mat);
57dedccee8SHong Zhang #endif
58c0aa2d19SHong Zhang EXTERN_C_END
598a95e4e9SBarry Smith 
608a95e4e9SBarry Smith /*
61f7cf7585SBarry Smith     This is used by MatSetType() to make sure that at least one
62f7cf7585SBarry Smith     MatRegisterAll() is called. In general, if there is more than one
63f7cf7585SBarry Smith     DLL, then MatRegisterAll() may be called several times.
648a95e4e9SBarry Smith */
6509573ac7SBarry Smith extern PetscBool  MatRegisterAllCalled;
668a95e4e9SBarry Smith 
674a2ae208SSatish Balay #undef __FUNCT__
684a2ae208SSatish Balay #define __FUNCT__ "MatRegisterAll"
698a95e4e9SBarry Smith /*@C
70f7cf7585SBarry Smith   MatRegisterAll - Registers all of the matrix types in PETSc
718a95e4e9SBarry Smith 
728a95e4e9SBarry Smith   Not Collective
738a95e4e9SBarry Smith 
748a95e4e9SBarry Smith   Level: advanced
758a95e4e9SBarry Smith 
768a95e4e9SBarry Smith .keywords: KSP, register, all
778a95e4e9SBarry Smith 
78f7cf7585SBarry Smith .seealso:  MatRegisterDestroy()
798a95e4e9SBarry Smith @*/
807087cfbeSBarry Smith PetscErrorCode  MatRegisterAll(const char path[])
818a95e4e9SBarry Smith {
82dfbe8321SBarry Smith   PetscErrorCode ierr;
838a95e4e9SBarry Smith 
848a95e4e9SBarry Smith   PetscFunctionBegin;
85f7cf7585SBarry Smith   MatRegisterAllCalled = PETSC_TRUE;
868a95e4e9SBarry Smith 
87e884886fSBarry Smith   ierr = MatRegisterDynamic(MATMFFD,           path,"MatCreate_MFFD",    MatCreate_MFFD);CHKERRQ(ierr);
88e884886fSBarry Smith 
89f7cf7585SBarry Smith   ierr = MatRegisterDynamic(MATMPIMAIJ,        path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
90b9b97703SBarry Smith   ierr = MatRegisterDynamic(MATSEQMAIJ,        path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
91209238afSKris Buschelman   ierr = MatRegisterDynamic(MATMAIJ,           path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
92273d9f13SBarry Smith 
93186905e3SBarry Smith   ierr = MatRegisterDynamic(MATIS,             path,"MatCreate_IS",      MatCreate_IS);CHKERRQ(ierr);
94273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSHELL,          path,"MatCreate_Shell",   MatCreate_Shell);CHKERRQ(ierr);
95793850ffSBarry Smith   ierr = MatRegisterDynamic(MATCOMPOSITE,      path,"MatCreate_Composite",   MatCreate_Composite);CHKERRQ(ierr);
9601bebe75SBarry Smith 
9701bebe75SBarry Smith   ierr = MatRegisterBaseName(MATAIJ,MATSEQAIJ,MATMPIAIJ);CHKERRQ(ierr);
98273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJ,         path,"MatCreate_MPIAIJ",      MatCreate_MPIAIJ);CHKERRQ(ierr);
99273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJ,         path,"MatCreate_SeqAIJ",      MatCreate_SeqAIJ);CHKERRQ(ierr);
100*ff34cdc8SBarry Smith #if defined(PETSC_HAVE_PTHREADCLASSES)
101faea8a20SBarry Smith   ierr = MatRegisterDynamic(MATSEQPTHREADAIJ,  path,"MatCreate_SeqPThreadAIJ",      MatCreate_SeqPThreadAIJ);CHKERRQ(ierr);
102faea8a20SBarry Smith #endif
10317667f90SBarry Smith 
10401bebe75SBarry Smith   ierr = MatRegisterBaseName(MATAIJPERM,MATSEQAIJPERM,MATMPIAIJPERM);CHKERRQ(ierr);
1055a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJPERM,     path,"MatCreate_MPIAIJPERM", MatCreate_MPIAIJPERM);CHKERRQ(ierr);
1065a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJPERM,     path,"MatCreate_SeqAIJPERM", MatCreate_SeqAIJPERM);CHKERRQ(ierr);
10717667f90SBarry Smith 
10801bebe75SBarry Smith   ierr = MatRegisterBaseName(MATAIJCRL,MATSEQAIJCRL,MATMPIAIJCRL);CHKERRQ(ierr);
1095a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJCRL,      path,"MatCreate_SeqAIJCRL",  MatCreate_SeqAIJCRL);CHKERRQ(ierr);
1105a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJCRL,      path,"MatCreate_MPIAIJCRL",  MatCreate_MPIAIJCRL);CHKERRQ(ierr);
111273d9f13SBarry Smith 
11201bebe75SBarry Smith   ierr = MatRegisterBaseName(MATBAIJ,MATSEQBAIJ,MATMPIBAIJ);CHKERRQ(ierr);
113273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIBAIJ,        path,"MatCreate_MPIBAIJ",    MatCreate_MPIBAIJ);CHKERRQ(ierr);
114273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQBAIJ,        path,"MatCreate_SeqBAIJ",    MatCreate_SeqBAIJ);CHKERRQ(ierr);
115273d9f13SBarry Smith 
11601bebe75SBarry Smith   ierr = MatRegisterBaseName(MATSBAIJ,MATSEQSBAIJ,MATMPISBAIJ);CHKERRQ(ierr);
117273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPISBAIJ,       path,"MatCreate_MPISBAIJ",  MatCreate_MPISBAIJ);CHKERRQ(ierr);
118273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQSBAIJ,       path,"MatCreate_SeqSBAIJ",  MatCreate_SeqSBAIJ);CHKERRQ(ierr);
11917667f90SBarry Smith 
1202938c13dSDahai Guo   ierr = MatRegisterBaseName(MATBSTRM,MATSEQBSTRM,MATMPIBSTRM);CHKERRQ(ierr);
1212938c13dSDahai Guo   ierr = MatRegisterDynamic(MATMPIBSTRM,        path,"MatCreate_MPIBSTRM",    MatCreate_MPIBSTRM);CHKERRQ(ierr);
1222938c13dSDahai Guo   ierr = MatRegisterDynamic(MATSEQBSTRM,        path,"MatCreate_SeqBSTRM",    MatCreate_SeqBSTRM);CHKERRQ(ierr);
1232938c13dSDahai Guo 
1242938c13dSDahai Guo   ierr = MatRegisterBaseName(MATSBSTRM,MATSEQSBSTRM,MATMPISBSTRM);CHKERRQ(ierr);
1252938c13dSDahai Guo   ierr = MatRegisterDynamic(MATMPISBSTRM,       path,"MatCreate_MPISBSTRM",  MatCreate_MPISBSTRM);CHKERRQ(ierr);
1262938c13dSDahai Guo   ierr = MatRegisterDynamic(MATSEQSBSTRM,       path,"MatCreate_SeqSBSTRM",  MatCreate_SeqSBSTRM);CHKERRQ(ierr);
1272938c13dSDahai Guo 
12801bebe75SBarry Smith   ierr = MatRegisterBaseName(MATDENSE,MATSEQDENSE,MATMPIDENSE);CHKERRQ(ierr);
129273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIDENSE,       path,"MatCreate_MPIDense",  MatCreate_MPIDense);CHKERRQ(ierr);
130273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQDENSE,       path,"MatCreate_SeqDense",  MatCreate_SeqDense);CHKERRQ(ierr);
13117667f90SBarry Smith 
132273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIADJ,         path,"MatCreate_MPIAdj",    MatCreate_MPIAdj);CHKERRQ(ierr);
1332a6744ebSBarry Smith   ierr = MatRegisterDynamic(MATSCATTER,        path,"MatCreate_Scatter",   MatCreate_Scatter);CHKERRQ(ierr);
134421e10b8SBarry Smith   ierr = MatRegisterDynamic(MATBLOCKMAT,       path,"MatCreate_BlockMat",  MatCreate_BlockMat);CHKERRQ(ierr);
135c8883902SJed Brown   ierr = MatRegisterDynamic(MATNEST,           path,"MatCreate_Nest",      MatCreate_Nest);CHKERRQ(ierr);
13668326731SBarry Smith 
1374d6373a4SLisandro Dalcin   /*ierr = MatRegisterDynamic(MATDD,             path,"MatCreate_DD",   MatCreate_DD);CHKERRQ(ierr);*/
138ba2f8784SDmitry Karpeev #if defined PETSC_HAVE_MATIM
139ba2f8784SDmitry Karpeev   ierr = MatRegisterDynamic(MATIM,             path,"MatCreate_IM",   MatCreate_IM);CHKERRQ(ierr);
140ba2f8784SDmitry Karpeev #endif
14101bebe75SBarry Smith 
1428154be41SBarry Smith #if defined PETSC_HAVE_CUSP
14301bebe75SBarry Smith   ierr = MatRegisterBaseName(MATAIJCUSP,MATSEQAIJCUSP,MATMPIAIJCUSP);CHKERRQ(ierr);
1448154be41SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJCUSP,     path,"MatCreate_SeqAIJCUSP",  MatCreate_SeqAIJCUSP);CHKERRQ(ierr);
1458154be41SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJCUSP,     path,"MatCreate_MPIAIJCUSP",  MatCreate_MPIAIJCUSP);CHKERRQ(ierr);
146c6570e9aSVictor Minden #endif
14701bebe75SBarry Smith 
148dedccee8SHong Zhang #if defined PETSC_HAVE_FFTW
149dedccee8SHong Zhang   ierr = MatRegisterDynamic(MATFFTW,           path,"MatCreate_FFTW",        MatCreate_FFTW);CHKERRQ(ierr);
150dedccee8SHong Zhang #endif
1518a95e4e9SBarry Smith   PetscFunctionReturn(0);
1528a95e4e9SBarry Smith }
153f7cf7585SBarry Smith 
1543a7fca6bSBarry Smith 
155