xref: /petsc/src/mat/interface/matregis.c (revision 8154be41cdf971cfe7e5d28dc9f337960e443860)
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 
43*8154be41SBarry Smith #if defined PETSC_HAVE_CUSP
44*8154be41SBarry Smith extern PetscErrorCode  MatCreate_SeqAIJCUSP(Mat);
45*8154be41SBarry Smith extern PetscErrorCode  MatCreate_MPIAIJCUSP(Mat);
46*8154be41SBarry 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
52c0aa2d19SHong Zhang EXTERN_C_END
538a95e4e9SBarry Smith 
548a95e4e9SBarry Smith /*
55f7cf7585SBarry Smith     This is used by MatSetType() to make sure that at least one
56f7cf7585SBarry Smith     MatRegisterAll() is called. In general, if there is more than one
57f7cf7585SBarry Smith     DLL, then MatRegisterAll() may be called several times.
588a95e4e9SBarry Smith */
5909573ac7SBarry Smith extern PetscBool  MatRegisterAllCalled;
608a95e4e9SBarry Smith 
614a2ae208SSatish Balay #undef __FUNCT__
624a2ae208SSatish Balay #define __FUNCT__ "MatRegisterAll"
638a95e4e9SBarry Smith /*@C
64f7cf7585SBarry Smith   MatRegisterAll - Registers all of the matrix types in PETSc
658a95e4e9SBarry Smith 
668a95e4e9SBarry Smith   Not Collective
678a95e4e9SBarry Smith 
688a95e4e9SBarry Smith   Level: advanced
698a95e4e9SBarry Smith 
708a95e4e9SBarry Smith .keywords: KSP, register, all
718a95e4e9SBarry Smith 
72f7cf7585SBarry Smith .seealso:  MatRegisterDestroy()
738a95e4e9SBarry Smith @*/
747087cfbeSBarry Smith PetscErrorCode  MatRegisterAll(const char path[])
758a95e4e9SBarry Smith {
76dfbe8321SBarry Smith   PetscErrorCode ierr;
778a95e4e9SBarry Smith 
788a95e4e9SBarry Smith   PetscFunctionBegin;
79f7cf7585SBarry Smith   MatRegisterAllCalled = PETSC_TRUE;
808a95e4e9SBarry Smith 
81e884886fSBarry Smith   ierr = MatRegisterDynamic(MATMFFD,           path,"MatCreate_MFFD",    MatCreate_MFFD);CHKERRQ(ierr);
82e884886fSBarry Smith 
83f7cf7585SBarry Smith   ierr = MatRegisterDynamic(MATMPIMAIJ,        path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
84b9b97703SBarry Smith   ierr = MatRegisterDynamic(MATSEQMAIJ,        path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
85209238afSKris Buschelman   ierr = MatRegisterDynamic(MATMAIJ,           path,"MatCreate_MAIJ",    MatCreate_MAIJ);CHKERRQ(ierr);
86273d9f13SBarry Smith 
87186905e3SBarry Smith   ierr = MatRegisterDynamic(MATIS,             path,"MatCreate_IS",      MatCreate_IS);CHKERRQ(ierr);
88273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSHELL,          path,"MatCreate_Shell",   MatCreate_Shell);CHKERRQ(ierr);
89793850ffSBarry Smith   ierr = MatRegisterDynamic(MATCOMPOSITE,      path,"MatCreate_Composite",   MatCreate_Composite);CHKERRQ(ierr);
9017667f90SBarry Smith   ierr = MatRegisterDynamic(MATAIJ,            path,"MatCreate_AIJ",         MatCreate_AIJ);CHKERRQ(ierr);
91273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJ,         path,"MatCreate_MPIAIJ",      MatCreate_MPIAIJ);CHKERRQ(ierr);
92273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJ,         path,"MatCreate_SeqAIJ",      MatCreate_SeqAIJ);CHKERRQ(ierr);
9317667f90SBarry Smith 
945a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATAIJPERM,        path,"MatCreate_AIJPERM",    MatCreate_AIJPERM);CHKERRQ(ierr);
955a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJPERM,     path,"MatCreate_MPIAIJPERM", MatCreate_MPIAIJPERM);CHKERRQ(ierr);
965a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJPERM,     path,"MatCreate_SeqAIJPERM", MatCreate_SeqAIJPERM);CHKERRQ(ierr);
9717667f90SBarry Smith 
985a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATAIJCRL,         path,"MatCreate_AIJCRL",     MatCreate_AIJCRL);CHKERRQ(ierr);
995a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJCRL,      path,"MatCreate_SeqAIJCRL",  MatCreate_SeqAIJCRL);CHKERRQ(ierr);
1005a11e1b2SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJCRL,      path,"MatCreate_MPIAIJCRL",  MatCreate_MPIAIJCRL);CHKERRQ(ierr);
101273d9f13SBarry Smith 
10217667f90SBarry Smith   ierr = MatRegisterDynamic(MATBAIJ,           path,"MatCreate_BAIJ",       MatCreate_BAIJ);CHKERRQ(ierr);
103273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIBAIJ,        path,"MatCreate_MPIBAIJ",    MatCreate_MPIBAIJ);CHKERRQ(ierr);
104273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQBAIJ,        path,"MatCreate_SeqBAIJ",    MatCreate_SeqBAIJ);CHKERRQ(ierr);
105273d9f13SBarry Smith 
10617667f90SBarry Smith   ierr = MatRegisterDynamic(MATSBAIJ,          path,"MatCreate_SBAIJ",     MatCreate_SBAIJ);CHKERRQ(ierr);
107273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPISBAIJ,       path,"MatCreate_MPISBAIJ",  MatCreate_MPISBAIJ);CHKERRQ(ierr);
108273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQSBAIJ,       path,"MatCreate_SeqSBAIJ",  MatCreate_SeqSBAIJ);CHKERRQ(ierr);
10917667f90SBarry Smith 
11017667f90SBarry Smith   ierr = MatRegisterDynamic(MATDENSE,          path,"MatCreate_Dense",     MatCreate_Dense);CHKERRQ(ierr);
111273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIDENSE,       path,"MatCreate_MPIDense",  MatCreate_MPIDense);CHKERRQ(ierr);
112273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATSEQDENSE,       path,"MatCreate_SeqDense",  MatCreate_SeqDense);CHKERRQ(ierr);
11317667f90SBarry Smith 
114273d9f13SBarry Smith   ierr = MatRegisterDynamic(MATMPIADJ,         path,"MatCreate_MPIAdj",    MatCreate_MPIAdj);CHKERRQ(ierr);
1152a6744ebSBarry Smith   ierr = MatRegisterDynamic(MATSCATTER,        path,"MatCreate_Scatter",   MatCreate_Scatter);CHKERRQ(ierr);
116421e10b8SBarry Smith   ierr = MatRegisterDynamic(MATBLOCKMAT,       path,"MatCreate_BlockMat",   MatCreate_BlockMat);CHKERRQ(ierr);
117c8883902SJed Brown   ierr = MatRegisterDynamic(MATNEST,           path,"MatCreate_Nest",      MatCreate_Nest);CHKERRQ(ierr);
11868326731SBarry Smith 
1194d6373a4SLisandro Dalcin   /*ierr = MatRegisterDynamic(MATDD,             path,"MatCreate_DD",   MatCreate_DD);CHKERRQ(ierr);*/
120ba2f8784SDmitry Karpeev #if defined PETSC_HAVE_MATIM
121ba2f8784SDmitry Karpeev   ierr = MatRegisterDynamic(MATIM,            path,"MatCreate_IM",   MatCreate_IM);CHKERRQ(ierr);
122ba2f8784SDmitry Karpeev #endif
123*8154be41SBarry Smith #if defined PETSC_HAVE_CUSP
124*8154be41SBarry Smith   ierr = MatRegisterDynamic(MATSEQAIJCUSP,     path,"MatCreate_SeqAIJCUSP",      MatCreate_SeqAIJCUSP);CHKERRQ(ierr);
125*8154be41SBarry Smith   ierr = MatRegisterDynamic(MATMPIAIJCUSP,     path,"MatCreate_MPIAIJCUSP",      MatCreate_MPIAIJCUSP);CHKERRQ(ierr);
126*8154be41SBarry Smith   ierr = MatRegisterDynamic(MATAIJCUSP,        path,"MatCreate_AIJCUSP",         MatCreate_AIJCUSP);CHKERRQ(ierr);
127c6570e9aSVictor Minden #endif
1288a95e4e9SBarry Smith   PetscFunctionReturn(0);
1298a95e4e9SBarry Smith }
130f7cf7585SBarry Smith 
1313a7fca6bSBarry Smith 
132