xref: /petsc/src/mat/interface/matregis.c (revision db31f6defe33e3dfd9985704e6b8f54a7ffb6553)
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);
14bf2c1783SBarry 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);
455edff473SDmitry Karpeev extern PetscErrorCode  MatCreate_IJ(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 
52dedccee8SHong Zhang #if defined PETSC_HAVE_FFTW
53dedccee8SHong Zhang extern PetscErrorCode  MatCreate_FFTW(Mat);
54dedccee8SHong Zhang #endif
55*db31f6deSJed Brown extern PetscErrorCode  MatCreate_Elemental(Mat);
56c0aa2d19SHong Zhang EXTERN_C_END
578a95e4e9SBarry Smith 
588a95e4e9SBarry Smith /*
59f7cf7585SBarry Smith     This is used by MatSetType() to make sure that at least one
60f7cf7585SBarry Smith     MatRegisterAll() is called. In general, if there is more than one
61f7cf7585SBarry Smith     DLL, then MatRegisterAll() may be called several times.
628a95e4e9SBarry Smith */
6309573ac7SBarry Smith extern PetscBool  MatRegisterAllCalled;
648a95e4e9SBarry Smith 
654a2ae208SSatish Balay #undef __FUNCT__
664a2ae208SSatish Balay #define __FUNCT__ "MatRegisterAll"
678a95e4e9SBarry Smith /*@C
68f7cf7585SBarry Smith   MatRegisterAll - Registers all of the matrix types in PETSc
698a95e4e9SBarry Smith 
708a95e4e9SBarry Smith   Not Collective
718a95e4e9SBarry Smith 
728a95e4e9SBarry Smith   Level: advanced
738a95e4e9SBarry Smith 
748a95e4e9SBarry Smith .keywords: KSP, register, all
758a95e4e9SBarry Smith 
76f7cf7585SBarry Smith .seealso:  MatRegisterDestroy()
778a95e4e9SBarry Smith @*/
787087cfbeSBarry Smith PetscErrorCode  MatRegisterAll(const char path[])
798a95e4e9SBarry Smith {
80dfbe8321SBarry Smith   PetscErrorCode ierr;
818a95e4e9SBarry Smith 
828a95e4e9SBarry Smith   PetscFunctionBegin;
83f7cf7585SBarry Smith   MatRegisterAllCalled = PETSC_TRUE;
848a95e4e9SBarry Smith 
85e884886fSBarry Smith   ierr = MatRegisterDynamic(MATMFFD,           path,"MatCreate_MFFD",    MatCreate_MFFD);CHKERRQ(ierr);
86e884886fSBarry Smith 
87f7cf7585SBarry Smith   ierr = MatRegisterDynamic(MATMPIMAIJ,        path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
88b9b97703SBarry Smith   ierr = MatRegisterDynamic(MATSEQMAIJ,        path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
89209238afSKris Buschelman   ierr = MatRegisterDynamic(MATMAIJ,           path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
90273d9f13SBarry Smith 
91186905e3SBarry Smith   ierr = MatRegisterDynamic(MATIS,             path,"MatCreate_IS",      MatCreate_IS);CHKERRQ(ierr);
92273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSHELL,          path,"MatCreate_Shell",   MatCreate_Shell);CHKERRQ(ierr);
93793850ffSBarry Smith   ierr = MatRegisterDynamic(MATCOMPOSITE,      path,"MatCreate_Composite",   MatCreate_Composite);CHKERRQ(ierr);
9401bebe75SBarry Smith 
9501bebe75SBarry Smith   ierr = MatRegisterBaseName(MATAIJ,MATSEQAIJ,MATMPIAIJ);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);
98ff34cdc8SBarry Smith #if defined(PETSC_HAVE_PTHREADCLASSES)
99bf2c1783SBarry Smith   ierr = MatRegisterBaseName(MATAIJPTHREAD,MATSEQAIJPTHREAD,0);CHKERRQ(ierr);
1007d6a0e61SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJPTHREAD,  path,"MatCreate_SeqAIJPThread", MatCreate_SeqAIJPThread);CHKERRQ(ierr);
101faea8a20SBarry Smith #endif
10217667f90SBarry Smith 
10301bebe75SBarry Smith   ierr = MatRegisterBaseName(MATAIJPERM,MATSEQAIJPERM,MATMPIAIJPERM);CHKERRQ(ierr);
1045a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJPERM,     path,"MatCreate_MPIAIJPERM", MatCreate_MPIAIJPERM);CHKERRQ(ierr);
1055a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJPERM,     path,"MatCreate_SeqAIJPERM", MatCreate_SeqAIJPERM);CHKERRQ(ierr);
10617667f90SBarry Smith 
10701bebe75SBarry Smith   ierr = MatRegisterBaseName(MATAIJCRL,MATSEQAIJCRL,MATMPIAIJCRL);CHKERRQ(ierr);
1085a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJCRL,      path,"MatCreate_SeqAIJCRL",  MatCreate_SeqAIJCRL);CHKERRQ(ierr);
1095a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJCRL,      path,"MatCreate_MPIAIJCRL",  MatCreate_MPIAIJCRL);CHKERRQ(ierr);
110273d9f13SBarry Smith 
11101bebe75SBarry Smith   ierr = MatRegisterBaseName(MATBAIJ,MATSEQBAIJ,MATMPIBAIJ);CHKERRQ(ierr);
112273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIBAIJ,        path,"MatCreate_MPIBAIJ",    MatCreate_MPIBAIJ);CHKERRQ(ierr);
113273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQBAIJ,        path,"MatCreate_SeqBAIJ",    MatCreate_SeqBAIJ);CHKERRQ(ierr);
114273d9f13SBarry Smith 
11501bebe75SBarry Smith   ierr = MatRegisterBaseName(MATSBAIJ,MATSEQSBAIJ,MATMPISBAIJ);CHKERRQ(ierr);
116273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPISBAIJ,       path,"MatCreate_MPISBAIJ",  MatCreate_MPISBAIJ);CHKERRQ(ierr);
117273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQSBAIJ,       path,"MatCreate_SeqSBAIJ",  MatCreate_SeqSBAIJ);CHKERRQ(ierr);
11817667f90SBarry Smith 
1192938c13dSDahai Guo   ierr = MatRegisterBaseName(MATBSTRM,MATSEQBSTRM,MATMPIBSTRM);CHKERRQ(ierr);
1202938c13dSDahai Guo   ierr = MatRegisterDynamic(MATMPIBSTRM,        path,"MatCreate_MPIBSTRM",    MatCreate_MPIBSTRM);CHKERRQ(ierr);
1212938c13dSDahai Guo   ierr = MatRegisterDynamic(MATSEQBSTRM,        path,"MatCreate_SeqBSTRM",    MatCreate_SeqBSTRM);CHKERRQ(ierr);
1222938c13dSDahai Guo 
1232938c13dSDahai Guo   ierr = MatRegisterBaseName(MATSBSTRM,MATSEQSBSTRM,MATMPISBSTRM);CHKERRQ(ierr);
1242938c13dSDahai Guo   ierr = MatRegisterDynamic(MATMPISBSTRM,       path,"MatCreate_MPISBSTRM",  MatCreate_MPISBSTRM);CHKERRQ(ierr);
1252938c13dSDahai Guo   ierr = MatRegisterDynamic(MATSEQSBSTRM,       path,"MatCreate_SeqSBSTRM",  MatCreate_SeqSBSTRM);CHKERRQ(ierr);
1262938c13dSDahai Guo 
12701bebe75SBarry Smith   ierr = MatRegisterBaseName(MATDENSE,MATSEQDENSE,MATMPIDENSE);CHKERRQ(ierr);
128273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIDENSE,       path,"MatCreate_MPIDense",  MatCreate_MPIDense);CHKERRQ(ierr);
129273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQDENSE,       path,"MatCreate_SeqDense",  MatCreate_SeqDense);CHKERRQ(ierr);
13017667f90SBarry Smith 
131273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIADJ,         path,"MatCreate_MPIAdj",    MatCreate_MPIAdj);CHKERRQ(ierr);
1322a6744ebSBarry Smith   ierr = MatRegisterDynamic(MATSCATTER,        path,"MatCreate_Scatter",   MatCreate_Scatter);CHKERRQ(ierr);
133421e10b8SBarry Smith   ierr = MatRegisterDynamic(MATBLOCKMAT,       path,"MatCreate_BlockMat",  MatCreate_BlockMat);CHKERRQ(ierr);
134c8883902SJed Brown   ierr = MatRegisterDynamic(MATNEST,           path,"MatCreate_Nest",      MatCreate_Nest);CHKERRQ(ierr);
13568326731SBarry Smith 
1365edff473SDmitry Karpeev   ierr = MatRegisterDynamic(MATIJ,             path,"MatCreate_IJ",   MatCreate_IJ);CHKERRQ(ierr);
13701bebe75SBarry Smith 
1388154be41SBarry Smith #if defined PETSC_HAVE_CUSP
13901bebe75SBarry Smith   ierr = MatRegisterBaseName(MATAIJCUSP,MATSEQAIJCUSP,MATMPIAIJCUSP);CHKERRQ(ierr);
1408154be41SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJCUSP,     path,"MatCreate_SeqAIJCUSP",  MatCreate_SeqAIJCUSP);CHKERRQ(ierr);
1418154be41SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJCUSP,     path,"MatCreate_MPIAIJCUSP",  MatCreate_MPIAIJCUSP);CHKERRQ(ierr);
142c6570e9aSVictor Minden #endif
14301bebe75SBarry Smith 
144dedccee8SHong Zhang #if defined PETSC_HAVE_FFTW
145dedccee8SHong Zhang   ierr = MatRegisterDynamic(MATFFTW,           path,"MatCreate_FFTW",        MatCreate_FFTW);CHKERRQ(ierr);
146dedccee8SHong Zhang #endif
147*db31f6deSJed Brown #if defined PETSC_HAVE_ELEMENTAL
148*db31f6deSJed Brown   ierr = MatRegisterDynamic(MATELEMENTAL,      path,"MatCreate_Elemental",    MatCreate_Elemental);CHKERRQ(ierr);
149*db31f6deSJed Brown #endif
1508a95e4e9SBarry Smith   PetscFunctionReturn(0);
1518a95e4e9SBarry Smith }
152f7cf7585SBarry Smith 
1533a7fca6bSBarry Smith 
154