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", 28071fcb05SBarry Smith "MAT_STRUCTURE_ONLY", 29071fcb05SBarry 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*); 133bfc799aaSStefano Zampini #if defined(PETSC_HAVE_CUDA) 134bfc799aaSStefano Zampini PETSC_INTERN PetscErrorCode MatGetFactor_seqdense_cuda(Mat,MatFactorType,Mat*); 135bfc799aaSStefano Zampini #endif 1363423f386SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_constantdiagonal_petsc(Mat,MatFactorType,Mat*); 137cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqaij_bas(Mat,MatFactorType,Mat*); 13842c9c57cSBarry Smith 1391153da11SBarry Smith /*@C 1401153da11SBarry Smith MatInitializePackage - This function initializes everything in the Mat package. It is called 1418a690491SBarry Smith from PetscDLLibraryRegister_petscmat() when using dynamic libraries, and on the first call to MatCreate() 1428a690491SBarry Smith when using shared or static libraries. 1431153da11SBarry Smith 1441153da11SBarry Smith Level: developer 1451153da11SBarry Smith 1461153da11SBarry Smith .seealso: PetscInitialize() 1471153da11SBarry Smith @*/ 148607a6623SBarry Smith PetscErrorCode MatInitializePackage(void) 1491153da11SBarry Smith { 1501153da11SBarry Smith char logList[256]; 1518e81d068SLisandro Dalcin PetscBool opt,pkg; 152*e94e781bSJacob Faibussowitsch 1531153da11SBarry Smith PetscErrorCode ierr; 1541153da11SBarry Smith 1551153da11SBarry Smith PetscFunctionBegin; 156b022a5c1SBarry Smith if (MatPackageInitialized) PetscFunctionReturn(0); 157b022a5c1SBarry Smith MatPackageInitialized = PETSC_TRUE; 1581755e90bSJacob Faibussowitsch /* Initialize subpackage */ 159607a6623SBarry Smith ierr = MatMFFDInitializePackage();CHKERRQ(ierr); 1601153da11SBarry Smith /* Register Classes */ 1610700a824SBarry Smith ierr = PetscClassIdRegister("Matrix",&MAT_CLASSID);CHKERRQ(ierr); 1620700a824SBarry Smith ierr = PetscClassIdRegister("Matrix FD Coloring",&MAT_FDCOLORING_CLASSID);CHKERRQ(ierr); 163335efc43SPeter Brune ierr = PetscClassIdRegister("Matrix Coloring",&MAT_COLORING_CLASSID);CHKERRQ(ierr); 164b9af6bddSHong Zhang ierr = PetscClassIdRegister("Matrix MatTranspose Coloring",&MAT_TRANSPOSECOLORING_CLASSID);CHKERRQ(ierr); 1650700a824SBarry Smith ierr = PetscClassIdRegister("Matrix Partitioning",&MAT_PARTITIONING_CLASSID);CHKERRQ(ierr); 166b43b03e9SMark F. Adams ierr = PetscClassIdRegister("Matrix Coarsen",&MAT_COARSEN_CLASSID);CHKERRQ(ierr); 1670700a824SBarry Smith ierr = PetscClassIdRegister("Matrix Null Space",&MAT_NULLSPACE_CLASSID);CHKERRQ(ierr); 1681153da11SBarry Smith /* Register Constructors */ 169607a6623SBarry Smith ierr = MatRegisterAll();CHKERRQ(ierr); 170607a6623SBarry Smith ierr = MatOrderingRegisterAll();CHKERRQ(ierr); 171607a6623SBarry Smith ierr = MatColoringRegisterAll();CHKERRQ(ierr); 172607a6623SBarry Smith ierr = MatPartitioningRegisterAll();CHKERRQ(ierr); 173607a6623SBarry Smith ierr = MatCoarsenRegisterAll();CHKERRQ(ierr); 1744099cc6bSBarry Smith ierr = MatSeqAIJRegisterAll();CHKERRQ(ierr); 1751153da11SBarry Smith /* Register Events */ 1760700a824SBarry Smith ierr = PetscLogEventRegister("MatMult", MAT_CLASSID,&MAT_Mult);CHKERRQ(ierr); 1770700a824SBarry Smith ierr = PetscLogEventRegister("MatMults", MAT_CLASSID,&MAT_Mults);CHKERRQ(ierr); 1780700a824SBarry Smith ierr = PetscLogEventRegister("MatMultConstr", MAT_CLASSID,&MAT_MultConstrained);CHKERRQ(ierr); 1790700a824SBarry Smith ierr = PetscLogEventRegister("MatMultAdd", MAT_CLASSID,&MAT_MultAdd);CHKERRQ(ierr); 1800700a824SBarry Smith ierr = PetscLogEventRegister("MatMultTranspose", MAT_CLASSID,&MAT_MultTranspose);CHKERRQ(ierr); 1810700a824SBarry Smith ierr = PetscLogEventRegister("MatMultTrConstr", MAT_CLASSID,&MAT_MultTransposeConstrained);CHKERRQ(ierr); 1820700a824SBarry Smith ierr = PetscLogEventRegister("MatMultTrAdd", MAT_CLASSID,&MAT_MultTransposeAdd);CHKERRQ(ierr); 1830700a824SBarry Smith ierr = PetscLogEventRegister("MatSolve", MAT_CLASSID,&MAT_Solve);CHKERRQ(ierr); 1840700a824SBarry Smith ierr = PetscLogEventRegister("MatSolves", MAT_CLASSID,&MAT_Solves);CHKERRQ(ierr); 1850700a824SBarry Smith ierr = PetscLogEventRegister("MatSolveAdd", MAT_CLASSID,&MAT_SolveAdd);CHKERRQ(ierr); 1860700a824SBarry Smith ierr = PetscLogEventRegister("MatSolveTranspos", MAT_CLASSID,&MAT_SolveTranspose);CHKERRQ(ierr); 1870700a824SBarry Smith ierr = PetscLogEventRegister("MatSolveTrAdd", MAT_CLASSID,&MAT_SolveTransposeAdd);CHKERRQ(ierr); 1880700a824SBarry Smith ierr = PetscLogEventRegister("MatSOR", MAT_CLASSID,&MAT_SOR);CHKERRQ(ierr); 1890700a824SBarry Smith ierr = PetscLogEventRegister("MatForwardSolve", MAT_CLASSID,&MAT_ForwardSolve);CHKERRQ(ierr); 1900700a824SBarry Smith ierr = PetscLogEventRegister("MatBackwardSolve", MAT_CLASSID,&MAT_BackwardSolve);CHKERRQ(ierr); 1910700a824SBarry Smith ierr = PetscLogEventRegister("MatLUFactor", MAT_CLASSID,&MAT_LUFactor);CHKERRQ(ierr); 1920700a824SBarry Smith ierr = PetscLogEventRegister("MatLUFactorSym", MAT_CLASSID,&MAT_LUFactorSymbolic);CHKERRQ(ierr); 1930700a824SBarry Smith ierr = PetscLogEventRegister("MatLUFactorNum", MAT_CLASSID,&MAT_LUFactorNumeric);CHKERRQ(ierr); 1940700a824SBarry Smith ierr = PetscLogEventRegister("MatCholeskyFctr", MAT_CLASSID,&MAT_CholeskyFactor);CHKERRQ(ierr); 1950700a824SBarry Smith ierr = PetscLogEventRegister("MatCholFctrSym", MAT_CLASSID,&MAT_CholeskyFactorSymbolic);CHKERRQ(ierr); 1960700a824SBarry Smith ierr = PetscLogEventRegister("MatCholFctrNum", MAT_CLASSID,&MAT_CholeskyFactorNumeric);CHKERRQ(ierr); 19707cedc40SStefano Zampini ierr = PetscLogEventRegister("MatFctrFactSchur", MAT_CLASSID,&MAT_FactorFactS);CHKERRQ(ierr); 19807cedc40SStefano Zampini ierr = PetscLogEventRegister("MatFctrInvSchur", MAT_CLASSID,&MAT_FactorInvS);CHKERRQ(ierr); 1990700a824SBarry Smith ierr = PetscLogEventRegister("MatILUFactor", MAT_CLASSID,&MAT_ILUFactor);CHKERRQ(ierr); 2000700a824SBarry Smith ierr = PetscLogEventRegister("MatILUFactorSym", MAT_CLASSID,&MAT_ILUFactorSymbolic);CHKERRQ(ierr); 2010700a824SBarry Smith ierr = PetscLogEventRegister("MatICCFactorSym", MAT_CLASSID,&MAT_ICCFactorSymbolic);CHKERRQ(ierr); 2020700a824SBarry Smith ierr = PetscLogEventRegister("MatCopy", MAT_CLASSID,&MAT_Copy);CHKERRQ(ierr); 2030700a824SBarry Smith ierr = PetscLogEventRegister("MatConvert", MAT_CLASSID,&MAT_Convert);CHKERRQ(ierr); 2040700a824SBarry Smith ierr = PetscLogEventRegister("MatScale", MAT_CLASSID,&MAT_Scale);CHKERRQ(ierr); 205f9426fe0SMark Adams ierr = PetscLogEventRegister("MatResidual", MAT_CLASSID,&MAT_Residual);CHKERRQ(ierr); 2060700a824SBarry Smith ierr = PetscLogEventRegister("MatAssemblyBegin", MAT_CLASSID,&MAT_AssemblyBegin);CHKERRQ(ierr); 2070700a824SBarry Smith ierr = PetscLogEventRegister("MatAssemblyEnd", MAT_CLASSID,&MAT_AssemblyEnd);CHKERRQ(ierr); 2080700a824SBarry Smith ierr = PetscLogEventRegister("MatSetValues", MAT_CLASSID,&MAT_SetValues);CHKERRQ(ierr); 2090700a824SBarry Smith ierr = PetscLogEventRegister("MatGetValues", MAT_CLASSID,&MAT_GetValues);CHKERRQ(ierr); 2100700a824SBarry Smith ierr = PetscLogEventRegister("MatGetRow", MAT_CLASSID,&MAT_GetRow);CHKERRQ(ierr); 2110700a824SBarry Smith ierr = PetscLogEventRegister("MatGetRowIJ", MAT_CLASSID,&MAT_GetRowIJ);CHKERRQ(ierr); 2127dae84e0SHong Zhang ierr = PetscLogEventRegister("MatCreateSubMats", MAT_CLASSID,&MAT_CreateSubMats);CHKERRQ(ierr); 2137dae84e0SHong Zhang ierr = PetscLogEventRegister("MatCreateSubMat", MAT_CLASSID,&MAT_CreateSubMat);CHKERRQ(ierr); 2140700a824SBarry Smith ierr = PetscLogEventRegister("MatGetOrdering", MAT_CLASSID,&MAT_GetOrdering);CHKERRQ(ierr); 2150700a824SBarry Smith ierr = PetscLogEventRegister("MatIncreaseOvrlp", MAT_CLASSID,&MAT_IncreaseOverlap);CHKERRQ(ierr); 2160700a824SBarry Smith ierr = PetscLogEventRegister("MatPartitioning", MAT_PARTITIONING_CLASSID,&MAT_Partitioning);CHKERRQ(ierr); 217f3ad2dabSStefano Zampini ierr = PetscLogEventRegister("MatPartitioningND",MAT_PARTITIONING_CLASSID,&MAT_PartitioningND);CHKERRQ(ierr); 218b43b03e9SMark F. Adams ierr = PetscLogEventRegister("MatCoarsen", MAT_COARSEN_CLASSID,&MAT_Coarsen);CHKERRQ(ierr); 2190700a824SBarry Smith ierr = PetscLogEventRegister("MatZeroEntries", MAT_CLASSID,&MAT_ZeroEntries);CHKERRQ(ierr); 2200700a824SBarry Smith ierr = PetscLogEventRegister("MatLoad", MAT_CLASSID,&MAT_Load);CHKERRQ(ierr); 2210700a824SBarry Smith ierr = PetscLogEventRegister("MatView", MAT_CLASSID,&MAT_View);CHKERRQ(ierr); 2220700a824SBarry Smith ierr = PetscLogEventRegister("MatAXPY", MAT_CLASSID,&MAT_AXPY);CHKERRQ(ierr); 2230700a824SBarry Smith ierr = PetscLogEventRegister("MatFDColorCreate", MAT_FDCOLORING_CLASSID,&MAT_FDColoringCreate);CHKERRQ(ierr); 2240df34763SHong Zhang ierr = PetscLogEventRegister("MatFDColorSetUp", MAT_FDCOLORING_CLASSID,&MAT_FDColoringSetUp);CHKERRQ(ierr); 2250700a824SBarry Smith ierr = PetscLogEventRegister("MatFDColorApply", MAT_FDCOLORING_CLASSID,&MAT_FDColoringApply);CHKERRQ(ierr); 2260700a824SBarry Smith ierr = PetscLogEventRegister("MatFDColorFunc", MAT_FDCOLORING_CLASSID,&MAT_FDColoringFunction);CHKERRQ(ierr); 2270700a824SBarry Smith ierr = PetscLogEventRegister("MatTranspose", MAT_CLASSID,&MAT_Transpose);CHKERRQ(ierr); 2280700a824SBarry Smith ierr = PetscLogEventRegister("MatMatSolve", MAT_CLASSID,&MAT_MatSolve);CHKERRQ(ierr); 229eb3ef3b2SHong Zhang ierr = PetscLogEventRegister("MatMatTrSolve", MAT_CLASSID,&MAT_MatTrSolve);CHKERRQ(ierr); 2300700a824SBarry Smith ierr = PetscLogEventRegister("MatMatMultSym", MAT_CLASSID,&MAT_MatMultSymbolic);CHKERRQ(ierr); 2310700a824SBarry Smith ierr = PetscLogEventRegister("MatMatMultNum", MAT_CLASSID,&MAT_MatMultNumeric);CHKERRQ(ierr); 2327bab7c10SHong Zhang ierr = PetscLogEventRegister("MatMatMatMultSym", MAT_CLASSID,&MAT_MatMatMultSymbolic);CHKERRQ(ierr); 2337bab7c10SHong Zhang ierr = PetscLogEventRegister("MatMatMatMultNum", MAT_CLASSID,&MAT_MatMatMultNumeric);CHKERRQ(ierr); 2340700a824SBarry Smith ierr = PetscLogEventRegister("MatPtAPSymbolic", MAT_CLASSID,&MAT_PtAPSymbolic);CHKERRQ(ierr); 2350700a824SBarry Smith ierr = PetscLogEventRegister("MatPtAPNumeric", MAT_CLASSID,&MAT_PtAPNumeric);CHKERRQ(ierr); 23650647e95SHong Zhang ierr = PetscLogEventRegister("MatRARtSym", MAT_CLASSID,&MAT_RARtSymbolic);CHKERRQ(ierr); 23750647e95SHong Zhang ierr = PetscLogEventRegister("MatRARtNum", MAT_CLASSID,&MAT_RARtNumeric);CHKERRQ(ierr); 2386fc122caSHong Zhang ierr = PetscLogEventRegister("MatMatTrnMultSym", MAT_CLASSID,&MAT_MatTransposeMultSymbolic);CHKERRQ(ierr); 2396fc122caSHong Zhang ierr = PetscLogEventRegister("MatMatTrnMultNum", MAT_CLASSID,&MAT_MatTransposeMultNumeric);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); 266bfc799aaSStefano Zampini ierr = PetscLogEventRegister("MatDenseCopyTo",MAT_CLASSID,&MAT_DenseCopyToGPU);CHKERRQ(ierr); 267bfc799aaSStefano Zampini ierr = PetscLogEventRegister("MatDenseCopyFrom",MAT_CLASSID,&MAT_DenseCopyFromGPU);CHKERRQ(ierr); 26837868618SMatthew G Knepley ierr = PetscLogEventRegister("MatSetValBatch",MAT_CLASSID,&MAT_SetValuesBatch);CHKERRQ(ierr); 2694ebed01fSBarry Smith 270367daffbSBarry Smith ierr = PetscLogEventRegister("MatColoringApply",MAT_COLORING_CLASSID,&MATCOLORING_Apply);CHKERRQ(ierr); 271367daffbSBarry Smith ierr = PetscLogEventRegister("MatColoringComm",MAT_COLORING_CLASSID,&MATCOLORING_Comm);CHKERRQ(ierr); 272367daffbSBarry Smith ierr = PetscLogEventRegister("MatColoringLocal",MAT_COLORING_CLASSID,&MATCOLORING_Local);CHKERRQ(ierr); 273367daffbSBarry Smith ierr = PetscLogEventRegister("MatColoringIS",MAT_COLORING_CLASSID,&MATCOLORING_ISCreate);CHKERRQ(ierr); 274367daffbSBarry Smith ierr = PetscLogEventRegister("MatColoringSetUp",MAT_COLORING_CLASSID,&MATCOLORING_SetUp);CHKERRQ(ierr); 275367daffbSBarry Smith ierr = PetscLogEventRegister("MatColoringWeights",MAT_COLORING_CLASSID,&MATCOLORING_Weights);CHKERRQ(ierr); 2764f68377dSPeter Brune 277217044c2SLisandro Dalcin /* Mark non-collective events */ 278217044c2SLisandro Dalcin ierr = PetscLogEventSetCollective(MAT_SetValues, PETSC_FALSE);CHKERRQ(ierr); 279217044c2SLisandro Dalcin ierr = PetscLogEventSetCollective(MAT_SetValuesBatch, PETSC_FALSE);CHKERRQ(ierr); 280217044c2SLisandro Dalcin ierr = PetscLogEventSetCollective(MAT_GetRow, PETSC_FALSE);CHKERRQ(ierr); 2811153da11SBarry Smith /* Turn off high traffic events by default */ 2821153da11SBarry Smith ierr = PetscLogEventSetActiveAll(MAT_SetValues, PETSC_FALSE);CHKERRQ(ierr); 283217044c2SLisandro Dalcin ierr = PetscLogEventSetActiveAll(MAT_GetValues, PETSC_FALSE);CHKERRQ(ierr); 284217044c2SLisandro Dalcin ierr = PetscLogEventSetActiveAll(MAT_GetRow, PETSC_FALSE);CHKERRQ(ierr); 285*e94e781bSJacob Faibussowitsch /* Process Info */ 286*e94e781bSJacob Faibussowitsch { 287*e94e781bSJacob Faibussowitsch PetscClassId classids[7]; 288217044c2SLisandro Dalcin 289*e94e781bSJacob Faibussowitsch classids[0] = MAT_CLASSID; 290*e94e781bSJacob Faibussowitsch classids[1] = MAT_FDCOLORING_CLASSID; 291*e94e781bSJacob Faibussowitsch classids[2] = MAT_COLORING_CLASSID; 292*e94e781bSJacob Faibussowitsch classids[3] = MAT_TRANSPOSECOLORING_CLASSID; 293*e94e781bSJacob Faibussowitsch classids[4] = MAT_PARTITIONING_CLASSID; 294*e94e781bSJacob Faibussowitsch classids[5] = MAT_COARSEN_CLASSID; 295*e94e781bSJacob Faibussowitsch classids[6] = MAT_NULLSPACE_CLASSID; 296*e94e781bSJacob Faibussowitsch ierr = PetscInfoProcessClass("mat", 7, classids);CHKERRQ(ierr); 2971153da11SBarry Smith } 298217044c2SLisandro Dalcin 2991153da11SBarry Smith /* Process summary exclusions */ 3008e81d068SLisandro Dalcin ierr = PetscOptionsGetString(NULL,NULL,"-log_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr); 3011153da11SBarry Smith if (opt) { 3028e81d068SLisandro Dalcin ierr = PetscStrInList("mat",logList,',',&pkg);CHKERRQ(ierr); 303fa2bb9feSLisandro Dalcin if (pkg) {ierr = PetscLogEventExcludeClass(MAT_CLASSID);CHKERRQ(ierr);} 304fa2bb9feSLisandro Dalcin if (pkg) {ierr = PetscLogEventExcludeClass(MAT_FDCOLORING_CLASSID);CHKERRQ(ierr);} 305fa2bb9feSLisandro Dalcin if (pkg) {ierr = PetscLogEventExcludeClass(MAT_COLORING_CLASSID);CHKERRQ(ierr);} 306fa2bb9feSLisandro Dalcin if (pkg) {ierr = PetscLogEventExcludeClass(MAT_TRANSPOSECOLORING_CLASSID);CHKERRQ(ierr);} 307fa2bb9feSLisandro Dalcin if (pkg) {ierr = PetscLogEventExcludeClass(MAT_PARTITIONING_CLASSID);CHKERRQ(ierr);} 308fa2bb9feSLisandro Dalcin if (pkg) {ierr = PetscLogEventExcludeClass(MAT_COARSEN_CLASSID);CHKERRQ(ierr);} 309fa2bb9feSLisandro Dalcin if (pkg) {ierr = PetscLogEventExcludeClass(MAT_NULLSPACE_CLASSID);CHKERRQ(ierr);} 3101153da11SBarry Smith } 31142c9c57cSBarry Smith 312c1619fb6SBarry Smith /* Register the PETSc built in factorization based solvers */ 3133ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJ, MAT_FACTOR_LU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3143ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJ, MAT_FACTOR_CHOLESKY,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3153ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJ, MAT_FACTOR_ILU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3163ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJ, MAT_FACTOR_ICC,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 317c1619fb6SBarry Smith 3183ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJPERM, MAT_FACTOR_LU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3193ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJPERM, MAT_FACTOR_CHOLESKY,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3203ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJPERM, MAT_FACTOR_ILU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3213ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJPERM, MAT_FACTOR_ICC,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 322c1619fb6SBarry Smith 3233423f386SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATCONSTANTDIAGONAL,MAT_FACTOR_LU,MatGetFactor_constantdiagonal_petsc);CHKERRQ(ierr); 3243423f386SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATCONSTANTDIAGONAL,MAT_FACTOR_CHOLESKY,MatGetFactor_constantdiagonal_petsc);CHKERRQ(ierr); 3253423f386SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATCONSTANTDIAGONAL,MAT_FACTOR_ILU,MatGetFactor_constantdiagonal_petsc);CHKERRQ(ierr); 3263423f386SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATCONSTANTDIAGONAL,MAT_FACTOR_ICC,MatGetFactor_constantdiagonal_petsc);CHKERRQ(ierr); 3273423f386SBarry Smith 3289779e05dSSatish Balay #if defined(PETSC_HAVE_MKL_SPARSE) 3293ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJMKL, MAT_FACTOR_LU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3303ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJMKL, MAT_FACTOR_CHOLESKY,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3313ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJMKL, MAT_FACTOR_ILU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3323ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJMKL, MAT_FACTOR_ICC,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 333b5b72c8aSIrina Sokolova 3343ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJMKL, MAT_FACTOR_LU,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 3353ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJMKL, MAT_FACTOR_CHOLESKY,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 3363ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJMKL, MAT_FACTOR_ILU,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 3373ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJMKL, MAT_FACTOR_ICC,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 338191b95cbSRichard Tran Mills #endif 3392251f9d6SRichard Tran Mills /* Above, we register the PETSc built-in factorization solvers for MATSEQAIJMKL. In the future, we may want to use 3402251f9d6SRichard Tran Mills * some of the MKL-provided ones instead. */ 3412251f9d6SRichard Tran Mills 3423ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJCRL, MAT_FACTOR_LU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3433ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJCRL, MAT_FACTOR_CHOLESKY,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3443ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJCRL, MAT_FACTOR_ILU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3453ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJCRL, MAT_FACTOR_ICC,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 346c1619fb6SBarry Smith 3473ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJ, MAT_FACTOR_LU,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 3483ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJ, MAT_FACTOR_CHOLESKY,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 3493ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJ, MAT_FACTOR_ILU,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 3503ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJ, MAT_FACTOR_ICC,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 351c1619fb6SBarry Smith 3523ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQSBAIJ, MAT_FACTOR_CHOLESKY,MatGetFactor_seqsbaij_petsc);CHKERRQ(ierr); 3533ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQSBAIJ, MAT_FACTOR_ICC,MatGetFactor_seqsbaij_petsc);CHKERRQ(ierr); 354c1619fb6SBarry Smith 3553ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQDENSE, MAT_FACTOR_LU,MatGetFactor_seqdense_petsc);CHKERRQ(ierr); 3563ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQDENSE, MAT_FACTOR_CHOLESKY,MatGetFactor_seqdense_petsc);CHKERRQ(ierr); 357bfc799aaSStefano Zampini #if defined(PETSC_HAVE_CUDA) 358bfc799aaSStefano Zampini ierr = MatSolverTypeRegister(MATSOLVERCUDA, MATSEQDENSE, MAT_FACTOR_LU,MatGetFactor_seqdense_cuda);CHKERRQ(ierr); 359bfc799aaSStefano Zampini ierr = MatSolverTypeRegister(MATSOLVERCUDA, MATSEQDENSE, MAT_FACTOR_CHOLESKY,MatGetFactor_seqdense_cuda);CHKERRQ(ierr); 360bfc799aaSStefano Zampini ierr = MatSolverTypeRegister(MATSOLVERCUDA, MATSEQDENSECUDA, MAT_FACTOR_LU,MatGetFactor_seqdense_cuda);CHKERRQ(ierr); 361bfc799aaSStefano Zampini ierr = MatSolverTypeRegister(MATSOLVERCUDA, MATSEQDENSECUDA, MAT_FACTOR_CHOLESKY,MatGetFactor_seqdense_cuda);CHKERRQ(ierr); 362bfc799aaSStefano Zampini #endif 363c1619fb6SBarry Smith 3643ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERBAS, MATSEQAIJ, MAT_FACTOR_ICC,MatGetFactor_seqaij_bas);CHKERRQ(ierr); 365c1619fb6SBarry Smith 36642c9c57cSBarry Smith /* 36742c9c57cSBarry Smith Register the external package factorization based solvers 36842c9c57cSBarry Smith Eventually we don't want to have these hardwired here at compile time of PETSc 36942c9c57cSBarry Smith */ 37042c9c57cSBarry Smith #if defined(PETSC_HAVE_MUMPS) 3713ca39a21SBarry Smith ierr = MatSolverTypeRegister_MUMPS();CHKERRQ(ierr); 37242c9c57cSBarry Smith #endif 373fd314934SBarry Smith #if defined(PETSC_HAVE_CUDA) 3743ca39a21SBarry Smith ierr = MatSolverTypeRegister_CUSPARSE();CHKERRQ(ierr); 37542c9c57cSBarry Smith #endif 37672367587SKarl Rupp #if defined(PETSC_HAVE_VIENNACL) 3773ca39a21SBarry Smith ierr = MatSolverTypeRegister_ViennaCL();CHKERRQ(ierr); 37872367587SKarl Rupp #endif 37942c9c57cSBarry Smith #if defined(PETSC_HAVE_ELEMENTAL) 3803ca39a21SBarry Smith ierr = MatSolverTypeRegister_Elemental();CHKERRQ(ierr); 38142c9c57cSBarry Smith #endif 38242c9c57cSBarry Smith #if defined(PETSC_HAVE_MATLAB_ENGINE) 3833ca39a21SBarry Smith ierr = MatSolverTypeRegister_Matlab();CHKERRQ(ierr); 38442c9c57cSBarry Smith #endif 385570b7f6dSBarry Smith #if defined(PETSC_HAVE_PETSC_HAVE_ESSL) 3863ca39a21SBarry Smith ierr = MatSolverTypeRegister_Essl();CHKERRQ(ierr); 38742c9c57cSBarry Smith #endif 38842c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU) 3893ca39a21SBarry Smith ierr = MatSolverTypeRegister_SuperLU();CHKERRQ(ierr); 39042c9c57cSBarry Smith #endif 39108f5efcfSPieter Ghysels #if defined(PETSC_HAVE_STRUMPACK) 3923ca39a21SBarry Smith ierr = MatSolverTypeRegister_STRUMPACK();CHKERRQ(ierr); 39308f5efcfSPieter Ghysels #endif 39442c9c57cSBarry Smith #if defined(PETSC_HAVE_PASTIX) 3953ca39a21SBarry Smith ierr = MatSolverTypeRegister_Pastix();CHKERRQ(ierr); 39642c9c57cSBarry Smith #endif 39742c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU_DIST) 3983ca39a21SBarry Smith ierr = MatSolverTypeRegister_SuperLU_DIST();CHKERRQ(ierr); 39942c9c57cSBarry Smith #endif 400418810c4SBarry Smith #if defined(PETSC_HAVE_ELEMENTAL) 4013ca39a21SBarry Smith ierr = MatSolverTypeRegister_SparseElemental();CHKERRQ(ierr); 40242c9c57cSBarry Smith #endif 40342c9c57cSBarry Smith #if defined(PETSC_HAVE_MKL_PARDISO) 4043ca39a21SBarry Smith ierr = MatSolverTypeRegister_MKL_Pardiso();CHKERRQ(ierr); 40542c9c57cSBarry Smith #endif 406d305a81bSVasiliy Kozyrev #if defined(PETSC_HAVE_MKL_CPARDISO) 4073ca39a21SBarry Smith ierr = MatSolverTypeRegister_MKL_CPardiso();CHKERRQ(ierr); 408d305a81bSVasiliy Kozyrev #endif 40942c9c57cSBarry Smith #if defined(PETSC_HAVE_SUITESPARSE) 4103ca39a21SBarry Smith ierr = MatSolverTypeRegister_SuiteSparse();CHKERRQ(ierr); 41142c9c57cSBarry Smith #endif 41242c9c57cSBarry Smith #if defined(PETSC_HAVE_LUSOL) 4133ca39a21SBarry Smith ierr = MatSolverTypeRegister_Lusol();CHKERRQ(ierr); 41442c9c57cSBarry Smith #endif 415418810c4SBarry Smith #if defined(PETSC_HAVE_ELEMENTAL) 4163ca39a21SBarry Smith ierr = MatSolverTypeRegister_SparseElemental();CHKERRQ(ierr); 41742c9c57cSBarry Smith #endif 4188e81d068SLisandro Dalcin /* Register package finalizer */ 419b022a5c1SBarry Smith ierr = PetscRegisterFinalize(MatFinalizePackage);CHKERRQ(ierr); 4201153da11SBarry Smith PetscFunctionReturn(0); 4211153da11SBarry Smith } 4221153da11SBarry Smith 423aa2d57e9SJed Brown #if defined(PETSC_HAVE_DYNAMIC_LIBRARIES) 4241153da11SBarry Smith /* 4251153da11SBarry Smith PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened. 4261153da11SBarry Smith 4273f92711fSBarry Smith This one registers all the matrix methods that are in the basic PETSc Matrix library. 4281153da11SBarry Smith 4291153da11SBarry Smith */ 430607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscmat(void) 4311153da11SBarry Smith { 4321153da11SBarry Smith PetscErrorCode ierr; 4331153da11SBarry Smith 4341153da11SBarry Smith PetscFunctionBegin; 435607a6623SBarry Smith ierr = MatInitializePackage();CHKERRQ(ierr); 4361153da11SBarry Smith PetscFunctionReturn(0); 4371153da11SBarry Smith } 4381153da11SBarry Smith 4391153da11SBarry Smith 440aa2d57e9SJed Brown #endif /* PETSC_HAVE_DYNAMIC_LIBRARIES */ 441