xref: /petsc/src/mat/interface/matregis.c (revision bf2c1783afb88c11ce14d20ce4d6c0f91601d8ab)
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 
12ff34cdc8SBarry Smith #if defined(PETSC_HAVE_PTHREADCLASSES)
137d6a0e61SBarry Smith extern PetscErrorCode  MatCreate_SeqAIJPThread(Mat);
14*bf2c1783SBarry Smith extern PetscErrorCode  MatCreate_AIJPThread(Mat);
15ba61063dSBarry Smith #endif
16ba61063dSBarry Smith 
177087cfbeSBarry Smith extern PetscErrorCode  MatCreate_SeqBAIJ(Mat);
187087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MPIBAIJ(Mat);
1917667f90SBarry Smith 
207087cfbeSBarry Smith extern PetscErrorCode  MatCreate_SeqSBAIJ(Mat);
217087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MPISBAIJ(Mat);
2217667f90SBarry Smith 
232938c13dSDahai Guo extern PetscErrorCode  MatCreate_SeqBSTRM(Mat);
242938c13dSDahai Guo extern PetscErrorCode  MatCreate_MPIBSTRM(Mat);
252938c13dSDahai Guo 
262938c13dSDahai Guo extern PetscErrorCode  MatCreate_SeqSBSTRM(Mat);
272938c13dSDahai Guo extern PetscErrorCode  MatCreate_MPISBSTRM(Mat);
282938c13dSDahai Guo 
297087cfbeSBarry Smith extern PetscErrorCode  MatCreate_SeqDense(Mat);
307087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MPIDense(Mat);
3117667f90SBarry Smith 
327087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MPIAdj(Mat);
337087cfbeSBarry Smith extern PetscErrorCode  MatCreate_Shell(Mat);
347087cfbeSBarry Smith extern PetscErrorCode  MatCreate_Composite(Mat);
3517667f90SBarry Smith 
367087cfbeSBarry Smith extern PetscErrorCode  MatCreate_SeqAIJPERM(Mat);
377087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MPIAIJPERM(Mat);
3817667f90SBarry Smith 
397087cfbeSBarry Smith extern PetscErrorCode  MatCreate_SeqAIJCRL(Mat);
407087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MPIAIJCRL(Mat);
4117667f90SBarry Smith 
427087cfbeSBarry Smith extern PetscErrorCode  MatCreate_Scatter(Mat);
437087cfbeSBarry Smith extern PetscErrorCode  MatCreate_BlockMat(Mat);
44c8883902SJed Brown extern PetscErrorCode  MatCreate_Nest(Mat);
457087cfbeSBarry Smith extern PetscErrorCode  MatCreate_DD(Mat);
46c6570e9aSVictor Minden 
478154be41SBarry Smith #if defined PETSC_HAVE_CUSP
488154be41SBarry Smith extern PetscErrorCode  MatCreate_SeqAIJCUSP(Mat);
498154be41SBarry Smith extern PetscErrorCode  MatCreate_MPIAIJCUSP(Mat);
50c6570e9aSVictor Minden #endif
51c6570e9aSVictor Minden 
52ba2f8784SDmitry Karpeev #if defined PETSC_HAVE_MATIM
537087cfbeSBarry Smith extern PetscErrorCode  MatCreate_IM(Mat);
54ba2f8784SDmitry Karpeev #endif
55dedccee8SHong Zhang 
56dedccee8SHong Zhang #if defined PETSC_HAVE_FFTW
57dedccee8SHong Zhang extern PetscErrorCode  MatCreate_FFTW(Mat);
58dedccee8SHong Zhang #endif
59c0aa2d19SHong Zhang EXTERN_C_END
608a95e4e9SBarry Smith 
618a95e4e9SBarry Smith /*
62f7cf7585SBarry Smith     This is used by MatSetType() to make sure that at least one
63f7cf7585SBarry Smith     MatRegisterAll() is called. In general, if there is more than one
64f7cf7585SBarry Smith     DLL, then MatRegisterAll() may be called several times.
658a95e4e9SBarry Smith */
6609573ac7SBarry Smith extern PetscBool  MatRegisterAllCalled;
678a95e4e9SBarry Smith 
684a2ae208SSatish Balay #undef __FUNCT__
694a2ae208SSatish Balay #define __FUNCT__ "MatRegisterAll"
708a95e4e9SBarry Smith /*@C
71f7cf7585SBarry Smith   MatRegisterAll - Registers all of the matrix types in PETSc
728a95e4e9SBarry Smith 
738a95e4e9SBarry Smith   Not Collective
748a95e4e9SBarry Smith 
758a95e4e9SBarry Smith   Level: advanced
768a95e4e9SBarry Smith 
778a95e4e9SBarry Smith .keywords: KSP, register, all
788a95e4e9SBarry Smith 
79f7cf7585SBarry Smith .seealso:  MatRegisterDestroy()
808a95e4e9SBarry Smith @*/
817087cfbeSBarry Smith PetscErrorCode  MatRegisterAll(const char path[])
828a95e4e9SBarry Smith {
83dfbe8321SBarry Smith   PetscErrorCode ierr;
848a95e4e9SBarry Smith 
858a95e4e9SBarry Smith   PetscFunctionBegin;
86f7cf7585SBarry Smith   MatRegisterAllCalled = PETSC_TRUE;
878a95e4e9SBarry Smith 
88e884886fSBarry Smith   ierr = MatRegisterDynamic(MATMFFD,           path,"MatCreate_MFFD",    MatCreate_MFFD);CHKERRQ(ierr);
89e884886fSBarry Smith 
90f7cf7585SBarry Smith   ierr = MatRegisterDynamic(MATMPIMAIJ,        path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
91b9b97703SBarry Smith   ierr = MatRegisterDynamic(MATSEQMAIJ,        path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
92209238afSKris Buschelman   ierr = MatRegisterDynamic(MATMAIJ,           path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
93273d9f13SBarry Smith 
94186905e3SBarry Smith   ierr = MatRegisterDynamic(MATIS,             path,"MatCreate_IS",      MatCreate_IS);CHKERRQ(ierr);
95273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSHELL,          path,"MatCreate_Shell",   MatCreate_Shell);CHKERRQ(ierr);
96793850ffSBarry Smith   ierr = MatRegisterDynamic(MATCOMPOSITE,      path,"MatCreate_Composite",   MatCreate_Composite);CHKERRQ(ierr);
9701bebe75SBarry Smith 
9801bebe75SBarry Smith   ierr = MatRegisterBaseName(MATAIJ,MATSEQAIJ,MATMPIAIJ);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);
101ff34cdc8SBarry Smith #if defined(PETSC_HAVE_PTHREADCLASSES)
102*bf2c1783SBarry Smith   ierr = MatRegisterBaseName(MATAIJPTHREAD,MATSEQAIJPTHREAD,0);CHKERRQ(ierr);
1037d6a0e61SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJPTHREAD,  path,"MatCreate_SeqAIJPThread",      MatCreate_SeqAIJPThread);CHKERRQ(ierr);
104faea8a20SBarry Smith #endif
10517667f90SBarry Smith 
10601bebe75SBarry Smith   ierr = MatRegisterBaseName(MATAIJPERM,MATSEQAIJPERM,MATMPIAIJPERM);CHKERRQ(ierr);
1075a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJPERM,     path,"MatCreate_MPIAIJPERM", MatCreate_MPIAIJPERM);CHKERRQ(ierr);
1085a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJPERM,     path,"MatCreate_SeqAIJPERM", MatCreate_SeqAIJPERM);CHKERRQ(ierr);
10917667f90SBarry Smith 
11001bebe75SBarry Smith   ierr = MatRegisterBaseName(MATAIJCRL,MATSEQAIJCRL,MATMPIAIJCRL);CHKERRQ(ierr);
1115a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJCRL,      path,"MatCreate_SeqAIJCRL",  MatCreate_SeqAIJCRL);CHKERRQ(ierr);
1125a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJCRL,      path,"MatCreate_MPIAIJCRL",  MatCreate_MPIAIJCRL);CHKERRQ(ierr);
113273d9f13SBarry Smith 
11401bebe75SBarry Smith   ierr = MatRegisterBaseName(MATBAIJ,MATSEQBAIJ,MATMPIBAIJ);CHKERRQ(ierr);
115273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIBAIJ,        path,"MatCreate_MPIBAIJ",    MatCreate_MPIBAIJ);CHKERRQ(ierr);
116273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQBAIJ,        path,"MatCreate_SeqBAIJ",    MatCreate_SeqBAIJ);CHKERRQ(ierr);
117273d9f13SBarry Smith 
11801bebe75SBarry Smith   ierr = MatRegisterBaseName(MATSBAIJ,MATSEQSBAIJ,MATMPISBAIJ);CHKERRQ(ierr);
119273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPISBAIJ,       path,"MatCreate_MPISBAIJ",  MatCreate_MPISBAIJ);CHKERRQ(ierr);
120273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQSBAIJ,       path,"MatCreate_SeqSBAIJ",  MatCreate_SeqSBAIJ);CHKERRQ(ierr);
12117667f90SBarry Smith 
1222938c13dSDahai Guo   ierr = MatRegisterBaseName(MATBSTRM,MATSEQBSTRM,MATMPIBSTRM);CHKERRQ(ierr);
1232938c13dSDahai Guo   ierr = MatRegisterDynamic(MATMPIBSTRM,        path,"MatCreate_MPIBSTRM",    MatCreate_MPIBSTRM);CHKERRQ(ierr);
1242938c13dSDahai Guo   ierr = MatRegisterDynamic(MATSEQBSTRM,        path,"MatCreate_SeqBSTRM",    MatCreate_SeqBSTRM);CHKERRQ(ierr);
1252938c13dSDahai Guo 
1262938c13dSDahai Guo   ierr = MatRegisterBaseName(MATSBSTRM,MATSEQSBSTRM,MATMPISBSTRM);CHKERRQ(ierr);
1272938c13dSDahai Guo   ierr = MatRegisterDynamic(MATMPISBSTRM,       path,"MatCreate_MPISBSTRM",  MatCreate_MPISBSTRM);CHKERRQ(ierr);
1282938c13dSDahai Guo   ierr = MatRegisterDynamic(MATSEQSBSTRM,       path,"MatCreate_SeqSBSTRM",  MatCreate_SeqSBSTRM);CHKERRQ(ierr);
1292938c13dSDahai Guo 
13001bebe75SBarry Smith   ierr = MatRegisterBaseName(MATDENSE,MATSEQDENSE,MATMPIDENSE);CHKERRQ(ierr);
131273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIDENSE,       path,"MatCreate_MPIDense",  MatCreate_MPIDense);CHKERRQ(ierr);
132273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQDENSE,       path,"MatCreate_SeqDense",  MatCreate_SeqDense);CHKERRQ(ierr);
13317667f90SBarry Smith 
134273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIADJ,         path,"MatCreate_MPIAdj",    MatCreate_MPIAdj);CHKERRQ(ierr);
1352a6744ebSBarry Smith   ierr = MatRegisterDynamic(MATSCATTER,        path,"MatCreate_Scatter",   MatCreate_Scatter);CHKERRQ(ierr);
136421e10b8SBarry Smith   ierr = MatRegisterDynamic(MATBLOCKMAT,       path,"MatCreate_BlockMat",  MatCreate_BlockMat);CHKERRQ(ierr);
137c8883902SJed Brown   ierr = MatRegisterDynamic(MATNEST,           path,"MatCreate_Nest",      MatCreate_Nest);CHKERRQ(ierr);
13868326731SBarry Smith 
1394d6373a4SLisandro Dalcin   /*ierr = MatRegisterDynamic(MATDD,             path,"MatCreate_DD",   MatCreate_DD);CHKERRQ(ierr);*/
140ba2f8784SDmitry Karpeev #if defined PETSC_HAVE_MATIM
141ba2f8784SDmitry Karpeev   ierr = MatRegisterDynamic(MATIM,             path,"MatCreate_IM",   MatCreate_IM);CHKERRQ(ierr);
142ba2f8784SDmitry Karpeev #endif
14301bebe75SBarry Smith 
1448154be41SBarry Smith #if defined PETSC_HAVE_CUSP
14501bebe75SBarry Smith   ierr = MatRegisterBaseName(MATAIJCUSP,MATSEQAIJCUSP,MATMPIAIJCUSP);CHKERRQ(ierr);
1468154be41SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJCUSP,     path,"MatCreate_SeqAIJCUSP",  MatCreate_SeqAIJCUSP);CHKERRQ(ierr);
1478154be41SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJCUSP,     path,"MatCreate_MPIAIJCUSP",  MatCreate_MPIAIJCUSP);CHKERRQ(ierr);
148c6570e9aSVictor Minden #endif
14901bebe75SBarry Smith 
150dedccee8SHong Zhang #if defined PETSC_HAVE_FFTW
151dedccee8SHong Zhang   ierr = MatRegisterDynamic(MATFFTW,           path,"MatCreate_FFTW",        MatCreate_FFTW);CHKERRQ(ierr);
152dedccee8SHong Zhang #endif
1538a95e4e9SBarry Smith   PetscFunctionReturn(0);
1548a95e4e9SBarry Smith }
155f7cf7585SBarry Smith 
1563a7fca6bSBarry Smith 
157