xref: /petsc/src/mat/interface/matregis.c (revision 51d315f7f51405b454a6b2ffbc3c7276a5e2a085)
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);
10*51d315f7SKerry Stevens extern PetscErrorCode  MatCreate_SeqPThreadAIJ(Mat);
117087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MPIAIJ(Mat);
1217667f90SBarry Smith 
137087cfbeSBarry Smith extern PetscErrorCode  MatCreate_SeqBAIJ(Mat);
147087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MPIBAIJ(Mat);
1517667f90SBarry Smith 
167087cfbeSBarry Smith extern PetscErrorCode  MatCreate_SeqSBAIJ(Mat);
177087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MPISBAIJ(Mat);
1817667f90SBarry Smith 
192938c13dSDahai Guo extern PetscErrorCode  MatCreate_SeqBSTRM(Mat);
202938c13dSDahai Guo extern PetscErrorCode  MatCreate_MPIBSTRM(Mat);
212938c13dSDahai Guo 
222938c13dSDahai Guo extern PetscErrorCode  MatCreate_SeqSBSTRM(Mat);
232938c13dSDahai Guo extern PetscErrorCode  MatCreate_MPISBSTRM(Mat);
242938c13dSDahai Guo 
257087cfbeSBarry Smith extern PetscErrorCode  MatCreate_SeqDense(Mat);
267087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MPIDense(Mat);
2717667f90SBarry Smith 
287087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MPIAdj(Mat);
297087cfbeSBarry Smith extern PetscErrorCode  MatCreate_Shell(Mat);
307087cfbeSBarry Smith extern PetscErrorCode  MatCreate_Composite(Mat);
3117667f90SBarry Smith 
327087cfbeSBarry Smith extern PetscErrorCode  MatCreate_SeqAIJPERM(Mat);
337087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MPIAIJPERM(Mat);
3417667f90SBarry Smith 
357087cfbeSBarry Smith extern PetscErrorCode  MatCreate_SeqAIJCRL(Mat);
367087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MPIAIJCRL(Mat);
3717667f90SBarry Smith 
387087cfbeSBarry Smith extern PetscErrorCode  MatCreate_Scatter(Mat);
397087cfbeSBarry Smith extern PetscErrorCode  MatCreate_BlockMat(Mat);
40c8883902SJed Brown extern PetscErrorCode  MatCreate_Nest(Mat);
417087cfbeSBarry Smith extern PetscErrorCode  MatCreate_DD(Mat);
42c6570e9aSVictor Minden 
438154be41SBarry Smith #if defined PETSC_HAVE_CUSP
448154be41SBarry Smith extern PetscErrorCode  MatCreate_SeqAIJCUSP(Mat);
458154be41SBarry Smith extern PetscErrorCode  MatCreate_MPIAIJCUSP(Mat);
46c6570e9aSVictor Minden #endif
47c6570e9aSVictor Minden 
48ba2f8784SDmitry Karpeev #if defined PETSC_HAVE_MATIM
497087cfbeSBarry Smith extern PetscErrorCode  MatCreate_IM(Mat);
50ba2f8784SDmitry Karpeev #endif
51dedccee8SHong Zhang 
52dedccee8SHong Zhang #if defined PETSC_HAVE_FFTW
53dedccee8SHong Zhang extern PetscErrorCode  MatCreate_FFTW(Mat);
54dedccee8SHong Zhang #endif
55c0aa2d19SHong Zhang EXTERN_C_END
568a95e4e9SBarry Smith 
578a95e4e9SBarry Smith /*
58f7cf7585SBarry Smith     This is used by MatSetType() to make sure that at least one
59f7cf7585SBarry Smith     MatRegisterAll() is called. In general, if there is more than one
60f7cf7585SBarry Smith     DLL, then MatRegisterAll() may be called several times.
618a95e4e9SBarry Smith */
6209573ac7SBarry Smith extern PetscBool  MatRegisterAllCalled;
638a95e4e9SBarry Smith 
644a2ae208SSatish Balay #undef __FUNCT__
654a2ae208SSatish Balay #define __FUNCT__ "MatRegisterAll"
668a95e4e9SBarry Smith /*@C
67f7cf7585SBarry Smith   MatRegisterAll - Registers all of the matrix types in PETSc
688a95e4e9SBarry Smith 
698a95e4e9SBarry Smith   Not Collective
708a95e4e9SBarry Smith 
718a95e4e9SBarry Smith   Level: advanced
728a95e4e9SBarry Smith 
738a95e4e9SBarry Smith .keywords: KSP, register, all
748a95e4e9SBarry Smith 
75f7cf7585SBarry Smith .seealso:  MatRegisterDestroy()
768a95e4e9SBarry Smith @*/
777087cfbeSBarry Smith PetscErrorCode  MatRegisterAll(const char path[])
788a95e4e9SBarry Smith {
79dfbe8321SBarry Smith   PetscErrorCode ierr;
808a95e4e9SBarry Smith 
818a95e4e9SBarry Smith   PetscFunctionBegin;
82f7cf7585SBarry Smith   MatRegisterAllCalled = PETSC_TRUE;
838a95e4e9SBarry Smith 
84e884886fSBarry Smith   ierr = MatRegisterDynamic(MATMFFD,           path,"MatCreate_MFFD",    MatCreate_MFFD);CHKERRQ(ierr);
85e884886fSBarry Smith 
86f7cf7585SBarry Smith   ierr = MatRegisterDynamic(MATMPIMAIJ,        path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
87b9b97703SBarry Smith   ierr = MatRegisterDynamic(MATSEQMAIJ,        path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
88209238afSKris Buschelman   ierr = MatRegisterDynamic(MATMAIJ,           path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
89273d9f13SBarry Smith 
90186905e3SBarry Smith   ierr = MatRegisterDynamic(MATIS,             path,"MatCreate_IS",      MatCreate_IS);CHKERRQ(ierr);
91273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSHELL,          path,"MatCreate_Shell",   MatCreate_Shell);CHKERRQ(ierr);
92793850ffSBarry Smith   ierr = MatRegisterDynamic(MATCOMPOSITE,      path,"MatCreate_Composite",   MatCreate_Composite);CHKERRQ(ierr);
9301bebe75SBarry Smith 
9401bebe75SBarry Smith   ierr = MatRegisterBaseName(MATAIJ,MATSEQAIJ,MATMPIAIJ);CHKERRQ(ierr);
95*51d315f7SKerry Stevens   ierr = MatRegisterDynamic(MATSEQPTHREADAIJ,  path,"MatCreate_SeqPThreadAIJ",      MatCreate_SeqPThreadAIJ);CHKERRQ(ierr);
96273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJ,         path,"MatCreate_MPIAIJ",      MatCreate_MPIAIJ);CHKERRQ(ierr);
97273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJ,         path,"MatCreate_SeqAIJ",      MatCreate_SeqAIJ);CHKERRQ(ierr);
9817667f90SBarry Smith 
9901bebe75SBarry Smith   ierr = MatRegisterBaseName(MATAIJPERM,MATSEQAIJPERM,MATMPIAIJPERM);CHKERRQ(ierr);
1005a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJPERM,     path,"MatCreate_MPIAIJPERM", MatCreate_MPIAIJPERM);CHKERRQ(ierr);
1015a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJPERM,     path,"MatCreate_SeqAIJPERM", MatCreate_SeqAIJPERM);CHKERRQ(ierr);
10217667f90SBarry Smith 
10301bebe75SBarry Smith   ierr = MatRegisterBaseName(MATAIJCRL,MATSEQAIJCRL,MATMPIAIJCRL);CHKERRQ(ierr);
1045a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJCRL,      path,"MatCreate_SeqAIJCRL",  MatCreate_SeqAIJCRL);CHKERRQ(ierr);
1055a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJCRL,      path,"MatCreate_MPIAIJCRL",  MatCreate_MPIAIJCRL);CHKERRQ(ierr);
106273d9f13SBarry Smith 
10701bebe75SBarry Smith   ierr = MatRegisterBaseName(MATBAIJ,MATSEQBAIJ,MATMPIBAIJ);CHKERRQ(ierr);
108273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIBAIJ,        path,"MatCreate_MPIBAIJ",    MatCreate_MPIBAIJ);CHKERRQ(ierr);
109273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQBAIJ,        path,"MatCreate_SeqBAIJ",    MatCreate_SeqBAIJ);CHKERRQ(ierr);
110273d9f13SBarry Smith 
11101bebe75SBarry Smith   ierr = MatRegisterBaseName(MATSBAIJ,MATSEQSBAIJ,MATMPISBAIJ);CHKERRQ(ierr);
112273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPISBAIJ,       path,"MatCreate_MPISBAIJ",  MatCreate_MPISBAIJ);CHKERRQ(ierr);
113273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQSBAIJ,       path,"MatCreate_SeqSBAIJ",  MatCreate_SeqSBAIJ);CHKERRQ(ierr);
11417667f90SBarry Smith 
1152938c13dSDahai Guo   ierr = MatRegisterBaseName(MATBSTRM,MATSEQBSTRM,MATMPIBSTRM);CHKERRQ(ierr);
1162938c13dSDahai Guo   ierr = MatRegisterDynamic(MATMPIBSTRM,        path,"MatCreate_MPIBSTRM",    MatCreate_MPIBSTRM);CHKERRQ(ierr);
1172938c13dSDahai Guo   ierr = MatRegisterDynamic(MATSEQBSTRM,        path,"MatCreate_SeqBSTRM",    MatCreate_SeqBSTRM);CHKERRQ(ierr);
1182938c13dSDahai Guo 
1192938c13dSDahai Guo   ierr = MatRegisterBaseName(MATSBSTRM,MATSEQSBSTRM,MATMPISBSTRM);CHKERRQ(ierr);
1202938c13dSDahai Guo   ierr = MatRegisterDynamic(MATMPISBSTRM,       path,"MatCreate_MPISBSTRM",  MatCreate_MPISBSTRM);CHKERRQ(ierr);
1212938c13dSDahai Guo   ierr = MatRegisterDynamic(MATSEQSBSTRM,       path,"MatCreate_SeqSBSTRM",  MatCreate_SeqSBSTRM);CHKERRQ(ierr);
1222938c13dSDahai Guo 
12301bebe75SBarry Smith   ierr = MatRegisterBaseName(MATDENSE,MATSEQDENSE,MATMPIDENSE);CHKERRQ(ierr);
124273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIDENSE,       path,"MatCreate_MPIDense",  MatCreate_MPIDense);CHKERRQ(ierr);
125273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQDENSE,       path,"MatCreate_SeqDense",  MatCreate_SeqDense);CHKERRQ(ierr);
12617667f90SBarry Smith 
127273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIADJ,         path,"MatCreate_MPIAdj",    MatCreate_MPIAdj);CHKERRQ(ierr);
1282a6744ebSBarry Smith   ierr = MatRegisterDynamic(MATSCATTER,        path,"MatCreate_Scatter",   MatCreate_Scatter);CHKERRQ(ierr);
129421e10b8SBarry Smith   ierr = MatRegisterDynamic(MATBLOCKMAT,       path,"MatCreate_BlockMat",  MatCreate_BlockMat);CHKERRQ(ierr);
130c8883902SJed Brown   ierr = MatRegisterDynamic(MATNEST,           path,"MatCreate_Nest",      MatCreate_Nest);CHKERRQ(ierr);
13168326731SBarry Smith 
1324d6373a4SLisandro Dalcin   /*ierr = MatRegisterDynamic(MATDD,             path,"MatCreate_DD",   MatCreate_DD);CHKERRQ(ierr);*/
133ba2f8784SDmitry Karpeev #if defined PETSC_HAVE_MATIM
134ba2f8784SDmitry Karpeev   ierr = MatRegisterDynamic(MATIM,             path,"MatCreate_IM",   MatCreate_IM);CHKERRQ(ierr);
135ba2f8784SDmitry Karpeev #endif
13601bebe75SBarry Smith 
1378154be41SBarry Smith #if defined PETSC_HAVE_CUSP
13801bebe75SBarry Smith   ierr = MatRegisterBaseName(MATAIJCUSP,MATSEQAIJCUSP,MATMPIAIJCUSP);CHKERRQ(ierr);
1398154be41SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJCUSP,     path,"MatCreate_SeqAIJCUSP",  MatCreate_SeqAIJCUSP);CHKERRQ(ierr);
1408154be41SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJCUSP,     path,"MatCreate_MPIAIJCUSP",  MatCreate_MPIAIJCUSP);CHKERRQ(ierr);
141c6570e9aSVictor Minden #endif
14201bebe75SBarry Smith 
143dedccee8SHong Zhang #if defined PETSC_HAVE_FFTW
144dedccee8SHong Zhang   ierr = MatRegisterDynamic(MATFFTW,           path,"MatCreate_FFTW",        MatCreate_FFTW);CHKERRQ(ierr);
145dedccee8SHong Zhang #endif
1468a95e4e9SBarry Smith   PetscFunctionReturn(0);
1478a95e4e9SBarry Smith }
148f7cf7585SBarry Smith 
1493a7fca6bSBarry Smith 
150