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", 260f8fb01aSBarry Smith "MAT_SUBSET_OFF_PROC_ENTRIES", 270f8fb01aSBarry Smith "MAT_SUBMAT_SINGLEIS", 28071fcb05SBarry Smith "MAT_STRUCTURE_ONLY", 29071fcb05SBarry Smith "MAT_SORTED_FULL", 30f4259b30SLisandro Dalcin "MatOption","MAT_",NULL}; 310f8fb01aSBarry Smith const char *const* MatOptions = MatOptions_Shifted+2; 32f4259b30SLisandro Dalcin const char *const MatFactorShiftTypes[] = {"NONE","NONZERO","POSITIVE_DEFINITE","INBLOCKS","MatFactorShiftType","PC_FACTOR_",NULL}; 33*d60b7d5cSBarry Smith const char *const MatStructures[] = {"different nonzero pattern","subset nonzero pattern","same nonzero pattern","unknown nonzero pattern","MatStructure","MAT_STRUCTURE_",NULL}; 345e9742b9SJed Brown const char *const MatFactorShiftTypesDetail[] = {NULL,"diagonal shift to prevent zero pivot","Manteuffel shift","diagonal shift on blocks to prevent zero pivot"}; 35f4259b30SLisandro Dalcin const char *const MPPTScotchStrategyTypes[] = {"DEFAULT","QUALITY","SPEED","BALANCE","SAFETY","SCALABILITY","MPPTScotchStrategyType","MP_PTSCOTCH_",NULL}; 36f4259b30SLisandro Dalcin const char *const MPChacoGlobalTypes[] = {"","MULTILEVEL","SPECTRAL","","LINEAR","RANDOM","SCATTERED","MPChacoGlobalType","MP_CHACO_",NULL}; 37f4259b30SLisandro Dalcin const char *const MPChacoLocalTypes[] = {"","KERNIGHAN","NONE","MPChacoLocalType","MP_CHACO_",NULL}; 38f4259b30SLisandro Dalcin const char *const MPChacoEigenTypes[] = {"LANCZOS","RQI","MPChacoEigenType","MP_CHACO_",NULL}; 39290bbb0aSBarry Smith 40607a6623SBarry Smith extern PetscErrorCode MatMFFDInitializePackage(void); 413ca39a21SBarry Smith extern PetscErrorCode MatSolverTypeDestroy(void); 42ace3abfcSBarry Smith static PetscBool MatPackageInitialized = PETSC_FALSE; 43b022a5c1SBarry Smith /*@C 4460154eb2SBarry Smith MatFinalizePackage - This function destroys everything in the Petsc interface to the Mat package. It is 45b022a5c1SBarry Smith called from PetscFinalize(). 46b022a5c1SBarry Smith 47b022a5c1SBarry Smith Level: developer 48b022a5c1SBarry Smith 492a350339SBarry Smith .seealso: PetscFinalize(), MatInitializePackage() 50b022a5c1SBarry Smith @*/ 517087cfbeSBarry Smith PetscErrorCode MatFinalizePackage(void) 52b022a5c1SBarry Smith { 5323bebc0bSBarry Smith MatRootName nnames,names = MatRootNameList; 5401bebe75SBarry Smith PetscErrorCode ierr; 5501bebe75SBarry Smith 56b022a5c1SBarry Smith PetscFunctionBegin; 573ca39a21SBarry Smith ierr = MatSolverTypeDestroy();CHKERRQ(ierr); 5801bebe75SBarry Smith while (names) { 5901bebe75SBarry Smith nnames = names->next; 6023bebc0bSBarry Smith ierr = PetscFree(names->rname);CHKERRQ(ierr); 6101bebe75SBarry Smith ierr = PetscFree(names->sname);CHKERRQ(ierr); 6201bebe75SBarry Smith ierr = PetscFree(names->mname);CHKERRQ(ierr); 6301bebe75SBarry Smith ierr = PetscFree(names);CHKERRQ(ierr); 6401bebe75SBarry Smith names = nnames; 6501bebe75SBarry Smith } 6637e93019SBarry Smith ierr = PetscFunctionListDestroy(&MatList);CHKERRQ(ierr); 6737e93019SBarry Smith ierr = PetscFunctionListDestroy(&MatOrderingList);CHKERRQ(ierr); 6837e93019SBarry Smith ierr = PetscFunctionListDestroy(&MatColoringList);CHKERRQ(ierr); 6937e93019SBarry Smith ierr = PetscFunctionListDestroy(&MatPartitioningList);CHKERRQ(ierr); 7037e93019SBarry Smith ierr = PetscFunctionListDestroy(&MatCoarsenList);CHKERRQ(ierr); 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 */ 794099cc6bSBarry Smith ierr = PetscFunctionListDestroy(&MatSeqAIJList);CHKERRQ(ierr); 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 9072367587SKarl Rupp #if defined(PETSC_HAVE_VIENNACL) 913ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_ViennaCL(void); 9272367587SKarl Rupp #endif 9342c9c57cSBarry Smith #if defined(PETSC_HAVE_ELEMENTAL) 943ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_Elemental(void); 9542c9c57cSBarry Smith #endif 96d24d4204SJose E. Roman #if defined(PETSC_HAVE_SCALAPACK) 97d24d4204SJose E. Roman PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_ScaLAPACK(void); 98d24d4204SJose E. Roman #endif 9942c9c57cSBarry Smith #if defined(PETSC_HAVE_MATLAB_ENGINE) 1003ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_Matlab(void); 10142c9c57cSBarry Smith #endif 102570b7f6dSBarry Smith #if defined(PETSC_HAVE_PETSC_HAVE_ESSL) 1033ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_Essl(void); 10442c9c57cSBarry Smith #endif 10542c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU) 1063ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_SuperLU(void); 10742c9c57cSBarry Smith #endif 10808f5efcfSPieter Ghysels #if defined(PETSC_HAVE_STRUMPACK) 1093ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_STRUMPACK(void); 11008f5efcfSPieter Ghysels #endif 11142c9c57cSBarry Smith #if defined(PETSC_HAVE_PASTIX) 1123ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_Pastix(void); 11342c9c57cSBarry Smith #endif 11442c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU_DIST) 1153ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_SuperLU_DIST(void); 11642c9c57cSBarry Smith #endif 117418810c4SBarry Smith #if defined(PETSC_HAVE_ELEMENTAL) 1183ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_SparseElemental(void); 11942c9c57cSBarry Smith #endif 12042c9c57cSBarry Smith #if defined(PETSC_HAVE_MKL_PARDISO) 1213ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_MKL_Pardiso(void); 12242c9c57cSBarry Smith #endif 123d305a81bSVasiliy Kozyrev #if defined(PETSC_HAVE_MKL_CPARDISO) 1243ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_MKL_CPardiso(void); 125d305a81bSVasiliy Kozyrev #endif 12642c9c57cSBarry Smith #if defined(PETSC_HAVE_SUITESPARSE) 1273ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_SuiteSparse(void); 12842c9c57cSBarry Smith #endif 12942c9c57cSBarry Smith #if defined(PETSC_HAVE_LUSOL) 1303ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_Lusol(void); 13142c9c57cSBarry Smith #endif 13242c9c57cSBarry Smith 133cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqaij_petsc(Mat,MatFactorType,Mat*); 134cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqbaij_petsc(Mat,MatFactorType,Mat*); 135cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqsbaij_petsc(Mat,MatFactorType,Mat*); 136cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqdense_petsc(Mat,MatFactorType,Mat*); 137bfc799aaSStefano Zampini #if defined(PETSC_HAVE_CUDA) 138bfc799aaSStefano Zampini PETSC_INTERN PetscErrorCode MatGetFactor_seqdense_cuda(Mat,MatFactorType,Mat*); 139bfc799aaSStefano Zampini #endif 1403423f386SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_constantdiagonal_petsc(Mat,MatFactorType,Mat*); 141cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqaij_bas(Mat,MatFactorType,Mat*); 14242c9c57cSBarry Smith 1431153da11SBarry Smith /*@C 1441153da11SBarry Smith MatInitializePackage - This function initializes everything in the Mat package. It is called 1458a690491SBarry Smith from PetscDLLibraryRegister_petscmat() when using dynamic libraries, and on the first call to MatCreate() 1468a690491SBarry Smith when using shared or static libraries. 1471153da11SBarry Smith 1481153da11SBarry Smith Level: developer 1491153da11SBarry Smith 1502a350339SBarry Smith .seealso: PetscInitialize(), MatFinalizePackage() 1511153da11SBarry Smith @*/ 152607a6623SBarry Smith PetscErrorCode MatInitializePackage(void) 1531153da11SBarry Smith { 1541153da11SBarry Smith char logList[256]; 1558e81d068SLisandro Dalcin PetscBool opt,pkg; 156e94e781bSJacob Faibussowitsch 1571153da11SBarry Smith PetscErrorCode ierr; 1581153da11SBarry Smith 1591153da11SBarry Smith PetscFunctionBegin; 160b022a5c1SBarry Smith if (MatPackageInitialized) PetscFunctionReturn(0); 161b022a5c1SBarry Smith MatPackageInitialized = PETSC_TRUE; 1621755e90bSJacob Faibussowitsch /* Initialize subpackage */ 163607a6623SBarry Smith ierr = MatMFFDInitializePackage();CHKERRQ(ierr); 1641153da11SBarry Smith /* Register Classes */ 1650700a824SBarry Smith ierr = PetscClassIdRegister("Matrix",&MAT_CLASSID);CHKERRQ(ierr); 1660700a824SBarry Smith ierr = PetscClassIdRegister("Matrix FD Coloring",&MAT_FDCOLORING_CLASSID);CHKERRQ(ierr); 167335efc43SPeter Brune ierr = PetscClassIdRegister("Matrix Coloring",&MAT_COLORING_CLASSID);CHKERRQ(ierr); 168b9af6bddSHong Zhang ierr = PetscClassIdRegister("Matrix MatTranspose Coloring",&MAT_TRANSPOSECOLORING_CLASSID);CHKERRQ(ierr); 1690700a824SBarry Smith ierr = PetscClassIdRegister("Matrix Partitioning",&MAT_PARTITIONING_CLASSID);CHKERRQ(ierr); 170b43b03e9SMark F. Adams ierr = PetscClassIdRegister("Matrix Coarsen",&MAT_COARSEN_CLASSID);CHKERRQ(ierr); 1710700a824SBarry Smith ierr = PetscClassIdRegister("Matrix Null Space",&MAT_NULLSPACE_CLASSID);CHKERRQ(ierr); 1721153da11SBarry Smith /* Register Constructors */ 173607a6623SBarry Smith ierr = MatRegisterAll();CHKERRQ(ierr); 174607a6623SBarry Smith ierr = MatOrderingRegisterAll();CHKERRQ(ierr); 175607a6623SBarry Smith ierr = MatColoringRegisterAll();CHKERRQ(ierr); 176607a6623SBarry Smith ierr = MatPartitioningRegisterAll();CHKERRQ(ierr); 177607a6623SBarry Smith ierr = MatCoarsenRegisterAll();CHKERRQ(ierr); 1784099cc6bSBarry Smith ierr = MatSeqAIJRegisterAll();CHKERRQ(ierr); 1791153da11SBarry Smith /* Register Events */ 1800700a824SBarry Smith ierr = PetscLogEventRegister("MatMult", MAT_CLASSID,&MAT_Mult);CHKERRQ(ierr); 1810700a824SBarry Smith ierr = PetscLogEventRegister("MatMults", MAT_CLASSID,&MAT_Mults);CHKERRQ(ierr); 1820700a824SBarry Smith ierr = PetscLogEventRegister("MatMultConstr", MAT_CLASSID,&MAT_MultConstrained);CHKERRQ(ierr); 1830700a824SBarry Smith ierr = PetscLogEventRegister("MatMultAdd", MAT_CLASSID,&MAT_MultAdd);CHKERRQ(ierr); 1840700a824SBarry Smith ierr = PetscLogEventRegister("MatMultTranspose", MAT_CLASSID,&MAT_MultTranspose);CHKERRQ(ierr); 1850700a824SBarry Smith ierr = PetscLogEventRegister("MatMultTrConstr", MAT_CLASSID,&MAT_MultTransposeConstrained);CHKERRQ(ierr); 1860700a824SBarry Smith ierr = PetscLogEventRegister("MatMultTrAdd", MAT_CLASSID,&MAT_MultTransposeAdd);CHKERRQ(ierr); 1870700a824SBarry Smith ierr = PetscLogEventRegister("MatSolve", MAT_CLASSID,&MAT_Solve);CHKERRQ(ierr); 1880700a824SBarry Smith ierr = PetscLogEventRegister("MatSolves", MAT_CLASSID,&MAT_Solves);CHKERRQ(ierr); 1890700a824SBarry Smith ierr = PetscLogEventRegister("MatSolveAdd", MAT_CLASSID,&MAT_SolveAdd);CHKERRQ(ierr); 1900700a824SBarry Smith ierr = PetscLogEventRegister("MatSolveTranspos", MAT_CLASSID,&MAT_SolveTranspose);CHKERRQ(ierr); 1910700a824SBarry Smith ierr = PetscLogEventRegister("MatSolveTrAdd", MAT_CLASSID,&MAT_SolveTransposeAdd);CHKERRQ(ierr); 1920700a824SBarry Smith ierr = PetscLogEventRegister("MatSOR", MAT_CLASSID,&MAT_SOR);CHKERRQ(ierr); 1930700a824SBarry Smith ierr = PetscLogEventRegister("MatForwardSolve", MAT_CLASSID,&MAT_ForwardSolve);CHKERRQ(ierr); 1940700a824SBarry Smith ierr = PetscLogEventRegister("MatBackwardSolve", MAT_CLASSID,&MAT_BackwardSolve);CHKERRQ(ierr); 1950700a824SBarry Smith ierr = PetscLogEventRegister("MatLUFactor", MAT_CLASSID,&MAT_LUFactor);CHKERRQ(ierr); 1960700a824SBarry Smith ierr = PetscLogEventRegister("MatLUFactorSym", MAT_CLASSID,&MAT_LUFactorSymbolic);CHKERRQ(ierr); 1970700a824SBarry Smith ierr = PetscLogEventRegister("MatLUFactorNum", MAT_CLASSID,&MAT_LUFactorNumeric);CHKERRQ(ierr); 1980700a824SBarry Smith ierr = PetscLogEventRegister("MatCholeskyFctr", MAT_CLASSID,&MAT_CholeskyFactor);CHKERRQ(ierr); 1990700a824SBarry Smith ierr = PetscLogEventRegister("MatCholFctrSym", MAT_CLASSID,&MAT_CholeskyFactorSymbolic);CHKERRQ(ierr); 2000700a824SBarry Smith ierr = PetscLogEventRegister("MatCholFctrNum", MAT_CLASSID,&MAT_CholeskyFactorNumeric);CHKERRQ(ierr); 20107cedc40SStefano Zampini ierr = PetscLogEventRegister("MatFctrFactSchur", MAT_CLASSID,&MAT_FactorFactS);CHKERRQ(ierr); 20207cedc40SStefano Zampini ierr = PetscLogEventRegister("MatFctrInvSchur", MAT_CLASSID,&MAT_FactorInvS);CHKERRQ(ierr); 2030700a824SBarry Smith ierr = PetscLogEventRegister("MatILUFactor", MAT_CLASSID,&MAT_ILUFactor);CHKERRQ(ierr); 2040700a824SBarry Smith ierr = PetscLogEventRegister("MatILUFactorSym", MAT_CLASSID,&MAT_ILUFactorSymbolic);CHKERRQ(ierr); 2050700a824SBarry Smith ierr = PetscLogEventRegister("MatICCFactorSym", MAT_CLASSID,&MAT_ICCFactorSymbolic);CHKERRQ(ierr); 2060700a824SBarry Smith ierr = PetscLogEventRegister("MatCopy", MAT_CLASSID,&MAT_Copy);CHKERRQ(ierr); 2070700a824SBarry Smith ierr = PetscLogEventRegister("MatConvert", MAT_CLASSID,&MAT_Convert);CHKERRQ(ierr); 2080700a824SBarry Smith ierr = PetscLogEventRegister("MatScale", MAT_CLASSID,&MAT_Scale);CHKERRQ(ierr); 209f9426fe0SMark Adams ierr = PetscLogEventRegister("MatResidual", MAT_CLASSID,&MAT_Residual);CHKERRQ(ierr); 2100700a824SBarry Smith ierr = PetscLogEventRegister("MatAssemblyBegin", MAT_CLASSID,&MAT_AssemblyBegin);CHKERRQ(ierr); 2110700a824SBarry Smith ierr = PetscLogEventRegister("MatAssemblyEnd", MAT_CLASSID,&MAT_AssemblyEnd);CHKERRQ(ierr); 2120700a824SBarry Smith ierr = PetscLogEventRegister("MatSetValues", MAT_CLASSID,&MAT_SetValues);CHKERRQ(ierr); 2130700a824SBarry Smith ierr = PetscLogEventRegister("MatGetValues", MAT_CLASSID,&MAT_GetValues);CHKERRQ(ierr); 2140700a824SBarry Smith ierr = PetscLogEventRegister("MatGetRow", MAT_CLASSID,&MAT_GetRow);CHKERRQ(ierr); 2150700a824SBarry Smith ierr = PetscLogEventRegister("MatGetRowIJ", MAT_CLASSID,&MAT_GetRowIJ);CHKERRQ(ierr); 2167dae84e0SHong Zhang ierr = PetscLogEventRegister("MatCreateSubMats", MAT_CLASSID,&MAT_CreateSubMats);CHKERRQ(ierr); 2177dae84e0SHong Zhang ierr = PetscLogEventRegister("MatCreateSubMat", MAT_CLASSID,&MAT_CreateSubMat);CHKERRQ(ierr); 2180700a824SBarry Smith ierr = PetscLogEventRegister("MatGetOrdering", MAT_CLASSID,&MAT_GetOrdering);CHKERRQ(ierr); 2190700a824SBarry Smith ierr = PetscLogEventRegister("MatIncreaseOvrlp", MAT_CLASSID,&MAT_IncreaseOverlap);CHKERRQ(ierr); 2200700a824SBarry Smith ierr = PetscLogEventRegister("MatPartitioning", MAT_PARTITIONING_CLASSID,&MAT_Partitioning);CHKERRQ(ierr); 221f3ad2dabSStefano Zampini ierr = PetscLogEventRegister("MatPartitioningND",MAT_PARTITIONING_CLASSID,&MAT_PartitioningND);CHKERRQ(ierr); 222b43b03e9SMark F. Adams ierr = PetscLogEventRegister("MatCoarsen", MAT_COARSEN_CLASSID,&MAT_Coarsen);CHKERRQ(ierr); 2230700a824SBarry Smith ierr = PetscLogEventRegister("MatZeroEntries", MAT_CLASSID,&MAT_ZeroEntries);CHKERRQ(ierr); 2240700a824SBarry Smith ierr = PetscLogEventRegister("MatLoad", MAT_CLASSID,&MAT_Load);CHKERRQ(ierr); 2250700a824SBarry Smith ierr = PetscLogEventRegister("MatView", MAT_CLASSID,&MAT_View);CHKERRQ(ierr); 2260700a824SBarry Smith ierr = PetscLogEventRegister("MatAXPY", MAT_CLASSID,&MAT_AXPY);CHKERRQ(ierr); 2270700a824SBarry Smith ierr = PetscLogEventRegister("MatFDColorCreate", MAT_FDCOLORING_CLASSID,&MAT_FDColoringCreate);CHKERRQ(ierr); 2280df34763SHong Zhang ierr = PetscLogEventRegister("MatFDColorSetUp", MAT_FDCOLORING_CLASSID,&MAT_FDColoringSetUp);CHKERRQ(ierr); 2290700a824SBarry Smith ierr = PetscLogEventRegister("MatFDColorApply", MAT_FDCOLORING_CLASSID,&MAT_FDColoringApply);CHKERRQ(ierr); 2300700a824SBarry Smith ierr = PetscLogEventRegister("MatFDColorFunc", MAT_FDCOLORING_CLASSID,&MAT_FDColoringFunction);CHKERRQ(ierr); 2310700a824SBarry Smith ierr = PetscLogEventRegister("MatTranspose", MAT_CLASSID,&MAT_Transpose);CHKERRQ(ierr); 2320700a824SBarry Smith ierr = PetscLogEventRegister("MatMatSolve", MAT_CLASSID,&MAT_MatSolve);CHKERRQ(ierr); 233eb3ef3b2SHong Zhang ierr = PetscLogEventRegister("MatMatTrSolve", MAT_CLASSID,&MAT_MatTrSolve);CHKERRQ(ierr); 2340700a824SBarry Smith ierr = PetscLogEventRegister("MatMatMultSym", MAT_CLASSID,&MAT_MatMultSymbolic);CHKERRQ(ierr); 2350700a824SBarry Smith ierr = PetscLogEventRegister("MatMatMultNum", MAT_CLASSID,&MAT_MatMultNumeric);CHKERRQ(ierr); 2367bab7c10SHong Zhang ierr = PetscLogEventRegister("MatMatMatMultSym", MAT_CLASSID,&MAT_MatMatMultSymbolic);CHKERRQ(ierr); 2377bab7c10SHong Zhang ierr = PetscLogEventRegister("MatMatMatMultNum", MAT_CLASSID,&MAT_MatMatMultNumeric);CHKERRQ(ierr); 2380700a824SBarry Smith ierr = PetscLogEventRegister("MatPtAPSymbolic", MAT_CLASSID,&MAT_PtAPSymbolic);CHKERRQ(ierr); 2390700a824SBarry Smith ierr = PetscLogEventRegister("MatPtAPNumeric", MAT_CLASSID,&MAT_PtAPNumeric);CHKERRQ(ierr); 24050647e95SHong Zhang ierr = PetscLogEventRegister("MatRARtSym", MAT_CLASSID,&MAT_RARtSymbolic);CHKERRQ(ierr); 24150647e95SHong Zhang ierr = PetscLogEventRegister("MatRARtNum", MAT_CLASSID,&MAT_RARtNumeric);CHKERRQ(ierr); 2426fc122caSHong Zhang ierr = PetscLogEventRegister("MatMatTrnMultSym", MAT_CLASSID,&MAT_MatTransposeMultSymbolic);CHKERRQ(ierr); 2436fc122caSHong Zhang ierr = PetscLogEventRegister("MatMatTrnMultNum", MAT_CLASSID,&MAT_MatTransposeMultNumeric);CHKERRQ(ierr); 24475648e8dSHong Zhang ierr = PetscLogEventRegister("MatTrnMatMultSym", MAT_CLASSID,&MAT_TransposeMatMultSymbolic);CHKERRQ(ierr); 24575648e8dSHong Zhang ierr = PetscLogEventRegister("MatTrnMatMultNum", MAT_CLASSID,&MAT_TransposeMatMultNumeric);CHKERRQ(ierr); 246b9af6bddSHong Zhang ierr = PetscLogEventRegister("MatTrnColorCreate",MAT_CLASSID,&MAT_TransposeColoringCreate);CHKERRQ(ierr); 24753cd1579SHong Zhang ierr = PetscLogEventRegister("MatRedundantMat", MAT_CLASSID,&MAT_RedundantMat);CHKERRQ(ierr); 2480700a824SBarry Smith ierr = PetscLogEventRegister("MatGetSeqNZStrct", MAT_CLASSID,&MAT_GetSequentialNonzeroStructure);CHKERRQ(ierr); 249011ea8aeSBarry Smith ierr = PetscLogEventRegister("MatGetMultiProcB", MAT_CLASSID,&MAT_GetMultiProcBlock);CHKERRQ(ierr); 25000e125f8SBarry Smith ierr = PetscLogEventRegister("MatSetRandom", MAT_CLASSID,&MAT_SetRandom);CHKERRQ(ierr); 2514ebed01fSBarry Smith 2524ebed01fSBarry Smith /* these may be specific to MPIAIJ matrices */ 253a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatMPISumSeqNumeric",MAT_CLASSID,&MAT_Seqstompinum);CHKERRQ(ierr); 254a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatMPISumSeqSymbolic",MAT_CLASSID,&MAT_Seqstompisym);CHKERRQ(ierr); 255a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatMPISumSeq",MAT_CLASSID,&MAT_Seqstompi);CHKERRQ(ierr); 256a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatMPIConcateSeq",MAT_CLASSID,&MAT_Merge);CHKERRQ(ierr); 257a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatGetLocalMat",MAT_CLASSID,&MAT_Getlocalmat);CHKERRQ(ierr); 258a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatGetLocalMatCondensed",MAT_CLASSID,&MAT_Getlocalmatcondensed);CHKERRQ(ierr); 259a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatGetBrowsOfAcols",MAT_CLASSID,&MAT_GetBrowsOfAcols);CHKERRQ(ierr); 260a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatGetBrAoCol",MAT_CLASSID,&MAT_GetBrowsOfAocols);CHKERRQ(ierr); 2614ebed01fSBarry Smith 2620700a824SBarry Smith ierr = PetscLogEventRegister("MatApplyPAPt_Symbolic",MAT_CLASSID,&MAT_Applypapt_symbolic);CHKERRQ(ierr); 2630700a824SBarry Smith ierr = PetscLogEventRegister("MatApplyPAPt_Numeric",MAT_CLASSID,&MAT_Applypapt_numeric);CHKERRQ(ierr); 2640700a824SBarry Smith ierr = PetscLogEventRegister("MatApplyPAPt",MAT_CLASSID,&MAT_Applypapt);CHKERRQ(ierr); 2654ebed01fSBarry Smith 2660700a824SBarry Smith ierr = PetscLogEventRegister("MatGetSymTrans",MAT_CLASSID,&MAT_Getsymtranspose);CHKERRQ(ierr); 2670700a824SBarry Smith ierr = PetscLogEventRegister("MatGetSymTransR",MAT_CLASSID,&MAT_Getsymtransreduced);CHKERRQ(ierr); 2688693ff2aSBarry Smith ierr = PetscLogEventRegister("MatCUSPARSCopyTo",MAT_CLASSID,&MAT_CUSPARSECopyToGPU);CHKERRQ(ierr); 2697e8381f9SStefano Zampini ierr = PetscLogEventRegister("MatCUSPARSCopyFr",MAT_CLASSID,&MAT_CUSPARSECopyFromGPU);CHKERRQ(ierr); 2707e8381f9SStefano Zampini ierr = PetscLogEventRegister("MatCUSPARSPreCOO",MAT_CLASSID,&MAT_CUSPARSEPreallCOO);CHKERRQ(ierr); 2717e8381f9SStefano Zampini ierr = PetscLogEventRegister("MatCUSPARSValCOO",MAT_CLASSID,&MAT_CUSPARSESetVCOO);CHKERRQ(ierr); 272da79fbbcSStefano Zampini ierr = PetscLogEventRegister("MatCUSPARSSolAnl",MAT_CLASSID,&MAT_CUSPARSESolveAnalysis);CHKERRQ(ierr); 27385ba7357SStefano Zampini ierr = PetscLogEventRegister("MatCUSPARSGenT",MAT_CLASSID,&MAT_CUSPARSEGenerateTranspose);CHKERRQ(ierr); 2748693ff2aSBarry Smith ierr = PetscLogEventRegister("MatVCLCopyTo", MAT_CLASSID,&MAT_ViennaCLCopyToGPU);CHKERRQ(ierr); 275bfc799aaSStefano Zampini ierr = PetscLogEventRegister("MatDenseCopyTo",MAT_CLASSID,&MAT_DenseCopyToGPU);CHKERRQ(ierr); 276bfc799aaSStefano Zampini ierr = PetscLogEventRegister("MatDenseCopyFrom",MAT_CLASSID,&MAT_DenseCopyFromGPU);CHKERRQ(ierr); 27737868618SMatthew G Knepley ierr = PetscLogEventRegister("MatSetValBatch",MAT_CLASSID,&MAT_SetValuesBatch);CHKERRQ(ierr); 2784ebed01fSBarry Smith 279367daffbSBarry Smith ierr = PetscLogEventRegister("MatColoringApply",MAT_COLORING_CLASSID,&MATCOLORING_Apply);CHKERRQ(ierr); 280367daffbSBarry Smith ierr = PetscLogEventRegister("MatColoringComm",MAT_COLORING_CLASSID,&MATCOLORING_Comm);CHKERRQ(ierr); 281367daffbSBarry Smith ierr = PetscLogEventRegister("MatColoringLocal",MAT_COLORING_CLASSID,&MATCOLORING_Local);CHKERRQ(ierr); 282367daffbSBarry Smith ierr = PetscLogEventRegister("MatColoringIS",MAT_COLORING_CLASSID,&MATCOLORING_ISCreate);CHKERRQ(ierr); 283367daffbSBarry Smith ierr = PetscLogEventRegister("MatColoringSetUp",MAT_COLORING_CLASSID,&MATCOLORING_SetUp);CHKERRQ(ierr); 284367daffbSBarry Smith ierr = PetscLogEventRegister("MatColoringWeights",MAT_COLORING_CLASSID,&MATCOLORING_Weights);CHKERRQ(ierr); 2854f68377dSPeter Brune 286217044c2SLisandro Dalcin /* Mark non-collective events */ 287217044c2SLisandro Dalcin ierr = PetscLogEventSetCollective(MAT_SetValues, PETSC_FALSE);CHKERRQ(ierr); 288217044c2SLisandro Dalcin ierr = PetscLogEventSetCollective(MAT_SetValuesBatch, PETSC_FALSE);CHKERRQ(ierr); 289217044c2SLisandro Dalcin ierr = PetscLogEventSetCollective(MAT_GetRow, PETSC_FALSE);CHKERRQ(ierr); 2901153da11SBarry Smith /* Turn off high traffic events by default */ 2911153da11SBarry Smith ierr = PetscLogEventSetActiveAll(MAT_SetValues, PETSC_FALSE);CHKERRQ(ierr); 292217044c2SLisandro Dalcin ierr = PetscLogEventSetActiveAll(MAT_GetValues, PETSC_FALSE);CHKERRQ(ierr); 293217044c2SLisandro Dalcin ierr = PetscLogEventSetActiveAll(MAT_GetRow, PETSC_FALSE);CHKERRQ(ierr); 294e94e781bSJacob Faibussowitsch /* Process Info */ 295e94e781bSJacob Faibussowitsch { 296e94e781bSJacob Faibussowitsch PetscClassId classids[7]; 297217044c2SLisandro Dalcin 298e94e781bSJacob Faibussowitsch classids[0] = MAT_CLASSID; 299e94e781bSJacob Faibussowitsch classids[1] = MAT_FDCOLORING_CLASSID; 300e94e781bSJacob Faibussowitsch classids[2] = MAT_COLORING_CLASSID; 301e94e781bSJacob Faibussowitsch classids[3] = MAT_TRANSPOSECOLORING_CLASSID; 302e94e781bSJacob Faibussowitsch classids[4] = MAT_PARTITIONING_CLASSID; 303e94e781bSJacob Faibussowitsch classids[5] = MAT_COARSEN_CLASSID; 304e94e781bSJacob Faibussowitsch classids[6] = MAT_NULLSPACE_CLASSID; 305e94e781bSJacob Faibussowitsch ierr = PetscInfoProcessClass("mat", 7, classids);CHKERRQ(ierr); 3061153da11SBarry Smith } 307217044c2SLisandro Dalcin 3081153da11SBarry Smith /* Process summary exclusions */ 3098e81d068SLisandro Dalcin ierr = PetscOptionsGetString(NULL,NULL,"-log_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr); 3101153da11SBarry Smith if (opt) { 3118e81d068SLisandro Dalcin ierr = PetscStrInList("mat",logList,',',&pkg);CHKERRQ(ierr); 312fa2bb9feSLisandro Dalcin if (pkg) {ierr = PetscLogEventExcludeClass(MAT_CLASSID);CHKERRQ(ierr);} 313fa2bb9feSLisandro Dalcin if (pkg) {ierr = PetscLogEventExcludeClass(MAT_FDCOLORING_CLASSID);CHKERRQ(ierr);} 314fa2bb9feSLisandro Dalcin if (pkg) {ierr = PetscLogEventExcludeClass(MAT_COLORING_CLASSID);CHKERRQ(ierr);} 315fa2bb9feSLisandro Dalcin if (pkg) {ierr = PetscLogEventExcludeClass(MAT_TRANSPOSECOLORING_CLASSID);CHKERRQ(ierr);} 316fa2bb9feSLisandro Dalcin if (pkg) {ierr = PetscLogEventExcludeClass(MAT_PARTITIONING_CLASSID);CHKERRQ(ierr);} 317fa2bb9feSLisandro Dalcin if (pkg) {ierr = PetscLogEventExcludeClass(MAT_COARSEN_CLASSID);CHKERRQ(ierr);} 318fa2bb9feSLisandro Dalcin if (pkg) {ierr = PetscLogEventExcludeClass(MAT_NULLSPACE_CLASSID);CHKERRQ(ierr);} 3191153da11SBarry Smith } 32042c9c57cSBarry Smith 321c1619fb6SBarry Smith /* Register the PETSc built in factorization based solvers */ 3223ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJ, MAT_FACTOR_LU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3233ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJ, MAT_FACTOR_CHOLESKY,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3243ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJ, MAT_FACTOR_ILU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3253ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJ, MAT_FACTOR_ICC,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 326c1619fb6SBarry Smith 3273ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJPERM, MAT_FACTOR_LU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3283ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJPERM, MAT_FACTOR_CHOLESKY,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3293ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJPERM, MAT_FACTOR_ILU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3303ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJPERM, MAT_FACTOR_ICC,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 331c1619fb6SBarry Smith 3323423f386SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATCONSTANTDIAGONAL,MAT_FACTOR_LU,MatGetFactor_constantdiagonal_petsc);CHKERRQ(ierr); 3333423f386SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATCONSTANTDIAGONAL,MAT_FACTOR_CHOLESKY,MatGetFactor_constantdiagonal_petsc);CHKERRQ(ierr); 3343423f386SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATCONSTANTDIAGONAL,MAT_FACTOR_ILU,MatGetFactor_constantdiagonal_petsc);CHKERRQ(ierr); 3353423f386SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATCONSTANTDIAGONAL,MAT_FACTOR_ICC,MatGetFactor_constantdiagonal_petsc);CHKERRQ(ierr); 3363423f386SBarry Smith 3379779e05dSSatish Balay #if defined(PETSC_HAVE_MKL_SPARSE) 3383ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJMKL, MAT_FACTOR_LU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3393ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJMKL, MAT_FACTOR_CHOLESKY,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3403ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJMKL, MAT_FACTOR_ILU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3413ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJMKL, MAT_FACTOR_ICC,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 342b5b72c8aSIrina Sokolova 3433ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJMKL, MAT_FACTOR_LU,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 3443ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJMKL, MAT_FACTOR_CHOLESKY,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 3453ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJMKL, MAT_FACTOR_ILU,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 3463ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJMKL, MAT_FACTOR_ICC,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 347191b95cbSRichard Tran Mills #endif 3482251f9d6SRichard Tran Mills /* Above, we register the PETSc built-in factorization solvers for MATSEQAIJMKL. In the future, we may want to use 3492251f9d6SRichard Tran Mills * some of the MKL-provided ones instead. */ 3502251f9d6SRichard Tran Mills 3513ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJCRL, MAT_FACTOR_LU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3523ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJCRL, MAT_FACTOR_CHOLESKY,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3533ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJCRL, MAT_FACTOR_ILU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3543ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJCRL, MAT_FACTOR_ICC,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 355c1619fb6SBarry Smith 3563ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJ, MAT_FACTOR_LU,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 3573ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJ, MAT_FACTOR_CHOLESKY,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 3583ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJ, MAT_FACTOR_ILU,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 3593ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJ, MAT_FACTOR_ICC,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 360c1619fb6SBarry Smith 3613ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQSBAIJ, MAT_FACTOR_CHOLESKY,MatGetFactor_seqsbaij_petsc);CHKERRQ(ierr); 3623ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQSBAIJ, MAT_FACTOR_ICC,MatGetFactor_seqsbaij_petsc);CHKERRQ(ierr); 363c1619fb6SBarry Smith 3643ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQDENSE, MAT_FACTOR_LU,MatGetFactor_seqdense_petsc);CHKERRQ(ierr); 3652a350339SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQDENSE, MAT_FACTOR_ILU,MatGetFactor_seqdense_petsc);CHKERRQ(ierr); 3663ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQDENSE, MAT_FACTOR_CHOLESKY,MatGetFactor_seqdense_petsc);CHKERRQ(ierr); 367bfc799aaSStefano Zampini #if defined(PETSC_HAVE_CUDA) 368bfc799aaSStefano Zampini ierr = MatSolverTypeRegister(MATSOLVERCUDA, MATSEQDENSE, MAT_FACTOR_LU,MatGetFactor_seqdense_cuda);CHKERRQ(ierr); 369bfc799aaSStefano Zampini ierr = MatSolverTypeRegister(MATSOLVERCUDA, MATSEQDENSE, MAT_FACTOR_CHOLESKY,MatGetFactor_seqdense_cuda);CHKERRQ(ierr); 370bfc799aaSStefano Zampini ierr = MatSolverTypeRegister(MATSOLVERCUDA, MATSEQDENSECUDA, MAT_FACTOR_LU,MatGetFactor_seqdense_cuda);CHKERRQ(ierr); 371bfc799aaSStefano Zampini ierr = MatSolverTypeRegister(MATSOLVERCUDA, MATSEQDENSECUDA, MAT_FACTOR_CHOLESKY,MatGetFactor_seqdense_cuda);CHKERRQ(ierr); 372bfc799aaSStefano Zampini #endif 373c1619fb6SBarry Smith 3743ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERBAS, MATSEQAIJ, MAT_FACTOR_ICC,MatGetFactor_seqaij_bas);CHKERRQ(ierr); 375c1619fb6SBarry Smith 37642c9c57cSBarry Smith /* 37742c9c57cSBarry Smith Register the external package factorization based solvers 37842c9c57cSBarry Smith Eventually we don't want to have these hardwired here at compile time of PETSc 37942c9c57cSBarry Smith */ 38042c9c57cSBarry Smith #if defined(PETSC_HAVE_MUMPS) 3813ca39a21SBarry Smith ierr = MatSolverTypeRegister_MUMPS();CHKERRQ(ierr); 38242c9c57cSBarry Smith #endif 383fd314934SBarry Smith #if defined(PETSC_HAVE_CUDA) 3843ca39a21SBarry Smith ierr = MatSolverTypeRegister_CUSPARSE();CHKERRQ(ierr); 38542c9c57cSBarry Smith #endif 38672367587SKarl Rupp #if defined(PETSC_HAVE_VIENNACL) 3873ca39a21SBarry Smith ierr = MatSolverTypeRegister_ViennaCL();CHKERRQ(ierr); 38872367587SKarl Rupp #endif 38942c9c57cSBarry Smith #if defined(PETSC_HAVE_ELEMENTAL) 3903ca39a21SBarry Smith ierr = MatSolverTypeRegister_Elemental();CHKERRQ(ierr); 39142c9c57cSBarry Smith #endif 392d24d4204SJose E. Roman #if defined(PETSC_HAVE_SCALAPACK) 393d24d4204SJose E. Roman ierr = MatSolverTypeRegister_ScaLAPACK();CHKERRQ(ierr); 394d24d4204SJose E. Roman #endif 39542c9c57cSBarry Smith #if defined(PETSC_HAVE_MATLAB_ENGINE) 3963ca39a21SBarry Smith ierr = MatSolverTypeRegister_Matlab();CHKERRQ(ierr); 39742c9c57cSBarry Smith #endif 398570b7f6dSBarry Smith #if defined(PETSC_HAVE_PETSC_HAVE_ESSL) 3993ca39a21SBarry Smith ierr = MatSolverTypeRegister_Essl();CHKERRQ(ierr); 40042c9c57cSBarry Smith #endif 40142c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU) 4023ca39a21SBarry Smith ierr = MatSolverTypeRegister_SuperLU();CHKERRQ(ierr); 40342c9c57cSBarry Smith #endif 40408f5efcfSPieter Ghysels #if defined(PETSC_HAVE_STRUMPACK) 4053ca39a21SBarry Smith ierr = MatSolverTypeRegister_STRUMPACK();CHKERRQ(ierr); 40608f5efcfSPieter Ghysels #endif 40742c9c57cSBarry Smith #if defined(PETSC_HAVE_PASTIX) 4083ca39a21SBarry Smith ierr = MatSolverTypeRegister_Pastix();CHKERRQ(ierr); 40942c9c57cSBarry Smith #endif 41042c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU_DIST) 4113ca39a21SBarry Smith ierr = MatSolverTypeRegister_SuperLU_DIST();CHKERRQ(ierr); 41242c9c57cSBarry Smith #endif 413418810c4SBarry Smith #if defined(PETSC_HAVE_ELEMENTAL) 4143ca39a21SBarry Smith ierr = MatSolverTypeRegister_SparseElemental();CHKERRQ(ierr); 41542c9c57cSBarry Smith #endif 41642c9c57cSBarry Smith #if defined(PETSC_HAVE_MKL_PARDISO) 4173ca39a21SBarry Smith ierr = MatSolverTypeRegister_MKL_Pardiso();CHKERRQ(ierr); 41842c9c57cSBarry Smith #endif 419d305a81bSVasiliy Kozyrev #if defined(PETSC_HAVE_MKL_CPARDISO) 4203ca39a21SBarry Smith ierr = MatSolverTypeRegister_MKL_CPardiso();CHKERRQ(ierr); 421d305a81bSVasiliy Kozyrev #endif 42242c9c57cSBarry Smith #if defined(PETSC_HAVE_SUITESPARSE) 4233ca39a21SBarry Smith ierr = MatSolverTypeRegister_SuiteSparse();CHKERRQ(ierr); 42442c9c57cSBarry Smith #endif 42542c9c57cSBarry Smith #if defined(PETSC_HAVE_LUSOL) 4263ca39a21SBarry Smith ierr = MatSolverTypeRegister_Lusol();CHKERRQ(ierr); 42742c9c57cSBarry Smith #endif 4288e81d068SLisandro Dalcin /* Register package finalizer */ 429b022a5c1SBarry Smith ierr = PetscRegisterFinalize(MatFinalizePackage);CHKERRQ(ierr); 4301153da11SBarry Smith PetscFunctionReturn(0); 4311153da11SBarry Smith } 4321153da11SBarry Smith 433aa2d57e9SJed Brown #if defined(PETSC_HAVE_DYNAMIC_LIBRARIES) 4341153da11SBarry Smith /* 4351153da11SBarry Smith PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened. 4361153da11SBarry Smith 4373f92711fSBarry Smith This one registers all the matrix methods that are in the basic PETSc Matrix library. 4381153da11SBarry Smith 4391153da11SBarry Smith */ 440607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscmat(void) 4411153da11SBarry Smith { 4421153da11SBarry Smith PetscErrorCode ierr; 4431153da11SBarry Smith 4441153da11SBarry Smith PetscFunctionBegin; 445607a6623SBarry Smith ierr = MatInitializePackage();CHKERRQ(ierr); 4461153da11SBarry Smith PetscFunctionReturn(0); 4471153da11SBarry Smith } 4481153da11SBarry Smith 4491153da11SBarry Smith 450aa2d57e9SJed Brown #endif /* PETSC_HAVE_DYNAMIC_LIBRARIES */ 451