xref: /petsc/src/mat/interface/matregis.c (revision ba61063db8cd96e5a5f702c43a4ce6e281e3e2a6)
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*ba61063dSBarry Smith #if defined(PETSC_USE_PTHREAD_CLASSES)
13*ba61063dSBarry Smith extern PetscErrorCode  MatCreate_SeqPThreadAIJ(Mat);
14*ba61063dSBarry Smith #endif
15*ba61063dSBarry 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);
9851d315f7SKerry Stevens   ierr = MatRegisterDynamic(MATSEQPTHREADAIJ,  path,"MatCreate_SeqPThreadAIJ",      MatCreate_SeqPThreadAIJ);CHKERRQ(ierr);
99273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJ,         path,"MatCreate_MPIAIJ",      MatCreate_MPIAIJ);CHKERRQ(ierr);
100273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJ,         path,"MatCreate_SeqAIJ",      MatCreate_SeqAIJ);CHKERRQ(ierr);
10117667f90SBarry Smith 
10201bebe75SBarry Smith   ierr = MatRegisterBaseName(MATAIJPERM,MATSEQAIJPERM,MATMPIAIJPERM);CHKERRQ(ierr);
1035a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJPERM,     path,"MatCreate_MPIAIJPERM", MatCreate_MPIAIJPERM);CHKERRQ(ierr);
1045a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJPERM,     path,"MatCreate_SeqAIJPERM", MatCreate_SeqAIJPERM);CHKERRQ(ierr);
10517667f90SBarry Smith 
10601bebe75SBarry Smith   ierr = MatRegisterBaseName(MATAIJCRL,MATSEQAIJCRL,MATMPIAIJCRL);CHKERRQ(ierr);
1075a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJCRL,      path,"MatCreate_SeqAIJCRL",  MatCreate_SeqAIJCRL);CHKERRQ(ierr);
1085a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJCRL,      path,"MatCreate_MPIAIJCRL",  MatCreate_MPIAIJCRL);CHKERRQ(ierr);
109273d9f13SBarry Smith 
11001bebe75SBarry Smith   ierr = MatRegisterBaseName(MATBAIJ,MATSEQBAIJ,MATMPIBAIJ);CHKERRQ(ierr);
111273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIBAIJ,        path,"MatCreate_MPIBAIJ",    MatCreate_MPIBAIJ);CHKERRQ(ierr);
112273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQBAIJ,        path,"MatCreate_SeqBAIJ",    MatCreate_SeqBAIJ);CHKERRQ(ierr);
113273d9f13SBarry Smith 
11401bebe75SBarry Smith   ierr = MatRegisterBaseName(MATSBAIJ,MATSEQSBAIJ,MATMPISBAIJ);CHKERRQ(ierr);
115273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPISBAIJ,       path,"MatCreate_MPISBAIJ",  MatCreate_MPISBAIJ);CHKERRQ(ierr);
116273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQSBAIJ,       path,"MatCreate_SeqSBAIJ",  MatCreate_SeqSBAIJ);CHKERRQ(ierr);
11717667f90SBarry Smith 
1182938c13dSDahai Guo   ierr = MatRegisterBaseName(MATBSTRM,MATSEQBSTRM,MATMPIBSTRM);CHKERRQ(ierr);
1192938c13dSDahai Guo   ierr = MatRegisterDynamic(MATMPIBSTRM,        path,"MatCreate_MPIBSTRM",    MatCreate_MPIBSTRM);CHKERRQ(ierr);
1202938c13dSDahai Guo   ierr = MatRegisterDynamic(MATSEQBSTRM,        path,"MatCreate_SeqBSTRM",    MatCreate_SeqBSTRM);CHKERRQ(ierr);
1212938c13dSDahai Guo 
1222938c13dSDahai Guo   ierr = MatRegisterBaseName(MATSBSTRM,MATSEQSBSTRM,MATMPISBSTRM);CHKERRQ(ierr);
1232938c13dSDahai Guo   ierr = MatRegisterDynamic(MATMPISBSTRM,       path,"MatCreate_MPISBSTRM",  MatCreate_MPISBSTRM);CHKERRQ(ierr);
1242938c13dSDahai Guo   ierr = MatRegisterDynamic(MATSEQSBSTRM,       path,"MatCreate_SeqSBSTRM",  MatCreate_SeqSBSTRM);CHKERRQ(ierr);
1252938c13dSDahai Guo 
12601bebe75SBarry Smith   ierr = MatRegisterBaseName(MATDENSE,MATSEQDENSE,MATMPIDENSE);CHKERRQ(ierr);
127273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIDENSE,       path,"MatCreate_MPIDense",  MatCreate_MPIDense);CHKERRQ(ierr);
128273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQDENSE,       path,"MatCreate_SeqDense",  MatCreate_SeqDense);CHKERRQ(ierr);
12917667f90SBarry Smith 
130273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIADJ,         path,"MatCreate_MPIAdj",    MatCreate_MPIAdj);CHKERRQ(ierr);
1312a6744ebSBarry Smith   ierr = MatRegisterDynamic(MATSCATTER,        path,"MatCreate_Scatter",   MatCreate_Scatter);CHKERRQ(ierr);
132421e10b8SBarry Smith   ierr = MatRegisterDynamic(MATBLOCKMAT,       path,"MatCreate_BlockMat",  MatCreate_BlockMat);CHKERRQ(ierr);
133c8883902SJed Brown   ierr = MatRegisterDynamic(MATNEST,           path,"MatCreate_Nest",      MatCreate_Nest);CHKERRQ(ierr);
13468326731SBarry Smith 
1354d6373a4SLisandro Dalcin   /*ierr = MatRegisterDynamic(MATDD,             path,"MatCreate_DD",   MatCreate_DD);CHKERRQ(ierr);*/
136ba2f8784SDmitry Karpeev #if defined PETSC_HAVE_MATIM
137ba2f8784SDmitry Karpeev   ierr = MatRegisterDynamic(MATIM,             path,"MatCreate_IM",   MatCreate_IM);CHKERRQ(ierr);
138ba2f8784SDmitry Karpeev #endif
13901bebe75SBarry Smith 
1408154be41SBarry Smith #if defined PETSC_HAVE_CUSP
14101bebe75SBarry Smith   ierr = MatRegisterBaseName(MATAIJCUSP,MATSEQAIJCUSP,MATMPIAIJCUSP);CHKERRQ(ierr);
1428154be41SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJCUSP,     path,"MatCreate_SeqAIJCUSP",  MatCreate_SeqAIJCUSP);CHKERRQ(ierr);
1438154be41SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJCUSP,     path,"MatCreate_MPIAIJCUSP",  MatCreate_MPIAIJCUSP);CHKERRQ(ierr);
144c6570e9aSVictor Minden #endif
14501bebe75SBarry Smith 
146dedccee8SHong Zhang #if defined PETSC_HAVE_FFTW
147dedccee8SHong Zhang   ierr = MatRegisterDynamic(MATFFTW,           path,"MatCreate_FFTW",        MatCreate_FFTW);CHKERRQ(ierr);
148dedccee8SHong Zhang #endif
1498a95e4e9SBarry Smith   PetscFunctionReturn(0);
1508a95e4e9SBarry Smith }
151f7cf7585SBarry Smith 
1523a7fca6bSBarry Smith 
153