xref: /petsc/src/mat/interface/matregis.c (revision dedccee8f225f91da5577b2f35bba0c3cd8d7504)
1be1d678aSKris Buschelman #define PETSCMAT_DLL
28a95e4e9SBarry Smith 
3f7cf7585SBarry Smith #include "petscmat.h"  /*I "petscmat.h" I*/
48a95e4e9SBarry Smith 
58a95e4e9SBarry Smith EXTERN_C_BEGIN
67087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MFFD(Mat);
77087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MAIJ(Mat);
87087cfbeSBarry Smith extern PetscErrorCode  MatCreate_IS(Mat);
917667f90SBarry Smith 
107087cfbeSBarry Smith extern PetscErrorCode  MatCreate_AIJ(Mat);
117087cfbeSBarry Smith extern PetscErrorCode  MatCreate_SeqAIJ(Mat);
127087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MPIAIJ(Mat);
1317667f90SBarry Smith 
147087cfbeSBarry Smith extern PetscErrorCode  MatCreate_BAIJ(Mat);
157087cfbeSBarry Smith extern PetscErrorCode  MatCreate_SeqBAIJ(Mat);
167087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MPIBAIJ(Mat);
1717667f90SBarry Smith 
187087cfbeSBarry Smith extern PetscErrorCode  MatCreate_SBAIJ(Mat);
197087cfbeSBarry Smith extern PetscErrorCode  MatCreate_SeqSBAIJ(Mat);
207087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MPISBAIJ(Mat);
2117667f90SBarry Smith 
227087cfbeSBarry Smith extern PetscErrorCode  MatCreate_Dense(Mat);
237087cfbeSBarry Smith extern PetscErrorCode  MatCreate_SeqDense(Mat);
247087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MPIDense(Mat);
2517667f90SBarry Smith 
267087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MPIAdj(Mat);
277087cfbeSBarry Smith extern PetscErrorCode  MatCreate_Shell(Mat);
287087cfbeSBarry Smith extern PetscErrorCode  MatCreate_Composite(Mat);
2917667f90SBarry Smith 
307087cfbeSBarry Smith extern PetscErrorCode  MatCreate_AIJPERM(Mat);
317087cfbeSBarry Smith extern PetscErrorCode  MatCreate_SeqAIJPERM(Mat);
327087cfbeSBarry Smith extern PetscErrorCode  MatCreate_MPIAIJPERM(Mat);
3317667f90SBarry Smith 
347087cfbeSBarry Smith extern PetscErrorCode  MatCreate_AIJCRL(Mat);
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);
468154be41SBarry Smith extern PetscErrorCode  MatCreate_AIJCUSP(Mat);
47c6570e9aSVictor Minden #endif
48c6570e9aSVictor Minden 
49ba2f8784SDmitry Karpeev #if defined PETSC_HAVE_MATIM
507087cfbeSBarry Smith extern PetscErrorCode  MatCreate_IM(Mat);
51ba2f8784SDmitry Karpeev #endif
52*dedccee8SHong Zhang 
53*dedccee8SHong Zhang #if defined PETSC_HAVE_FFTW
54*dedccee8SHong Zhang extern PetscErrorCode  MatCreate_FFTW(Mat);
55*dedccee8SHong Zhang #endif
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);
9417667f90SBarry Smith   ierr = MatRegisterDynamic(MATAIJ,            path,"MatCreate_AIJ",         MatCreate_AIJ);CHKERRQ(ierr);
95273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJ,         path,"MatCreate_MPIAIJ",      MatCreate_MPIAIJ);CHKERRQ(ierr);
96273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJ,         path,"MatCreate_SeqAIJ",      MatCreate_SeqAIJ);CHKERRQ(ierr);
9717667f90SBarry Smith 
985a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATAIJPERM,        path,"MatCreate_AIJPERM",    MatCreate_AIJPERM);CHKERRQ(ierr);
995a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJPERM,     path,"MatCreate_MPIAIJPERM", MatCreate_MPIAIJPERM);CHKERRQ(ierr);
1005a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJPERM,     path,"MatCreate_SeqAIJPERM", MatCreate_SeqAIJPERM);CHKERRQ(ierr);
10117667f90SBarry Smith 
1025a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATAIJCRL,         path,"MatCreate_AIJCRL",     MatCreate_AIJCRL);CHKERRQ(ierr);
1035a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJCRL,      path,"MatCreate_SeqAIJCRL",  MatCreate_SeqAIJCRL);CHKERRQ(ierr);
1045a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJCRL,      path,"MatCreate_MPIAIJCRL",  MatCreate_MPIAIJCRL);CHKERRQ(ierr);
105273d9f13SBarry Smith 
10617667f90SBarry Smith   ierr = MatRegisterDynamic(MATBAIJ,           path,"MatCreate_BAIJ",       MatCreate_BAIJ);CHKERRQ(ierr);
107273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIBAIJ,        path,"MatCreate_MPIBAIJ",    MatCreate_MPIBAIJ);CHKERRQ(ierr);
108273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQBAIJ,        path,"MatCreate_SeqBAIJ",    MatCreate_SeqBAIJ);CHKERRQ(ierr);
109273d9f13SBarry Smith 
11017667f90SBarry Smith   ierr = MatRegisterDynamic(MATSBAIJ,          path,"MatCreate_SBAIJ",     MatCreate_SBAIJ);CHKERRQ(ierr);
111273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPISBAIJ,       path,"MatCreate_MPISBAIJ",  MatCreate_MPISBAIJ);CHKERRQ(ierr);
112273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQSBAIJ,       path,"MatCreate_SeqSBAIJ",  MatCreate_SeqSBAIJ);CHKERRQ(ierr);
11317667f90SBarry Smith 
11417667f90SBarry Smith   ierr = MatRegisterDynamic(MATDENSE,          path,"MatCreate_Dense",     MatCreate_Dense);CHKERRQ(ierr);
115273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIDENSE,       path,"MatCreate_MPIDense",  MatCreate_MPIDense);CHKERRQ(ierr);
116273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQDENSE,       path,"MatCreate_SeqDense",  MatCreate_SeqDense);CHKERRQ(ierr);
11717667f90SBarry Smith 
118273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIADJ,         path,"MatCreate_MPIAdj",    MatCreate_MPIAdj);CHKERRQ(ierr);
1192a6744ebSBarry Smith   ierr = MatRegisterDynamic(MATSCATTER,        path,"MatCreate_Scatter",   MatCreate_Scatter);CHKERRQ(ierr);
120421e10b8SBarry Smith   ierr = MatRegisterDynamic(MATBLOCKMAT,       path,"MatCreate_BlockMat",  MatCreate_BlockMat);CHKERRQ(ierr);
121c8883902SJed Brown   ierr = MatRegisterDynamic(MATNEST,           path,"MatCreate_Nest",      MatCreate_Nest);CHKERRQ(ierr);
12268326731SBarry Smith 
1234d6373a4SLisandro Dalcin   /*ierr = MatRegisterDynamic(MATDD,             path,"MatCreate_DD",   MatCreate_DD);CHKERRQ(ierr);*/
124ba2f8784SDmitry Karpeev #if defined PETSC_HAVE_MATIM
125ba2f8784SDmitry Karpeev   ierr = MatRegisterDynamic(MATIM,             path,"MatCreate_IM",   MatCreate_IM);CHKERRQ(ierr);
126ba2f8784SDmitry Karpeev #endif
1278154be41SBarry Smith #if defined PETSC_HAVE_CUSP
1288154be41SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJCUSP,     path,"MatCreate_SeqAIJCUSP",  MatCreate_SeqAIJCUSP);CHKERRQ(ierr);
1298154be41SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJCUSP,     path,"MatCreate_MPIAIJCUSP",  MatCreate_MPIAIJCUSP);CHKERRQ(ierr);
1308154be41SBarry Smith   ierr = MatRegisterDynamic(MATAIJCUSP,        path,"MatCreate_AIJCUSP",     MatCreate_AIJCUSP);CHKERRQ(ierr);
131c6570e9aSVictor Minden #endif
132*dedccee8SHong Zhang #if defined PETSC_HAVE_FFTW
133*dedccee8SHong Zhang   ierr = MatRegisterDynamic(MATFFTW,           path,"MatCreate_FFTW",        MatCreate_FFTW);CHKERRQ(ierr);
134*dedccee8SHong Zhang #endif
1358a95e4e9SBarry Smith   PetscFunctionReturn(0);
1368a95e4e9SBarry Smith }
137f7cf7585SBarry Smith 
1383a7fca6bSBarry Smith 
139