Actual source code: matregis.c


  2: #include <petsc/private/matimpl.h>

  4: PETSC_EXTERN PetscErrorCode MatCreate_MFFD(Mat);
  5: PETSC_EXTERN PetscErrorCode MatCreate_MAIJ(Mat);
  6: PETSC_EXTERN PetscErrorCode MatCreate_KAIJ(Mat);
  7: PETSC_EXTERN PetscErrorCode MatCreate_IS(Mat);

  9: PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJ(Mat);
 10: PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJ(Mat);

 12: PETSC_EXTERN PetscErrorCode MatCreate_SeqBAIJ(Mat);
 13: PETSC_EXTERN PetscErrorCode MatCreate_MPIBAIJ(Mat);

 15: PETSC_EXTERN PetscErrorCode MatCreate_SeqSBAIJ(Mat);
 16: PETSC_EXTERN PetscErrorCode MatCreate_MPISBAIJ(Mat);

 18: PETSC_EXTERN PetscErrorCode MatCreate_SeqDense(Mat);
 19: PETSC_EXTERN PetscErrorCode MatCreate_MPIDense(Mat);
 20: #if defined(PETSC_HAVE_CUDA)
 21: PETSC_EXTERN PetscErrorCode MatCreate_SeqDenseCUDA(Mat);
 22: PETSC_EXTERN PetscErrorCode MatCreate_MPIDenseCUDA(Mat);
 23: #endif

 25: PETSC_EXTERN PetscErrorCode MatCreate_MPIAdj(Mat);
 26: PETSC_EXTERN PetscErrorCode MatCreate_Shell(Mat);
 27: PETSC_EXTERN PetscErrorCode MatCreate_Composite(Mat);

 29: PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJPERM(Mat);
 30: PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJPERM(Mat);

 32: PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJSELL(Mat);
 33: PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJSELL(Mat);

 35: #if defined(PETSC_HAVE_MKL_SPARSE)
 36: PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJMKL(Mat);
 37: PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJMKL(Mat);
 38: #endif

 40: #if defined(PETSC_HAVE_MKL_SPARSE_OPTIMIZE)
 41: PETSC_EXTERN PetscErrorCode MatCreate_SeqBAIJMKL(Mat);
 42: PETSC_EXTERN PetscErrorCode MatCreate_MPIBAIJMKL(Mat);
 43: #endif

 45: PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJCRL(Mat);
 46: PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJCRL(Mat);

 48: PETSC_EXTERN PetscErrorCode MatCreate_Scatter(Mat);
 49: PETSC_EXTERN PetscErrorCode MatCreate_BlockMat(Mat);
 50: PETSC_EXTERN PetscErrorCode MatCreate_Nest(Mat);

 52: PETSC_EXTERN PetscErrorCode MatCreate_SeqSELL(Mat);
 53: PETSC_EXTERN PetscErrorCode MatCreate_MPISELL(Mat);

 55: #if defined(PETSC_HAVE_CUDA)
 56: PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJCUSPARSE(Mat);
 57: PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJCUSPARSE(Mat);
 58: #endif

 60: #if defined(PETSC_HAVE_VIENNACL)
 61: PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJViennaCL(Mat);
 62: PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJViennaCL(Mat);
 63: #endif

 65: #if defined(PETSC_HAVE_KOKKOS_KERNELS)
 66: PETSC_EXTERN PetscErrorCode MatCreate_SeqAIJKokkos(Mat);
 67: PETSC_EXTERN PetscErrorCode MatCreate_MPIAIJKokkos(Mat);
 68: #endif

 70: #if defined(PETSC_HAVE_FFTW)
 71: PETSC_EXTERN PetscErrorCode MatCreate_FFTW(Mat);
 72: #endif
 73: #if defined(PETSC_HAVE_ELEMENTAL)
 74: PETSC_EXTERN PetscErrorCode MatCreate_Elemental(Mat);
 75: #endif
 76: #if defined(PETSC_HAVE_SCALAPACK)
 77: PETSC_EXTERN PetscErrorCode MatCreate_ScaLAPACK(Mat);
 78: #endif

 80: PETSC_EXTERN PetscErrorCode MatCreate_Preallocator(Mat);
 81: PETSC_EXTERN PetscErrorCode MatCreate_Dummy(Mat);

 83: #if defined(PETSC_HAVE_HYPRE)
 84: PETSC_EXTERN PetscErrorCode MatCreate_HYPRE(Mat);
 85: #endif

 87: PETSC_EXTERN PetscErrorCode MatCreate_ConstantDiagonal(Mat);

 89: #if defined(PETSC_HAVE_H2OPUS)
 90: PETSC_EXTERN PetscErrorCode MatCreate_H2OPUS(Mat);
 91: #endif

 93: #if defined(PETSC_HAVE_HTOOL)
 94: PETSC_EXTERN PetscErrorCode MatCreate_Htool(Mat);
 95: #endif

 97: /*@C
 98:   MatRegisterAll - Registers all of the matrix types in PETSc

100:   Not Collective

102:   Level: advanced

104: .seealso:  MatRegister()
105: @*/
106: PetscErrorCode  MatRegisterAll(void)
107: {
108:   if (MatRegisterAllCalled) return 0;
109:   MatRegisterAllCalled = PETSC_TRUE;

111:   MatRegister(MATMFFD,           MatCreate_MFFD);

113:   MatRegister(MATMPIMAIJ,        MatCreate_MAIJ);
114:   MatRegister(MATSEQMAIJ,        MatCreate_MAIJ);
115:   MatRegister(MATMAIJ,           MatCreate_MAIJ);

117:   MatRegister(MATMPIKAIJ,        MatCreate_KAIJ);
118:   MatRegister(MATSEQKAIJ,        MatCreate_KAIJ);
119:   MatRegister(MATKAIJ,           MatCreate_KAIJ);

121:   MatRegister(MATIS,             MatCreate_IS);
122:   MatRegister(MATSHELL,          MatCreate_Shell);
123:   MatRegister(MATCOMPOSITE,      MatCreate_Composite);

125:   MatRegisterRootName(MATAIJ,MATSEQAIJ,MATMPIAIJ);
126:   MatRegister(MATMPIAIJ,         MatCreate_MPIAIJ);
127:   MatRegister(MATSEQAIJ,         MatCreate_SeqAIJ);

129:   MatRegisterRootName(MATAIJPERM,MATSEQAIJPERM,MATMPIAIJPERM);
130:   MatRegister(MATMPIAIJPERM,     MatCreate_MPIAIJPERM);
131:   MatRegister(MATSEQAIJPERM,     MatCreate_SeqAIJPERM);

133:   MatRegisterRootName(MATAIJSELL,MATSEQAIJSELL,MATMPIAIJSELL);
134:   MatRegister(MATMPIAIJSELL,     MatCreate_MPIAIJSELL);
135:   MatRegister(MATSEQAIJSELL,     MatCreate_SeqAIJSELL);

137: #if defined(PETSC_HAVE_MKL_SPARSE)
138:   MatRegisterRootName(MATAIJMKL, MATSEQAIJMKL,MATMPIAIJMKL);
139:   MatRegister(MATMPIAIJMKL,      MatCreate_MPIAIJMKL);
140:   MatRegister(MATSEQAIJMKL,      MatCreate_SeqAIJMKL);
141: #endif

143: #if defined(PETSC_HAVE_MKL_SPARSE_OPTIMIZE)
144:   MatRegisterRootName(MATBAIJMKL,MATSEQBAIJMKL,MATMPIBAIJMKL);
145:   MatRegister(MATMPIBAIJMKL,      MatCreate_MPIBAIJMKL);
146:   MatRegister(MATSEQBAIJMKL,      MatCreate_SeqBAIJMKL);
147: #endif

149:   MatRegisterRootName(MATAIJCRL,MATSEQAIJCRL,MATMPIAIJCRL);
150:   MatRegister(MATSEQAIJCRL,      MatCreate_SeqAIJCRL);
151:   MatRegister(MATMPIAIJCRL,      MatCreate_MPIAIJCRL);

153:   MatRegisterRootName(MATBAIJ,MATSEQBAIJ,MATMPIBAIJ);
154:   MatRegister(MATMPIBAIJ,        MatCreate_MPIBAIJ);
155:   MatRegister(MATSEQBAIJ,        MatCreate_SeqBAIJ);

157:   MatRegisterRootName(MATSBAIJ,MATSEQSBAIJ,MATMPISBAIJ);
158:   MatRegister(MATMPISBAIJ,       MatCreate_MPISBAIJ);
159:   MatRegister(MATSEQSBAIJ,       MatCreate_SeqSBAIJ);

161:   MatRegisterRootName(MATDENSE,MATSEQDENSE,MATMPIDENSE);
162:   MatRegister(MATMPIDENSE,       MatCreate_MPIDense);
163:   MatRegister(MATSEQDENSE,       MatCreate_SeqDense);
164: #if defined(PETSC_HAVE_CUDA)
165:   MatRegisterRootName(MATDENSECUDA,MATSEQDENSECUDA,MATMPIDENSECUDA);
166:   MatRegister(MATSEQDENSECUDA,   MatCreate_SeqDenseCUDA);
167:   MatRegister(MATMPIDENSECUDA,   MatCreate_MPIDenseCUDA);
168: #endif

170:   MatRegister(MATMPIADJ,         MatCreate_MPIAdj);
171:   MatRegister(MATSCATTER,        MatCreate_Scatter);
172:   MatRegister(MATBLOCKMAT,       MatCreate_BlockMat);
173:   MatRegister(MATNEST,           MatCreate_Nest);

175:   MatRegisterRootName(MATSELL,MATSEQSELL,MATMPISELL);
176:   MatRegister(MATMPISELL,         MatCreate_MPISELL);
177:   MatRegister(MATSEQSELL,         MatCreate_SeqSELL);

179: #if defined(PETSC_HAVE_CUDA)
180:   MatRegisterRootName(MATAIJCUSPARSE,MATSEQAIJCUSPARSE,MATMPIAIJCUSPARSE);
181:   MatRegister(MATSEQAIJCUSPARSE, MatCreate_SeqAIJCUSPARSE);
182:   MatRegister(MATMPIAIJCUSPARSE, MatCreate_MPIAIJCUSPARSE);
183: #endif

185: #if defined(PETSC_HAVE_VIENNACL)
186:   MatRegisterRootName(MATAIJVIENNACL,MATSEQAIJVIENNACL,MATMPIAIJVIENNACL);
187:   MatRegister(MATSEQAIJVIENNACL, MatCreate_SeqAIJViennaCL);
188:   MatRegister(MATMPIAIJVIENNACL, MatCreate_MPIAIJViennaCL);
189: #endif

191: #if defined(PETSC_HAVE_KOKKOS_KERNELS)
192:   MatRegisterRootName(MATAIJKOKKOS,MATSEQAIJKOKKOS,MATMPIAIJKOKKOS);
193:   MatRegister(MATSEQAIJKOKKOS,   MatCreate_SeqAIJKokkos);
194:   MatRegister(MATMPIAIJKOKKOS,   MatCreate_MPIAIJKokkos);
195: #endif

197: #if defined(PETSC_HAVE_FFTW)
198:   MatRegister(MATFFTW,           MatCreate_FFTW);
199: #endif
200: #if defined(PETSC_HAVE_ELEMENTAL)
201:   MatRegister(MATELEMENTAL,      MatCreate_Elemental);
202: #endif
203: #if defined(PETSC_HAVE_SCALAPACK)
204:   MatRegister(MATSCALAPACK,      MatCreate_ScaLAPACK);
205: #endif

207:   MatRegister(MATPREALLOCATOR,   MatCreate_Preallocator);
208:   MatRegister(MATDUMMY,          MatCreate_Dummy);

210:   MatRegister(MATCONSTANTDIAGONAL,MatCreate_ConstantDiagonal);

212: #if defined(PETSC_HAVE_HYPRE)
213:   MatRegister(MATHYPRE,          MatCreate_HYPRE);
214: #endif

216: #if defined(PETSC_HAVE_H2OPUS)
217:   MatRegister(MATH2OPUS,         MatCreate_H2OPUS);
218: #endif

220: #if defined(PETSC_HAVE_HTOOL)
221:   MatRegister(MATHTOOL,          MatCreate_Htool);
222: #endif
223:   return 0;
224: }