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