xref: /petsc/src/mat/interface/matregis.c (revision 2938c13de5a9d777be9136c0be24c0422e1c2217)
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 
127087cfbeSBarry Smith extern PetscErrorCode  MatCreate_SeqBAIJ(Mat);
137087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MPIBAIJ(Mat);
1417667f90SBarry Smith 
157087cfbeSBarry Smith extern PetscErrorCode  MatCreate_SeqSBAIJ(Mat);
167087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MPISBAIJ(Mat);
1717667f90SBarry Smith 
18*2938c13dSDahai Guo extern PetscErrorCode  MatCreate_SeqBSTRM(Mat);
19*2938c13dSDahai Guo extern PetscErrorCode  MatCreate_MPIBSTRM(Mat);
20*2938c13dSDahai Guo 
21*2938c13dSDahai Guo extern PetscErrorCode  MatCreate_SeqSBSTRM(Mat);
22*2938c13dSDahai Guo extern PetscErrorCode  MatCreate_MPISBSTRM(Mat);
23*2938c13dSDahai Guo 
247087cfbeSBarry Smith extern PetscErrorCode  MatCreate_SeqDense(Mat);
257087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MPIDense(Mat);
2617667f90SBarry Smith 
277087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MPIAdj(Mat);
287087cfbeSBarry Smith extern PetscErrorCode  MatCreate_Shell(Mat);
297087cfbeSBarry Smith extern PetscErrorCode  MatCreate_Composite(Mat);
3017667f90SBarry Smith 
317087cfbeSBarry Smith extern PetscErrorCode  MatCreate_SeqAIJPERM(Mat);
327087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MPIAIJPERM(Mat);
3317667f90SBarry Smith 
347087cfbeSBarry Smith extern PetscErrorCode  MatCreate_SeqAIJCRL(Mat);
357087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MPIAIJCRL(Mat);
3617667f90SBarry Smith 
377087cfbeSBarry Smith extern PetscErrorCode  MatCreate_Scatter(Mat);
387087cfbeSBarry Smith extern PetscErrorCode  MatCreate_BlockMat(Mat);
39c8883902SJed Brown extern PetscErrorCode  MatCreate_Nest(Mat);
407087cfbeSBarry Smith extern PetscErrorCode  MatCreate_DD(Mat);
41c6570e9aSVictor Minden 
428154be41SBarry Smith #if defined PETSC_HAVE_CUSP
438154be41SBarry Smith extern PetscErrorCode  MatCreate_SeqAIJCUSP(Mat);
448154be41SBarry Smith extern PetscErrorCode  MatCreate_MPIAIJCUSP(Mat);
45c6570e9aSVictor Minden #endif
46c6570e9aSVictor Minden 
47ba2f8784SDmitry Karpeev #if defined PETSC_HAVE_MATIM
487087cfbeSBarry Smith extern PetscErrorCode  MatCreate_IM(Mat);
49ba2f8784SDmitry Karpeev #endif
50dedccee8SHong Zhang 
51dedccee8SHong Zhang #if defined PETSC_HAVE_FFTW
52dedccee8SHong Zhang extern PetscErrorCode  MatCreate_FFTW(Mat);
53dedccee8SHong Zhang #endif
54c0aa2d19SHong Zhang EXTERN_C_END
558a95e4e9SBarry Smith 
568a95e4e9SBarry Smith /*
57f7cf7585SBarry Smith     This is used by MatSetType() to make sure that at least one
58f7cf7585SBarry Smith     MatRegisterAll() is called. In general, if there is more than one
59f7cf7585SBarry Smith     DLL, then MatRegisterAll() may be called several times.
608a95e4e9SBarry Smith */
6109573ac7SBarry Smith extern PetscBool  MatRegisterAllCalled;
628a95e4e9SBarry Smith 
634a2ae208SSatish Balay #undef __FUNCT__
644a2ae208SSatish Balay #define __FUNCT__ "MatRegisterAll"
658a95e4e9SBarry Smith /*@C
66f7cf7585SBarry Smith   MatRegisterAll - Registers all of the matrix types in PETSc
678a95e4e9SBarry Smith 
688a95e4e9SBarry Smith   Not Collective
698a95e4e9SBarry Smith 
708a95e4e9SBarry Smith   Level: advanced
718a95e4e9SBarry Smith 
728a95e4e9SBarry Smith .keywords: KSP, register, all
738a95e4e9SBarry Smith 
74f7cf7585SBarry Smith .seealso:  MatRegisterDestroy()
758a95e4e9SBarry Smith @*/
767087cfbeSBarry Smith PetscErrorCode  MatRegisterAll(const char path[])
778a95e4e9SBarry Smith {
78dfbe8321SBarry Smith   PetscErrorCode ierr;
798a95e4e9SBarry Smith 
808a95e4e9SBarry Smith   PetscFunctionBegin;
81f7cf7585SBarry Smith   MatRegisterAllCalled = PETSC_TRUE;
828a95e4e9SBarry Smith 
83e884886fSBarry Smith   ierr = MatRegisterDynamic(MATMFFD,           path,"MatCreate_MFFD",    MatCreate_MFFD);CHKERRQ(ierr);
84e884886fSBarry Smith 
85f7cf7585SBarry Smith   ierr = MatRegisterDynamic(MATMPIMAIJ,        path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
86b9b97703SBarry Smith   ierr = MatRegisterDynamic(MATSEQMAIJ,        path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
87209238afSKris Buschelman   ierr = MatRegisterDynamic(MATMAIJ,           path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
88273d9f13SBarry Smith 
89186905e3SBarry Smith   ierr = MatRegisterDynamic(MATIS,             path,"MatCreate_IS",      MatCreate_IS);CHKERRQ(ierr);
90273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSHELL,          path,"MatCreate_Shell",   MatCreate_Shell);CHKERRQ(ierr);
91793850ffSBarry Smith   ierr = MatRegisterDynamic(MATCOMPOSITE,      path,"MatCreate_Composite",   MatCreate_Composite);CHKERRQ(ierr);
9201bebe75SBarry Smith 
9301bebe75SBarry Smith   ierr = MatRegisterBaseName(MATAIJ,MATSEQAIJ,MATMPIAIJ);CHKERRQ(ierr);
94273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJ,         path,"MatCreate_MPIAIJ",      MatCreate_MPIAIJ);CHKERRQ(ierr);
95273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJ,         path,"MatCreate_SeqAIJ",      MatCreate_SeqAIJ);CHKERRQ(ierr);
9617667f90SBarry Smith 
9701bebe75SBarry Smith   ierr = MatRegisterBaseName(MATAIJPERM,MATSEQAIJPERM,MATMPIAIJPERM);CHKERRQ(ierr);
985a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJPERM,     path,"MatCreate_MPIAIJPERM", MatCreate_MPIAIJPERM);CHKERRQ(ierr);
995a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJPERM,     path,"MatCreate_SeqAIJPERM", MatCreate_SeqAIJPERM);CHKERRQ(ierr);
10017667f90SBarry Smith 
10101bebe75SBarry Smith   ierr = MatRegisterBaseName(MATAIJCRL,MATSEQAIJCRL,MATMPIAIJCRL);CHKERRQ(ierr);
1025a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJCRL,      path,"MatCreate_SeqAIJCRL",  MatCreate_SeqAIJCRL);CHKERRQ(ierr);
1035a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJCRL,      path,"MatCreate_MPIAIJCRL",  MatCreate_MPIAIJCRL);CHKERRQ(ierr);
104273d9f13SBarry Smith 
10501bebe75SBarry Smith   ierr = MatRegisterBaseName(MATBAIJ,MATSEQBAIJ,MATMPIBAIJ);CHKERRQ(ierr);
106273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIBAIJ,        path,"MatCreate_MPIBAIJ",    MatCreate_MPIBAIJ);CHKERRQ(ierr);
107273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQBAIJ,        path,"MatCreate_SeqBAIJ",    MatCreate_SeqBAIJ);CHKERRQ(ierr);
108273d9f13SBarry Smith 
10901bebe75SBarry Smith   ierr = MatRegisterBaseName(MATSBAIJ,MATSEQSBAIJ,MATMPISBAIJ);CHKERRQ(ierr);
110273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPISBAIJ,       path,"MatCreate_MPISBAIJ",  MatCreate_MPISBAIJ);CHKERRQ(ierr);
111273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQSBAIJ,       path,"MatCreate_SeqSBAIJ",  MatCreate_SeqSBAIJ);CHKERRQ(ierr);
11217667f90SBarry Smith 
113*2938c13dSDahai Guo   ierr = MatRegisterBaseName(MATBSTRM,MATSEQBSTRM,MATMPIBSTRM);CHKERRQ(ierr);
114*2938c13dSDahai Guo   ierr = MatRegisterDynamic(MATMPIBSTRM,        path,"MatCreate_MPIBSTRM",    MatCreate_MPIBSTRM);CHKERRQ(ierr);
115*2938c13dSDahai Guo   ierr = MatRegisterDynamic(MATSEQBSTRM,        path,"MatCreate_SeqBSTRM",    MatCreate_SeqBSTRM);CHKERRQ(ierr);
116*2938c13dSDahai Guo 
117*2938c13dSDahai Guo   ierr = MatRegisterBaseName(MATSBSTRM,MATSEQSBSTRM,MATMPISBSTRM);CHKERRQ(ierr);
118*2938c13dSDahai Guo   ierr = MatRegisterDynamic(MATMPISBSTRM,       path,"MatCreate_MPISBSTRM",  MatCreate_MPISBSTRM);CHKERRQ(ierr);
119*2938c13dSDahai Guo   ierr = MatRegisterDynamic(MATSEQSBSTRM,       path,"MatCreate_SeqSBSTRM",  MatCreate_SeqSBSTRM);CHKERRQ(ierr);
120*2938c13dSDahai Guo 
12101bebe75SBarry Smith   ierr = MatRegisterBaseName(MATDENSE,MATSEQDENSE,MATMPIDENSE);CHKERRQ(ierr);
122273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIDENSE,       path,"MatCreate_MPIDense",  MatCreate_MPIDense);CHKERRQ(ierr);
123273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQDENSE,       path,"MatCreate_SeqDense",  MatCreate_SeqDense);CHKERRQ(ierr);
12417667f90SBarry Smith 
125273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIADJ,         path,"MatCreate_MPIAdj",    MatCreate_MPIAdj);CHKERRQ(ierr);
1262a6744ebSBarry Smith   ierr = MatRegisterDynamic(MATSCATTER,        path,"MatCreate_Scatter",   MatCreate_Scatter);CHKERRQ(ierr);
127421e10b8SBarry Smith   ierr = MatRegisterDynamic(MATBLOCKMAT,       path,"MatCreate_BlockMat",  MatCreate_BlockMat);CHKERRQ(ierr);
128c8883902SJed Brown   ierr = MatRegisterDynamic(MATNEST,           path,"MatCreate_Nest",      MatCreate_Nest);CHKERRQ(ierr);
12968326731SBarry Smith 
1304d6373a4SLisandro Dalcin   /*ierr = MatRegisterDynamic(MATDD,             path,"MatCreate_DD",   MatCreate_DD);CHKERRQ(ierr);*/
131ba2f8784SDmitry Karpeev #if defined PETSC_HAVE_MATIM
132ba2f8784SDmitry Karpeev   ierr = MatRegisterDynamic(MATIM,             path,"MatCreate_IM",   MatCreate_IM);CHKERRQ(ierr);
133ba2f8784SDmitry Karpeev #endif
13401bebe75SBarry Smith 
1358154be41SBarry Smith #if defined PETSC_HAVE_CUSP
13601bebe75SBarry Smith   ierr = MatRegisterBaseName(MATAIJCUSP,MATSEQAIJCUSP,MATMPIAIJCUSP);CHKERRQ(ierr);
1378154be41SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJCUSP,     path,"MatCreate_SeqAIJCUSP",  MatCreate_SeqAIJCUSP);CHKERRQ(ierr);
1388154be41SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJCUSP,     path,"MatCreate_MPIAIJCUSP",  MatCreate_MPIAIJCUSP);CHKERRQ(ierr);
139c6570e9aSVictor Minden #endif
14001bebe75SBarry Smith 
141dedccee8SHong Zhang #if defined PETSC_HAVE_FFTW
142dedccee8SHong Zhang   ierr = MatRegisterDynamic(MATFFTW,           path,"MatCreate_FFTW",        MatCreate_FFTW);CHKERRQ(ierr);
143dedccee8SHong Zhang #endif
1448a95e4e9SBarry Smith   PetscFunctionReturn(0);
1458a95e4e9SBarry Smith }
146f7cf7585SBarry Smith 
1473a7fca6bSBarry Smith 
148