xref: /petsc/src/mat/interface/matregis.c (revision 8cc058d9cd56c1ccb3be12a47760ddfc446aaffc)
18a95e4e9SBarry Smith 
2c6db04a5SJed Brown #include <petscmat.h>  /*I "petscmat.h" I*/
38a95e4e9SBarry Smith 
4*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MFFD(Mat);
5*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MAIJ(Mat);
6*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_IS(Mat);
717667f90SBarry Smith 
8*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJ(Mat);
9*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJ(Mat);
1017667f90SBarry Smith 
11*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqBAIJ(Mat);
12*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIBAIJ(Mat);
1317667f90SBarry Smith 
14*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqSBAIJ(Mat);
15*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPISBAIJ(Mat);
1617667f90SBarry Smith 
17*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqBSTRM(Mat);
18*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIBSTRM(Mat);
192938c13dSDahai Guo 
20*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqSBSTRM(Mat);
21*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPISBSTRM(Mat);
222938c13dSDahai Guo 
23*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqDense(Mat);
24*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIDense(Mat);
2517667f90SBarry Smith 
26*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAdj(Mat);
27*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Shell(Mat);
28*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Composite(Mat);
2917667f90SBarry Smith 
30*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJPERM(Mat);
31*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJPERM(Mat);
3217667f90SBarry Smith 
33*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJCRL(Mat);
34*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJCRL(Mat);
3517667f90SBarry Smith 
36*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Scatter(Mat);
37*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_BlockMat(Mat);
38*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Nest(Mat);
39c6570e9aSVictor Minden 
408154be41SBarry Smith #if defined PETSC_HAVE_CUSP
41*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJCUSP(Mat);
42*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJCUSP(Mat);
43c6570e9aSVictor Minden #endif
44c6570e9aSVictor Minden 
459ae82921SPaul Mullowney #if defined PETSC_HAVE_TXPETSCGPU
46*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJCUSPARSE(Mat);
47*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJCUSPARSE(Mat);
489ae82921SPaul Mullowney #endif
499ae82921SPaul Mullowney 
50dedccee8SHong Zhang #if defined PETSC_HAVE_FFTW
51*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_FFTW(Mat);
52dedccee8SHong Zhang #endif
53*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode MatCreate_Elemental(Mat);
548a95e4e9SBarry Smith 
558a95e4e9SBarry Smith /*
56f7cf7585SBarry Smith     This is used by MatSetType() to make sure that at least one
57f7cf7585SBarry Smith     MatRegisterAll() is called. In general, if there is more than one
58f7cf7585SBarry Smith     DLL, then MatRegisterAll() may be called several times.
598a95e4e9SBarry Smith */
6009573ac7SBarry Smith extern PetscBool MatRegisterAllCalled;
618a95e4e9SBarry Smith 
624a2ae208SSatish Balay #undef __FUNCT__
634a2ae208SSatish Balay #define __FUNCT__ "MatRegisterAll"
648a95e4e9SBarry Smith /*@C
65f7cf7585SBarry Smith   MatRegisterAll - Registers all of the matrix types in PETSc
668a95e4e9SBarry Smith 
678a95e4e9SBarry Smith   Not Collective
688a95e4e9SBarry Smith 
698a95e4e9SBarry Smith   Level: advanced
708a95e4e9SBarry Smith 
718a95e4e9SBarry Smith .keywords: KSP, register, all
728a95e4e9SBarry Smith 
73f7cf7585SBarry Smith .seealso:  MatRegisterDestroy()
748a95e4e9SBarry Smith @*/
757087cfbeSBarry Smith PetscErrorCode  MatRegisterAll(const char path[])
768a95e4e9SBarry Smith {
77dfbe8321SBarry Smith   PetscErrorCode ierr;
788a95e4e9SBarry Smith 
798a95e4e9SBarry Smith   PetscFunctionBegin;
80f7cf7585SBarry Smith   MatRegisterAllCalled = PETSC_TRUE;
818a95e4e9SBarry Smith 
82e884886fSBarry Smith   ierr = MatRegisterDynamic(MATMFFD,           path,"MatCreate_MFFD",    MatCreate_MFFD);CHKERRQ(ierr);
83e884886fSBarry Smith 
84f7cf7585SBarry Smith   ierr = MatRegisterDynamic(MATMPIMAIJ,        path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
85b9b97703SBarry Smith   ierr = MatRegisterDynamic(MATSEQMAIJ,        path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
86209238afSKris Buschelman   ierr = MatRegisterDynamic(MATMAIJ,           path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
87273d9f13SBarry Smith 
88186905e3SBarry Smith   ierr = MatRegisterDynamic(MATIS,             path,"MatCreate_IS",      MatCreate_IS);CHKERRQ(ierr);
89273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSHELL,          path,"MatCreate_Shell",   MatCreate_Shell);CHKERRQ(ierr);
90793850ffSBarry Smith   ierr = MatRegisterDynamic(MATCOMPOSITE,      path,"MatCreate_Composite",   MatCreate_Composite);CHKERRQ(ierr);
9101bebe75SBarry Smith 
9201bebe75SBarry Smith   ierr = MatRegisterBaseName(MATAIJ,MATSEQAIJ,MATMPIAIJ);CHKERRQ(ierr);
93273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJ,         path,"MatCreate_MPIAIJ",      MatCreate_MPIAIJ);CHKERRQ(ierr);
94273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJ,         path,"MatCreate_SeqAIJ",      MatCreate_SeqAIJ);CHKERRQ(ierr);
9517667f90SBarry Smith 
9601bebe75SBarry Smith   ierr = MatRegisterBaseName(MATAIJPERM,MATSEQAIJPERM,MATMPIAIJPERM);CHKERRQ(ierr);
975a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJPERM,     path,"MatCreate_MPIAIJPERM", MatCreate_MPIAIJPERM);CHKERRQ(ierr);
985a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJPERM,     path,"MatCreate_SeqAIJPERM", MatCreate_SeqAIJPERM);CHKERRQ(ierr);
9917667f90SBarry Smith 
10001bebe75SBarry Smith   ierr = MatRegisterBaseName(MATAIJCRL,MATSEQAIJCRL,MATMPIAIJCRL);CHKERRQ(ierr);
1015a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJCRL,      path,"MatCreate_SeqAIJCRL",  MatCreate_SeqAIJCRL);CHKERRQ(ierr);
1025a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJCRL,      path,"MatCreate_MPIAIJCRL",  MatCreate_MPIAIJCRL);CHKERRQ(ierr);
103273d9f13SBarry Smith 
10401bebe75SBarry Smith   ierr = MatRegisterBaseName(MATBAIJ,MATSEQBAIJ,MATMPIBAIJ);CHKERRQ(ierr);
105273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIBAIJ,        path,"MatCreate_MPIBAIJ",    MatCreate_MPIBAIJ);CHKERRQ(ierr);
106273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQBAIJ,        path,"MatCreate_SeqBAIJ",    MatCreate_SeqBAIJ);CHKERRQ(ierr);
107273d9f13SBarry Smith 
10801bebe75SBarry Smith   ierr = MatRegisterBaseName(MATSBAIJ,MATSEQSBAIJ,MATMPISBAIJ);CHKERRQ(ierr);
109273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPISBAIJ,       path,"MatCreate_MPISBAIJ",  MatCreate_MPISBAIJ);CHKERRQ(ierr);
110273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQSBAIJ,       path,"MatCreate_SeqSBAIJ",  MatCreate_SeqSBAIJ);CHKERRQ(ierr);
11117667f90SBarry Smith 
1122938c13dSDahai Guo   ierr = MatRegisterBaseName(MATBSTRM,MATSEQBSTRM,MATMPIBSTRM);CHKERRQ(ierr);
1132938c13dSDahai Guo   ierr = MatRegisterDynamic(MATMPIBSTRM,        path,"MatCreate_MPIBSTRM",    MatCreate_MPIBSTRM);CHKERRQ(ierr);
1142938c13dSDahai Guo   ierr = MatRegisterDynamic(MATSEQBSTRM,        path,"MatCreate_SeqBSTRM",    MatCreate_SeqBSTRM);CHKERRQ(ierr);
1152938c13dSDahai Guo 
1162938c13dSDahai Guo   ierr = MatRegisterBaseName(MATSBSTRM,MATSEQSBSTRM,MATMPISBSTRM);CHKERRQ(ierr);
1172938c13dSDahai Guo   ierr = MatRegisterDynamic(MATMPISBSTRM,       path,"MatCreate_MPISBSTRM",  MatCreate_MPISBSTRM);CHKERRQ(ierr);
1182938c13dSDahai Guo   ierr = MatRegisterDynamic(MATSEQSBSTRM,       path,"MatCreate_SeqSBSTRM",  MatCreate_SeqSBSTRM);CHKERRQ(ierr);
1192938c13dSDahai Guo 
12001bebe75SBarry Smith   ierr = MatRegisterBaseName(MATDENSE,MATSEQDENSE,MATMPIDENSE);CHKERRQ(ierr);
121273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIDENSE,       path,"MatCreate_MPIDense",  MatCreate_MPIDense);CHKERRQ(ierr);
122273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQDENSE,       path,"MatCreate_SeqDense",  MatCreate_SeqDense);CHKERRQ(ierr);
12317667f90SBarry Smith 
124273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIADJ,         path,"MatCreate_MPIAdj",    MatCreate_MPIAdj);CHKERRQ(ierr);
1252a6744ebSBarry Smith   ierr = MatRegisterDynamic(MATSCATTER,        path,"MatCreate_Scatter",   MatCreate_Scatter);CHKERRQ(ierr);
126421e10b8SBarry Smith   ierr = MatRegisterDynamic(MATBLOCKMAT,       path,"MatCreate_BlockMat",  MatCreate_BlockMat);CHKERRQ(ierr);
127c8883902SJed Brown   ierr = MatRegisterDynamic(MATNEST,           path,"MatCreate_Nest",      MatCreate_Nest);CHKERRQ(ierr);
12868326731SBarry Smith 
12901bebe75SBarry Smith 
1308154be41SBarry Smith #if defined PETSC_HAVE_CUSP
13101bebe75SBarry Smith   ierr = MatRegisterBaseName(MATAIJCUSP,MATSEQAIJCUSP,MATMPIAIJCUSP);CHKERRQ(ierr);
1328154be41SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJCUSP,     path,"MatCreate_SeqAIJCUSP",  MatCreate_SeqAIJCUSP);CHKERRQ(ierr);
1338154be41SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJCUSP,     path,"MatCreate_MPIAIJCUSP",  MatCreate_MPIAIJCUSP);CHKERRQ(ierr);
134c6570e9aSVictor Minden #endif
13501bebe75SBarry Smith 
1369ae82921SPaul Mullowney #if defined PETSC_HAVE_TXPETSCGPU
1379ae82921SPaul Mullowney   ierr = MatRegisterBaseName(MATAIJCUSPARSE,MATSEQAIJCUSPARSE,MATMPIAIJCUSPARSE);CHKERRQ(ierr);
1389ae82921SPaul Mullowney   ierr = MatRegisterDynamic(MATSEQAIJCUSPARSE,     path,"MatCreate_SeqAIJCUSPARSE",  MatCreate_SeqAIJCUSPARSE);CHKERRQ(ierr);
1399ae82921SPaul Mullowney   ierr = MatRegisterDynamic(MATMPIAIJCUSPARSE,     path,"MatCreate_MPIAIJCUSPARSE",  MatCreate_MPIAIJCUSPARSE);CHKERRQ(ierr);
1409ae82921SPaul Mullowney #endif
1419ae82921SPaul Mullowney 
142dedccee8SHong Zhang #if defined PETSC_HAVE_FFTW
143dedccee8SHong Zhang   ierr = MatRegisterDynamic(MATFFTW,           path,"MatCreate_FFTW",        MatCreate_FFTW);CHKERRQ(ierr);
144dedccee8SHong Zhang #endif
145db31f6deSJed Brown #if defined PETSC_HAVE_ELEMENTAL
146db31f6deSJed Brown   ierr = MatRegisterDynamic(MATELEMENTAL,      path,"MatCreate_Elemental",    MatCreate_Elemental);CHKERRQ(ierr);
147db31f6deSJed Brown #endif
1488a95e4e9SBarry Smith   PetscFunctionReturn(0);
1498a95e4e9SBarry Smith }
150f7cf7585SBarry Smith 
1513a7fca6bSBarry Smith 
152