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", 98c78258cSHong Zhang "FORCE_DIAGONAL_ENTRIES", 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", 261a2c6b5cSJunchao Zhang "SUBSET_OFF_PROC_ENTRIES", 271a2c6b5cSJunchao Zhang "SUBMAT_SINGLEIS", 281a2c6b5cSJunchao Zhang "STRUCTURE_ONLY", 291a2c6b5cSJunchao Zhang "SORTED_FULL", 301a2c6b5cSJunchao Zhang "FORM_EXPLICIT_TRANSPOSE", 31f4259b30SLisandro Dalcin "MatOption","MAT_",NULL}; 320f8fb01aSBarry Smith const char *const* MatOptions = MatOptions_Shifted+2; 33f4259b30SLisandro Dalcin const char *const MatFactorShiftTypes[] = {"NONE","NONZERO","POSITIVE_DEFINITE","INBLOCKS","MatFactorShiftType","PC_FACTOR_",NULL}; 34e6cbab7dSPierre Jolivet const char *const MatStructures[] = {"DIFFERENT","SUBSET","SAME","UNKNOWN","MatStructure","MAT_STRUCTURE_",NULL}; 355e9742b9SJed Brown const char *const MatFactorShiftTypesDetail[] = {NULL,"diagonal shift to prevent zero pivot","Manteuffel shift","diagonal shift on blocks to prevent zero pivot"}; 36f4259b30SLisandro Dalcin const char *const MPPTScotchStrategyTypes[] = {"DEFAULT","QUALITY","SPEED","BALANCE","SAFETY","SCALABILITY","MPPTScotchStrategyType","MP_PTSCOTCH_",NULL}; 37f4259b30SLisandro Dalcin const char *const MPChacoGlobalTypes[] = {"","MULTILEVEL","SPECTRAL","","LINEAR","RANDOM","SCATTERED","MPChacoGlobalType","MP_CHACO_",NULL}; 38f4259b30SLisandro Dalcin const char *const MPChacoLocalTypes[] = {"","KERNIGHAN","NONE","MPChacoLocalType","MP_CHACO_",NULL}; 39f4259b30SLisandro Dalcin const char *const MPChacoEigenTypes[] = {"LANCZOS","RQI","MPChacoEigenType","MP_CHACO_",NULL}; 40290bbb0aSBarry Smith 41607a6623SBarry Smith extern PetscErrorCode MatMFFDInitializePackage(void); 423ca39a21SBarry Smith extern PetscErrorCode MatSolverTypeDestroy(void); 43ace3abfcSBarry Smith static PetscBool MatPackageInitialized = PETSC_FALSE; 44b022a5c1SBarry Smith /*@C 4560154eb2SBarry Smith MatFinalizePackage - This function destroys everything in the Petsc interface to the Mat package. It is 46b022a5c1SBarry Smith called from PetscFinalize(). 47b022a5c1SBarry Smith 48b022a5c1SBarry Smith Level: developer 49b022a5c1SBarry Smith 50*db781477SPatrick Sanan .seealso: `PetscFinalize()`, `MatInitializePackage()` 51b022a5c1SBarry Smith @*/ 527087cfbeSBarry Smith PetscErrorCode MatFinalizePackage(void) 53b022a5c1SBarry Smith { 5423bebc0bSBarry Smith MatRootName nnames,names = MatRootNameList; 5501bebe75SBarry Smith 56b022a5c1SBarry Smith PetscFunctionBegin; 579566063dSJacob Faibussowitsch PetscCall(MatSolverTypeDestroy()); 5801bebe75SBarry Smith while (names) { 5901bebe75SBarry Smith nnames = names->next; 609566063dSJacob Faibussowitsch PetscCall(PetscFree(names->rname)); 619566063dSJacob Faibussowitsch PetscCall(PetscFree(names->sname)); 629566063dSJacob Faibussowitsch PetscCall(PetscFree(names->mname)); 639566063dSJacob Faibussowitsch PetscCall(PetscFree(names)); 6401bebe75SBarry Smith names = nnames; 6501bebe75SBarry Smith } 669566063dSJacob Faibussowitsch PetscCall(PetscFunctionListDestroy(&MatList)); 679566063dSJacob Faibussowitsch PetscCall(PetscFunctionListDestroy(&MatOrderingList)); 689566063dSJacob Faibussowitsch PetscCall(PetscFunctionListDestroy(&MatColoringList)); 699566063dSJacob Faibussowitsch PetscCall(PetscFunctionListDestroy(&MatPartitioningList)); 709566063dSJacob Faibussowitsch PetscCall(PetscFunctionListDestroy(&MatCoarsenList)); 7123bebc0bSBarry Smith MatRootNameList = NULL; 72b022a5c1SBarry Smith MatPackageInitialized = PETSC_FALSE; 73b022a5c1SBarry Smith MatRegisterAllCalled = PETSC_FALSE; 74b022a5c1SBarry Smith MatOrderingRegisterAllCalled = PETSC_FALSE; 75b022a5c1SBarry Smith MatColoringRegisterAllCalled = PETSC_FALSE; 76b022a5c1SBarry Smith MatPartitioningRegisterAllCalled = PETSC_FALSE; 77b43b03e9SMark F. Adams MatCoarsenRegisterAllCalled = PETSC_FALSE; 784099cc6bSBarry Smith /* this is not ideal because it exposes SeqAIJ implementation details directly into the base Mat code */ 799566063dSJacob Faibussowitsch PetscCall(PetscFunctionListDestroy(&MatSeqAIJList)); 804099cc6bSBarry Smith MatSeqAIJRegisterAllCalled = PETSC_FALSE; 81b022a5c1SBarry Smith PetscFunctionReturn(0); 82b022a5c1SBarry Smith } 83e5beb14aSMatthew Knepley 8442c9c57cSBarry Smith #if defined(PETSC_HAVE_MUMPS) 853ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_MUMPS(void); 8642c9c57cSBarry Smith #endif 87fd314934SBarry Smith #if defined(PETSC_HAVE_CUDA) 883ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_CUSPARSE(void); 8942c9c57cSBarry Smith #endif 90930e68a5SMark Adams #if defined(PETSC_HAVE_KOKKOS_KERNELS) 91930e68a5SMark Adams PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_KOKKOS(void); 92930e68a5SMark Adams #endif 9372367587SKarl Rupp #if defined(PETSC_HAVE_VIENNACL) 943ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_ViennaCL(void); 9572367587SKarl Rupp #endif 9642c9c57cSBarry Smith #if defined(PETSC_HAVE_ELEMENTAL) 973ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_Elemental(void); 9842c9c57cSBarry Smith #endif 99d24d4204SJose E. Roman #if defined(PETSC_HAVE_SCALAPACK) 100d24d4204SJose E. Roman PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_ScaLAPACK(void); 101d24d4204SJose E. Roman #endif 10242c9c57cSBarry Smith #if defined(PETSC_HAVE_MATLAB_ENGINE) 1033ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_Matlab(void); 10442c9c57cSBarry Smith #endif 1051148afceSStefano Zampini #if defined(PETSC_HAVE_ESSL) 1063ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_Essl(void); 10742c9c57cSBarry Smith #endif 10842c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU) 1093ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_SuperLU(void); 11042c9c57cSBarry Smith #endif 11108f5efcfSPieter Ghysels #if defined(PETSC_HAVE_STRUMPACK) 1123ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_STRUMPACK(void); 11308f5efcfSPieter Ghysels #endif 11442c9c57cSBarry Smith #if defined(PETSC_HAVE_PASTIX) 1153ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_Pastix(void); 11642c9c57cSBarry Smith #endif 11742c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU_DIST) 1183ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_SuperLU_DIST(void); 11942c9c57cSBarry Smith #endif 120418810c4SBarry Smith #if defined(PETSC_HAVE_ELEMENTAL) 1213ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_SparseElemental(void); 12242c9c57cSBarry Smith #endif 12342c9c57cSBarry Smith #if defined(PETSC_HAVE_MKL_PARDISO) 1243ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_MKL_Pardiso(void); 12542c9c57cSBarry Smith #endif 126d305a81bSVasiliy Kozyrev #if defined(PETSC_HAVE_MKL_CPARDISO) 1273ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_MKL_CPardiso(void); 128d305a81bSVasiliy Kozyrev #endif 12942c9c57cSBarry Smith #if defined(PETSC_HAVE_SUITESPARSE) 1303ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_SuiteSparse(void); 13142c9c57cSBarry Smith #endif 13242c9c57cSBarry Smith #if defined(PETSC_HAVE_LUSOL) 1333ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_Lusol(void); 13442c9c57cSBarry Smith #endif 13542c9c57cSBarry Smith 136cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqaij_petsc(Mat,MatFactorType,Mat*); 137cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqbaij_petsc(Mat,MatFactorType,Mat*); 138cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqsbaij_petsc(Mat,MatFactorType,Mat*); 139cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqdense_petsc(Mat,MatFactorType,Mat*); 140bfc799aaSStefano Zampini #if defined(PETSC_HAVE_CUDA) 141bfc799aaSStefano Zampini PETSC_INTERN PetscErrorCode MatGetFactor_seqdense_cuda(Mat,MatFactorType,Mat*); 142bfc799aaSStefano Zampini #endif 1433423f386SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_constantdiagonal_petsc(Mat,MatFactorType,Mat*); 144cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqaij_bas(Mat,MatFactorType,Mat*); 14542c9c57cSBarry Smith 1461153da11SBarry Smith /*@C 1471153da11SBarry Smith MatInitializePackage - This function initializes everything in the Mat package. It is called 1488a690491SBarry Smith from PetscDLLibraryRegister_petscmat() when using dynamic libraries, and on the first call to MatCreate() 1498a690491SBarry Smith when using shared or static libraries. 1501153da11SBarry Smith 1511153da11SBarry Smith Level: developer 1521153da11SBarry Smith 153*db781477SPatrick Sanan .seealso: `PetscInitialize()`, `MatFinalizePackage()` 1541153da11SBarry Smith @*/ 155607a6623SBarry Smith PetscErrorCode MatInitializePackage(void) 1561153da11SBarry Smith { 1571153da11SBarry Smith char logList[256]; 1588e81d068SLisandro Dalcin PetscBool opt,pkg; 159e94e781bSJacob Faibussowitsch 1601153da11SBarry Smith PetscFunctionBegin; 161b022a5c1SBarry Smith if (MatPackageInitialized) PetscFunctionReturn(0); 162b022a5c1SBarry Smith MatPackageInitialized = PETSC_TRUE; 1631755e90bSJacob Faibussowitsch /* Initialize subpackage */ 1649566063dSJacob Faibussowitsch PetscCall(MatMFFDInitializePackage()); 1651153da11SBarry Smith /* Register Classes */ 1669566063dSJacob Faibussowitsch PetscCall(PetscClassIdRegister("Matrix",&MAT_CLASSID)); 1679566063dSJacob Faibussowitsch PetscCall(PetscClassIdRegister("Matrix FD Coloring",&MAT_FDCOLORING_CLASSID)); 1689566063dSJacob Faibussowitsch PetscCall(PetscClassIdRegister("Matrix Coloring",&MAT_COLORING_CLASSID)); 1699566063dSJacob Faibussowitsch PetscCall(PetscClassIdRegister("Matrix MatTranspose Coloring",&MAT_TRANSPOSECOLORING_CLASSID)); 1709566063dSJacob Faibussowitsch PetscCall(PetscClassIdRegister("Matrix Partitioning",&MAT_PARTITIONING_CLASSID)); 1719566063dSJacob Faibussowitsch PetscCall(PetscClassIdRegister("Matrix Coarsen",&MAT_COARSEN_CLASSID)); 1729566063dSJacob Faibussowitsch PetscCall(PetscClassIdRegister("Matrix Null Space",&MAT_NULLSPACE_CLASSID)); 1731153da11SBarry Smith /* Register Constructors */ 1749566063dSJacob Faibussowitsch PetscCall(MatRegisterAll()); 1759566063dSJacob Faibussowitsch PetscCall(MatOrderingRegisterAll()); 1769566063dSJacob Faibussowitsch PetscCall(MatColoringRegisterAll()); 1779566063dSJacob Faibussowitsch PetscCall(MatPartitioningRegisterAll()); 1789566063dSJacob Faibussowitsch PetscCall(MatCoarsenRegisterAll()); 1799566063dSJacob Faibussowitsch PetscCall(MatSeqAIJRegisterAll()); 1801153da11SBarry Smith /* Register Events */ 1819566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMult", MAT_CLASSID,&MAT_Mult)); 1829566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMults", MAT_CLASSID,&MAT_Mults)); 1839566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMultAdd", MAT_CLASSID,&MAT_MultAdd)); 1849566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMultTranspose", MAT_CLASSID,&MAT_MultTranspose)); 1859566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMultTrAdd", MAT_CLASSID,&MAT_MultTransposeAdd)); 1869566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatSolve", MAT_CLASSID,&MAT_Solve)); 1879566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatSolves", MAT_CLASSID,&MAT_Solves)); 1889566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatSolveAdd", MAT_CLASSID,&MAT_SolveAdd)); 1899566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatSolveTranspos", MAT_CLASSID,&MAT_SolveTranspose)); 1909566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatSolveTrAdd", MAT_CLASSID,&MAT_SolveTransposeAdd)); 1919566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatSOR", MAT_CLASSID,&MAT_SOR)); 1929566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatForwardSolve", MAT_CLASSID,&MAT_ForwardSolve)); 1939566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatBackwardSolve", MAT_CLASSID,&MAT_BackwardSolve)); 1949566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatLUFactor", MAT_CLASSID,&MAT_LUFactor)); 1959566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatLUFactorSym", MAT_CLASSID,&MAT_LUFactorSymbolic)); 1969566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatLUFactorNum", MAT_CLASSID,&MAT_LUFactorNumeric)); 1979566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatQRFactor", MAT_CLASSID,&MAT_QRFactor)); 1989566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatQRFactorSym", MAT_CLASSID,&MAT_QRFactorSymbolic)); 1999566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatQRFactorNum", MAT_CLASSID,&MAT_QRFactorNumeric)); 2009566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatCholeskyFctr", MAT_CLASSID,&MAT_CholeskyFactor)); 2019566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatCholFctrSym", MAT_CLASSID,&MAT_CholeskyFactorSymbolic)); 2029566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatCholFctrNum", MAT_CLASSID,&MAT_CholeskyFactorNumeric)); 2039566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatFctrFactSchur", MAT_CLASSID,&MAT_FactorFactS)); 2049566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatFctrInvSchur", MAT_CLASSID,&MAT_FactorInvS)); 2059566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatILUFactor", MAT_CLASSID,&MAT_ILUFactor)); 2069566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatILUFactorSym", MAT_CLASSID,&MAT_ILUFactorSymbolic)); 2079566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatICCFactorSym", MAT_CLASSID,&MAT_ICCFactorSymbolic)); 2089566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatCopy", MAT_CLASSID,&MAT_Copy)); 2099566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatConvert", MAT_CLASSID,&MAT_Convert)); 2109566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatScale", MAT_CLASSID,&MAT_Scale)); 2119566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatResidual", MAT_CLASSID,&MAT_Residual)); 2129566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatAssemblyBegin", MAT_CLASSID,&MAT_AssemblyBegin)); 2139566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatAssemblyEnd", MAT_CLASSID,&MAT_AssemblyEnd)); 2149566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatSetValues", MAT_CLASSID,&MAT_SetValues)); 2159566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatGetValues", MAT_CLASSID,&MAT_GetValues)); 2169566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatGetRow", MAT_CLASSID,&MAT_GetRow)); 2179566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatGetRowIJ", MAT_CLASSID,&MAT_GetRowIJ)); 2189566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatCreateSubMats", MAT_CLASSID,&MAT_CreateSubMats)); 2199566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatCreateSubMat", MAT_CLASSID,&MAT_CreateSubMat)); 2209566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatGetOrdering", MAT_CLASSID,&MAT_GetOrdering)); 2219566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatIncreaseOvrlp", MAT_CLASSID,&MAT_IncreaseOverlap)); 2229566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatPartitioning", MAT_PARTITIONING_CLASSID,&MAT_Partitioning)); 2239566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatPartitioningND",MAT_PARTITIONING_CLASSID,&MAT_PartitioningND)); 2249566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatCoarsen", MAT_COARSEN_CLASSID,&MAT_Coarsen)); 2259566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatZeroEntries", MAT_CLASSID,&MAT_ZeroEntries)); 2269566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatLoad", MAT_CLASSID,&MAT_Load)); 2279566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatView", MAT_CLASSID,&MAT_View)); 2289566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatAXPY", MAT_CLASSID,&MAT_AXPY)); 2299566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatFDColorCreate", MAT_FDCOLORING_CLASSID,&MAT_FDColoringCreate)); 2309566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatFDColorSetUp", MAT_FDCOLORING_CLASSID,&MAT_FDColoringSetUp)); 2319566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatFDColorApply", MAT_FDCOLORING_CLASSID,&MAT_FDColoringApply)); 2329566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatFDColorFunc", MAT_FDCOLORING_CLASSID,&MAT_FDColoringFunction)); 2339566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatTranspose", MAT_CLASSID,&MAT_Transpose)); 2349566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMatSolve", MAT_CLASSID,&MAT_MatSolve)); 2359566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMatTrSolve", MAT_CLASSID,&MAT_MatTrSolve)); 2369566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMatMultSym", MAT_CLASSID,&MAT_MatMultSymbolic)); 2379566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMatMultNum", MAT_CLASSID,&MAT_MatMultNumeric)); 2389566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMatMatMultSym", MAT_CLASSID,&MAT_MatMatMultSymbolic)); 2399566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMatMatMultNum", MAT_CLASSID,&MAT_MatMatMultNumeric)); 2409566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatPtAPSymbolic", MAT_CLASSID,&MAT_PtAPSymbolic)); 2419566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatPtAPNumeric", MAT_CLASSID,&MAT_PtAPNumeric)); 2429566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatRARtSym", MAT_CLASSID,&MAT_RARtSymbolic)); 2439566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatRARtNum", MAT_CLASSID,&MAT_RARtNumeric)); 2449566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMatTrnMultSym", MAT_CLASSID,&MAT_MatTransposeMultSymbolic)); 2459566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMatTrnMultNum", MAT_CLASSID,&MAT_MatTransposeMultNumeric)); 2469566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatTrnMatMultSym", MAT_CLASSID,&MAT_TransposeMatMultSymbolic)); 2479566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatTrnMatMultNum", MAT_CLASSID,&MAT_TransposeMatMultNumeric)); 2489566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatTrnColorCreate",MAT_CLASSID,&MAT_TransposeColoringCreate)); 2499566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatRedundantMat", MAT_CLASSID,&MAT_RedundantMat)); 2509566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatGetSeqNZStrct", MAT_CLASSID,&MAT_GetSequentialNonzeroStructure)); 2519566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatGetMultiProcB", MAT_CLASSID,&MAT_GetMultiProcBlock)); 2529566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatSetRandom", MAT_CLASSID,&MAT_SetRandom)); 2534ebed01fSBarry Smith 2544ebed01fSBarry Smith /* these may be specific to MPIAIJ matrices */ 2559566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMPISumSeqNumeric",MAT_CLASSID,&MAT_Seqstompinum)); 2569566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMPISumSeqSymbolic",MAT_CLASSID,&MAT_Seqstompisym)); 2579566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMPISumSeq",MAT_CLASSID,&MAT_Seqstompi)); 2589566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatMPIConcateSeq",MAT_CLASSID,&MAT_Merge)); 2599566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatGetLocalMat",MAT_CLASSID,&MAT_Getlocalmat)); 2609566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatGetLocalMatCondensed",MAT_CLASSID,&MAT_Getlocalmatcondensed)); 2619566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatGetBrowsOfAcols",MAT_CLASSID,&MAT_GetBrowsOfAcols)); 2629566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatGetBrAoCol",MAT_CLASSID,&MAT_GetBrowsOfAocols)); 2634ebed01fSBarry Smith 2649566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatApplyPAPt_Symbolic",MAT_CLASSID,&MAT_Applypapt_symbolic)); 2659566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatApplyPAPt_Numeric",MAT_CLASSID,&MAT_Applypapt_numeric)); 2669566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatApplyPAPt",MAT_CLASSID,&MAT_Applypapt)); 2674ebed01fSBarry Smith 2689566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatGetSymTrans",MAT_CLASSID,&MAT_Getsymtranspose)); 2699566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatGetSymTransR",MAT_CLASSID,&MAT_Getsymtransreduced)); 2709566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatCUSPARSCopyTo",MAT_CLASSID,&MAT_CUSPARSECopyToGPU)); 2719566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatCUSPARSCopyFr",MAT_CLASSID,&MAT_CUSPARSECopyFromGPU)); 2729566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatCUSPARSSolAnl",MAT_CLASSID,&MAT_CUSPARSESolveAnalysis)); 2739566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatCUSPARSGenT",MAT_CLASSID,&MAT_CUSPARSEGenerateTranspose)); 2749566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatVCLCopyTo", MAT_CLASSID,&MAT_ViennaCLCopyToGPU)); 2759566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatDenseCopyTo",MAT_CLASSID,&MAT_DenseCopyToGPU)); 2769566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatDenseCopyFrom",MAT_CLASSID,&MAT_DenseCopyFromGPU)); 2779566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatSetValBatch",MAT_CLASSID,&MAT_SetValuesBatch)); 2784ebed01fSBarry Smith 2799566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatColoringApply",MAT_COLORING_CLASSID,&MATCOLORING_Apply)); 2809566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatColoringComm",MAT_COLORING_CLASSID,&MATCOLORING_Comm)); 2819566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatColoringLocal",MAT_COLORING_CLASSID,&MATCOLORING_Local)); 2829566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatColoringIS",MAT_COLORING_CLASSID,&MATCOLORING_ISCreate)); 2839566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatColoringSetUp",MAT_COLORING_CLASSID,&MATCOLORING_SetUp)); 2849566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatColoringWeights",MAT_COLORING_CLASSID,&MATCOLORING_Weights)); 2854f68377dSPeter Brune 2869566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatSetPreallCOO",MAT_CLASSID,&MAT_PreallCOO)); 2879566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatSetValuesCOO",MAT_CLASSID,&MAT_SetVCOO)); 288bfcc3627SStefano Zampini 2899566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatH2OpusBuild",MAT_CLASSID,&MAT_H2Opus_Build)); 2909566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatH2OpusComp", MAT_CLASSID,&MAT_H2Opus_Compress)); 2919566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatH2OpusOrth", MAT_CLASSID,&MAT_H2Opus_Orthog)); 2929566063dSJacob Faibussowitsch PetscCall(PetscLogEventRegister("MatH2OpusLR", MAT_CLASSID,&MAT_H2Opus_LR)); 29353022affSStefano Zampini 294217044c2SLisandro Dalcin /* Mark non-collective events */ 2959566063dSJacob Faibussowitsch PetscCall(PetscLogEventSetCollective(MAT_SetValues, PETSC_FALSE)); 2969566063dSJacob Faibussowitsch PetscCall(PetscLogEventSetCollective(MAT_SetValuesBatch, PETSC_FALSE)); 2979566063dSJacob Faibussowitsch PetscCall(PetscLogEventSetCollective(MAT_GetRow, PETSC_FALSE)); 2981153da11SBarry Smith /* Turn off high traffic events by default */ 2999566063dSJacob Faibussowitsch PetscCall(PetscLogEventSetActiveAll(MAT_SetValues, PETSC_FALSE)); 3009566063dSJacob Faibussowitsch PetscCall(PetscLogEventSetActiveAll(MAT_GetValues, PETSC_FALSE)); 3019566063dSJacob Faibussowitsch PetscCall(PetscLogEventSetActiveAll(MAT_GetRow, PETSC_FALSE)); 302e94e781bSJacob Faibussowitsch /* Process Info */ 303e94e781bSJacob Faibussowitsch { 304e94e781bSJacob Faibussowitsch PetscClassId classids[7]; 305217044c2SLisandro Dalcin 306e94e781bSJacob Faibussowitsch classids[0] = MAT_CLASSID; 307e94e781bSJacob Faibussowitsch classids[1] = MAT_FDCOLORING_CLASSID; 308e94e781bSJacob Faibussowitsch classids[2] = MAT_COLORING_CLASSID; 309e94e781bSJacob Faibussowitsch classids[3] = MAT_TRANSPOSECOLORING_CLASSID; 310e94e781bSJacob Faibussowitsch classids[4] = MAT_PARTITIONING_CLASSID; 311e94e781bSJacob Faibussowitsch classids[5] = MAT_COARSEN_CLASSID; 312e94e781bSJacob Faibussowitsch classids[6] = MAT_NULLSPACE_CLASSID; 3139566063dSJacob Faibussowitsch PetscCall(PetscInfoProcessClass("mat", 7, classids)); 3141153da11SBarry Smith } 315217044c2SLisandro Dalcin 3161153da11SBarry Smith /* Process summary exclusions */ 3179566063dSJacob Faibussowitsch PetscCall(PetscOptionsGetString(NULL,NULL,"-log_exclude",logList,sizeof(logList),&opt)); 3181153da11SBarry Smith if (opt) { 3199566063dSJacob Faibussowitsch PetscCall(PetscStrInList("mat",logList,',',&pkg)); 3209566063dSJacob Faibussowitsch if (pkg) PetscCall(PetscLogEventExcludeClass(MAT_CLASSID)); 3219566063dSJacob Faibussowitsch if (pkg) PetscCall(PetscLogEventExcludeClass(MAT_FDCOLORING_CLASSID)); 3229566063dSJacob Faibussowitsch if (pkg) PetscCall(PetscLogEventExcludeClass(MAT_COLORING_CLASSID)); 3239566063dSJacob Faibussowitsch if (pkg) PetscCall(PetscLogEventExcludeClass(MAT_TRANSPOSECOLORING_CLASSID)); 3249566063dSJacob Faibussowitsch if (pkg) PetscCall(PetscLogEventExcludeClass(MAT_PARTITIONING_CLASSID)); 3259566063dSJacob Faibussowitsch if (pkg) PetscCall(PetscLogEventExcludeClass(MAT_COARSEN_CLASSID)); 3269566063dSJacob Faibussowitsch if (pkg) PetscCall(PetscLogEventExcludeClass(MAT_NULLSPACE_CLASSID)); 3271153da11SBarry Smith } 32842c9c57cSBarry Smith 329c1619fb6SBarry Smith /* Register the PETSc built in factorization based solvers */ 3309566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJ, MAT_FACTOR_LU,MatGetFactor_seqaij_petsc)); 3319566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJ, MAT_FACTOR_CHOLESKY,MatGetFactor_seqaij_petsc)); 3329566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJ, MAT_FACTOR_ILU,MatGetFactor_seqaij_petsc)); 3339566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJ, MAT_FACTOR_ICC,MatGetFactor_seqaij_petsc)); 334c1619fb6SBarry Smith 3359566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJPERM, MAT_FACTOR_LU,MatGetFactor_seqaij_petsc)); 3369566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJPERM, MAT_FACTOR_CHOLESKY,MatGetFactor_seqaij_petsc)); 3379566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJPERM, MAT_FACTOR_ILU,MatGetFactor_seqaij_petsc)); 3389566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJPERM, MAT_FACTOR_ICC,MatGetFactor_seqaij_petsc)); 339c1619fb6SBarry Smith 3409566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATCONSTANTDIAGONAL,MAT_FACTOR_LU,MatGetFactor_constantdiagonal_petsc)); 3419566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATCONSTANTDIAGONAL,MAT_FACTOR_CHOLESKY,MatGetFactor_constantdiagonal_petsc)); 3429566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATCONSTANTDIAGONAL,MAT_FACTOR_ILU,MatGetFactor_constantdiagonal_petsc)); 3439566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATCONSTANTDIAGONAL,MAT_FACTOR_ICC,MatGetFactor_constantdiagonal_petsc)); 3443423f386SBarry Smith 3459779e05dSSatish Balay #if defined(PETSC_HAVE_MKL_SPARSE) 3469566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJMKL, MAT_FACTOR_LU,MatGetFactor_seqaij_petsc)); 3479566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJMKL, MAT_FACTOR_CHOLESKY,MatGetFactor_seqaij_petsc)); 3489566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJMKL, MAT_FACTOR_ILU,MatGetFactor_seqaij_petsc)); 3499566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJMKL, MAT_FACTOR_ICC,MatGetFactor_seqaij_petsc)); 350b5b72c8aSIrina Sokolova 3519566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJMKL, MAT_FACTOR_LU,MatGetFactor_seqbaij_petsc)); 3529566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJMKL, MAT_FACTOR_CHOLESKY,MatGetFactor_seqbaij_petsc)); 3539566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJMKL, MAT_FACTOR_ILU,MatGetFactor_seqbaij_petsc)); 3549566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJMKL, MAT_FACTOR_ICC,MatGetFactor_seqbaij_petsc)); 355191b95cbSRichard Tran Mills #endif 3562251f9d6SRichard Tran Mills /* Above, we register the PETSc built-in factorization solvers for MATSEQAIJMKL. In the future, we may want to use 3572251f9d6SRichard Tran Mills * some of the MKL-provided ones instead. */ 3582251f9d6SRichard Tran Mills 3599566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJCRL, MAT_FACTOR_LU,MatGetFactor_seqaij_petsc)); 3609566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJCRL, MAT_FACTOR_CHOLESKY,MatGetFactor_seqaij_petsc)); 3619566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJCRL, MAT_FACTOR_ILU,MatGetFactor_seqaij_petsc)); 3629566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJCRL, MAT_FACTOR_ICC,MatGetFactor_seqaij_petsc)); 363c1619fb6SBarry Smith 3649566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJ, MAT_FACTOR_LU,MatGetFactor_seqbaij_petsc)); 3659566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJ, MAT_FACTOR_CHOLESKY,MatGetFactor_seqbaij_petsc)); 3669566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJ, MAT_FACTOR_ILU,MatGetFactor_seqbaij_petsc)); 3679566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJ, MAT_FACTOR_ICC,MatGetFactor_seqbaij_petsc)); 368c1619fb6SBarry Smith 3699566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQSBAIJ, MAT_FACTOR_CHOLESKY,MatGetFactor_seqsbaij_petsc)); 3709566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQSBAIJ, MAT_FACTOR_ICC,MatGetFactor_seqsbaij_petsc)); 371c1619fb6SBarry Smith 3729566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQDENSE, MAT_FACTOR_LU,MatGetFactor_seqdense_petsc)); 3739566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQDENSE, MAT_FACTOR_ILU,MatGetFactor_seqdense_petsc)); 3749566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQDENSE, MAT_FACTOR_CHOLESKY,MatGetFactor_seqdense_petsc)); 3759566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERPETSC, MATSEQDENSE, MAT_FACTOR_QR,MatGetFactor_seqdense_petsc)); 376bfc799aaSStefano Zampini #if defined(PETSC_HAVE_CUDA) 3779566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERCUDA, MATSEQDENSE, MAT_FACTOR_LU,MatGetFactor_seqdense_cuda)); 3789566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERCUDA, MATSEQDENSE, MAT_FACTOR_CHOLESKY,MatGetFactor_seqdense_cuda)); 3799566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERCUDA, MATSEQDENSE, MAT_FACTOR_QR,MatGetFactor_seqdense_cuda)); 3809566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERCUDA, MATSEQDENSECUDA, MAT_FACTOR_LU,MatGetFactor_seqdense_cuda)); 3819566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERCUDA, MATSEQDENSECUDA, MAT_FACTOR_CHOLESKY,MatGetFactor_seqdense_cuda)); 3829566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERCUDA, MATSEQDENSECUDA, MAT_FACTOR_QR,MatGetFactor_seqdense_cuda)); 383bfc799aaSStefano Zampini #endif 384c1619fb6SBarry Smith 3859566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister(MATSOLVERBAS, MATSEQAIJ, MAT_FACTOR_ICC,MatGetFactor_seqaij_bas)); 386c1619fb6SBarry Smith 38742c9c57cSBarry Smith /* 38842c9c57cSBarry Smith Register the external package factorization based solvers 38942c9c57cSBarry Smith Eventually we don't want to have these hardwired here at compile time of PETSc 39042c9c57cSBarry Smith */ 39142c9c57cSBarry Smith #if defined(PETSC_HAVE_MUMPS) 3929566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_MUMPS()); 39342c9c57cSBarry Smith #endif 394fd314934SBarry Smith #if defined(PETSC_HAVE_CUDA) 3959566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_CUSPARSE()); 39642c9c57cSBarry Smith #endif 397930e68a5SMark Adams #if defined(PETSC_HAVE_KOKKOS_KERNELS) 3989566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_KOKKOS()); 399930e68a5SMark Adams #endif 40072367587SKarl Rupp #if defined(PETSC_HAVE_VIENNACL) 4019566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_ViennaCL()); 40272367587SKarl Rupp #endif 40342c9c57cSBarry Smith #if defined(PETSC_HAVE_ELEMENTAL) 4049566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_Elemental()); 40542c9c57cSBarry Smith #endif 406d24d4204SJose E. Roman #if defined(PETSC_HAVE_SCALAPACK) 4079566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_ScaLAPACK()); 408d24d4204SJose E. Roman #endif 40942c9c57cSBarry Smith #if defined(PETSC_HAVE_MATLAB_ENGINE) 4109566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_Matlab()); 41142c9c57cSBarry Smith #endif 4121148afceSStefano Zampini #if defined(PETSC_HAVE_ESSL) 4139566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_Essl()); 41442c9c57cSBarry Smith #endif 41542c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU) 4169566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_SuperLU()); 41742c9c57cSBarry Smith #endif 41808f5efcfSPieter Ghysels #if defined(PETSC_HAVE_STRUMPACK) 4199566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_STRUMPACK()); 42008f5efcfSPieter Ghysels #endif 42142c9c57cSBarry Smith #if defined(PETSC_HAVE_PASTIX) 4229566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_Pastix()); 42342c9c57cSBarry Smith #endif 42442c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU_DIST) 4259566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_SuperLU_DIST()); 42642c9c57cSBarry Smith #endif 427418810c4SBarry Smith #if defined(PETSC_HAVE_ELEMENTAL) 4289566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_SparseElemental()); 42942c9c57cSBarry Smith #endif 43042c9c57cSBarry Smith #if defined(PETSC_HAVE_MKL_PARDISO) 4319566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_MKL_Pardiso()); 43242c9c57cSBarry Smith #endif 433d305a81bSVasiliy Kozyrev #if defined(PETSC_HAVE_MKL_CPARDISO) 4349566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_MKL_CPardiso()); 435d305a81bSVasiliy Kozyrev #endif 43642c9c57cSBarry Smith #if defined(PETSC_HAVE_SUITESPARSE) 4379566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_SuiteSparse()); 43842c9c57cSBarry Smith #endif 43942c9c57cSBarry Smith #if defined(PETSC_HAVE_LUSOL) 4409566063dSJacob Faibussowitsch PetscCall(MatSolverTypeRegister_Lusol()); 44142c9c57cSBarry Smith #endif 4428e81d068SLisandro Dalcin /* Register package finalizer */ 4439566063dSJacob Faibussowitsch PetscCall(PetscRegisterFinalize(MatFinalizePackage)); 4441153da11SBarry Smith PetscFunctionReturn(0); 4451153da11SBarry Smith } 4461153da11SBarry Smith 447aa2d57e9SJed Brown #if defined(PETSC_HAVE_DYNAMIC_LIBRARIES) 4481153da11SBarry Smith /* 4491153da11SBarry Smith PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened. 4501153da11SBarry Smith 4513f92711fSBarry Smith This one registers all the matrix methods that are in the basic PETSc Matrix library. 4521153da11SBarry Smith 4531153da11SBarry Smith */ 454607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscmat(void) 4551153da11SBarry Smith { 4561153da11SBarry Smith PetscFunctionBegin; 4579566063dSJacob Faibussowitsch PetscCall(MatInitializePackage()); 4581153da11SBarry Smith PetscFunctionReturn(0); 4591153da11SBarry Smith } 4601153da11SBarry Smith 461aa2d57e9SJed Brown #endif /* PETSC_HAVE_DYNAMIC_LIBRARIES */ 462