xref: /petsc/src/mat/interface/dlregismat.c (revision 071fcb05f2a6aea8aef2c2090580530b9e9df77e)
11153da11SBarry Smith 
2af0996ceSBarry Smith #include <petsc/private/matimpl.h>
31153da11SBarry Smith 
40f8fb01aSBarry Smith const char       *MatOptions_Shifted[] = {"UNUSED_NONZERO_LOCATION_ERR",
592d4d306SBarry Smith                                   "ROW_ORIENTED",
60f8fb01aSBarry Smith                                   "NOT_A_VALID_OPTION",
74e0d8c25SBarry Smith                                   "SYMMETRIC",
84e0d8c25SBarry Smith                                   "STRUCTURALLY_SYMMETRIC",
9dc5b3d67SBarry Smith                                   "NEW_DIAGONALS",
104e0d8c25SBarry Smith                                   "IGNORE_OFF_PROC_ENTRIES",
1192d4d306SBarry Smith                                   "USE_HASH_TABLE",
1292d4d306SBarry Smith                                   "KEEP_NONZERO_PATTERN",
1392d4d306SBarry Smith                                   "IGNORE_ZERO_ENTRIES",
1492d4d306SBarry Smith                                   "USE_INODES",
154e0d8c25SBarry Smith                                   "HERMITIAN",
164e0d8c25SBarry Smith                                   "SYMMETRY_ETERNAL",
170f8fb01aSBarry Smith                                   "NEW_NONZERO_LOCATION_ERR",
1892d4d306SBarry Smith                                   "IGNORE_LOWER_TRIANGULAR",
1992d4d306SBarry Smith                                   "ERROR_LOWER_TRIANGULAR",
2092d4d306SBarry Smith                                   "GETROW_UPPERTRIANGULAR",
2192d4d306SBarry Smith                                   "SPD",
2292d4d306SBarry Smith                                   "NO_OFF_PROC_ZERO_ROWS",
2392d4d306SBarry Smith                                   "NO_OFF_PROC_ENTRIES",
2492d4d306SBarry Smith                                   "NEW_NONZERO_LOCATIONS",
250f8fb01aSBarry Smith                                   "NEW_NONZERO_ALLOCATION_ERR",
260f8fb01aSBarry Smith                                   "MAT_SUBSET_OFF_PROC_ENTRIES",
270f8fb01aSBarry Smith                                   "MAT_SUBMAT_SINGLEIS",
28*071fcb05SBarry Smith                                   "MAT_STRUCTURE_ONLY",
29*071fcb05SBarry Smith                                   "MAT_SORTED_FULL",
3092d4d306SBarry Smith                                   "MatOption","MAT_",0};
310f8fb01aSBarry Smith const char *const* MatOptions = MatOptions_Shifted+2;
326a6fc655SJed Brown const char *const MatFactorShiftTypes[] = {"NONE","NONZERO","POSITIVE_DEFINITE","INBLOCKS","MatFactorShiftType","PC_FACTOR_",0};
335e9742b9SJed Brown const char *const MatFactorShiftTypesDetail[] = {NULL,"diagonal shift to prevent zero pivot","Manteuffel shift","diagonal shift on blocks to prevent zero pivot"};
34b0ca845eSVaclav Hapla const char *const MPPTScotchStrategyTypes[] = {"DEFAULT","QUALITY","SPEED","BALANCE","SAFETY","SCALABILITY","MPPTScotchStrategyType","MP_PTSCOTCH_",0};
356a6fc655SJed Brown const char *const MPChacoGlobalTypes[] = {"","MULTILEVEL","SPECTRAL","","LINEAR","RANDOM","SCATTERED","MPChacoGlobalType","MP_CHACO_",0};
366a6fc655SJed Brown const char *const MPChacoLocalTypes[] = {"","KERNIGHAN","NONE","MPChacoLocalType","MP_CHACO_",0};
376a6fc655SJed Brown const char *const MPChacoEigenTypes[] = {"LANCZOS","RQI","MPChacoEigenType","MP_CHACO_",0};
38290bbb0aSBarry Smith 
39607a6623SBarry Smith extern PetscErrorCode  MatMFFDInitializePackage(void);
403ca39a21SBarry Smith extern PetscErrorCode  MatSolverTypeDestroy(void);
41ace3abfcSBarry Smith static PetscBool MatPackageInitialized = PETSC_FALSE;
42b022a5c1SBarry Smith /*@C
4360154eb2SBarry Smith   MatFinalizePackage - This function destroys everything in the Petsc interface to the Mat package. It is
44b022a5c1SBarry Smith   called from PetscFinalize().
45b022a5c1SBarry Smith 
46b022a5c1SBarry Smith   Level: developer
47b022a5c1SBarry Smith 
48b022a5c1SBarry Smith .seealso: PetscFinalize()
49b022a5c1SBarry Smith @*/
507087cfbeSBarry Smith PetscErrorCode  MatFinalizePackage(void)
51b022a5c1SBarry Smith {
5223bebc0bSBarry Smith   MatRootName    nnames,names = MatRootNameList;
5301bebe75SBarry Smith   PetscErrorCode ierr;
5401bebe75SBarry Smith 
55b022a5c1SBarry Smith   PetscFunctionBegin;
563ca39a21SBarry Smith   ierr = MatSolverTypeDestroy();CHKERRQ(ierr);
5701bebe75SBarry Smith   while (names) {
5801bebe75SBarry Smith     nnames = names->next;
5923bebc0bSBarry Smith     ierr   = PetscFree(names->rname);CHKERRQ(ierr);
6001bebe75SBarry Smith     ierr   = PetscFree(names->sname);CHKERRQ(ierr);
6101bebe75SBarry Smith     ierr   = PetscFree(names->mname);CHKERRQ(ierr);
6201bebe75SBarry Smith     ierr   = PetscFree(names);CHKERRQ(ierr);
6301bebe75SBarry Smith     names  = nnames;
6401bebe75SBarry Smith   }
6537e93019SBarry Smith   ierr = PetscFunctionListDestroy(&MatList);CHKERRQ(ierr);
6637e93019SBarry Smith   ierr = PetscFunctionListDestroy(&MatOrderingList);CHKERRQ(ierr);
6737e93019SBarry Smith   ierr = PetscFunctionListDestroy(&MatColoringList);CHKERRQ(ierr);
6837e93019SBarry Smith   ierr = PetscFunctionListDestroy(&MatPartitioningList);CHKERRQ(ierr);
6937e93019SBarry Smith   ierr = PetscFunctionListDestroy(&MatCoarsenList);CHKERRQ(ierr);
7023bebc0bSBarry Smith   MatRootNameList                  = NULL;
71b022a5c1SBarry Smith   MatPackageInitialized            = PETSC_FALSE;
72b022a5c1SBarry Smith   MatRegisterAllCalled             = PETSC_FALSE;
73b022a5c1SBarry Smith   MatOrderingRegisterAllCalled     = PETSC_FALSE;
74b022a5c1SBarry Smith   MatColoringRegisterAllCalled     = PETSC_FALSE;
75b022a5c1SBarry Smith   MatPartitioningRegisterAllCalled = PETSC_FALSE;
76b43b03e9SMark F. Adams   MatCoarsenRegisterAllCalled      = PETSC_FALSE;
774099cc6bSBarry Smith   /* this is not ideal because it exposes SeqAIJ implementation details directly into the base Mat code */
784099cc6bSBarry Smith   ierr = PetscFunctionListDestroy(&MatSeqAIJList);CHKERRQ(ierr);
794099cc6bSBarry Smith   MatSeqAIJRegisterAllCalled       = PETSC_FALSE;
80b022a5c1SBarry Smith   PetscFunctionReturn(0);
81b022a5c1SBarry Smith }
82e5beb14aSMatthew Knepley 
8342c9c57cSBarry Smith #if defined(PETSC_HAVE_MUMPS)
843ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_MUMPS(void);
8542c9c57cSBarry Smith #endif
86fd314934SBarry Smith #if defined(PETSC_HAVE_CUDA)
873ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_CUSPARSE(void);
8842c9c57cSBarry Smith #endif
8972367587SKarl Rupp #if defined(PETSC_HAVE_VIENNACL)
903ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_ViennaCL(void);
9172367587SKarl Rupp #endif
9242c9c57cSBarry Smith #if defined(PETSC_HAVE_ELEMENTAL)
933ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_Elemental(void);
9442c9c57cSBarry Smith #endif
9542c9c57cSBarry Smith #if defined(PETSC_HAVE_MATLAB_ENGINE)
963ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_Matlab(void);
9742c9c57cSBarry Smith #endif
98570b7f6dSBarry Smith #if defined(PETSC_HAVE_PETSC_HAVE_ESSL)
993ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_Essl(void);
10042c9c57cSBarry Smith #endif
10142c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU)
1023ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_SuperLU(void);
10342c9c57cSBarry Smith #endif
10408f5efcfSPieter Ghysels #if defined(PETSC_HAVE_STRUMPACK)
1053ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_STRUMPACK(void);
10608f5efcfSPieter Ghysels #endif
10742c9c57cSBarry Smith #if defined(PETSC_HAVE_PASTIX)
1083ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_Pastix(void);
10942c9c57cSBarry Smith #endif
11042c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU_DIST)
1113ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_SuperLU_DIST(void);
11242c9c57cSBarry Smith #endif
113418810c4SBarry Smith #if defined(PETSC_HAVE_ELEMENTAL)
1143ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_SparseElemental(void);
11542c9c57cSBarry Smith #endif
11642c9c57cSBarry Smith #if defined(PETSC_HAVE_MKL_PARDISO)
1173ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_MKL_Pardiso(void);
11842c9c57cSBarry Smith #endif
119d305a81bSVasiliy Kozyrev #if defined(PETSC_HAVE_MKL_CPARDISO)
1203ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_MKL_CPardiso(void);
121d305a81bSVasiliy Kozyrev #endif
12242c9c57cSBarry Smith #if defined(PETSC_HAVE_SUITESPARSE)
1233ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_SuiteSparse(void);
12442c9c57cSBarry Smith #endif
12542c9c57cSBarry Smith #if defined(PETSC_HAVE_LUSOL)
1263ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_Lusol(void);
12742c9c57cSBarry Smith #endif
12842c9c57cSBarry Smith 
129cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqaij_petsc(Mat,MatFactorType,Mat*);
130cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqbaij_petsc(Mat,MatFactorType,Mat*);
131cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqsbaij_petsc(Mat,MatFactorType,Mat*);
132cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqdense_petsc(Mat,MatFactorType,Mat*);
1333423f386SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_constantdiagonal_petsc(Mat,MatFactorType,Mat*);
134cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqaij_bas(Mat,MatFactorType,Mat*);
13542c9c57cSBarry Smith 
1361153da11SBarry Smith /*@C
1371153da11SBarry Smith   MatInitializePackage - This function initializes everything in the Mat package. It is called
1388a690491SBarry Smith   from PetscDLLibraryRegister_petscmat() when using dynamic libraries, and on the first call to MatCreate()
1398a690491SBarry Smith   when using shared or static libraries.
1401153da11SBarry Smith 
1411153da11SBarry Smith   Level: developer
1421153da11SBarry Smith 
1431153da11SBarry Smith .seealso: PetscInitialize()
1441153da11SBarry Smith @*/
145607a6623SBarry Smith PetscErrorCode  MatInitializePackage(void)
1461153da11SBarry Smith {
1471153da11SBarry Smith   char           logList[256];
1488e81d068SLisandro Dalcin   PetscBool      opt,pkg;
1491153da11SBarry Smith   PetscErrorCode ierr;
1501153da11SBarry Smith 
1511153da11SBarry Smith   PetscFunctionBegin;
152b022a5c1SBarry Smith   if (MatPackageInitialized) PetscFunctionReturn(0);
153b022a5c1SBarry Smith   MatPackageInitialized = PETSC_TRUE;
154cce0b1b2SLisandro Dalcin   /* Inialize subpackage */
155607a6623SBarry Smith   ierr = MatMFFDInitializePackage();CHKERRQ(ierr);
1561153da11SBarry Smith   /* Register Classes */
1570700a824SBarry Smith   ierr = PetscClassIdRegister("Matrix",&MAT_CLASSID);CHKERRQ(ierr);
1580700a824SBarry Smith   ierr = PetscClassIdRegister("Matrix FD Coloring",&MAT_FDCOLORING_CLASSID);CHKERRQ(ierr);
159335efc43SPeter Brune   ierr = PetscClassIdRegister("Matrix Coloring",&MAT_COLORING_CLASSID);CHKERRQ(ierr);
160b9af6bddSHong Zhang   ierr = PetscClassIdRegister("Matrix MatTranspose Coloring",&MAT_TRANSPOSECOLORING_CLASSID);CHKERRQ(ierr);
1610700a824SBarry Smith   ierr = PetscClassIdRegister("Matrix Partitioning",&MAT_PARTITIONING_CLASSID);CHKERRQ(ierr);
162b43b03e9SMark F. Adams   ierr = PetscClassIdRegister("Matrix Coarsen",&MAT_COARSEN_CLASSID);CHKERRQ(ierr);
1630700a824SBarry Smith   ierr = PetscClassIdRegister("Matrix Null Space",&MAT_NULLSPACE_CLASSID);CHKERRQ(ierr);
1641153da11SBarry Smith   /* Register Constructors */
165607a6623SBarry Smith   ierr = MatRegisterAll();CHKERRQ(ierr);
166607a6623SBarry Smith   ierr = MatOrderingRegisterAll();CHKERRQ(ierr);
167607a6623SBarry Smith   ierr = MatColoringRegisterAll();CHKERRQ(ierr);
168607a6623SBarry Smith   ierr = MatPartitioningRegisterAll();CHKERRQ(ierr);
169607a6623SBarry Smith   ierr = MatCoarsenRegisterAll();CHKERRQ(ierr);
1704099cc6bSBarry Smith   ierr = MatSeqAIJRegisterAll();CHKERRQ(ierr);
1711153da11SBarry Smith   /* Register Events */
1720700a824SBarry Smith   ierr = PetscLogEventRegister("MatMult",          MAT_CLASSID,&MAT_Mult);CHKERRQ(ierr);
1730700a824SBarry Smith   ierr = PetscLogEventRegister("MatMults",         MAT_CLASSID,&MAT_Mults);CHKERRQ(ierr);
1740700a824SBarry Smith   ierr = PetscLogEventRegister("MatMultConstr",    MAT_CLASSID,&MAT_MultConstrained);CHKERRQ(ierr);
1750700a824SBarry Smith   ierr = PetscLogEventRegister("MatMultAdd",       MAT_CLASSID,&MAT_MultAdd);CHKERRQ(ierr);
1760700a824SBarry Smith   ierr = PetscLogEventRegister("MatMultTranspose", MAT_CLASSID,&MAT_MultTranspose);CHKERRQ(ierr);
1770700a824SBarry Smith   ierr = PetscLogEventRegister("MatMultTrConstr",  MAT_CLASSID,&MAT_MultTransposeConstrained);CHKERRQ(ierr);
1780700a824SBarry Smith   ierr = PetscLogEventRegister("MatMultTrAdd",     MAT_CLASSID,&MAT_MultTransposeAdd);CHKERRQ(ierr);
1790700a824SBarry Smith   ierr = PetscLogEventRegister("MatSolve",         MAT_CLASSID,&MAT_Solve);CHKERRQ(ierr);
1800700a824SBarry Smith   ierr = PetscLogEventRegister("MatSolves",        MAT_CLASSID,&MAT_Solves);CHKERRQ(ierr);
1810700a824SBarry Smith   ierr = PetscLogEventRegister("MatSolveAdd",      MAT_CLASSID,&MAT_SolveAdd);CHKERRQ(ierr);
1820700a824SBarry Smith   ierr = PetscLogEventRegister("MatSolveTranspos", MAT_CLASSID,&MAT_SolveTranspose);CHKERRQ(ierr);
1830700a824SBarry Smith   ierr = PetscLogEventRegister("MatSolveTrAdd",    MAT_CLASSID,&MAT_SolveTransposeAdd);CHKERRQ(ierr);
1840700a824SBarry Smith   ierr = PetscLogEventRegister("MatSOR",           MAT_CLASSID,&MAT_SOR);CHKERRQ(ierr);
1850700a824SBarry Smith   ierr = PetscLogEventRegister("MatForwardSolve",  MAT_CLASSID,&MAT_ForwardSolve);CHKERRQ(ierr);
1860700a824SBarry Smith   ierr = PetscLogEventRegister("MatBackwardSolve", MAT_CLASSID,&MAT_BackwardSolve);CHKERRQ(ierr);
1870700a824SBarry Smith   ierr = PetscLogEventRegister("MatLUFactor",      MAT_CLASSID,&MAT_LUFactor);CHKERRQ(ierr);
1880700a824SBarry Smith   ierr = PetscLogEventRegister("MatLUFactorSym",   MAT_CLASSID,&MAT_LUFactorSymbolic);CHKERRQ(ierr);
1890700a824SBarry Smith   ierr = PetscLogEventRegister("MatLUFactorNum",   MAT_CLASSID,&MAT_LUFactorNumeric);CHKERRQ(ierr);
1900700a824SBarry Smith   ierr = PetscLogEventRegister("MatCholeskyFctr",  MAT_CLASSID,&MAT_CholeskyFactor);CHKERRQ(ierr);
1910700a824SBarry Smith   ierr = PetscLogEventRegister("MatCholFctrSym",   MAT_CLASSID,&MAT_CholeskyFactorSymbolic);CHKERRQ(ierr);
1920700a824SBarry Smith   ierr = PetscLogEventRegister("MatCholFctrNum",   MAT_CLASSID,&MAT_CholeskyFactorNumeric);CHKERRQ(ierr);
1930700a824SBarry Smith   ierr = PetscLogEventRegister("MatILUFactor",     MAT_CLASSID,&MAT_ILUFactor);CHKERRQ(ierr);
1940700a824SBarry Smith   ierr = PetscLogEventRegister("MatILUFactorSym",  MAT_CLASSID,&MAT_ILUFactorSymbolic);CHKERRQ(ierr);
1950700a824SBarry Smith   ierr = PetscLogEventRegister("MatICCFactorSym",  MAT_CLASSID,&MAT_ICCFactorSymbolic);CHKERRQ(ierr);
1960700a824SBarry Smith   ierr = PetscLogEventRegister("MatCopy",          MAT_CLASSID,&MAT_Copy);CHKERRQ(ierr);
1970700a824SBarry Smith   ierr = PetscLogEventRegister("MatConvert",       MAT_CLASSID,&MAT_Convert);CHKERRQ(ierr);
1980700a824SBarry Smith   ierr = PetscLogEventRegister("MatScale",         MAT_CLASSID,&MAT_Scale);CHKERRQ(ierr);
199f9426fe0SMark Adams   ierr = PetscLogEventRegister("MatResidual",      MAT_CLASSID,&MAT_Residual);CHKERRQ(ierr);
2000700a824SBarry Smith   ierr = PetscLogEventRegister("MatAssemblyBegin", MAT_CLASSID,&MAT_AssemblyBegin);CHKERRQ(ierr);
2010700a824SBarry Smith   ierr = PetscLogEventRegister("MatAssemblyEnd",   MAT_CLASSID,&MAT_AssemblyEnd);CHKERRQ(ierr);
2020700a824SBarry Smith   ierr = PetscLogEventRegister("MatSetValues",     MAT_CLASSID,&MAT_SetValues);CHKERRQ(ierr);
2030700a824SBarry Smith   ierr = PetscLogEventRegister("MatGetValues",     MAT_CLASSID,&MAT_GetValues);CHKERRQ(ierr);
2040700a824SBarry Smith   ierr = PetscLogEventRegister("MatGetRow",        MAT_CLASSID,&MAT_GetRow);CHKERRQ(ierr);
2050700a824SBarry Smith   ierr = PetscLogEventRegister("MatGetRowIJ",      MAT_CLASSID,&MAT_GetRowIJ);CHKERRQ(ierr);
2067dae84e0SHong Zhang   ierr = PetscLogEventRegister("MatCreateSubMats", MAT_CLASSID,&MAT_CreateSubMats);CHKERRQ(ierr);
2077dae84e0SHong Zhang   ierr = PetscLogEventRegister("MatCreateSubMat",  MAT_CLASSID,&MAT_CreateSubMat);CHKERRQ(ierr);
2080700a824SBarry Smith   ierr = PetscLogEventRegister("MatGetOrdering",   MAT_CLASSID,&MAT_GetOrdering);CHKERRQ(ierr);
2090700a824SBarry Smith   ierr = PetscLogEventRegister("MatIncreaseOvrlp", MAT_CLASSID,&MAT_IncreaseOverlap);CHKERRQ(ierr);
2100700a824SBarry Smith   ierr = PetscLogEventRegister("MatPartitioning",  MAT_PARTITIONING_CLASSID,&MAT_Partitioning);CHKERRQ(ierr);
211f3ad2dabSStefano Zampini   ierr = PetscLogEventRegister("MatPartitioningND",MAT_PARTITIONING_CLASSID,&MAT_PartitioningND);CHKERRQ(ierr);
212b43b03e9SMark F. Adams   ierr = PetscLogEventRegister("MatCoarsen",       MAT_COARSEN_CLASSID,&MAT_Coarsen);CHKERRQ(ierr);
2130700a824SBarry Smith   ierr = PetscLogEventRegister("MatZeroEntries",   MAT_CLASSID,&MAT_ZeroEntries);CHKERRQ(ierr);
2140700a824SBarry Smith   ierr = PetscLogEventRegister("MatLoad",          MAT_CLASSID,&MAT_Load);CHKERRQ(ierr);
2150700a824SBarry Smith   ierr = PetscLogEventRegister("MatView",          MAT_CLASSID,&MAT_View);CHKERRQ(ierr);
2160700a824SBarry Smith   ierr = PetscLogEventRegister("MatAXPY",          MAT_CLASSID,&MAT_AXPY);CHKERRQ(ierr);
2170700a824SBarry Smith   ierr = PetscLogEventRegister("MatFDColorCreate", MAT_FDCOLORING_CLASSID,&MAT_FDColoringCreate);CHKERRQ(ierr);
2180df34763SHong Zhang   ierr = PetscLogEventRegister("MatFDColorSetUp",  MAT_FDCOLORING_CLASSID,&MAT_FDColoringSetUp);CHKERRQ(ierr);
2190700a824SBarry Smith   ierr = PetscLogEventRegister("MatFDColorApply",  MAT_FDCOLORING_CLASSID,&MAT_FDColoringApply);CHKERRQ(ierr);
2200700a824SBarry Smith   ierr = PetscLogEventRegister("MatFDColorFunc",   MAT_FDCOLORING_CLASSID,&MAT_FDColoringFunction);CHKERRQ(ierr);
2210700a824SBarry Smith   ierr = PetscLogEventRegister("MatTranspose",     MAT_CLASSID,&MAT_Transpose);CHKERRQ(ierr);
2220700a824SBarry Smith   ierr = PetscLogEventRegister("MatMatMult",       MAT_CLASSID,&MAT_MatMult);CHKERRQ(ierr);
2230700a824SBarry Smith   ierr = PetscLogEventRegister("MatMatSolve",      MAT_CLASSID,&MAT_MatSolve);CHKERRQ(ierr);
224eb3ef3b2SHong Zhang   ierr = PetscLogEventRegister("MatMatTrSolve",    MAT_CLASSID,&MAT_MatTrSolve);CHKERRQ(ierr);
2250700a824SBarry Smith   ierr = PetscLogEventRegister("MatMatMultSym",    MAT_CLASSID,&MAT_MatMultSymbolic);CHKERRQ(ierr);
2260700a824SBarry Smith   ierr = PetscLogEventRegister("MatMatMultNum",    MAT_CLASSID,&MAT_MatMultNumeric);CHKERRQ(ierr);
2277bab7c10SHong Zhang   ierr = PetscLogEventRegister("MatMatMatMult",    MAT_CLASSID,&MAT_MatMatMult);CHKERRQ(ierr);
2287bab7c10SHong Zhang   ierr = PetscLogEventRegister("MatMatMatMultSym", MAT_CLASSID,&MAT_MatMatMultSymbolic);CHKERRQ(ierr);
2297bab7c10SHong Zhang   ierr = PetscLogEventRegister("MatMatMatMultNum", MAT_CLASSID,&MAT_MatMatMultNumeric);CHKERRQ(ierr);
2300700a824SBarry Smith   ierr = PetscLogEventRegister("MatPtAP",          MAT_CLASSID,&MAT_PtAP);CHKERRQ(ierr);
2310700a824SBarry Smith   ierr = PetscLogEventRegister("MatPtAPSymbolic",  MAT_CLASSID,&MAT_PtAPSymbolic);CHKERRQ(ierr);
2320700a824SBarry Smith   ierr = PetscLogEventRegister("MatPtAPNumeric",   MAT_CLASSID,&MAT_PtAPNumeric);CHKERRQ(ierr);
233286f30e3SHong Zhang   ierr = PetscLogEventRegister("MatRARt",          MAT_CLASSID,&MAT_RARt);CHKERRQ(ierr);
23450647e95SHong Zhang   ierr = PetscLogEventRegister("MatRARtSym",       MAT_CLASSID,&MAT_RARtSymbolic);CHKERRQ(ierr);
23550647e95SHong Zhang   ierr = PetscLogEventRegister("MatRARtNum",       MAT_CLASSID,&MAT_RARtNumeric);CHKERRQ(ierr);
2366fc122caSHong Zhang   ierr = PetscLogEventRegister("MatMatTransMult",  MAT_CLASSID,&MAT_MatTransposeMult);CHKERRQ(ierr);
2376fc122caSHong Zhang   ierr = PetscLogEventRegister("MatMatTrnMultSym", MAT_CLASSID,&MAT_MatTransposeMultSymbolic);CHKERRQ(ierr);
2386fc122caSHong Zhang   ierr = PetscLogEventRegister("MatMatTrnMultNum", MAT_CLASSID,&MAT_MatTransposeMultNumeric);CHKERRQ(ierr);
23975648e8dSHong Zhang   ierr = PetscLogEventRegister("MatTrnMatMult",    MAT_CLASSID,&MAT_TransposeMatMult);CHKERRQ(ierr);
24075648e8dSHong Zhang   ierr = PetscLogEventRegister("MatTrnMatMultSym", MAT_CLASSID,&MAT_TransposeMatMultSymbolic);CHKERRQ(ierr);
24175648e8dSHong Zhang   ierr = PetscLogEventRegister("MatTrnMatMultNum", MAT_CLASSID,&MAT_TransposeMatMultNumeric);CHKERRQ(ierr);
242b9af6bddSHong Zhang   ierr = PetscLogEventRegister("MatTrnColorCreate", MAT_CLASSID,&MAT_TransposeColoringCreate);CHKERRQ(ierr);
24353cd1579SHong Zhang   ierr = PetscLogEventRegister("MatRedundantMat",  MAT_CLASSID,&MAT_RedundantMat);CHKERRQ(ierr);
2440700a824SBarry Smith   ierr = PetscLogEventRegister("MatGetSeqNZStrct", MAT_CLASSID,&MAT_GetSequentialNonzeroStructure);CHKERRQ(ierr);
245011ea8aeSBarry Smith   ierr = PetscLogEventRegister("MatGetMultiProcB", MAT_CLASSID,&MAT_GetMultiProcBlock);CHKERRQ(ierr);
24600e125f8SBarry Smith   ierr = PetscLogEventRegister("MatSetRandom",     MAT_CLASSID,&MAT_SetRandom);CHKERRQ(ierr);
2474ebed01fSBarry Smith 
2484ebed01fSBarry Smith   /* these may be specific to MPIAIJ matrices */
249a2ea699eSBarry Smith   ierr = PetscLogEventRegister("MatMPISumSeqNumeric",MAT_CLASSID,&MAT_Seqstompinum);CHKERRQ(ierr);
250a2ea699eSBarry Smith   ierr = PetscLogEventRegister("MatMPISumSeqSymbolic",MAT_CLASSID,&MAT_Seqstompisym);CHKERRQ(ierr);
251a2ea699eSBarry Smith   ierr = PetscLogEventRegister("MatMPISumSeq",MAT_CLASSID,&MAT_Seqstompi);CHKERRQ(ierr);
252a2ea699eSBarry Smith   ierr = PetscLogEventRegister("MatMPIConcateSeq",MAT_CLASSID,&MAT_Merge);CHKERRQ(ierr);
253a2ea699eSBarry Smith   ierr = PetscLogEventRegister("MatGetLocalMat",MAT_CLASSID,&MAT_Getlocalmat);CHKERRQ(ierr);
254a2ea699eSBarry Smith   ierr = PetscLogEventRegister("MatGetLocalMatCondensed",MAT_CLASSID,&MAT_Getlocalmatcondensed);CHKERRQ(ierr);
255a2ea699eSBarry Smith   ierr = PetscLogEventRegister("MatGetBrowsOfAcols",MAT_CLASSID,&MAT_GetBrowsOfAcols);CHKERRQ(ierr);
256a2ea699eSBarry Smith   ierr = PetscLogEventRegister("MatGetBrAoCol",MAT_CLASSID,&MAT_GetBrowsOfAocols);CHKERRQ(ierr);
2574ebed01fSBarry Smith 
2580700a824SBarry Smith   ierr = PetscLogEventRegister("MatApplyPAPt_Symbolic",MAT_CLASSID,&MAT_Applypapt_symbolic);CHKERRQ(ierr);
2590700a824SBarry Smith   ierr = PetscLogEventRegister("MatApplyPAPt_Numeric",MAT_CLASSID,&MAT_Applypapt_numeric);CHKERRQ(ierr);
2600700a824SBarry Smith   ierr = PetscLogEventRegister("MatApplyPAPt",MAT_CLASSID,&MAT_Applypapt);CHKERRQ(ierr);
2614ebed01fSBarry Smith 
2620700a824SBarry Smith   ierr = PetscLogEventRegister("MatGetSymTrans",MAT_CLASSID,&MAT_Getsymtranspose);CHKERRQ(ierr);
2630700a824SBarry Smith   ierr = PetscLogEventRegister("MatGetSymTransR",MAT_CLASSID,&MAT_Getsymtransreduced);CHKERRQ(ierr);
2648693ff2aSBarry Smith   ierr = PetscLogEventRegister("MatCUSPARSCopyTo",MAT_CLASSID,&MAT_CUSPARSECopyToGPU);CHKERRQ(ierr);
2658693ff2aSBarry Smith   ierr = PetscLogEventRegister("MatVCLCopyTo",  MAT_CLASSID,&MAT_ViennaCLCopyToGPU);CHKERRQ(ierr);
26637868618SMatthew G Knepley   ierr = PetscLogEventRegister("MatSetValBatch",MAT_CLASSID,&MAT_SetValuesBatch);CHKERRQ(ierr);
2674ebed01fSBarry Smith 
268367daffbSBarry Smith   ierr = PetscLogEventRegister("MatColoringApply",MAT_COLORING_CLASSID,&MATCOLORING_Apply);CHKERRQ(ierr);
269367daffbSBarry Smith   ierr = PetscLogEventRegister("MatColoringComm",MAT_COLORING_CLASSID,&MATCOLORING_Comm);CHKERRQ(ierr);
270367daffbSBarry Smith   ierr = PetscLogEventRegister("MatColoringLocal",MAT_COLORING_CLASSID,&MATCOLORING_Local);CHKERRQ(ierr);
271367daffbSBarry Smith   ierr = PetscLogEventRegister("MatColoringIS",MAT_COLORING_CLASSID,&MATCOLORING_ISCreate);CHKERRQ(ierr);
272367daffbSBarry Smith   ierr = PetscLogEventRegister("MatColoringSetUp",MAT_COLORING_CLASSID,&MATCOLORING_SetUp);CHKERRQ(ierr);
273367daffbSBarry Smith   ierr = PetscLogEventRegister("MatColoringWeights",MAT_COLORING_CLASSID,&MATCOLORING_Weights);CHKERRQ(ierr);
2744f68377dSPeter Brune 
275217044c2SLisandro Dalcin   /* Mark non-collective events */
276217044c2SLisandro Dalcin   ierr = PetscLogEventSetCollective(MAT_SetValues,      PETSC_FALSE);CHKERRQ(ierr);
277217044c2SLisandro Dalcin   ierr = PetscLogEventSetCollective(MAT_SetValuesBatch, PETSC_FALSE);CHKERRQ(ierr);
278217044c2SLisandro Dalcin   ierr = PetscLogEventSetCollective(MAT_GetRow,         PETSC_FALSE);CHKERRQ(ierr);
2791153da11SBarry Smith   /* Turn off high traffic events by default */
2801153da11SBarry Smith   ierr = PetscLogEventSetActiveAll(MAT_SetValues, PETSC_FALSE);CHKERRQ(ierr);
281217044c2SLisandro Dalcin   ierr = PetscLogEventSetActiveAll(MAT_GetValues, PETSC_FALSE);CHKERRQ(ierr);
282217044c2SLisandro Dalcin   ierr = PetscLogEventSetActiveAll(MAT_GetRow,    PETSC_FALSE);CHKERRQ(ierr);
283217044c2SLisandro Dalcin 
2841153da11SBarry Smith   /* Process info exclusions */
2858e81d068SLisandro Dalcin   ierr = PetscOptionsGetString(NULL,NULL,"-info_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr);
2861153da11SBarry Smith   if (opt) {
2878e81d068SLisandro Dalcin     ierr = PetscStrInList("mat",logList,',',&pkg);CHKERRQ(ierr);
2888e81d068SLisandro Dalcin     if (pkg) {ierr = PetscInfoDeactivateClass(MAT_CLASSID);CHKERRQ(ierr);}
2898e81d068SLisandro Dalcin     if (pkg) {ierr = PetscInfoDeactivateClass(MAT_FDCOLORING_CLASSID);CHKERRQ(ierr);}
2908e81d068SLisandro Dalcin     if (pkg) {ierr = PetscInfoDeactivateClass(MAT_COLORING_CLASSID);CHKERRQ(ierr);}
2918e81d068SLisandro Dalcin     if (pkg) {ierr = PetscInfoDeactivateClass(MAT_TRANSPOSECOLORING_CLASSID);CHKERRQ(ierr);}
2928e81d068SLisandro Dalcin     if (pkg) {ierr = PetscInfoDeactivateClass(MAT_PARTITIONING_CLASSID);CHKERRQ(ierr);}
2938e81d068SLisandro Dalcin     if (pkg) {ierr = PetscInfoDeactivateClass(MAT_COARSEN_CLASSID);CHKERRQ(ierr);}
2948e81d068SLisandro Dalcin     if (pkg) {ierr = PetscInfoDeactivateClass(MAT_NULLSPACE_CLASSID);CHKERRQ(ierr);}
2951153da11SBarry Smith   }
296217044c2SLisandro Dalcin 
2971153da11SBarry Smith   /* Process summary exclusions */
2988e81d068SLisandro Dalcin   ierr = PetscOptionsGetString(NULL,NULL,"-log_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr);
2991153da11SBarry Smith   if (opt) {
3008e81d068SLisandro Dalcin     ierr = PetscStrInList("mat",logList,',',&pkg);CHKERRQ(ierr);
301fa2bb9feSLisandro Dalcin     if (pkg) {ierr = PetscLogEventExcludeClass(MAT_CLASSID);CHKERRQ(ierr);}
302fa2bb9feSLisandro Dalcin     if (pkg) {ierr = PetscLogEventExcludeClass(MAT_FDCOLORING_CLASSID);CHKERRQ(ierr);}
303fa2bb9feSLisandro Dalcin     if (pkg) {ierr = PetscLogEventExcludeClass(MAT_COLORING_CLASSID);CHKERRQ(ierr);}
304fa2bb9feSLisandro Dalcin     if (pkg) {ierr = PetscLogEventExcludeClass(MAT_TRANSPOSECOLORING_CLASSID);CHKERRQ(ierr);}
305fa2bb9feSLisandro Dalcin     if (pkg) {ierr = PetscLogEventExcludeClass(MAT_PARTITIONING_CLASSID);CHKERRQ(ierr);}
306fa2bb9feSLisandro Dalcin     if (pkg) {ierr = PetscLogEventExcludeClass(MAT_COARSEN_CLASSID);CHKERRQ(ierr);}
307fa2bb9feSLisandro Dalcin     if (pkg) {ierr = PetscLogEventExcludeClass(MAT_NULLSPACE_CLASSID);CHKERRQ(ierr);}
3081153da11SBarry Smith   }
30942c9c57cSBarry Smith 
310c1619fb6SBarry Smith   /* Register the PETSc built in factorization based solvers */
3113ca39a21SBarry Smith   ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJ,        MAT_FACTOR_LU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr);
3123ca39a21SBarry Smith   ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJ,        MAT_FACTOR_CHOLESKY,MatGetFactor_seqaij_petsc);CHKERRQ(ierr);
3133ca39a21SBarry Smith   ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJ,        MAT_FACTOR_ILU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr);
3143ca39a21SBarry Smith   ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJ,        MAT_FACTOR_ICC,MatGetFactor_seqaij_petsc);CHKERRQ(ierr);
315c1619fb6SBarry Smith 
3163ca39a21SBarry Smith   ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJPERM,    MAT_FACTOR_LU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr);
3173ca39a21SBarry Smith   ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJPERM,    MAT_FACTOR_CHOLESKY,MatGetFactor_seqaij_petsc);CHKERRQ(ierr);
3183ca39a21SBarry Smith   ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJPERM,    MAT_FACTOR_ILU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr);
3193ca39a21SBarry Smith   ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJPERM,    MAT_FACTOR_ICC,MatGetFactor_seqaij_petsc);CHKERRQ(ierr);
320c1619fb6SBarry Smith 
3213423f386SBarry Smith   ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATCONSTANTDIAGONAL,MAT_FACTOR_LU,MatGetFactor_constantdiagonal_petsc);CHKERRQ(ierr);
3223423f386SBarry Smith   ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATCONSTANTDIAGONAL,MAT_FACTOR_CHOLESKY,MatGetFactor_constantdiagonal_petsc);CHKERRQ(ierr);
3233423f386SBarry Smith   ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATCONSTANTDIAGONAL,MAT_FACTOR_ILU,MatGetFactor_constantdiagonal_petsc);CHKERRQ(ierr);
3243423f386SBarry Smith   ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATCONSTANTDIAGONAL,MAT_FACTOR_ICC,MatGetFactor_constantdiagonal_petsc);CHKERRQ(ierr);
3253423f386SBarry Smith 
3269779e05dSSatish Balay #if defined(PETSC_HAVE_MKL_SPARSE)
3273ca39a21SBarry Smith   ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJMKL,     MAT_FACTOR_LU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr);
3283ca39a21SBarry Smith   ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJMKL,     MAT_FACTOR_CHOLESKY,MatGetFactor_seqaij_petsc);CHKERRQ(ierr);
3293ca39a21SBarry Smith   ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJMKL,     MAT_FACTOR_ILU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr);
3303ca39a21SBarry Smith   ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJMKL,     MAT_FACTOR_ICC,MatGetFactor_seqaij_petsc);CHKERRQ(ierr);
331b5b72c8aSIrina Sokolova 
3323ca39a21SBarry Smith   ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJMKL,    MAT_FACTOR_LU,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr);
3333ca39a21SBarry Smith   ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJMKL,    MAT_FACTOR_CHOLESKY,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr);
3343ca39a21SBarry Smith   ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJMKL,    MAT_FACTOR_ILU,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr);
3353ca39a21SBarry Smith   ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJMKL,    MAT_FACTOR_ICC,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr);
336191b95cbSRichard Tran Mills #endif
3372251f9d6SRichard Tran Mills     /* Above, we register the PETSc built-in factorization solvers for MATSEQAIJMKL.  In the future, we may want to use
3382251f9d6SRichard Tran Mills      * some of the MKL-provided ones instead. */
3392251f9d6SRichard Tran Mills 
3403ca39a21SBarry Smith   ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJCRL,     MAT_FACTOR_LU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr);
3413ca39a21SBarry Smith   ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJCRL,     MAT_FACTOR_CHOLESKY,MatGetFactor_seqaij_petsc);CHKERRQ(ierr);
3423ca39a21SBarry Smith   ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJCRL,     MAT_FACTOR_ILU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr);
3433ca39a21SBarry Smith   ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJCRL,     MAT_FACTOR_ICC,MatGetFactor_seqaij_petsc);CHKERRQ(ierr);
344c1619fb6SBarry Smith 
3453ca39a21SBarry Smith   ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJ,       MAT_FACTOR_LU,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr);
3463ca39a21SBarry Smith   ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJ,       MAT_FACTOR_CHOLESKY,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr);
3473ca39a21SBarry Smith   ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJ,       MAT_FACTOR_ILU,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr);
3483ca39a21SBarry Smith   ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJ,       MAT_FACTOR_ICC,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr);
349c1619fb6SBarry Smith 
3503ca39a21SBarry Smith   ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQSBAIJ,      MAT_FACTOR_CHOLESKY,MatGetFactor_seqsbaij_petsc);CHKERRQ(ierr);
3513ca39a21SBarry Smith   ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQSBAIJ,      MAT_FACTOR_ICC,MatGetFactor_seqsbaij_petsc);CHKERRQ(ierr);
352c1619fb6SBarry Smith 
3533ca39a21SBarry Smith   ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQDENSE,      MAT_FACTOR_LU,MatGetFactor_seqdense_petsc);CHKERRQ(ierr);
3543ca39a21SBarry Smith   ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQDENSE,      MAT_FACTOR_CHOLESKY,MatGetFactor_seqdense_petsc);CHKERRQ(ierr);
355c1619fb6SBarry Smith 
3563ca39a21SBarry Smith   ierr = MatSolverTypeRegister(MATSOLVERBAS,   MATSEQAIJ,        MAT_FACTOR_ICC,MatGetFactor_seqaij_bas);CHKERRQ(ierr);
357c1619fb6SBarry Smith 
35842c9c57cSBarry Smith   /*
35942c9c57cSBarry Smith      Register the external package factorization based solvers
36042c9c57cSBarry Smith         Eventually we don't want to have these hardwired here at compile time of PETSc
36142c9c57cSBarry Smith   */
36242c9c57cSBarry Smith #if defined(PETSC_HAVE_MUMPS)
3633ca39a21SBarry Smith   ierr = MatSolverTypeRegister_MUMPS();CHKERRQ(ierr);
36442c9c57cSBarry Smith #endif
365fd314934SBarry Smith #if defined(PETSC_HAVE_CUDA)
3663ca39a21SBarry Smith   ierr = MatSolverTypeRegister_CUSPARSE();CHKERRQ(ierr);
36742c9c57cSBarry Smith #endif
36872367587SKarl Rupp #if defined(PETSC_HAVE_VIENNACL)
3693ca39a21SBarry Smith   ierr = MatSolverTypeRegister_ViennaCL();CHKERRQ(ierr);
37072367587SKarl Rupp #endif
37142c9c57cSBarry Smith #if defined(PETSC_HAVE_ELEMENTAL)
3723ca39a21SBarry Smith   ierr = MatSolverTypeRegister_Elemental();CHKERRQ(ierr);
37342c9c57cSBarry Smith #endif
37442c9c57cSBarry Smith #if defined(PETSC_HAVE_MATLAB_ENGINE)
3753ca39a21SBarry Smith   ierr = MatSolverTypeRegister_Matlab();CHKERRQ(ierr);
37642c9c57cSBarry Smith #endif
377570b7f6dSBarry Smith #if defined(PETSC_HAVE_PETSC_HAVE_ESSL)
3783ca39a21SBarry Smith   ierr = MatSolverTypeRegister_Essl();CHKERRQ(ierr);
37942c9c57cSBarry Smith #endif
38042c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU)
3813ca39a21SBarry Smith   ierr = MatSolverTypeRegister_SuperLU();CHKERRQ(ierr);
38242c9c57cSBarry Smith #endif
38308f5efcfSPieter Ghysels #if defined(PETSC_HAVE_STRUMPACK)
3843ca39a21SBarry Smith   ierr = MatSolverTypeRegister_STRUMPACK();CHKERRQ(ierr);
38508f5efcfSPieter Ghysels #endif
38642c9c57cSBarry Smith #if defined(PETSC_HAVE_PASTIX)
3873ca39a21SBarry Smith   ierr = MatSolverTypeRegister_Pastix();CHKERRQ(ierr);
38842c9c57cSBarry Smith #endif
38942c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU_DIST)
3903ca39a21SBarry Smith   ierr = MatSolverTypeRegister_SuperLU_DIST();CHKERRQ(ierr);
39142c9c57cSBarry Smith #endif
392418810c4SBarry Smith #if defined(PETSC_HAVE_ELEMENTAL)
3933ca39a21SBarry Smith   ierr = MatSolverTypeRegister_SparseElemental();CHKERRQ(ierr);
39442c9c57cSBarry Smith #endif
39542c9c57cSBarry Smith #if defined(PETSC_HAVE_MKL_PARDISO)
3963ca39a21SBarry Smith   ierr = MatSolverTypeRegister_MKL_Pardiso();CHKERRQ(ierr);
39742c9c57cSBarry Smith #endif
398d305a81bSVasiliy Kozyrev #if defined(PETSC_HAVE_MKL_CPARDISO)
3993ca39a21SBarry Smith   ierr = MatSolverTypeRegister_MKL_CPardiso();CHKERRQ(ierr);
400d305a81bSVasiliy Kozyrev #endif
40142c9c57cSBarry Smith #if defined(PETSC_HAVE_SUITESPARSE)
4023ca39a21SBarry Smith   ierr = MatSolverTypeRegister_SuiteSparse();CHKERRQ(ierr);
40342c9c57cSBarry Smith #endif
40442c9c57cSBarry Smith #if defined(PETSC_HAVE_LUSOL)
4053ca39a21SBarry Smith   ierr = MatSolverTypeRegister_Lusol();CHKERRQ(ierr);
40642c9c57cSBarry Smith #endif
407418810c4SBarry Smith #if defined(PETSC_HAVE_ELEMENTAL)
4083ca39a21SBarry Smith   ierr = MatSolverTypeRegister_SparseElemental();CHKERRQ(ierr);
40942c9c57cSBarry Smith #endif
4108e81d068SLisandro Dalcin   /* Register package finalizer */
411b022a5c1SBarry Smith   ierr = PetscRegisterFinalize(MatFinalizePackage);CHKERRQ(ierr);
4121153da11SBarry Smith   PetscFunctionReturn(0);
4131153da11SBarry Smith }
4141153da11SBarry Smith 
415aa2d57e9SJed Brown #if defined(PETSC_HAVE_DYNAMIC_LIBRARIES)
4161153da11SBarry Smith /*
4171153da11SBarry Smith   PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened.
4181153da11SBarry Smith 
4193f92711fSBarry Smith   This one registers all the matrix methods that are in the basic PETSc Matrix library.
4201153da11SBarry Smith 
4211153da11SBarry Smith  */
422607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscmat(void)
4231153da11SBarry Smith {
4241153da11SBarry Smith   PetscErrorCode ierr;
4251153da11SBarry Smith 
4261153da11SBarry Smith   PetscFunctionBegin;
427607a6623SBarry Smith   ierr = MatInitializePackage();CHKERRQ(ierr);
4281153da11SBarry Smith   PetscFunctionReturn(0);
4291153da11SBarry Smith }
4301153da11SBarry Smith 
4311153da11SBarry Smith 
432aa2d57e9SJed Brown #endif /* PETSC_HAVE_DYNAMIC_LIBRARIES */
433