xref: /petsc/src/mat/interface/dlregismat.c (revision d305a81be0fbb2fe8c02e3da7510a1143eafa263)
11153da11SBarry Smith 
2b45d2f2cSJed Brown #include <petsc-private/matimpl.h>
31153da11SBarry Smith 
492d4d306SBarry Smith const char       *MatOptions[] = {"NEW_NONZERO_LOCATION_ERR",
592d4d306SBarry Smith                                   "UNUSED_NONZERO_LOCATION_ERR",
692d4d306SBarry Smith                                   "NEW_NONZERO_ALLOCATION_ERR",
792d4d306SBarry Smith                                   "ROW_ORIENTED",
892d4d306SBarry Smith                                   "NEW_NONZERO_LOCATIONS",
94e0d8c25SBarry Smith                                   "SYMMETRIC",
104e0d8c25SBarry Smith                                   "STRUCTURALLY_SYMMETRIC",
11dc5b3d67SBarry Smith                                   "NEW_DIAGONALS",
124e0d8c25SBarry Smith                                   "IGNORE_OFF_PROC_ENTRIES",
1392d4d306SBarry Smith                                   "USE_HASH_TABLE",
1492d4d306SBarry Smith                                   "KEEP_NONZERO_PATTERN",
1592d4d306SBarry Smith                                   "IGNORE_ZERO_ENTRIES",
1692d4d306SBarry Smith                                   "USE_INODES",
174e0d8c25SBarry Smith                                   "HERMITIAN",
184e0d8c25SBarry Smith                                   "SYMMETRY_ETERNAL",
1911e456e1SBarry Smith                                   "DUMMY",
2092d4d306SBarry Smith                                   "IGNORE_LOWER_TRIANGULAR",
2192d4d306SBarry Smith                                   "ERROR_LOWER_TRIANGULAR",
2292d4d306SBarry Smith                                   "GETROW_UPPERTRIANGULAR",
2392d4d306SBarry Smith                                   "SPD",
2492d4d306SBarry Smith                                   "NO_OFF_PROC_ZERO_ROWS",
2592d4d306SBarry Smith                                   "NO_OFF_PROC_ENTRIES",
2692d4d306SBarry Smith                                   "NEW_NONZERO_LOCATIONS",
2792d4d306SBarry Smith                                   "MatOption","MAT_",0};
286a6fc655SJed Brown const char *const MatFactorShiftTypes[] = {"NONE","NONZERO","POSITIVE_DEFINITE","INBLOCKS","MatFactorShiftType","PC_FACTOR_",0};
295e9742b9SJed Brown const char *const MatFactorShiftTypesDetail[] = {NULL,"diagonal shift to prevent zero pivot","Manteuffel shift","diagonal shift on blocks to prevent zero pivot"};
306a6fc655SJed Brown const char *const MPPTScotchStrategyTypes[] = {"QUALITY","SPEED","BALANCE","SAFETY","SCALABILITY","MPPTScotchStrategyType","MP_PTSCOTCH_",0};
316a6fc655SJed Brown const char *const MPChacoGlobalTypes[] = {"","MULTILEVEL","SPECTRAL","","LINEAR","RANDOM","SCATTERED","MPChacoGlobalType","MP_CHACO_",0};
326a6fc655SJed Brown const char *const MPChacoLocalTypes[] = {"","KERNIGHAN","NONE","MPChacoLocalType","MP_CHACO_",0};
336a6fc655SJed Brown const char *const MPChacoEigenTypes[] = {"LANCZOS","RQI","MPChacoEigenType","MP_CHACO_",0};
34290bbb0aSBarry Smith 
35607a6623SBarry Smith extern PetscErrorCode  MatMFFDInitializePackage(void);
3642c9c57cSBarry Smith extern PetscErrorCode  MatSolverPackageDestroy(void);
37ace3abfcSBarry Smith static PetscBool MatPackageInitialized = PETSC_FALSE;
38b022a5c1SBarry Smith #undef __FUNCT__
39b022a5c1SBarry Smith #define __FUNCT__ "MatFinalizePackage"
40b022a5c1SBarry Smith /*@C
4160154eb2SBarry Smith   MatFinalizePackage - This function destroys everything in the Petsc interface to the Mat package. It is
42b022a5c1SBarry Smith   called from PetscFinalize().
43b022a5c1SBarry Smith 
44b022a5c1SBarry Smith   Level: developer
45b022a5c1SBarry Smith 
46b022a5c1SBarry Smith .keywords: Petsc, destroy, package, mathematica
47b022a5c1SBarry Smith .seealso: PetscFinalize()
48b022a5c1SBarry Smith @*/
497087cfbeSBarry Smith PetscErrorCode  MatFinalizePackage(void)
50b022a5c1SBarry Smith {
5101bebe75SBarry Smith   MatBaseName    nnames,names = MatBaseNameList;
5201bebe75SBarry Smith   PetscErrorCode ierr;
5301bebe75SBarry Smith 
54b022a5c1SBarry Smith   PetscFunctionBegin;
5542c9c57cSBarry Smith   ierr = MatSolverPackageDestroy();CHKERRQ(ierr);
5601bebe75SBarry Smith   while (names) {
5701bebe75SBarry Smith     nnames = names->next;
5801bebe75SBarry Smith     ierr   = PetscFree(names->bname);CHKERRQ(ierr);
5901bebe75SBarry Smith     ierr   = PetscFree(names->sname);CHKERRQ(ierr);
6001bebe75SBarry Smith     ierr   = PetscFree(names->mname);CHKERRQ(ierr);
6101bebe75SBarry Smith     ierr   = PetscFree(names);CHKERRQ(ierr);
6201bebe75SBarry Smith     names  = nnames;
6301bebe75SBarry Smith   }
6437e93019SBarry Smith   ierr = PetscFunctionListDestroy(&MatList);CHKERRQ(ierr);
6537e93019SBarry Smith   ierr = PetscFunctionListDestroy(&MatOrderingList);CHKERRQ(ierr);
6637e93019SBarry Smith   ierr = PetscFunctionListDestroy(&MatColoringList);CHKERRQ(ierr);
6737e93019SBarry Smith   ierr = PetscFunctionListDestroy(&MatPartitioningList);CHKERRQ(ierr);
6837e93019SBarry Smith   ierr = PetscFunctionListDestroy(&MatCoarsenList);CHKERRQ(ierr);
690298fd71SBarry Smith   MatBaseNameList                  = NULL;
70b022a5c1SBarry Smith   MatPackageInitialized            = PETSC_FALSE;
71b022a5c1SBarry Smith   MatRegisterAllCalled             = PETSC_FALSE;
72b022a5c1SBarry Smith   MatOrderingRegisterAllCalled     = PETSC_FALSE;
73b022a5c1SBarry Smith   MatColoringRegisterAllCalled     = PETSC_FALSE;
74b022a5c1SBarry Smith   MatPartitioningRegisterAllCalled = PETSC_FALSE;
75b43b03e9SMark F. Adams   MatCoarsenRegisterAllCalled      = PETSC_FALSE;
76b022a5c1SBarry Smith   PetscFunctionReturn(0);
77b022a5c1SBarry Smith }
78e5beb14aSMatthew Knepley 
7942c9c57cSBarry Smith #if defined(PETSC_HAVE_MUMPS)
8042c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_MUMPS(void);
8142c9c57cSBarry Smith #endif
820f39cd5aSBarry Smith #if defined(PETSC_HAVE_CUSP)
8342c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_CUSPARSE(void);
8442c9c57cSBarry Smith #endif
8542c9c57cSBarry Smith #if defined(PETSC_HAVE_ELEMENTAL)
8642c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_Elemental(void);
8742c9c57cSBarry Smith #endif
8842c9c57cSBarry Smith #if defined(PETSC_HAVE_MATLAB_ENGINE)
8942c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_Matlab(void);
9042c9c57cSBarry Smith #endif
9142c9c57cSBarry Smith #if defined(PETSC_HAVE_PETSC_HAVE_ESSL) && !defined(PETSC_USE_COMPLEX) && !defined(PETSC_USE_REAL_SINGLE) && !defined(PETSC_USE_REAL___FLOAT128)
9242c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_Essl(void);
9342c9c57cSBarry Smith #endif
9442c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU)
9542c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_SuperLU(void);
9642c9c57cSBarry Smith #endif
9742c9c57cSBarry Smith #if defined(PETSC_HAVE_PASTIX)
9842c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_Pastix(void);
9942c9c57cSBarry Smith #endif
10042c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU_DIST)
10142c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_SuperLU_DIST(void);
10242c9c57cSBarry Smith #endif
10342c9c57cSBarry Smith #if defined(PETSC_HAVE_CLIQUE)
10442c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_Clique(void);
10542c9c57cSBarry Smith #endif
10642c9c57cSBarry Smith #if defined(PETSC_HAVE_MKL_PARDISO)
10742c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_MKL_Pardiso(void);
10842c9c57cSBarry Smith #endif
109*d305a81bSVasiliy Kozyrev #if defined(PETSC_HAVE_MKL_CPARDISO)
110*d305a81bSVasiliy Kozyrev PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_MKL_CPardiso(void);
111*d305a81bSVasiliy Kozyrev #endif
11242c9c57cSBarry Smith #if defined(PETSC_HAVE_SUITESPARSE)
11342c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_SuiteSparse(void);
11442c9c57cSBarry Smith #endif
11542c9c57cSBarry Smith #if defined(PETSC_HAVE_LUSOL)
11642c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_Lusol(void);
11742c9c57cSBarry Smith #endif
11842c9c57cSBarry Smith 
11942c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatGetFactor_seqaij_petsc(Mat,MatFactorType,Mat*);
12042c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatGetFactor_seqbaij_petsc(Mat,MatFactorType,Mat*);
12142c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatGetFactor_seqsbaij_petsc(Mat,MatFactorType,Mat*);
12242c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatGetFactor_seqdense_petsc(Mat,MatFactorType,Mat*);
12342c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatGetFactor_seqaij_bas(Mat,MatFactorType,Mat*);
12442c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatGetFactor_seqbaij_bstrm(Mat,MatFactorType,Mat*);
12542c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatGetFactor_seqsbaij_sbstrm(Mat,MatFactorType,Mat*);
12642c9c57cSBarry Smith 
1271153da11SBarry Smith #undef __FUNCT__
1281153da11SBarry Smith #define __FUNCT__ "MatInitializePackage"
1291153da11SBarry Smith /*@C
1301153da11SBarry Smith   MatInitializePackage - This function initializes everything in the Mat package. It is called
1311153da11SBarry Smith   from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to MatCreate()
1321153da11SBarry Smith   when using static libraries.
1331153da11SBarry Smith 
1341153da11SBarry Smith   Level: developer
1351153da11SBarry Smith 
1361153da11SBarry Smith .keywords: Mat, initialize, package
1371153da11SBarry Smith .seealso: PetscInitialize()
1381153da11SBarry Smith @*/
139607a6623SBarry Smith PetscErrorCode  MatInitializePackage(void)
1401153da11SBarry Smith {
1411153da11SBarry Smith   char           logList[256];
1421153da11SBarry Smith   char           *className;
143ace3abfcSBarry Smith   PetscBool      opt;
1441153da11SBarry Smith   PetscErrorCode ierr;
1451153da11SBarry Smith 
1461153da11SBarry Smith   PetscFunctionBegin;
147b022a5c1SBarry Smith   if (MatPackageInitialized) PetscFunctionReturn(0);
148b022a5c1SBarry Smith   MatPackageInitialized = PETSC_TRUE;
149cce0b1b2SLisandro Dalcin   /* Inialize subpackage */
150607a6623SBarry Smith   ierr = MatMFFDInitializePackage();CHKERRQ(ierr);
1511153da11SBarry Smith   /* Register Classes */
1520700a824SBarry Smith   ierr = PetscClassIdRegister("Matrix",&MAT_CLASSID);CHKERRQ(ierr);
1530700a824SBarry Smith   ierr = PetscClassIdRegister("Matrix FD Coloring",&MAT_FDCOLORING_CLASSID);CHKERRQ(ierr);
154335efc43SPeter Brune   ierr = PetscClassIdRegister("Matrix Coloring",&MAT_COLORING_CLASSID);CHKERRQ(ierr);
155b9af6bddSHong Zhang   ierr = PetscClassIdRegister("Matrix MatTranspose Coloring",&MAT_TRANSPOSECOLORING_CLASSID);CHKERRQ(ierr);
1560700a824SBarry Smith   ierr = PetscClassIdRegister("Matrix Partitioning",&MAT_PARTITIONING_CLASSID);CHKERRQ(ierr);
157b43b03e9SMark F. Adams   ierr = PetscClassIdRegister("Matrix Coarsen",&MAT_COARSEN_CLASSID);CHKERRQ(ierr);
1580700a824SBarry Smith   ierr = PetscClassIdRegister("Matrix Null Space",&MAT_NULLSPACE_CLASSID);CHKERRQ(ierr);
1591153da11SBarry Smith   /* Register Constructors */
160607a6623SBarry Smith   ierr = MatRegisterAll();CHKERRQ(ierr);
161607a6623SBarry Smith   ierr = MatOrderingRegisterAll();CHKERRQ(ierr);
162607a6623SBarry Smith   ierr = MatColoringRegisterAll();CHKERRQ(ierr);
163607a6623SBarry Smith   ierr = MatPartitioningRegisterAll();CHKERRQ(ierr);
164607a6623SBarry Smith   ierr = MatCoarsenRegisterAll();CHKERRQ(ierr);
1651153da11SBarry Smith   /* Register Events */
1660700a824SBarry Smith   ierr = PetscLogEventRegister("MatMult",          MAT_CLASSID,&MAT_Mult);CHKERRQ(ierr);
1670700a824SBarry Smith   ierr = PetscLogEventRegister("MatMults",         MAT_CLASSID,&MAT_Mults);CHKERRQ(ierr);
1680700a824SBarry Smith   ierr = PetscLogEventRegister("MatMultConstr",    MAT_CLASSID,&MAT_MultConstrained);CHKERRQ(ierr);
1690700a824SBarry Smith   ierr = PetscLogEventRegister("MatMultAdd",       MAT_CLASSID,&MAT_MultAdd);CHKERRQ(ierr);
1700700a824SBarry Smith   ierr = PetscLogEventRegister("MatMultTranspose", MAT_CLASSID,&MAT_MultTranspose);CHKERRQ(ierr);
1710700a824SBarry Smith   ierr = PetscLogEventRegister("MatMultTrConstr",  MAT_CLASSID,&MAT_MultTransposeConstrained);CHKERRQ(ierr);
1720700a824SBarry Smith   ierr = PetscLogEventRegister("MatMultTrAdd",     MAT_CLASSID,&MAT_MultTransposeAdd);CHKERRQ(ierr);
1730700a824SBarry Smith   ierr = PetscLogEventRegister("MatSolve",         MAT_CLASSID,&MAT_Solve);CHKERRQ(ierr);
1740700a824SBarry Smith   ierr = PetscLogEventRegister("MatSolves",        MAT_CLASSID,&MAT_Solves);CHKERRQ(ierr);
1750700a824SBarry Smith   ierr = PetscLogEventRegister("MatSolveAdd",      MAT_CLASSID,&MAT_SolveAdd);CHKERRQ(ierr);
1760700a824SBarry Smith   ierr = PetscLogEventRegister("MatSolveTranspos", MAT_CLASSID,&MAT_SolveTranspose);CHKERRQ(ierr);
1770700a824SBarry Smith   ierr = PetscLogEventRegister("MatSolveTrAdd",    MAT_CLASSID,&MAT_SolveTransposeAdd);CHKERRQ(ierr);
1780700a824SBarry Smith   ierr = PetscLogEventRegister("MatSOR",           MAT_CLASSID,&MAT_SOR);CHKERRQ(ierr);
1790700a824SBarry Smith   ierr = PetscLogEventRegister("MatForwardSolve",  MAT_CLASSID,&MAT_ForwardSolve);CHKERRQ(ierr);
1800700a824SBarry Smith   ierr = PetscLogEventRegister("MatBackwardSolve", MAT_CLASSID,&MAT_BackwardSolve);CHKERRQ(ierr);
1810700a824SBarry Smith   ierr = PetscLogEventRegister("MatLUFactor",      MAT_CLASSID,&MAT_LUFactor);CHKERRQ(ierr);
1820700a824SBarry Smith   ierr = PetscLogEventRegister("MatLUFactorSym",   MAT_CLASSID,&MAT_LUFactorSymbolic);CHKERRQ(ierr);
1830700a824SBarry Smith   ierr = PetscLogEventRegister("MatLUFactorNum",   MAT_CLASSID,&MAT_LUFactorNumeric);CHKERRQ(ierr);
1840700a824SBarry Smith   ierr = PetscLogEventRegister("MatCholeskyFctr",  MAT_CLASSID,&MAT_CholeskyFactor);CHKERRQ(ierr);
1850700a824SBarry Smith   ierr = PetscLogEventRegister("MatCholFctrSym",   MAT_CLASSID,&MAT_CholeskyFactorSymbolic);CHKERRQ(ierr);
1860700a824SBarry Smith   ierr = PetscLogEventRegister("MatCholFctrNum",   MAT_CLASSID,&MAT_CholeskyFactorNumeric);CHKERRQ(ierr);
1870700a824SBarry Smith   ierr = PetscLogEventRegister("MatILUFactor",     MAT_CLASSID,&MAT_ILUFactor);CHKERRQ(ierr);
1880700a824SBarry Smith   ierr = PetscLogEventRegister("MatILUFactorSym",  MAT_CLASSID,&MAT_ILUFactorSymbolic);CHKERRQ(ierr);
1890700a824SBarry Smith   ierr = PetscLogEventRegister("MatICCFactorSym",  MAT_CLASSID,&MAT_ICCFactorSymbolic);CHKERRQ(ierr);
1900700a824SBarry Smith   ierr = PetscLogEventRegister("MatCopy",          MAT_CLASSID,&MAT_Copy);CHKERRQ(ierr);
1910700a824SBarry Smith   ierr = PetscLogEventRegister("MatConvert",       MAT_CLASSID,&MAT_Convert);CHKERRQ(ierr);
1920700a824SBarry Smith   ierr = PetscLogEventRegister("MatScale",         MAT_CLASSID,&MAT_Scale);CHKERRQ(ierr);
193f9426fe0SMark Adams   ierr = PetscLogEventRegister("MatResidual",      MAT_CLASSID,&MAT_Residual);CHKERRQ(ierr);
1940700a824SBarry Smith   ierr = PetscLogEventRegister("MatAssemblyBegin", MAT_CLASSID,&MAT_AssemblyBegin);CHKERRQ(ierr);
1950700a824SBarry Smith   ierr = PetscLogEventRegister("MatAssemblyEnd",   MAT_CLASSID,&MAT_AssemblyEnd);CHKERRQ(ierr);
1960700a824SBarry Smith   ierr = PetscLogEventRegister("MatSetValues",     MAT_CLASSID,&MAT_SetValues);CHKERRQ(ierr);
1970700a824SBarry Smith   ierr = PetscLogEventRegister("MatGetValues",     MAT_CLASSID,&MAT_GetValues);CHKERRQ(ierr);
1980700a824SBarry Smith   ierr = PetscLogEventRegister("MatGetRow",        MAT_CLASSID,&MAT_GetRow);CHKERRQ(ierr);
1990700a824SBarry Smith   ierr = PetscLogEventRegister("MatGetRowIJ",      MAT_CLASSID,&MAT_GetRowIJ);CHKERRQ(ierr);
2000700a824SBarry Smith   ierr = PetscLogEventRegister("MatGetSubMatrice", MAT_CLASSID,&MAT_GetSubMatrices);CHKERRQ(ierr);
2010700a824SBarry Smith   ierr = PetscLogEventRegister("MatGetOrdering",   MAT_CLASSID,&MAT_GetOrdering);CHKERRQ(ierr);
2020700a824SBarry Smith   ierr = PetscLogEventRegister("MatIncreaseOvrlp", MAT_CLASSID,&MAT_IncreaseOverlap);CHKERRQ(ierr);
2030700a824SBarry Smith   ierr = PetscLogEventRegister("MatPartitioning",  MAT_PARTITIONING_CLASSID,&MAT_Partitioning);CHKERRQ(ierr);
204b43b03e9SMark F. Adams   ierr = PetscLogEventRegister("MatCoarsen",  MAT_COARSEN_CLASSID,&MAT_Coarsen);CHKERRQ(ierr);
2050700a824SBarry Smith   ierr = PetscLogEventRegister("MatZeroEntries",   MAT_CLASSID,&MAT_ZeroEntries);CHKERRQ(ierr);
2060700a824SBarry Smith   ierr = PetscLogEventRegister("MatLoad",          MAT_CLASSID,&MAT_Load);CHKERRQ(ierr);
2070700a824SBarry Smith   ierr = PetscLogEventRegister("MatView",          MAT_CLASSID,&MAT_View);CHKERRQ(ierr);
2080700a824SBarry Smith   ierr = PetscLogEventRegister("MatAXPY",          MAT_CLASSID,&MAT_AXPY);CHKERRQ(ierr);
2090700a824SBarry Smith   ierr = PetscLogEventRegister("MatFDColorCreate", MAT_FDCOLORING_CLASSID,&MAT_FDColoringCreate);CHKERRQ(ierr);
2100df34763SHong Zhang   ierr = PetscLogEventRegister("MatFDColorSetUp",  MAT_FDCOLORING_CLASSID,&MAT_FDColoringSetUp);CHKERRQ(ierr);
2110700a824SBarry Smith   ierr = PetscLogEventRegister("MatFDColorApply",  MAT_FDCOLORING_CLASSID,&MAT_FDColoringApply);CHKERRQ(ierr);
2120700a824SBarry Smith   ierr = PetscLogEventRegister("MatFDColorFunc",   MAT_FDCOLORING_CLASSID,&MAT_FDColoringFunction);CHKERRQ(ierr);
2130700a824SBarry Smith   ierr = PetscLogEventRegister("MatTranspose",     MAT_CLASSID,&MAT_Transpose);CHKERRQ(ierr);
2140700a824SBarry Smith   ierr = PetscLogEventRegister("MatMatMult",       MAT_CLASSID,&MAT_MatMult);CHKERRQ(ierr);
2150700a824SBarry Smith   ierr = PetscLogEventRegister("MatMatSolve",      MAT_CLASSID,&MAT_MatSolve);CHKERRQ(ierr);
2160700a824SBarry Smith   ierr = PetscLogEventRegister("MatMatMultSym",    MAT_CLASSID,&MAT_MatMultSymbolic);CHKERRQ(ierr);
2170700a824SBarry Smith   ierr = PetscLogEventRegister("MatMatMultNum",    MAT_CLASSID,&MAT_MatMultNumeric);CHKERRQ(ierr);
2187bab7c10SHong Zhang   ierr = PetscLogEventRegister("MatMatMatMult",    MAT_CLASSID,&MAT_MatMatMult);CHKERRQ(ierr);
2197bab7c10SHong Zhang   ierr = PetscLogEventRegister("MatMatMatMultSym", MAT_CLASSID,&MAT_MatMatMultSymbolic);CHKERRQ(ierr);
2207bab7c10SHong Zhang   ierr = PetscLogEventRegister("MatMatMatMultNum", MAT_CLASSID,&MAT_MatMatMultNumeric);CHKERRQ(ierr);
2210700a824SBarry Smith   ierr = PetscLogEventRegister("MatPtAP",          MAT_CLASSID,&MAT_PtAP);CHKERRQ(ierr);
2220700a824SBarry Smith   ierr = PetscLogEventRegister("MatPtAPSymbolic",  MAT_CLASSID,&MAT_PtAPSymbolic);CHKERRQ(ierr);
2230700a824SBarry Smith   ierr = PetscLogEventRegister("MatPtAPNumeric",   MAT_CLASSID,&MAT_PtAPNumeric);CHKERRQ(ierr);
224286f30e3SHong Zhang   ierr = PetscLogEventRegister("MatRARt",          MAT_CLASSID,&MAT_RARt);CHKERRQ(ierr);
22550647e95SHong Zhang   ierr = PetscLogEventRegister("MatRARtSym",       MAT_CLASSID,&MAT_RARtSymbolic);CHKERRQ(ierr);
22650647e95SHong Zhang   ierr = PetscLogEventRegister("MatRARtNum",       MAT_CLASSID,&MAT_RARtNumeric);CHKERRQ(ierr);
2276fc122caSHong Zhang   ierr = PetscLogEventRegister("MatMatTransMult",  MAT_CLASSID,&MAT_MatTransposeMult);CHKERRQ(ierr);
2286fc122caSHong Zhang   ierr = PetscLogEventRegister("MatMatTrnMultSym", MAT_CLASSID,&MAT_MatTransposeMultSymbolic);CHKERRQ(ierr);
2296fc122caSHong Zhang   ierr = PetscLogEventRegister("MatMatTrnMultNum", MAT_CLASSID,&MAT_MatTransposeMultNumeric);CHKERRQ(ierr);
23075648e8dSHong Zhang   ierr = PetscLogEventRegister("MatTrnMatMult",    MAT_CLASSID,&MAT_TransposeMatMult);CHKERRQ(ierr);
23175648e8dSHong Zhang   ierr = PetscLogEventRegister("MatTrnMatMultSym", MAT_CLASSID,&MAT_TransposeMatMultSymbolic);CHKERRQ(ierr);
23275648e8dSHong Zhang   ierr = PetscLogEventRegister("MatTrnMatMultNum", MAT_CLASSID,&MAT_TransposeMatMultNumeric);CHKERRQ(ierr);
233b9af6bddSHong Zhang   ierr = PetscLogEventRegister("MatTrnColorCreate", MAT_CLASSID,&MAT_TransposeColoringCreate);CHKERRQ(ierr);
23453cd1579SHong Zhang   ierr = PetscLogEventRegister("MatRedundantMat",  MAT_CLASSID,&MAT_RedundantMat);CHKERRQ(ierr);
2350700a824SBarry Smith   ierr = PetscLogEventRegister("MatGetSeqNZStrct", MAT_CLASSID,&MAT_GetSequentialNonzeroStructure);CHKERRQ(ierr);
23682d44351SHong Zhang   ierr = PetscLogEventRegister("MatGetMultiProcBlock", MAT_CLASSID,&MAT_GetMultiProcBlock);CHKERRQ(ierr);
2374ebed01fSBarry Smith 
2384ebed01fSBarry Smith   /* these may be specific to MPIAIJ matrices */
239a2ea699eSBarry Smith   ierr = PetscLogEventRegister("MatMPISumSeqNumeric",MAT_CLASSID,&MAT_Seqstompinum);CHKERRQ(ierr);
240a2ea699eSBarry Smith   ierr = PetscLogEventRegister("MatMPISumSeqSymbolic",MAT_CLASSID,&MAT_Seqstompisym);CHKERRQ(ierr);
241a2ea699eSBarry Smith   ierr = PetscLogEventRegister("MatMPISumSeq",MAT_CLASSID,&MAT_Seqstompi);CHKERRQ(ierr);
242a2ea699eSBarry Smith   ierr = PetscLogEventRegister("MatMPIConcateSeq",MAT_CLASSID,&MAT_Merge);CHKERRQ(ierr);
243a2ea699eSBarry Smith   ierr = PetscLogEventRegister("MatGetLocalMat",MAT_CLASSID,&MAT_Getlocalmat);CHKERRQ(ierr);
244a2ea699eSBarry Smith   ierr = PetscLogEventRegister("MatGetLocalMatCondensed",MAT_CLASSID,&MAT_Getlocalmatcondensed);CHKERRQ(ierr);
245a2ea699eSBarry Smith   ierr = PetscLogEventRegister("MatGetBrowsOfAcols",MAT_CLASSID,&MAT_GetBrowsOfAcols);CHKERRQ(ierr);
246a2ea699eSBarry Smith   ierr = PetscLogEventRegister("MatGetBrAoCol",MAT_CLASSID,&MAT_GetBrowsOfAocols);CHKERRQ(ierr);
2474ebed01fSBarry Smith 
2480700a824SBarry Smith   ierr = PetscLogEventRegister("MatApplyPAPt_Symbolic",MAT_CLASSID,&MAT_Applypapt_symbolic);CHKERRQ(ierr);
2490700a824SBarry Smith   ierr = PetscLogEventRegister("MatApplyPAPt_Numeric",MAT_CLASSID,&MAT_Applypapt_numeric);CHKERRQ(ierr);
2500700a824SBarry Smith   ierr = PetscLogEventRegister("MatApplyPAPt",MAT_CLASSID,&MAT_Applypapt);CHKERRQ(ierr);
2514ebed01fSBarry Smith 
2520700a824SBarry Smith   ierr = PetscLogEventRegister("MatGetSymTrans",MAT_CLASSID,&MAT_Getsymtranspose);CHKERRQ(ierr);
2530700a824SBarry Smith   ierr = PetscLogEventRegister("MatGetSymTransR",MAT_CLASSID,&MAT_Getsymtransreduced);CHKERRQ(ierr);
2540700a824SBarry Smith   ierr = PetscLogEventRegister("MatTranspose_SeqAIJ_FAST",MAT_CLASSID,&MAT_Transpose_SeqAIJ);CHKERRQ(ierr);
2558154be41SBarry Smith   ierr = PetscLogEventRegister("MatCUSPCopyTo",MAT_CLASSID,&MAT_CUSPCopyToGPU);CHKERRQ(ierr);
2569ae82921SPaul Mullowney   ierr = PetscLogEventRegister("MatCUSPARSECopyTo",MAT_CLASSID,&MAT_CUSPARSECopyToGPU);CHKERRQ(ierr);
2578f86e40fSKarl Rupp   ierr = PetscLogEventRegister("MatViennaCLCopyTo",MAT_CLASSID,&MAT_ViennaCLCopyToGPU);CHKERRQ(ierr);
25837868618SMatthew G Knepley   ierr = PetscLogEventRegister("MatSetValBatch",MAT_CLASSID,&MAT_SetValuesBatch);CHKERRQ(ierr);
25937868618SMatthew G Knepley   ierr = PetscLogEventRegister("MatSetValBatch1",MAT_CLASSID,&MAT_SetValuesBatchI);CHKERRQ(ierr);
26037868618SMatthew G Knepley   ierr = PetscLogEventRegister("MatSetValBatch2",MAT_CLASSID,&MAT_SetValuesBatchII);CHKERRQ(ierr);
26137868618SMatthew G Knepley   ierr = PetscLogEventRegister("MatSetValBatch3",MAT_CLASSID,&MAT_SetValuesBatchIII);CHKERRQ(ierr);
26237868618SMatthew G Knepley   ierr = PetscLogEventRegister("MatSetValBatch4",MAT_CLASSID,&MAT_SetValuesBatchIV);CHKERRQ(ierr);
2634ebed01fSBarry Smith 
2644f68377dSPeter Brune   ierr = PetscLogEventRegister("MatColoringApply",MAT_COLORING_CLASSID,&Mat_Coloring_Apply);CHKERRQ(ierr);
2654f68377dSPeter Brune   ierr = PetscLogEventRegister("MatColoringComm",MAT_COLORING_CLASSID,&Mat_Coloring_Comm);CHKERRQ(ierr);
266fb396917SPeter Brune   ierr = PetscLogEventRegister("MatColoringLocal",MAT_COLORING_CLASSID,&Mat_Coloring_Local);CHKERRQ(ierr);
267fb396917SPeter Brune   ierr = PetscLogEventRegister("MatColoringIS",MAT_COLORING_CLASSID,&Mat_Coloring_ISCreate);CHKERRQ(ierr);
268fb396917SPeter Brune   ierr = PetscLogEventRegister("MatColoringSetUp",MAT_COLORING_CLASSID,&Mat_Coloring_SetUp);CHKERRQ(ierr);
269e7deade3SPeter Brune   ierr = PetscLogEventRegister("MatColoringWeights",MAT_COLORING_CLASSID,&Mat_Coloring_Weights);CHKERRQ(ierr);
2704f68377dSPeter Brune 
2711153da11SBarry Smith   /* Turn off high traffic events by default */
2721153da11SBarry Smith   ierr = PetscLogEventSetActiveAll(MAT_SetValues, PETSC_FALSE);CHKERRQ(ierr);
2731153da11SBarry Smith   /* Process info exclusions */
2740298fd71SBarry Smith   ierr = PetscOptionsGetString(NULL, "-info_exclude", logList, 256, &opt);CHKERRQ(ierr);
2751153da11SBarry Smith   if (opt) {
2761153da11SBarry Smith     ierr = PetscStrstr(logList, "mat", &className);CHKERRQ(ierr);
2771153da11SBarry Smith     if (className) {
2780700a824SBarry Smith       ierr = PetscInfoDeactivateClass(MAT_CLASSID);CHKERRQ(ierr);
2791153da11SBarry Smith     }
2801153da11SBarry Smith   }
2811153da11SBarry Smith   /* Process summary exclusions */
2820298fd71SBarry Smith   ierr = PetscOptionsGetString(NULL, "-log_summary_exclude", logList, 256, &opt);CHKERRQ(ierr);
2831153da11SBarry Smith   if (opt) {
2841153da11SBarry Smith     ierr = PetscStrstr(logList, "mat", &className);CHKERRQ(ierr);
2851153da11SBarry Smith     if (className) {
2860700a824SBarry Smith       ierr = PetscLogEventDeactivateClass(MAT_CLASSID);CHKERRQ(ierr);
2871153da11SBarry Smith     }
2881153da11SBarry Smith   }
28942c9c57cSBarry Smith 
29042c9c57cSBarry Smith   /*
29142c9c57cSBarry Smith      Register the external package factorization based solvers
29242c9c57cSBarry Smith         Eventually we don't want to have these hardwired here at compile time of PETSc
29342c9c57cSBarry Smith   */
29442c9c57cSBarry Smith #if defined(PETSC_HAVE_MUMPS)
29542c9c57cSBarry Smith   ierr = MatSolverPackageRegister_MUMPS();CHKERRQ(ierr);
29642c9c57cSBarry Smith #endif
2970f39cd5aSBarry Smith #if defined(PETSC_HAVE_CUSP)
29842c9c57cSBarry Smith   ierr = MatSolverPackageRegister_CUSPARSE();CHKERRQ(ierr);
29942c9c57cSBarry Smith #endif
30042c9c57cSBarry Smith #if defined(PETSC_HAVE_ELEMENTAL)
30142c9c57cSBarry Smith   ierr = MatSolverPackageRegister_Elemental();CHKERRQ(ierr);
30242c9c57cSBarry Smith #endif
30342c9c57cSBarry Smith #if defined(PETSC_HAVE_MATLAB_ENGINE)
30442c9c57cSBarry Smith   ierr = MatSolverPackageRegister_Matlab();CHKERRQ(ierr);
30542c9c57cSBarry Smith #endif
30642c9c57cSBarry Smith #if defined(PETSC_HAVE_PETSC_HAVE_ESSL) && !defined(PETSC_USE_COMPLEX) && !defined(PETSC_USE_REAL_SINGLE) && !defined(PETSC_USE_REAL___FLOAT128)
30742c9c57cSBarry Smith   ierr = MatSolverPackageRegister_Essl();CHKERRQ(ierr);
30842c9c57cSBarry Smith #endif
30942c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU)
31042c9c57cSBarry Smith   ierr = MatSolverPackageRegister_SuperLU();CHKERRQ(ierr);
31142c9c57cSBarry Smith #endif
31242c9c57cSBarry Smith #if defined(PETSC_HAVE_PASTIX)
31342c9c57cSBarry Smith   ierr = MatSolverPackageRegister_Pastix();CHKERRQ(ierr);
31442c9c57cSBarry Smith #endif
31542c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU_DIST)
31642c9c57cSBarry Smith   ierr = MatSolverPackageRegister_SuperLU_DIST();CHKERRQ(ierr);
31742c9c57cSBarry Smith #endif
31842c9c57cSBarry Smith #if defined(PETSC_HAVE_CLIQUE)
31942c9c57cSBarry Smith   ierr = MatSolverPackageRegister_Clique();CHKERRQ(ierr);
32042c9c57cSBarry Smith #endif
32142c9c57cSBarry Smith #if defined(PETSC_HAVE_MKL_PARDISO)
32242c9c57cSBarry Smith   ierr = MatSolverPackageRegister_MKL_Pardiso();CHKERRQ(ierr);
32342c9c57cSBarry Smith #endif
324*d305a81bSVasiliy Kozyrev #if defined(PETSC_HAVE_MKL_CPARDISO)
325*d305a81bSVasiliy Kozyrev   ierr = MatSolverPackageRegister_MKL_CPardiso();CHKERRQ(ierr);
326*d305a81bSVasiliy Kozyrev #endif
32742c9c57cSBarry Smith #if defined(PETSC_HAVE_SUITESPARSE)
32842c9c57cSBarry Smith   ierr = MatSolverPackageRegister_SuiteSparse();CHKERRQ(ierr);
32942c9c57cSBarry Smith #endif
33042c9c57cSBarry Smith #if defined(PETSC_HAVE_LUSOL)
33142c9c57cSBarry Smith   ierr = MatSolverPackageRegister_Lusol();CHKERRQ(ierr);
33242c9c57cSBarry Smith #endif
33342c9c57cSBarry Smith #if defined(PETSC_HAVE_CLIQUE)
33442c9c57cSBarry Smith   ierr = MatSolverPackageRegister_Clique();CHKERRQ(ierr);
33542c9c57cSBarry Smith #endif
33642c9c57cSBarry Smith 
33742c9c57cSBarry Smith   /* Register the PETSc built in factorization based solvers */
33842c9c57cSBarry Smith   ierr = MatSolverPackageRegister(MATSOLVERBAS,   MATSEQAIJ,        MAT_FACTOR_ICC,MatGetFactor_seqaij_bas);CHKERRQ(ierr);
33942c9c57cSBarry Smith 
34042c9c57cSBarry Smith   ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJ,        MAT_FACTOR_LU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr);
34142c9c57cSBarry Smith   ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJ,        MAT_FACTOR_CHOLESKY,MatGetFactor_seqaij_petsc);CHKERRQ(ierr);
34242c9c57cSBarry Smith   ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJ,        MAT_FACTOR_ILU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr);
34342c9c57cSBarry Smith   ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJ,        MAT_FACTOR_ICC,MatGetFactor_seqaij_petsc);CHKERRQ(ierr);
34442c9c57cSBarry Smith 
345b3544a30SBarry Smith   ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJPERM,    MAT_FACTOR_LU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr);
346b3544a30SBarry Smith   ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJPERM,    MAT_FACTOR_CHOLESKY,MatGetFactor_seqaij_petsc);CHKERRQ(ierr);
347b3544a30SBarry Smith   ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJPERM,    MAT_FACTOR_ILU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr);
348b3544a30SBarry Smith   ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJPERM,    MAT_FACTOR_ICC,MatGetFactor_seqaij_petsc);CHKERRQ(ierr);
349b3544a30SBarry Smith 
350b3544a30SBarry Smith   ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJCRL,     MAT_FACTOR_LU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr);
351b3544a30SBarry Smith   ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJCRL,     MAT_FACTOR_CHOLESKY,MatGetFactor_seqaij_petsc);CHKERRQ(ierr);
352b3544a30SBarry Smith   ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJCRL,     MAT_FACTOR_ILU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr);
353b3544a30SBarry Smith   ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJCRL,     MAT_FACTOR_ICC,MatGetFactor_seqaij_petsc);CHKERRQ(ierr);
354b3544a30SBarry Smith 
35542c9c57cSBarry Smith   ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQBAIJ,       MAT_FACTOR_LU,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr);
35642c9c57cSBarry Smith   ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQBAIJ,       MAT_FACTOR_CHOLESKY,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr);
35742c9c57cSBarry Smith   ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQBAIJ,       MAT_FACTOR_ILU,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr);
35842c9c57cSBarry Smith   ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQBAIJ,       MAT_FACTOR_ICC,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr);
35942c9c57cSBarry Smith 
36042c9c57cSBarry Smith   ierr = MatSolverPackageRegister(MATSOLVERBSTRM, MATSEQBAIJ,       MAT_FACTOR_LU,MatGetFactor_seqbaij_bstrm);CHKERRQ(ierr);
36142c9c57cSBarry Smith   ierr = MatSolverPackageRegister(MATSOLVERBSTRM, MATSEQBAIJ,       MAT_FACTOR_ILU,MatGetFactor_seqbaij_bstrm);CHKERRQ(ierr);
36242c9c57cSBarry Smith 
36342c9c57cSBarry Smith   ierr = MatSolverPackageRegister(MATSOLVERSBSTRM,MATSEQSBAIJ,      MAT_FACTOR_CHOLESKY,MatGetFactor_seqsbaij_sbstrm);CHKERRQ(ierr);
36442c9c57cSBarry Smith   ierr = MatSolverPackageRegister(MATSOLVERSBSTRM,MATSEQSBAIJ,      MAT_FACTOR_ICC,MatGetFactor_seqsbaij_sbstrm);CHKERRQ(ierr);
36542c9c57cSBarry Smith 
36642c9c57cSBarry Smith   ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQSBAIJ,      MAT_FACTOR_CHOLESKY,MatGetFactor_seqsbaij_petsc);CHKERRQ(ierr);
36742c9c57cSBarry Smith   ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQSBAIJ,      MAT_FACTOR_ICC,MatGetFactor_seqsbaij_petsc);CHKERRQ(ierr);
36842c9c57cSBarry Smith 
36942c9c57cSBarry Smith   ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQDENSE,      MAT_FACTOR_LU,MatGetFactor_seqdense_petsc);CHKERRQ(ierr);
37042c9c57cSBarry Smith   ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQDENSE,      MAT_FACTOR_CHOLESKY,MatGetFactor_seqdense_petsc);CHKERRQ(ierr);
37142c9c57cSBarry Smith 
372b022a5c1SBarry Smith   ierr = PetscRegisterFinalize(MatFinalizePackage);CHKERRQ(ierr);
3731153da11SBarry Smith   PetscFunctionReturn(0);
3741153da11SBarry Smith }
3751153da11SBarry Smith 
376aa2d57e9SJed Brown #if defined(PETSC_HAVE_DYNAMIC_LIBRARIES)
3771153da11SBarry Smith #undef __FUNCT__
3781153da11SBarry Smith #define __FUNCT__ "PetscDLLibraryRegister_petscmat"
3791153da11SBarry Smith /*
3801153da11SBarry Smith   PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened.
3811153da11SBarry Smith 
3823f92711fSBarry Smith   This one registers all the matrix methods that are in the basic PETSc Matrix library.
3831153da11SBarry Smith 
3841153da11SBarry Smith  */
385607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscmat(void)
3861153da11SBarry Smith {
3871153da11SBarry Smith   PetscErrorCode ierr;
3881153da11SBarry Smith 
3891153da11SBarry Smith   PetscFunctionBegin;
390607a6623SBarry Smith   ierr = MatInitializePackage();CHKERRQ(ierr);
3911153da11SBarry Smith   PetscFunctionReturn(0);
3921153da11SBarry Smith }
3931153da11SBarry Smith 
3941153da11SBarry Smith 
395aa2d57e9SJed Brown #endif /* PETSC_HAVE_DYNAMIC_LIBRARIES */
396