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 82*72367587SKarl Rupp #if defined(PETSC_HAVE_CUSP) 83*72367587SKarl Rupp PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_CUSP(void); 84*72367587SKarl Rupp #endif 85c41cb2e2SAlejandro Lamas Daviña #if defined(PETSC_HAVE_VECCUDA) 8642c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_CUSPARSE(void); 8742c9c57cSBarry Smith #endif 88*72367587SKarl Rupp #if defined(PETSC_HAVE_VIENNACL) 89*72367587SKarl Rupp PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_ViennaCL(void); 90*72367587SKarl Rupp #endif 9142c9c57cSBarry Smith #if defined(PETSC_HAVE_ELEMENTAL) 9242c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_Elemental(void); 9342c9c57cSBarry Smith #endif 9442c9c57cSBarry Smith #if defined(PETSC_HAVE_MATLAB_ENGINE) 9542c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_Matlab(void); 9642c9c57cSBarry Smith #endif 9742c9c57cSBarry Smith #if defined(PETSC_HAVE_PETSC_HAVE_ESSL) && !defined(PETSC_USE_COMPLEX) && !defined(PETSC_USE_REAL_SINGLE) && !defined(PETSC_USE_REAL___FLOAT128) 9842c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_Essl(void); 9942c9c57cSBarry Smith #endif 10042c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU) 10142c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_SuperLU(void); 10242c9c57cSBarry Smith #endif 10308f5efcfSPieter Ghysels #if defined(PETSC_HAVE_STRUMPACK) 10408f5efcfSPieter Ghysels PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_STRUMPACK(void); 10508f5efcfSPieter Ghysels #endif 10642c9c57cSBarry Smith #if defined(PETSC_HAVE_PASTIX) 10742c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_Pastix(void); 10842c9c57cSBarry Smith #endif 10942c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU_DIST) 11042c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_SuperLU_DIST(void); 11142c9c57cSBarry Smith #endif 11242c9c57cSBarry Smith #if defined(PETSC_HAVE_CLIQUE) 11342c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_Clique(void); 11442c9c57cSBarry Smith #endif 11542c9c57cSBarry Smith #if defined(PETSC_HAVE_MKL_PARDISO) 11642c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_MKL_Pardiso(void); 11742c9c57cSBarry Smith #endif 118d305a81bSVasiliy Kozyrev #if defined(PETSC_HAVE_MKL_CPARDISO) 119d305a81bSVasiliy Kozyrev PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_MKL_CPardiso(void); 120d305a81bSVasiliy Kozyrev #endif 12142c9c57cSBarry Smith #if defined(PETSC_HAVE_SUITESPARSE) 12242c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_SuiteSparse(void); 12342c9c57cSBarry Smith #endif 12442c9c57cSBarry Smith #if defined(PETSC_HAVE_LUSOL) 12542c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_Lusol(void); 12642c9c57cSBarry Smith #endif 12742c9c57cSBarry Smith 128cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqaij_petsc(Mat,MatFactorType,Mat*); 129cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqbaij_petsc(Mat,MatFactorType,Mat*); 130cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqsbaij_petsc(Mat,MatFactorType,Mat*); 131cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqdense_petsc(Mat,MatFactorType,Mat*); 132cc2e6a90SBarry Smith PETSC_INTERN PetscErrorCode MatGetFactor_seqaij_bas(Mat,MatFactorType,Mat*); 13342c9c57cSBarry Smith 1341153da11SBarry Smith #undef __FUNCT__ 1351153da11SBarry Smith #define __FUNCT__ "MatInitializePackage" 1361153da11SBarry Smith /*@C 1371153da11SBarry Smith MatInitializePackage - This function initializes everything in the Mat package. It is called 1381153da11SBarry Smith from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to MatCreate() 1391153da11SBarry Smith when using static libraries. 1401153da11SBarry Smith 1411153da11SBarry Smith Level: developer 1421153da11SBarry Smith 1431153da11SBarry Smith .keywords: Mat, initialize, package 1441153da11SBarry Smith .seealso: PetscInitialize() 1451153da11SBarry Smith @*/ 146607a6623SBarry Smith PetscErrorCode MatInitializePackage(void) 1471153da11SBarry Smith { 1481153da11SBarry Smith char logList[256]; 1491153da11SBarry Smith char *className; 150ace3abfcSBarry Smith PetscBool opt; 1511153da11SBarry Smith PetscErrorCode ierr; 1521153da11SBarry Smith 1531153da11SBarry Smith PetscFunctionBegin; 154b022a5c1SBarry Smith if (MatPackageInitialized) PetscFunctionReturn(0); 155b022a5c1SBarry Smith MatPackageInitialized = PETSC_TRUE; 156cce0b1b2SLisandro Dalcin /* Inialize subpackage */ 157607a6623SBarry Smith ierr = MatMFFDInitializePackage();CHKERRQ(ierr); 1581153da11SBarry Smith /* Register Classes */ 1590700a824SBarry Smith ierr = PetscClassIdRegister("Matrix",&MAT_CLASSID);CHKERRQ(ierr); 1600700a824SBarry Smith ierr = PetscClassIdRegister("Matrix FD Coloring",&MAT_FDCOLORING_CLASSID);CHKERRQ(ierr); 161335efc43SPeter Brune ierr = PetscClassIdRegister("Matrix Coloring",&MAT_COLORING_CLASSID);CHKERRQ(ierr); 162b9af6bddSHong Zhang ierr = PetscClassIdRegister("Matrix MatTranspose Coloring",&MAT_TRANSPOSECOLORING_CLASSID);CHKERRQ(ierr); 1630700a824SBarry Smith ierr = PetscClassIdRegister("Matrix Partitioning",&MAT_PARTITIONING_CLASSID);CHKERRQ(ierr); 164b43b03e9SMark F. Adams ierr = PetscClassIdRegister("Matrix Coarsen",&MAT_COARSEN_CLASSID);CHKERRQ(ierr); 1650700a824SBarry Smith ierr = PetscClassIdRegister("Matrix Null Space",&MAT_NULLSPACE_CLASSID);CHKERRQ(ierr); 1661153da11SBarry Smith /* Register Constructors */ 167607a6623SBarry Smith ierr = MatRegisterAll();CHKERRQ(ierr); 168607a6623SBarry Smith ierr = MatOrderingRegisterAll();CHKERRQ(ierr); 169607a6623SBarry Smith ierr = MatColoringRegisterAll();CHKERRQ(ierr); 170607a6623SBarry Smith ierr = MatPartitioningRegisterAll();CHKERRQ(ierr); 171607a6623SBarry Smith ierr = MatCoarsenRegisterAll();CHKERRQ(ierr); 1721153da11SBarry Smith /* Register Events */ 1730700a824SBarry Smith ierr = PetscLogEventRegister("MatMult", MAT_CLASSID,&MAT_Mult);CHKERRQ(ierr); 1740700a824SBarry Smith ierr = PetscLogEventRegister("MatMults", MAT_CLASSID,&MAT_Mults);CHKERRQ(ierr); 1750700a824SBarry Smith ierr = PetscLogEventRegister("MatMultConstr", MAT_CLASSID,&MAT_MultConstrained);CHKERRQ(ierr); 1760700a824SBarry Smith ierr = PetscLogEventRegister("MatMultAdd", MAT_CLASSID,&MAT_MultAdd);CHKERRQ(ierr); 1770700a824SBarry Smith ierr = PetscLogEventRegister("MatMultTranspose", MAT_CLASSID,&MAT_MultTranspose);CHKERRQ(ierr); 1780700a824SBarry Smith ierr = PetscLogEventRegister("MatMultTrConstr", MAT_CLASSID,&MAT_MultTransposeConstrained);CHKERRQ(ierr); 1790700a824SBarry Smith ierr = PetscLogEventRegister("MatMultTrAdd", MAT_CLASSID,&MAT_MultTransposeAdd);CHKERRQ(ierr); 1800700a824SBarry Smith ierr = PetscLogEventRegister("MatSolve", MAT_CLASSID,&MAT_Solve);CHKERRQ(ierr); 1810700a824SBarry Smith ierr = PetscLogEventRegister("MatSolves", MAT_CLASSID,&MAT_Solves);CHKERRQ(ierr); 1820700a824SBarry Smith ierr = PetscLogEventRegister("MatSolveAdd", MAT_CLASSID,&MAT_SolveAdd);CHKERRQ(ierr); 1830700a824SBarry Smith ierr = PetscLogEventRegister("MatSolveTranspos", MAT_CLASSID,&MAT_SolveTranspose);CHKERRQ(ierr); 1840700a824SBarry Smith ierr = PetscLogEventRegister("MatSolveTrAdd", MAT_CLASSID,&MAT_SolveTransposeAdd);CHKERRQ(ierr); 1850700a824SBarry Smith ierr = PetscLogEventRegister("MatSOR", MAT_CLASSID,&MAT_SOR);CHKERRQ(ierr); 1860700a824SBarry Smith ierr = PetscLogEventRegister("MatForwardSolve", MAT_CLASSID,&MAT_ForwardSolve);CHKERRQ(ierr); 1870700a824SBarry Smith ierr = PetscLogEventRegister("MatBackwardSolve", MAT_CLASSID,&MAT_BackwardSolve);CHKERRQ(ierr); 1880700a824SBarry Smith ierr = PetscLogEventRegister("MatLUFactor", MAT_CLASSID,&MAT_LUFactor);CHKERRQ(ierr); 1890700a824SBarry Smith ierr = PetscLogEventRegister("MatLUFactorSym", MAT_CLASSID,&MAT_LUFactorSymbolic);CHKERRQ(ierr); 1900700a824SBarry Smith ierr = PetscLogEventRegister("MatLUFactorNum", MAT_CLASSID,&MAT_LUFactorNumeric);CHKERRQ(ierr); 1910700a824SBarry Smith ierr = PetscLogEventRegister("MatCholeskyFctr", MAT_CLASSID,&MAT_CholeskyFactor);CHKERRQ(ierr); 1920700a824SBarry Smith ierr = PetscLogEventRegister("MatCholFctrSym", MAT_CLASSID,&MAT_CholeskyFactorSymbolic);CHKERRQ(ierr); 1930700a824SBarry Smith ierr = PetscLogEventRegister("MatCholFctrNum", MAT_CLASSID,&MAT_CholeskyFactorNumeric);CHKERRQ(ierr); 1940700a824SBarry Smith ierr = PetscLogEventRegister("MatILUFactor", MAT_CLASSID,&MAT_ILUFactor);CHKERRQ(ierr); 1950700a824SBarry Smith ierr = PetscLogEventRegister("MatILUFactorSym", MAT_CLASSID,&MAT_ILUFactorSymbolic);CHKERRQ(ierr); 1960700a824SBarry Smith ierr = PetscLogEventRegister("MatICCFactorSym", MAT_CLASSID,&MAT_ICCFactorSymbolic);CHKERRQ(ierr); 1970700a824SBarry Smith ierr = PetscLogEventRegister("MatCopy", MAT_CLASSID,&MAT_Copy);CHKERRQ(ierr); 1980700a824SBarry Smith ierr = PetscLogEventRegister("MatConvert", MAT_CLASSID,&MAT_Convert);CHKERRQ(ierr); 1990700a824SBarry Smith ierr = PetscLogEventRegister("MatScale", MAT_CLASSID,&MAT_Scale);CHKERRQ(ierr); 200f9426fe0SMark Adams ierr = PetscLogEventRegister("MatResidual", MAT_CLASSID,&MAT_Residual);CHKERRQ(ierr); 2010700a824SBarry Smith ierr = PetscLogEventRegister("MatAssemblyBegin", MAT_CLASSID,&MAT_AssemblyBegin);CHKERRQ(ierr); 2020700a824SBarry Smith ierr = PetscLogEventRegister("MatAssemblyEnd", MAT_CLASSID,&MAT_AssemblyEnd);CHKERRQ(ierr); 2030700a824SBarry Smith ierr = PetscLogEventRegister("MatSetValues", MAT_CLASSID,&MAT_SetValues);CHKERRQ(ierr); 2040700a824SBarry Smith ierr = PetscLogEventRegister("MatGetValues", MAT_CLASSID,&MAT_GetValues);CHKERRQ(ierr); 2050700a824SBarry Smith ierr = PetscLogEventRegister("MatGetRow", MAT_CLASSID,&MAT_GetRow);CHKERRQ(ierr); 2060700a824SBarry Smith ierr = PetscLogEventRegister("MatGetRowIJ", MAT_CLASSID,&MAT_GetRowIJ);CHKERRQ(ierr); 2070700a824SBarry Smith ierr = PetscLogEventRegister("MatGetSubMatrice", MAT_CLASSID,&MAT_GetSubMatrices);CHKERRQ(ierr); 208e52d2c62SBarry Smith ierr = PetscLogEventRegister("MatGetSubMatrix", MAT_CLASSID,&MAT_GetSubMatrix);CHKERRQ(ierr); 2090700a824SBarry Smith ierr = PetscLogEventRegister("MatGetOrdering", MAT_CLASSID,&MAT_GetOrdering);CHKERRQ(ierr); 2100700a824SBarry Smith ierr = PetscLogEventRegister("MatIncreaseOvrlp", MAT_CLASSID,&MAT_IncreaseOverlap);CHKERRQ(ierr); 2110700a824SBarry Smith ierr = PetscLogEventRegister("MatPartitioning", MAT_PARTITIONING_CLASSID,&MAT_Partitioning);CHKERRQ(ierr); 212b43b03e9SMark F. Adams ierr = PetscLogEventRegister("MatCoarsen", MAT_COARSEN_CLASSID,&MAT_Coarsen);CHKERRQ(ierr); 2130700a824SBarry Smith ierr = PetscLogEventRegister("MatZeroEntries", MAT_CLASSID,&MAT_ZeroEntries);CHKERRQ(ierr); 2140700a824SBarry Smith ierr = PetscLogEventRegister("MatLoad", MAT_CLASSID,&MAT_Load);CHKERRQ(ierr); 2150700a824SBarry Smith ierr = PetscLogEventRegister("MatView", MAT_CLASSID,&MAT_View);CHKERRQ(ierr); 2160700a824SBarry Smith ierr = PetscLogEventRegister("MatAXPY", MAT_CLASSID,&MAT_AXPY);CHKERRQ(ierr); 2170700a824SBarry Smith ierr = PetscLogEventRegister("MatFDColorCreate", MAT_FDCOLORING_CLASSID,&MAT_FDColoringCreate);CHKERRQ(ierr); 2180df34763SHong Zhang ierr = PetscLogEventRegister("MatFDColorSetUp", MAT_FDCOLORING_CLASSID,&MAT_FDColoringSetUp);CHKERRQ(ierr); 2190700a824SBarry Smith ierr = PetscLogEventRegister("MatFDColorApply", MAT_FDCOLORING_CLASSID,&MAT_FDColoringApply);CHKERRQ(ierr); 2200700a824SBarry Smith ierr = PetscLogEventRegister("MatFDColorFunc", MAT_FDCOLORING_CLASSID,&MAT_FDColoringFunction);CHKERRQ(ierr); 2210700a824SBarry Smith ierr = PetscLogEventRegister("MatTranspose", MAT_CLASSID,&MAT_Transpose);CHKERRQ(ierr); 2220700a824SBarry Smith ierr = PetscLogEventRegister("MatMatMult", MAT_CLASSID,&MAT_MatMult);CHKERRQ(ierr); 2230700a824SBarry Smith ierr = PetscLogEventRegister("MatMatSolve", MAT_CLASSID,&MAT_MatSolve);CHKERRQ(ierr); 2240700a824SBarry Smith ierr = PetscLogEventRegister("MatMatMultSym", MAT_CLASSID,&MAT_MatMultSymbolic);CHKERRQ(ierr); 2250700a824SBarry Smith ierr = PetscLogEventRegister("MatMatMultNum", MAT_CLASSID,&MAT_MatMultNumeric);CHKERRQ(ierr); 2267bab7c10SHong Zhang ierr = PetscLogEventRegister("MatMatMatMult", MAT_CLASSID,&MAT_MatMatMult);CHKERRQ(ierr); 2277bab7c10SHong Zhang ierr = PetscLogEventRegister("MatMatMatMultSym", MAT_CLASSID,&MAT_MatMatMultSymbolic);CHKERRQ(ierr); 2287bab7c10SHong Zhang ierr = PetscLogEventRegister("MatMatMatMultNum", MAT_CLASSID,&MAT_MatMatMultNumeric);CHKERRQ(ierr); 2290700a824SBarry Smith ierr = PetscLogEventRegister("MatPtAP", MAT_CLASSID,&MAT_PtAP);CHKERRQ(ierr); 2300700a824SBarry Smith ierr = PetscLogEventRegister("MatPtAPSymbolic", MAT_CLASSID,&MAT_PtAPSymbolic);CHKERRQ(ierr); 2310700a824SBarry Smith ierr = PetscLogEventRegister("MatPtAPNumeric", MAT_CLASSID,&MAT_PtAPNumeric);CHKERRQ(ierr); 232286f30e3SHong Zhang ierr = PetscLogEventRegister("MatRARt", MAT_CLASSID,&MAT_RARt);CHKERRQ(ierr); 23350647e95SHong Zhang ierr = PetscLogEventRegister("MatRARtSym", MAT_CLASSID,&MAT_RARtSymbolic);CHKERRQ(ierr); 23450647e95SHong Zhang ierr = PetscLogEventRegister("MatRARtNum", MAT_CLASSID,&MAT_RARtNumeric);CHKERRQ(ierr); 2356fc122caSHong Zhang ierr = PetscLogEventRegister("MatMatTransMult", MAT_CLASSID,&MAT_MatTransposeMult);CHKERRQ(ierr); 2366fc122caSHong Zhang ierr = PetscLogEventRegister("MatMatTrnMultSym", MAT_CLASSID,&MAT_MatTransposeMultSymbolic);CHKERRQ(ierr); 2376fc122caSHong Zhang ierr = PetscLogEventRegister("MatMatTrnMultNum", MAT_CLASSID,&MAT_MatTransposeMultNumeric);CHKERRQ(ierr); 23875648e8dSHong Zhang ierr = PetscLogEventRegister("MatTrnMatMult", MAT_CLASSID,&MAT_TransposeMatMult);CHKERRQ(ierr); 23975648e8dSHong Zhang ierr = PetscLogEventRegister("MatTrnMatMultSym", MAT_CLASSID,&MAT_TransposeMatMultSymbolic);CHKERRQ(ierr); 24075648e8dSHong Zhang ierr = PetscLogEventRegister("MatTrnMatMultNum", MAT_CLASSID,&MAT_TransposeMatMultNumeric);CHKERRQ(ierr); 241b9af6bddSHong Zhang ierr = PetscLogEventRegister("MatTrnColorCreate", MAT_CLASSID,&MAT_TransposeColoringCreate);CHKERRQ(ierr); 24253cd1579SHong Zhang ierr = PetscLogEventRegister("MatRedundantMat", MAT_CLASSID,&MAT_RedundantMat);CHKERRQ(ierr); 2430700a824SBarry Smith ierr = PetscLogEventRegister("MatGetSeqNZStrct", MAT_CLASSID,&MAT_GetSequentialNonzeroStructure);CHKERRQ(ierr); 24482d44351SHong Zhang ierr = PetscLogEventRegister("MatGetMultiProcBlock", MAT_CLASSID,&MAT_GetMultiProcBlock);CHKERRQ(ierr); 24500e125f8SBarry Smith ierr = PetscLogEventRegister("MatSetRandom", MAT_CLASSID,&MAT_SetRandom);CHKERRQ(ierr); 2464ebed01fSBarry Smith 2474ebed01fSBarry Smith /* these may be specific to MPIAIJ matrices */ 248a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatMPISumSeqNumeric",MAT_CLASSID,&MAT_Seqstompinum);CHKERRQ(ierr); 249a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatMPISumSeqSymbolic",MAT_CLASSID,&MAT_Seqstompisym);CHKERRQ(ierr); 250a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatMPISumSeq",MAT_CLASSID,&MAT_Seqstompi);CHKERRQ(ierr); 251a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatMPIConcateSeq",MAT_CLASSID,&MAT_Merge);CHKERRQ(ierr); 252a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatGetLocalMat",MAT_CLASSID,&MAT_Getlocalmat);CHKERRQ(ierr); 253a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatGetLocalMatCondensed",MAT_CLASSID,&MAT_Getlocalmatcondensed);CHKERRQ(ierr); 254a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatGetBrowsOfAcols",MAT_CLASSID,&MAT_GetBrowsOfAcols);CHKERRQ(ierr); 255a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatGetBrAoCol",MAT_CLASSID,&MAT_GetBrowsOfAocols);CHKERRQ(ierr); 2564ebed01fSBarry Smith 2570700a824SBarry Smith ierr = PetscLogEventRegister("MatApplyPAPt_Symbolic",MAT_CLASSID,&MAT_Applypapt_symbolic);CHKERRQ(ierr); 2580700a824SBarry Smith ierr = PetscLogEventRegister("MatApplyPAPt_Numeric",MAT_CLASSID,&MAT_Applypapt_numeric);CHKERRQ(ierr); 2590700a824SBarry Smith ierr = PetscLogEventRegister("MatApplyPAPt",MAT_CLASSID,&MAT_Applypapt);CHKERRQ(ierr); 2604ebed01fSBarry Smith 2610700a824SBarry Smith ierr = PetscLogEventRegister("MatGetSymTrans",MAT_CLASSID,&MAT_Getsymtranspose);CHKERRQ(ierr); 2620700a824SBarry Smith ierr = PetscLogEventRegister("MatGetSymTransR",MAT_CLASSID,&MAT_Getsymtransreduced);CHKERRQ(ierr); 2630700a824SBarry Smith ierr = PetscLogEventRegister("MatTranspose_SeqAIJ_FAST",MAT_CLASSID,&MAT_Transpose_SeqAIJ);CHKERRQ(ierr); 2648154be41SBarry Smith ierr = PetscLogEventRegister("MatCUSPCopyTo",MAT_CLASSID,&MAT_CUSPCopyToGPU);CHKERRQ(ierr); 2659ae82921SPaul Mullowney ierr = PetscLogEventRegister("MatCUSPARSECopyTo",MAT_CLASSID,&MAT_CUSPARSECopyToGPU);CHKERRQ(ierr); 2668f86e40fSKarl Rupp ierr = PetscLogEventRegister("MatViennaCLCopyTo",MAT_CLASSID,&MAT_ViennaCLCopyToGPU);CHKERRQ(ierr); 26737868618SMatthew G Knepley ierr = PetscLogEventRegister("MatSetValBatch",MAT_CLASSID,&MAT_SetValuesBatch);CHKERRQ(ierr); 26837868618SMatthew G Knepley ierr = PetscLogEventRegister("MatSetValBatch1",MAT_CLASSID,&MAT_SetValuesBatchI);CHKERRQ(ierr); 26937868618SMatthew G Knepley ierr = PetscLogEventRegister("MatSetValBatch2",MAT_CLASSID,&MAT_SetValuesBatchII);CHKERRQ(ierr); 27037868618SMatthew G Knepley ierr = PetscLogEventRegister("MatSetValBatch3",MAT_CLASSID,&MAT_SetValuesBatchIII);CHKERRQ(ierr); 27137868618SMatthew G Knepley ierr = PetscLogEventRegister("MatSetValBatch4",MAT_CLASSID,&MAT_SetValuesBatchIV);CHKERRQ(ierr); 2724ebed01fSBarry Smith 273367daffbSBarry Smith ierr = PetscLogEventRegister("MatColoringApply",MAT_COLORING_CLASSID,&MATCOLORING_Apply);CHKERRQ(ierr); 274367daffbSBarry Smith ierr = PetscLogEventRegister("MatColoringComm",MAT_COLORING_CLASSID,&MATCOLORING_Comm);CHKERRQ(ierr); 275367daffbSBarry Smith ierr = PetscLogEventRegister("MatColoringLocal",MAT_COLORING_CLASSID,&MATCOLORING_Local);CHKERRQ(ierr); 276367daffbSBarry Smith ierr = PetscLogEventRegister("MatColoringIS",MAT_COLORING_CLASSID,&MATCOLORING_ISCreate);CHKERRQ(ierr); 277367daffbSBarry Smith ierr = PetscLogEventRegister("MatColoringSetUp",MAT_COLORING_CLASSID,&MATCOLORING_SetUp);CHKERRQ(ierr); 278367daffbSBarry Smith ierr = PetscLogEventRegister("MatColoringWeights",MAT_COLORING_CLASSID,&MATCOLORING_Weights);CHKERRQ(ierr); 2794f68377dSPeter Brune 2801153da11SBarry Smith /* Turn off high traffic events by default */ 2811153da11SBarry Smith ierr = PetscLogEventSetActiveAll(MAT_SetValues, PETSC_FALSE);CHKERRQ(ierr); 2821153da11SBarry Smith /* Process info exclusions */ 283c5929fdfSBarry Smith ierr = PetscOptionsGetString(NULL,NULL, "-info_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 = PetscInfoDeactivateClass(MAT_CLASSID);CHKERRQ(ierr); 2881153da11SBarry Smith } 2891153da11SBarry Smith } 2901153da11SBarry Smith /* Process summary exclusions */ 2917bf5a629SBarry Smith ierr = PetscOptionsGetString(NULL,NULL, "-log_exclude", logList, 256, &opt);CHKERRQ(ierr); 2921153da11SBarry Smith if (opt) { 2931153da11SBarry Smith ierr = PetscStrstr(logList, "mat", &className);CHKERRQ(ierr); 2941153da11SBarry Smith if (className) { 2950700a824SBarry Smith ierr = PetscLogEventDeactivateClass(MAT_CLASSID);CHKERRQ(ierr); 2961153da11SBarry Smith } 2971153da11SBarry Smith } 29842c9c57cSBarry Smith 299c1619fb6SBarry Smith /* Register the PETSc built in factorization based solvers */ 300c1619fb6SBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJ, MAT_FACTOR_LU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 301c1619fb6SBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJ, MAT_FACTOR_CHOLESKY,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 302c1619fb6SBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJ, MAT_FACTOR_ILU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 303c1619fb6SBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJ, MAT_FACTOR_ICC,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 304c1619fb6SBarry Smith 305c1619fb6SBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJPERM, MAT_FACTOR_LU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 306c1619fb6SBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJPERM, MAT_FACTOR_CHOLESKY,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 307c1619fb6SBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJPERM, MAT_FACTOR_ILU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 308c1619fb6SBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJPERM, MAT_FACTOR_ICC,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 309c1619fb6SBarry Smith 310c1619fb6SBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJCRL, MAT_FACTOR_LU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 311c1619fb6SBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJCRL, MAT_FACTOR_CHOLESKY,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 312c1619fb6SBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJCRL, MAT_FACTOR_ILU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 313c1619fb6SBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJCRL, MAT_FACTOR_ICC,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 314c1619fb6SBarry Smith 315c1619fb6SBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQBAIJ, MAT_FACTOR_LU,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 316c1619fb6SBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQBAIJ, MAT_FACTOR_CHOLESKY,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 317c1619fb6SBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQBAIJ, MAT_FACTOR_ILU,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 318c1619fb6SBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQBAIJ, MAT_FACTOR_ICC,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 319c1619fb6SBarry Smith 320c1619fb6SBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQSBAIJ, MAT_FACTOR_CHOLESKY,MatGetFactor_seqsbaij_petsc);CHKERRQ(ierr); 321c1619fb6SBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQSBAIJ, MAT_FACTOR_ICC,MatGetFactor_seqsbaij_petsc);CHKERRQ(ierr); 322c1619fb6SBarry Smith 323c1619fb6SBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQDENSE, MAT_FACTOR_LU,MatGetFactor_seqdense_petsc);CHKERRQ(ierr); 324c1619fb6SBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQDENSE, MAT_FACTOR_CHOLESKY,MatGetFactor_seqdense_petsc);CHKERRQ(ierr); 325c1619fb6SBarry Smith 326c1619fb6SBarry Smith ierr = MatSolverPackageRegister(MATSOLVERBAS, MATSEQAIJ, MAT_FACTOR_ICC,MatGetFactor_seqaij_bas);CHKERRQ(ierr); 327c1619fb6SBarry Smith 32842c9c57cSBarry Smith /* 32942c9c57cSBarry Smith Register the external package factorization based solvers 33042c9c57cSBarry Smith Eventually we don't want to have these hardwired here at compile time of PETSc 33142c9c57cSBarry Smith */ 33242c9c57cSBarry Smith #if defined(PETSC_HAVE_MUMPS) 33342c9c57cSBarry Smith ierr = MatSolverPackageRegister_MUMPS();CHKERRQ(ierr); 33442c9c57cSBarry Smith #endif 335*72367587SKarl Rupp #if defined(PETSC_HAVE_CUSP) 336*72367587SKarl Rupp ierr = MatSolverPackageRegister_CUSP();CHKERRQ(ierr); 337*72367587SKarl Rupp #endif 338c41cb2e2SAlejandro Lamas Daviña #if defined(PETSC_HAVE_VECCUDA) 33942c9c57cSBarry Smith ierr = MatSolverPackageRegister_CUSPARSE();CHKERRQ(ierr); 34042c9c57cSBarry Smith #endif 341*72367587SKarl Rupp #if defined(PETSC_HAVE_VIENNACL) 342*72367587SKarl Rupp ierr = MatSolverPackageRegister_ViennaCL();CHKERRQ(ierr); 343*72367587SKarl Rupp #endif 34442c9c57cSBarry Smith #if defined(PETSC_HAVE_ELEMENTAL) 34542c9c57cSBarry Smith ierr = MatSolverPackageRegister_Elemental();CHKERRQ(ierr); 34642c9c57cSBarry Smith #endif 34742c9c57cSBarry Smith #if defined(PETSC_HAVE_MATLAB_ENGINE) 34842c9c57cSBarry Smith ierr = MatSolverPackageRegister_Matlab();CHKERRQ(ierr); 34942c9c57cSBarry Smith #endif 35042c9c57cSBarry Smith #if defined(PETSC_HAVE_PETSC_HAVE_ESSL) && !defined(PETSC_USE_COMPLEX) && !defined(PETSC_USE_REAL_SINGLE) && !defined(PETSC_USE_REAL___FLOAT128) 35142c9c57cSBarry Smith ierr = MatSolverPackageRegister_Essl();CHKERRQ(ierr); 35242c9c57cSBarry Smith #endif 35342c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU) 35442c9c57cSBarry Smith ierr = MatSolverPackageRegister_SuperLU();CHKERRQ(ierr); 35542c9c57cSBarry Smith #endif 35608f5efcfSPieter Ghysels #if defined(PETSC_HAVE_STRUMPACK) 35708f5efcfSPieter Ghysels ierr = MatSolverPackageRegister_STRUMPACK();CHKERRQ(ierr); 35808f5efcfSPieter Ghysels #endif 35942c9c57cSBarry Smith #if defined(PETSC_HAVE_PASTIX) 36042c9c57cSBarry Smith ierr = MatSolverPackageRegister_Pastix();CHKERRQ(ierr); 36142c9c57cSBarry Smith #endif 36242c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU_DIST) 36342c9c57cSBarry Smith ierr = MatSolverPackageRegister_SuperLU_DIST();CHKERRQ(ierr); 36442c9c57cSBarry Smith #endif 36542c9c57cSBarry Smith #if defined(PETSC_HAVE_CLIQUE) 36642c9c57cSBarry Smith ierr = MatSolverPackageRegister_Clique();CHKERRQ(ierr); 36742c9c57cSBarry Smith #endif 36842c9c57cSBarry Smith #if defined(PETSC_HAVE_MKL_PARDISO) 36942c9c57cSBarry Smith ierr = MatSolverPackageRegister_MKL_Pardiso();CHKERRQ(ierr); 37042c9c57cSBarry Smith #endif 371d305a81bSVasiliy Kozyrev #if defined(PETSC_HAVE_MKL_CPARDISO) 372d305a81bSVasiliy Kozyrev ierr = MatSolverPackageRegister_MKL_CPardiso();CHKERRQ(ierr); 373d305a81bSVasiliy Kozyrev #endif 37442c9c57cSBarry Smith #if defined(PETSC_HAVE_SUITESPARSE) 37542c9c57cSBarry Smith ierr = MatSolverPackageRegister_SuiteSparse();CHKERRQ(ierr); 37642c9c57cSBarry Smith #endif 37742c9c57cSBarry Smith #if defined(PETSC_HAVE_LUSOL) 37842c9c57cSBarry Smith ierr = MatSolverPackageRegister_Lusol();CHKERRQ(ierr); 37942c9c57cSBarry Smith #endif 38042c9c57cSBarry Smith #if defined(PETSC_HAVE_CLIQUE) 38142c9c57cSBarry Smith ierr = MatSolverPackageRegister_Clique();CHKERRQ(ierr); 38242c9c57cSBarry Smith #endif 38342c9c57cSBarry Smith 384b022a5c1SBarry Smith ierr = PetscRegisterFinalize(MatFinalizePackage);CHKERRQ(ierr); 3851153da11SBarry Smith PetscFunctionReturn(0); 3861153da11SBarry Smith } 3871153da11SBarry Smith 388aa2d57e9SJed Brown #if defined(PETSC_HAVE_DYNAMIC_LIBRARIES) 3891153da11SBarry Smith #undef __FUNCT__ 3901153da11SBarry Smith #define __FUNCT__ "PetscDLLibraryRegister_petscmat" 3911153da11SBarry Smith /* 3921153da11SBarry Smith PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened. 3931153da11SBarry Smith 3943f92711fSBarry Smith This one registers all the matrix methods that are in the basic PETSc Matrix library. 3951153da11SBarry Smith 3961153da11SBarry Smith */ 397607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscmat(void) 3981153da11SBarry Smith { 3991153da11SBarry Smith PetscErrorCode ierr; 4001153da11SBarry Smith 4011153da11SBarry Smith PetscFunctionBegin; 402607a6623SBarry Smith ierr = MatInitializePackage();CHKERRQ(ierr); 4031153da11SBarry Smith PetscFunctionReturn(0); 4041153da11SBarry Smith } 4051153da11SBarry Smith 4061153da11SBarry Smith 407aa2d57e9SJed Brown #endif /* PETSC_HAVE_DYNAMIC_LIBRARIES */ 408