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", 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}; 335e9742b9SJed Brown const char *const MatFactorShiftTypesDetail[] = {NULL,"diagonal shift to prevent zero pivot","Manteuffel shift","diagonal shift on blocks to prevent zero pivot"}; 34f4259b30SLisandro Dalcin const char *const MPPTScotchStrategyTypes[] = {"DEFAULT","QUALITY","SPEED","BALANCE","SAFETY","SCALABILITY","MPPTScotchStrategyType","MP_PTSCOTCH_",NULL}; 35f4259b30SLisandro Dalcin const char *const MPChacoGlobalTypes[] = {"","MULTILEVEL","SPECTRAL","","LINEAR","RANDOM","SCATTERED","MPChacoGlobalType","MP_CHACO_",NULL}; 36f4259b30SLisandro Dalcin const char *const MPChacoLocalTypes[] = {"","KERNIGHAN","NONE","MPChacoLocalType","MP_CHACO_",NULL}; 37f4259b30SLisandro Dalcin const char *const MPChacoEigenTypes[] = {"LANCZOS","RQI","MPChacoEigenType","MP_CHACO_",NULL}; 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 482a350339SBarry Smith .seealso: PetscFinalize(), MatInitializePackage() 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 95d24d4204SJose E. Roman #if defined(PETSC_HAVE_SCALAPACK) 96d24d4204SJose E. Roman PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_ScaLAPACK(void); 97d24d4204SJose E. Roman #endif 9842c9c57cSBarry Smith #if defined(PETSC_HAVE_MATLAB_ENGINE) 993ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_Matlab(void); 10042c9c57cSBarry Smith #endif 101570b7f6dSBarry Smith #if defined(PETSC_HAVE_PETSC_HAVE_ESSL) 1023ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_Essl(void); 10342c9c57cSBarry Smith #endif 10442c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU) 1053ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_SuperLU(void); 10642c9c57cSBarry Smith #endif 10708f5efcfSPieter Ghysels #if defined(PETSC_HAVE_STRUMPACK) 1083ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_STRUMPACK(void); 10908f5efcfSPieter Ghysels #endif 11042c9c57cSBarry Smith #if defined(PETSC_HAVE_PASTIX) 1113ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_Pastix(void); 11242c9c57cSBarry Smith #endif 11342c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU_DIST) 1143ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_SuperLU_DIST(void); 11542c9c57cSBarry Smith #endif 116418810c4SBarry Smith #if defined(PETSC_HAVE_ELEMENTAL) 1173ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_SparseElemental(void); 11842c9c57cSBarry Smith #endif 11942c9c57cSBarry Smith #if defined(PETSC_HAVE_MKL_PARDISO) 1203ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_MKL_Pardiso(void); 12142c9c57cSBarry Smith #endif 122d305a81bSVasiliy Kozyrev #if defined(PETSC_HAVE_MKL_CPARDISO) 1233ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_MKL_CPardiso(void); 124d305a81bSVasiliy Kozyrev #endif 12542c9c57cSBarry Smith #if defined(PETSC_HAVE_SUITESPARSE) 1263ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_SuiteSparse(void); 12742c9c57cSBarry Smith #endif 12842c9c57cSBarry Smith #if defined(PETSC_HAVE_LUSOL) 1293ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_Lusol(void); 13042c9c57cSBarry Smith #endif 13142c9c57cSBarry Smith 132cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqaij_petsc(Mat,MatFactorType,Mat*); 133cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqbaij_petsc(Mat,MatFactorType,Mat*); 134cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqsbaij_petsc(Mat,MatFactorType,Mat*); 135cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqdense_petsc(Mat,MatFactorType,Mat*); 136bfc799aaSStefano Zampini #if defined(PETSC_HAVE_CUDA) 137bfc799aaSStefano Zampini PETSC_INTERN PetscErrorCode MatGetFactor_seqdense_cuda(Mat,MatFactorType,Mat*); 138bfc799aaSStefano Zampini #endif 1393423f386SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_constantdiagonal_petsc(Mat,MatFactorType,Mat*); 140cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqaij_bas(Mat,MatFactorType,Mat*); 14142c9c57cSBarry Smith 1421153da11SBarry Smith /*@C 1431153da11SBarry Smith MatInitializePackage - This function initializes everything in the Mat package. It is called 1448a690491SBarry Smith from PetscDLLibraryRegister_petscmat() when using dynamic libraries, and on the first call to MatCreate() 1458a690491SBarry Smith when using shared or static libraries. 1461153da11SBarry Smith 1471153da11SBarry Smith Level: developer 1481153da11SBarry Smith 1492a350339SBarry Smith .seealso: PetscInitialize(), MatFinalizePackage() 1501153da11SBarry Smith @*/ 151607a6623SBarry Smith PetscErrorCode MatInitializePackage(void) 1521153da11SBarry Smith { 1531153da11SBarry Smith char logList[256]; 1548e81d068SLisandro Dalcin PetscBool opt,pkg; 155e94e781bSJacob Faibussowitsch 1561153da11SBarry Smith PetscErrorCode ierr; 1571153da11SBarry Smith 1581153da11SBarry Smith PetscFunctionBegin; 159b022a5c1SBarry Smith if (MatPackageInitialized) PetscFunctionReturn(0); 160b022a5c1SBarry Smith MatPackageInitialized = PETSC_TRUE; 1611755e90bSJacob Faibussowitsch /* Initialize subpackage */ 162607a6623SBarry Smith ierr = MatMFFDInitializePackage();CHKERRQ(ierr); 1631153da11SBarry Smith /* Register Classes */ 1640700a824SBarry Smith ierr = PetscClassIdRegister("Matrix",&MAT_CLASSID);CHKERRQ(ierr); 1650700a824SBarry Smith ierr = PetscClassIdRegister("Matrix FD Coloring",&MAT_FDCOLORING_CLASSID);CHKERRQ(ierr); 166335efc43SPeter Brune ierr = PetscClassIdRegister("Matrix Coloring",&MAT_COLORING_CLASSID);CHKERRQ(ierr); 167b9af6bddSHong Zhang ierr = PetscClassIdRegister("Matrix MatTranspose Coloring",&MAT_TRANSPOSECOLORING_CLASSID);CHKERRQ(ierr); 1680700a824SBarry Smith ierr = PetscClassIdRegister("Matrix Partitioning",&MAT_PARTITIONING_CLASSID);CHKERRQ(ierr); 169b43b03e9SMark F. Adams ierr = PetscClassIdRegister("Matrix Coarsen",&MAT_COARSEN_CLASSID);CHKERRQ(ierr); 1700700a824SBarry Smith ierr = PetscClassIdRegister("Matrix Null Space",&MAT_NULLSPACE_CLASSID);CHKERRQ(ierr); 1711153da11SBarry Smith /* Register Constructors */ 172607a6623SBarry Smith ierr = MatRegisterAll();CHKERRQ(ierr); 173607a6623SBarry Smith ierr = MatOrderingRegisterAll();CHKERRQ(ierr); 174607a6623SBarry Smith ierr = MatColoringRegisterAll();CHKERRQ(ierr); 175607a6623SBarry Smith ierr = MatPartitioningRegisterAll();CHKERRQ(ierr); 176607a6623SBarry Smith ierr = MatCoarsenRegisterAll();CHKERRQ(ierr); 1774099cc6bSBarry Smith ierr = MatSeqAIJRegisterAll();CHKERRQ(ierr); 1781153da11SBarry Smith /* Register Events */ 1790700a824SBarry Smith ierr = PetscLogEventRegister("MatMult", MAT_CLASSID,&MAT_Mult);CHKERRQ(ierr); 1800700a824SBarry Smith ierr = PetscLogEventRegister("MatMults", MAT_CLASSID,&MAT_Mults);CHKERRQ(ierr); 1810700a824SBarry Smith ierr = PetscLogEventRegister("MatMultConstr", MAT_CLASSID,&MAT_MultConstrained);CHKERRQ(ierr); 1820700a824SBarry Smith ierr = PetscLogEventRegister("MatMultAdd", MAT_CLASSID,&MAT_MultAdd);CHKERRQ(ierr); 1830700a824SBarry Smith ierr = PetscLogEventRegister("MatMultTranspose", MAT_CLASSID,&MAT_MultTranspose);CHKERRQ(ierr); 1840700a824SBarry Smith ierr = PetscLogEventRegister("MatMultTrConstr", MAT_CLASSID,&MAT_MultTransposeConstrained);CHKERRQ(ierr); 1850700a824SBarry Smith ierr = PetscLogEventRegister("MatMultTrAdd", MAT_CLASSID,&MAT_MultTransposeAdd);CHKERRQ(ierr); 1860700a824SBarry Smith ierr = PetscLogEventRegister("MatSolve", MAT_CLASSID,&MAT_Solve);CHKERRQ(ierr); 1870700a824SBarry Smith ierr = PetscLogEventRegister("MatSolves", MAT_CLASSID,&MAT_Solves);CHKERRQ(ierr); 1880700a824SBarry Smith ierr = PetscLogEventRegister("MatSolveAdd", MAT_CLASSID,&MAT_SolveAdd);CHKERRQ(ierr); 1890700a824SBarry Smith ierr = PetscLogEventRegister("MatSolveTranspos", MAT_CLASSID,&MAT_SolveTranspose);CHKERRQ(ierr); 1900700a824SBarry Smith ierr = PetscLogEventRegister("MatSolveTrAdd", MAT_CLASSID,&MAT_SolveTransposeAdd);CHKERRQ(ierr); 1910700a824SBarry Smith ierr = PetscLogEventRegister("MatSOR", MAT_CLASSID,&MAT_SOR);CHKERRQ(ierr); 1920700a824SBarry Smith ierr = PetscLogEventRegister("MatForwardSolve", MAT_CLASSID,&MAT_ForwardSolve);CHKERRQ(ierr); 1930700a824SBarry Smith ierr = PetscLogEventRegister("MatBackwardSolve", MAT_CLASSID,&MAT_BackwardSolve);CHKERRQ(ierr); 1940700a824SBarry Smith ierr = PetscLogEventRegister("MatLUFactor", MAT_CLASSID,&MAT_LUFactor);CHKERRQ(ierr); 1950700a824SBarry Smith ierr = PetscLogEventRegister("MatLUFactorSym", MAT_CLASSID,&MAT_LUFactorSymbolic);CHKERRQ(ierr); 1960700a824SBarry Smith ierr = PetscLogEventRegister("MatLUFactorNum", MAT_CLASSID,&MAT_LUFactorNumeric);CHKERRQ(ierr); 1970700a824SBarry Smith ierr = PetscLogEventRegister("MatCholeskyFctr", MAT_CLASSID,&MAT_CholeskyFactor);CHKERRQ(ierr); 1980700a824SBarry Smith ierr = PetscLogEventRegister("MatCholFctrSym", MAT_CLASSID,&MAT_CholeskyFactorSymbolic);CHKERRQ(ierr); 1990700a824SBarry Smith ierr = PetscLogEventRegister("MatCholFctrNum", MAT_CLASSID,&MAT_CholeskyFactorNumeric);CHKERRQ(ierr); 20007cedc40SStefano Zampini ierr = PetscLogEventRegister("MatFctrFactSchur", MAT_CLASSID,&MAT_FactorFactS);CHKERRQ(ierr); 20107cedc40SStefano Zampini ierr = PetscLogEventRegister("MatFctrInvSchur", MAT_CLASSID,&MAT_FactorInvS);CHKERRQ(ierr); 2020700a824SBarry Smith ierr = PetscLogEventRegister("MatILUFactor", MAT_CLASSID,&MAT_ILUFactor);CHKERRQ(ierr); 2030700a824SBarry Smith ierr = PetscLogEventRegister("MatILUFactorSym", MAT_CLASSID,&MAT_ILUFactorSymbolic);CHKERRQ(ierr); 2040700a824SBarry Smith ierr = PetscLogEventRegister("MatICCFactorSym", MAT_CLASSID,&MAT_ICCFactorSymbolic);CHKERRQ(ierr); 2050700a824SBarry Smith ierr = PetscLogEventRegister("MatCopy", MAT_CLASSID,&MAT_Copy);CHKERRQ(ierr); 2060700a824SBarry Smith ierr = PetscLogEventRegister("MatConvert", MAT_CLASSID,&MAT_Convert);CHKERRQ(ierr); 2070700a824SBarry Smith ierr = PetscLogEventRegister("MatScale", MAT_CLASSID,&MAT_Scale);CHKERRQ(ierr); 208f9426fe0SMark Adams ierr = PetscLogEventRegister("MatResidual", MAT_CLASSID,&MAT_Residual);CHKERRQ(ierr); 2090700a824SBarry Smith ierr = PetscLogEventRegister("MatAssemblyBegin", MAT_CLASSID,&MAT_AssemblyBegin);CHKERRQ(ierr); 2100700a824SBarry Smith ierr = PetscLogEventRegister("MatAssemblyEnd", MAT_CLASSID,&MAT_AssemblyEnd);CHKERRQ(ierr); 2110700a824SBarry Smith ierr = PetscLogEventRegister("MatSetValues", MAT_CLASSID,&MAT_SetValues);CHKERRQ(ierr); 2120700a824SBarry Smith ierr = PetscLogEventRegister("MatGetValues", MAT_CLASSID,&MAT_GetValues);CHKERRQ(ierr); 2130700a824SBarry Smith ierr = PetscLogEventRegister("MatGetRow", MAT_CLASSID,&MAT_GetRow);CHKERRQ(ierr); 2140700a824SBarry Smith ierr = PetscLogEventRegister("MatGetRowIJ", MAT_CLASSID,&MAT_GetRowIJ);CHKERRQ(ierr); 2157dae84e0SHong Zhang ierr = PetscLogEventRegister("MatCreateSubMats", MAT_CLASSID,&MAT_CreateSubMats);CHKERRQ(ierr); 2167dae84e0SHong Zhang ierr = PetscLogEventRegister("MatCreateSubMat", MAT_CLASSID,&MAT_CreateSubMat);CHKERRQ(ierr); 2170700a824SBarry Smith ierr = PetscLogEventRegister("MatGetOrdering", MAT_CLASSID,&MAT_GetOrdering);CHKERRQ(ierr); 2180700a824SBarry Smith ierr = PetscLogEventRegister("MatIncreaseOvrlp", MAT_CLASSID,&MAT_IncreaseOverlap);CHKERRQ(ierr); 2190700a824SBarry Smith ierr = PetscLogEventRegister("MatPartitioning", MAT_PARTITIONING_CLASSID,&MAT_Partitioning);CHKERRQ(ierr); 220f3ad2dabSStefano Zampini ierr = PetscLogEventRegister("MatPartitioningND",MAT_PARTITIONING_CLASSID,&MAT_PartitioningND);CHKERRQ(ierr); 221b43b03e9SMark F. Adams ierr = PetscLogEventRegister("MatCoarsen", MAT_COARSEN_CLASSID,&MAT_Coarsen);CHKERRQ(ierr); 2220700a824SBarry Smith ierr = PetscLogEventRegister("MatZeroEntries", MAT_CLASSID,&MAT_ZeroEntries);CHKERRQ(ierr); 2230700a824SBarry Smith ierr = PetscLogEventRegister("MatLoad", MAT_CLASSID,&MAT_Load);CHKERRQ(ierr); 2240700a824SBarry Smith ierr = PetscLogEventRegister("MatView", MAT_CLASSID,&MAT_View);CHKERRQ(ierr); 2250700a824SBarry Smith ierr = PetscLogEventRegister("MatAXPY", MAT_CLASSID,&MAT_AXPY);CHKERRQ(ierr); 2260700a824SBarry Smith ierr = PetscLogEventRegister("MatFDColorCreate", MAT_FDCOLORING_CLASSID,&MAT_FDColoringCreate);CHKERRQ(ierr); 2270df34763SHong Zhang ierr = PetscLogEventRegister("MatFDColorSetUp", MAT_FDCOLORING_CLASSID,&MAT_FDColoringSetUp);CHKERRQ(ierr); 2280700a824SBarry Smith ierr = PetscLogEventRegister("MatFDColorApply", MAT_FDCOLORING_CLASSID,&MAT_FDColoringApply);CHKERRQ(ierr); 2290700a824SBarry Smith ierr = PetscLogEventRegister("MatFDColorFunc", MAT_FDCOLORING_CLASSID,&MAT_FDColoringFunction);CHKERRQ(ierr); 2300700a824SBarry Smith ierr = PetscLogEventRegister("MatTranspose", MAT_CLASSID,&MAT_Transpose);CHKERRQ(ierr); 2310700a824SBarry Smith ierr = PetscLogEventRegister("MatMatSolve", MAT_CLASSID,&MAT_MatSolve);CHKERRQ(ierr); 232eb3ef3b2SHong Zhang ierr = PetscLogEventRegister("MatMatTrSolve", MAT_CLASSID,&MAT_MatTrSolve);CHKERRQ(ierr); 2330700a824SBarry Smith ierr = PetscLogEventRegister("MatMatMultSym", MAT_CLASSID,&MAT_MatMultSymbolic);CHKERRQ(ierr); 2340700a824SBarry Smith ierr = PetscLogEventRegister("MatMatMultNum", MAT_CLASSID,&MAT_MatMultNumeric);CHKERRQ(ierr); 2357bab7c10SHong Zhang ierr = PetscLogEventRegister("MatMatMatMultSym", MAT_CLASSID,&MAT_MatMatMultSymbolic);CHKERRQ(ierr); 2367bab7c10SHong Zhang ierr = PetscLogEventRegister("MatMatMatMultNum", MAT_CLASSID,&MAT_MatMatMultNumeric);CHKERRQ(ierr); 2370700a824SBarry Smith ierr = PetscLogEventRegister("MatPtAPSymbolic", MAT_CLASSID,&MAT_PtAPSymbolic);CHKERRQ(ierr); 2380700a824SBarry Smith ierr = PetscLogEventRegister("MatPtAPNumeric", MAT_CLASSID,&MAT_PtAPNumeric);CHKERRQ(ierr); 23950647e95SHong Zhang ierr = PetscLogEventRegister("MatRARtSym", MAT_CLASSID,&MAT_RARtSymbolic);CHKERRQ(ierr); 24050647e95SHong Zhang ierr = PetscLogEventRegister("MatRARtNum", MAT_CLASSID,&MAT_RARtNumeric);CHKERRQ(ierr); 2416fc122caSHong Zhang ierr = PetscLogEventRegister("MatMatTrnMultSym", MAT_CLASSID,&MAT_MatTransposeMultSymbolic);CHKERRQ(ierr); 2426fc122caSHong Zhang ierr = PetscLogEventRegister("MatMatTrnMultNum", MAT_CLASSID,&MAT_MatTransposeMultNumeric);CHKERRQ(ierr); 24375648e8dSHong Zhang ierr = PetscLogEventRegister("MatTrnMatMultSym", MAT_CLASSID,&MAT_TransposeMatMultSymbolic);CHKERRQ(ierr); 24475648e8dSHong Zhang ierr = PetscLogEventRegister("MatTrnMatMultNum", MAT_CLASSID,&MAT_TransposeMatMultNumeric);CHKERRQ(ierr); 245b9af6bddSHong Zhang ierr = PetscLogEventRegister("MatTrnColorCreate",MAT_CLASSID,&MAT_TransposeColoringCreate);CHKERRQ(ierr); 24653cd1579SHong Zhang ierr = PetscLogEventRegister("MatRedundantMat", MAT_CLASSID,&MAT_RedundantMat);CHKERRQ(ierr); 2470700a824SBarry Smith ierr = PetscLogEventRegister("MatGetSeqNZStrct", MAT_CLASSID,&MAT_GetSequentialNonzeroStructure);CHKERRQ(ierr); 248011ea8aeSBarry Smith ierr = PetscLogEventRegister("MatGetMultiProcB", MAT_CLASSID,&MAT_GetMultiProcBlock);CHKERRQ(ierr); 24900e125f8SBarry Smith ierr = PetscLogEventRegister("MatSetRandom", MAT_CLASSID,&MAT_SetRandom);CHKERRQ(ierr); 2504ebed01fSBarry Smith 2514ebed01fSBarry Smith /* these may be specific to MPIAIJ matrices */ 252a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatMPISumSeqNumeric",MAT_CLASSID,&MAT_Seqstompinum);CHKERRQ(ierr); 253a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatMPISumSeqSymbolic",MAT_CLASSID,&MAT_Seqstompisym);CHKERRQ(ierr); 254a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatMPISumSeq",MAT_CLASSID,&MAT_Seqstompi);CHKERRQ(ierr); 255a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatMPIConcateSeq",MAT_CLASSID,&MAT_Merge);CHKERRQ(ierr); 256a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatGetLocalMat",MAT_CLASSID,&MAT_Getlocalmat);CHKERRQ(ierr); 257a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatGetLocalMatCondensed",MAT_CLASSID,&MAT_Getlocalmatcondensed);CHKERRQ(ierr); 258a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatGetBrowsOfAcols",MAT_CLASSID,&MAT_GetBrowsOfAcols);CHKERRQ(ierr); 259a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatGetBrAoCol",MAT_CLASSID,&MAT_GetBrowsOfAocols);CHKERRQ(ierr); 2604ebed01fSBarry Smith 2610700a824SBarry Smith ierr = PetscLogEventRegister("MatApplyPAPt_Symbolic",MAT_CLASSID,&MAT_Applypapt_symbolic);CHKERRQ(ierr); 2620700a824SBarry Smith ierr = PetscLogEventRegister("MatApplyPAPt_Numeric",MAT_CLASSID,&MAT_Applypapt_numeric);CHKERRQ(ierr); 2630700a824SBarry Smith ierr = PetscLogEventRegister("MatApplyPAPt",MAT_CLASSID,&MAT_Applypapt);CHKERRQ(ierr); 2644ebed01fSBarry Smith 2650700a824SBarry Smith ierr = PetscLogEventRegister("MatGetSymTrans",MAT_CLASSID,&MAT_Getsymtranspose);CHKERRQ(ierr); 2660700a824SBarry Smith ierr = PetscLogEventRegister("MatGetSymTransR",MAT_CLASSID,&MAT_Getsymtransreduced);CHKERRQ(ierr); 2678693ff2aSBarry Smith ierr = PetscLogEventRegister("MatCUSPARSCopyTo",MAT_CLASSID,&MAT_CUSPARSECopyToGPU);CHKERRQ(ierr); 2687e8381f9SStefano Zampini ierr = PetscLogEventRegister("MatCUSPARSCopyFr",MAT_CLASSID,&MAT_CUSPARSECopyFromGPU);CHKERRQ(ierr); 2697e8381f9SStefano Zampini ierr = PetscLogEventRegister("MatCUSPARSPreCOO",MAT_CLASSID,&MAT_CUSPARSEPreallCOO);CHKERRQ(ierr); 2707e8381f9SStefano Zampini ierr = PetscLogEventRegister("MatCUSPARSValCOO",MAT_CLASSID,&MAT_CUSPARSESetVCOO);CHKERRQ(ierr); 271*da79fbbcSStefano Zampini ierr = PetscLogEventRegister("MatCUSPARSSolAnl",MAT_CLASSID,&MAT_CUSPARSESolveAnalysis);CHKERRQ(ierr); 27285ba7357SStefano Zampini ierr = PetscLogEventRegister("MatCUSPARSGenT",MAT_CLASSID,&MAT_CUSPARSEGenerateTranspose);CHKERRQ(ierr); 2738693ff2aSBarry Smith ierr = PetscLogEventRegister("MatVCLCopyTo", MAT_CLASSID,&MAT_ViennaCLCopyToGPU);CHKERRQ(ierr); 274bfc799aaSStefano Zampini ierr = PetscLogEventRegister("MatDenseCopyTo",MAT_CLASSID,&MAT_DenseCopyToGPU);CHKERRQ(ierr); 275bfc799aaSStefano Zampini ierr = PetscLogEventRegister("MatDenseCopyFrom",MAT_CLASSID,&MAT_DenseCopyFromGPU);CHKERRQ(ierr); 27637868618SMatthew G Knepley ierr = PetscLogEventRegister("MatSetValBatch",MAT_CLASSID,&MAT_SetValuesBatch);CHKERRQ(ierr); 2774ebed01fSBarry Smith 278367daffbSBarry Smith ierr = PetscLogEventRegister("MatColoringApply",MAT_COLORING_CLASSID,&MATCOLORING_Apply);CHKERRQ(ierr); 279367daffbSBarry Smith ierr = PetscLogEventRegister("MatColoringComm",MAT_COLORING_CLASSID,&MATCOLORING_Comm);CHKERRQ(ierr); 280367daffbSBarry Smith ierr = PetscLogEventRegister("MatColoringLocal",MAT_COLORING_CLASSID,&MATCOLORING_Local);CHKERRQ(ierr); 281367daffbSBarry Smith ierr = PetscLogEventRegister("MatColoringIS",MAT_COLORING_CLASSID,&MATCOLORING_ISCreate);CHKERRQ(ierr); 282367daffbSBarry Smith ierr = PetscLogEventRegister("MatColoringSetUp",MAT_COLORING_CLASSID,&MATCOLORING_SetUp);CHKERRQ(ierr); 283367daffbSBarry Smith ierr = PetscLogEventRegister("MatColoringWeights",MAT_COLORING_CLASSID,&MATCOLORING_Weights);CHKERRQ(ierr); 2844f68377dSPeter Brune 285217044c2SLisandro Dalcin /* Mark non-collective events */ 286217044c2SLisandro Dalcin ierr = PetscLogEventSetCollective(MAT_SetValues, PETSC_FALSE);CHKERRQ(ierr); 287217044c2SLisandro Dalcin ierr = PetscLogEventSetCollective(MAT_SetValuesBatch, PETSC_FALSE);CHKERRQ(ierr); 288217044c2SLisandro Dalcin ierr = PetscLogEventSetCollective(MAT_GetRow, PETSC_FALSE);CHKERRQ(ierr); 2891153da11SBarry Smith /* Turn off high traffic events by default */ 2901153da11SBarry Smith ierr = PetscLogEventSetActiveAll(MAT_SetValues, PETSC_FALSE);CHKERRQ(ierr); 291217044c2SLisandro Dalcin ierr = PetscLogEventSetActiveAll(MAT_GetValues, PETSC_FALSE);CHKERRQ(ierr); 292217044c2SLisandro Dalcin ierr = PetscLogEventSetActiveAll(MAT_GetRow, PETSC_FALSE);CHKERRQ(ierr); 293e94e781bSJacob Faibussowitsch /* Process Info */ 294e94e781bSJacob Faibussowitsch { 295e94e781bSJacob Faibussowitsch PetscClassId classids[7]; 296217044c2SLisandro Dalcin 297e94e781bSJacob Faibussowitsch classids[0] = MAT_CLASSID; 298e94e781bSJacob Faibussowitsch classids[1] = MAT_FDCOLORING_CLASSID; 299e94e781bSJacob Faibussowitsch classids[2] = MAT_COLORING_CLASSID; 300e94e781bSJacob Faibussowitsch classids[3] = MAT_TRANSPOSECOLORING_CLASSID; 301e94e781bSJacob Faibussowitsch classids[4] = MAT_PARTITIONING_CLASSID; 302e94e781bSJacob Faibussowitsch classids[5] = MAT_COARSEN_CLASSID; 303e94e781bSJacob Faibussowitsch classids[6] = MAT_NULLSPACE_CLASSID; 304e94e781bSJacob Faibussowitsch ierr = PetscInfoProcessClass("mat", 7, classids);CHKERRQ(ierr); 3051153da11SBarry Smith } 306217044c2SLisandro Dalcin 3071153da11SBarry Smith /* Process summary exclusions */ 3088e81d068SLisandro Dalcin ierr = PetscOptionsGetString(NULL,NULL,"-log_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr); 3091153da11SBarry Smith if (opt) { 3108e81d068SLisandro Dalcin ierr = PetscStrInList("mat",logList,',',&pkg);CHKERRQ(ierr); 311fa2bb9feSLisandro Dalcin if (pkg) {ierr = PetscLogEventExcludeClass(MAT_CLASSID);CHKERRQ(ierr);} 312fa2bb9feSLisandro Dalcin if (pkg) {ierr = PetscLogEventExcludeClass(MAT_FDCOLORING_CLASSID);CHKERRQ(ierr);} 313fa2bb9feSLisandro Dalcin if (pkg) {ierr = PetscLogEventExcludeClass(MAT_COLORING_CLASSID);CHKERRQ(ierr);} 314fa2bb9feSLisandro Dalcin if (pkg) {ierr = PetscLogEventExcludeClass(MAT_TRANSPOSECOLORING_CLASSID);CHKERRQ(ierr);} 315fa2bb9feSLisandro Dalcin if (pkg) {ierr = PetscLogEventExcludeClass(MAT_PARTITIONING_CLASSID);CHKERRQ(ierr);} 316fa2bb9feSLisandro Dalcin if (pkg) {ierr = PetscLogEventExcludeClass(MAT_COARSEN_CLASSID);CHKERRQ(ierr);} 317fa2bb9feSLisandro Dalcin if (pkg) {ierr = PetscLogEventExcludeClass(MAT_NULLSPACE_CLASSID);CHKERRQ(ierr);} 3181153da11SBarry Smith } 31942c9c57cSBarry Smith 320c1619fb6SBarry Smith /* Register the PETSc built in factorization based solvers */ 3213ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJ, MAT_FACTOR_LU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3223ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJ, MAT_FACTOR_CHOLESKY,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3233ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJ, MAT_FACTOR_ILU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3243ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJ, MAT_FACTOR_ICC,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 325c1619fb6SBarry Smith 3263ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJPERM, MAT_FACTOR_LU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3273ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJPERM, MAT_FACTOR_CHOLESKY,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3283ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJPERM, MAT_FACTOR_ILU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3293ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJPERM, MAT_FACTOR_ICC,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 330c1619fb6SBarry Smith 3313423f386SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATCONSTANTDIAGONAL,MAT_FACTOR_LU,MatGetFactor_constantdiagonal_petsc);CHKERRQ(ierr); 3323423f386SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATCONSTANTDIAGONAL,MAT_FACTOR_CHOLESKY,MatGetFactor_constantdiagonal_petsc);CHKERRQ(ierr); 3333423f386SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATCONSTANTDIAGONAL,MAT_FACTOR_ILU,MatGetFactor_constantdiagonal_petsc);CHKERRQ(ierr); 3343423f386SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATCONSTANTDIAGONAL,MAT_FACTOR_ICC,MatGetFactor_constantdiagonal_petsc);CHKERRQ(ierr); 3353423f386SBarry Smith 3369779e05dSSatish Balay #if defined(PETSC_HAVE_MKL_SPARSE) 3373ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJMKL, MAT_FACTOR_LU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3383ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJMKL, MAT_FACTOR_CHOLESKY,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3393ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJMKL, MAT_FACTOR_ILU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3403ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJMKL, MAT_FACTOR_ICC,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 341b5b72c8aSIrina Sokolova 3423ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJMKL, MAT_FACTOR_LU,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 3433ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJMKL, MAT_FACTOR_CHOLESKY,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 3443ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJMKL, MAT_FACTOR_ILU,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 3453ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJMKL, MAT_FACTOR_ICC,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 346191b95cbSRichard Tran Mills #endif 3472251f9d6SRichard Tran Mills /* Above, we register the PETSc built-in factorization solvers for MATSEQAIJMKL. In the future, we may want to use 3482251f9d6SRichard Tran Mills * some of the MKL-provided ones instead. */ 3492251f9d6SRichard Tran Mills 3503ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJCRL, MAT_FACTOR_LU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3513ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJCRL, MAT_FACTOR_CHOLESKY,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3523ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJCRL, MAT_FACTOR_ILU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3533ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJCRL, MAT_FACTOR_ICC,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 354c1619fb6SBarry Smith 3553ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJ, MAT_FACTOR_LU,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 3563ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJ, MAT_FACTOR_CHOLESKY,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 3573ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJ, MAT_FACTOR_ILU,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 3583ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJ, MAT_FACTOR_ICC,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 359c1619fb6SBarry Smith 3603ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQSBAIJ, MAT_FACTOR_CHOLESKY,MatGetFactor_seqsbaij_petsc);CHKERRQ(ierr); 3613ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQSBAIJ, MAT_FACTOR_ICC,MatGetFactor_seqsbaij_petsc);CHKERRQ(ierr); 362c1619fb6SBarry Smith 3633ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQDENSE, MAT_FACTOR_LU,MatGetFactor_seqdense_petsc);CHKERRQ(ierr); 3642a350339SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQDENSE, MAT_FACTOR_ILU,MatGetFactor_seqdense_petsc);CHKERRQ(ierr); 3653ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQDENSE, MAT_FACTOR_CHOLESKY,MatGetFactor_seqdense_petsc);CHKERRQ(ierr); 366bfc799aaSStefano Zampini #if defined(PETSC_HAVE_CUDA) 367bfc799aaSStefano Zampini ierr = MatSolverTypeRegister(MATSOLVERCUDA, MATSEQDENSE, MAT_FACTOR_LU,MatGetFactor_seqdense_cuda);CHKERRQ(ierr); 368bfc799aaSStefano Zampini ierr = MatSolverTypeRegister(MATSOLVERCUDA, MATSEQDENSE, MAT_FACTOR_CHOLESKY,MatGetFactor_seqdense_cuda);CHKERRQ(ierr); 369bfc799aaSStefano Zampini ierr = MatSolverTypeRegister(MATSOLVERCUDA, MATSEQDENSECUDA, MAT_FACTOR_LU,MatGetFactor_seqdense_cuda);CHKERRQ(ierr); 370bfc799aaSStefano Zampini ierr = MatSolverTypeRegister(MATSOLVERCUDA, MATSEQDENSECUDA, MAT_FACTOR_CHOLESKY,MatGetFactor_seqdense_cuda);CHKERRQ(ierr); 371bfc799aaSStefano Zampini #endif 372c1619fb6SBarry Smith 3733ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERBAS, MATSEQAIJ, MAT_FACTOR_ICC,MatGetFactor_seqaij_bas);CHKERRQ(ierr); 374c1619fb6SBarry Smith 37542c9c57cSBarry Smith /* 37642c9c57cSBarry Smith Register the external package factorization based solvers 37742c9c57cSBarry Smith Eventually we don't want to have these hardwired here at compile time of PETSc 37842c9c57cSBarry Smith */ 37942c9c57cSBarry Smith #if defined(PETSC_HAVE_MUMPS) 3803ca39a21SBarry Smith ierr = MatSolverTypeRegister_MUMPS();CHKERRQ(ierr); 38142c9c57cSBarry Smith #endif 382fd314934SBarry Smith #if defined(PETSC_HAVE_CUDA) 3833ca39a21SBarry Smith ierr = MatSolverTypeRegister_CUSPARSE();CHKERRQ(ierr); 38442c9c57cSBarry Smith #endif 38572367587SKarl Rupp #if defined(PETSC_HAVE_VIENNACL) 3863ca39a21SBarry Smith ierr = MatSolverTypeRegister_ViennaCL();CHKERRQ(ierr); 38772367587SKarl Rupp #endif 38842c9c57cSBarry Smith #if defined(PETSC_HAVE_ELEMENTAL) 3893ca39a21SBarry Smith ierr = MatSolverTypeRegister_Elemental();CHKERRQ(ierr); 39042c9c57cSBarry Smith #endif 391d24d4204SJose E. Roman #if defined(PETSC_HAVE_SCALAPACK) 392d24d4204SJose E. Roman ierr = MatSolverTypeRegister_ScaLAPACK();CHKERRQ(ierr); 393d24d4204SJose E. Roman #endif 39442c9c57cSBarry Smith #if defined(PETSC_HAVE_MATLAB_ENGINE) 3953ca39a21SBarry Smith ierr = MatSolverTypeRegister_Matlab();CHKERRQ(ierr); 39642c9c57cSBarry Smith #endif 397570b7f6dSBarry Smith #if defined(PETSC_HAVE_PETSC_HAVE_ESSL) 3983ca39a21SBarry Smith ierr = MatSolverTypeRegister_Essl();CHKERRQ(ierr); 39942c9c57cSBarry Smith #endif 40042c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU) 4013ca39a21SBarry Smith ierr = MatSolverTypeRegister_SuperLU();CHKERRQ(ierr); 40242c9c57cSBarry Smith #endif 40308f5efcfSPieter Ghysels #if defined(PETSC_HAVE_STRUMPACK) 4043ca39a21SBarry Smith ierr = MatSolverTypeRegister_STRUMPACK();CHKERRQ(ierr); 40508f5efcfSPieter Ghysels #endif 40642c9c57cSBarry Smith #if defined(PETSC_HAVE_PASTIX) 4073ca39a21SBarry Smith ierr = MatSolverTypeRegister_Pastix();CHKERRQ(ierr); 40842c9c57cSBarry Smith #endif 40942c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU_DIST) 4103ca39a21SBarry Smith ierr = MatSolverTypeRegister_SuperLU_DIST();CHKERRQ(ierr); 41142c9c57cSBarry Smith #endif 412418810c4SBarry Smith #if defined(PETSC_HAVE_ELEMENTAL) 4133ca39a21SBarry Smith ierr = MatSolverTypeRegister_SparseElemental();CHKERRQ(ierr); 41442c9c57cSBarry Smith #endif 41542c9c57cSBarry Smith #if defined(PETSC_HAVE_MKL_PARDISO) 4163ca39a21SBarry Smith ierr = MatSolverTypeRegister_MKL_Pardiso();CHKERRQ(ierr); 41742c9c57cSBarry Smith #endif 418d305a81bSVasiliy Kozyrev #if defined(PETSC_HAVE_MKL_CPARDISO) 4193ca39a21SBarry Smith ierr = MatSolverTypeRegister_MKL_CPardiso();CHKERRQ(ierr); 420d305a81bSVasiliy Kozyrev #endif 42142c9c57cSBarry Smith #if defined(PETSC_HAVE_SUITESPARSE) 4223ca39a21SBarry Smith ierr = MatSolverTypeRegister_SuiteSparse();CHKERRQ(ierr); 42342c9c57cSBarry Smith #endif 42442c9c57cSBarry Smith #if defined(PETSC_HAVE_LUSOL) 4253ca39a21SBarry Smith ierr = MatSolverTypeRegister_Lusol();CHKERRQ(ierr); 42642c9c57cSBarry Smith #endif 4278e81d068SLisandro Dalcin /* Register package finalizer */ 428b022a5c1SBarry Smith ierr = PetscRegisterFinalize(MatFinalizePackage);CHKERRQ(ierr); 4291153da11SBarry Smith PetscFunctionReturn(0); 4301153da11SBarry Smith } 4311153da11SBarry Smith 432aa2d57e9SJed Brown #if defined(PETSC_HAVE_DYNAMIC_LIBRARIES) 4331153da11SBarry Smith /* 4341153da11SBarry Smith PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened. 4351153da11SBarry Smith 4363f92711fSBarry Smith This one registers all the matrix methods that are in the basic PETSc Matrix library. 4371153da11SBarry Smith 4381153da11SBarry Smith */ 439607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscmat(void) 4401153da11SBarry Smith { 4411153da11SBarry Smith PetscErrorCode ierr; 4421153da11SBarry Smith 4431153da11SBarry Smith PetscFunctionBegin; 444607a6623SBarry Smith ierr = MatInitializePackage();CHKERRQ(ierr); 4451153da11SBarry Smith PetscFunctionReturn(0); 4461153da11SBarry Smith } 4471153da11SBarry Smith 4481153da11SBarry Smith 449aa2d57e9SJed Brown #endif /* PETSC_HAVE_DYNAMIC_LIBRARIES */ 450