11153da11SBarry Smith 2b45d2f2cSJed Brown #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); 36*42c9c57cSBarry 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; 55*42c9c57cSBarry 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 79*42c9c57cSBarry Smith #if defined(PETSC_HAVE_MUMPS) 80*42c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_MUMPS(void); 81*42c9c57cSBarry Smith #endif 82*42c9c57cSBarry Smith #if defined(PETSC_HAVE_CUSPARSE) 83*42c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_CUSPARSE(void); 84*42c9c57cSBarry Smith #endif 85*42c9c57cSBarry Smith #if defined(PETSC_HAVE_ELEMENTAL) 86*42c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_Elemental(void); 87*42c9c57cSBarry Smith #endif 88*42c9c57cSBarry Smith #if defined(PETSC_HAVE_MATLAB_ENGINE) 89*42c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_Matlab(void); 90*42c9c57cSBarry Smith #endif 91*42c9c57cSBarry Smith #if defined(PETSC_HAVE_PETSC_HAVE_ESSL) && !defined(PETSC_USE_COMPLEX) && !defined(PETSC_USE_REAL_SINGLE) && !defined(PETSC_USE_REAL___FLOAT128) 92*42c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_Essl(void); 93*42c9c57cSBarry Smith #endif 94*42c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU) 95*42c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_SuperLU(void); 96*42c9c57cSBarry Smith #endif 97*42c9c57cSBarry Smith #if defined(PETSC_HAVE_PASTIX) 98*42c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_Pastix(void); 99*42c9c57cSBarry Smith #endif 100*42c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU_DIST) 101*42c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_SuperLU_DIST(void); 102*42c9c57cSBarry Smith #endif 103*42c9c57cSBarry Smith #if defined(PETSC_HAVE_CLIQUE) 104*42c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_Clique(void); 105*42c9c57cSBarry Smith #endif 106*42c9c57cSBarry Smith #if defined(PETSC_HAVE_MKL_PARDISO) 107*42c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_MKL_Pardiso(void); 108*42c9c57cSBarry Smith #endif 109*42c9c57cSBarry Smith #if defined(PETSC_HAVE_SUITESPARSE) 110*42c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_SuiteSparse(void); 111*42c9c57cSBarry Smith #endif 112*42c9c57cSBarry Smith #if defined(PETSC_HAVE_LUSOL) 113*42c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatSolverPackageRegister_Lusol(void); 114*42c9c57cSBarry Smith #endif 115*42c9c57cSBarry Smith 116*42c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatGetFactor_seqaij_petsc(Mat,MatFactorType,Mat*); 117*42c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatGetFactor_seqbaij_petsc(Mat,MatFactorType,Mat*); 118*42c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatGetFactor_seqsbaij_petsc(Mat,MatFactorType,Mat*); 119*42c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatGetFactor_seqdense_petsc(Mat,MatFactorType,Mat*); 120*42c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatGetFactor_seqaij_bas(Mat,MatFactorType,Mat*); 121*42c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatGetFactor_seqbaij_bstrm(Mat,MatFactorType,Mat*); 122*42c9c57cSBarry Smith PETSC_EXTERN PetscErrorCode MatGetFactor_seqsbaij_sbstrm(Mat,MatFactorType,Mat*); 123*42c9c57cSBarry Smith 1241153da11SBarry Smith #undef __FUNCT__ 1251153da11SBarry Smith #define __FUNCT__ "MatInitializePackage" 1261153da11SBarry Smith /*@C 1271153da11SBarry Smith MatInitializePackage - This function initializes everything in the Mat package. It is called 1281153da11SBarry Smith from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to MatCreate() 1291153da11SBarry Smith when using static libraries. 1301153da11SBarry Smith 1311153da11SBarry Smith Level: developer 1321153da11SBarry Smith 1331153da11SBarry Smith .keywords: Mat, initialize, package 1341153da11SBarry Smith .seealso: PetscInitialize() 1351153da11SBarry Smith @*/ 136607a6623SBarry Smith PetscErrorCode MatInitializePackage(void) 1371153da11SBarry Smith { 1381153da11SBarry Smith char logList[256]; 1391153da11SBarry Smith char *className; 140ace3abfcSBarry Smith PetscBool opt; 1411153da11SBarry Smith PetscErrorCode ierr; 1421153da11SBarry Smith 1431153da11SBarry Smith PetscFunctionBegin; 144b022a5c1SBarry Smith if (MatPackageInitialized) PetscFunctionReturn(0); 145b022a5c1SBarry Smith MatPackageInitialized = PETSC_TRUE; 146cce0b1b2SLisandro Dalcin /* Inialize subpackage */ 147607a6623SBarry Smith ierr = MatMFFDInitializePackage();CHKERRQ(ierr); 1481153da11SBarry Smith /* Register Classes */ 1490700a824SBarry Smith ierr = PetscClassIdRegister("Matrix",&MAT_CLASSID);CHKERRQ(ierr); 1500700a824SBarry Smith ierr = PetscClassIdRegister("Matrix FD Coloring",&MAT_FDCOLORING_CLASSID);CHKERRQ(ierr); 151335efc43SPeter Brune ierr = PetscClassIdRegister("Matrix Coloring",&MAT_COLORING_CLASSID);CHKERRQ(ierr); 152b9af6bddSHong Zhang ierr = PetscClassIdRegister("Matrix MatTranspose Coloring",&MAT_TRANSPOSECOLORING_CLASSID);CHKERRQ(ierr); 1530700a824SBarry Smith ierr = PetscClassIdRegister("Matrix Partitioning",&MAT_PARTITIONING_CLASSID);CHKERRQ(ierr); 154b43b03e9SMark F. Adams ierr = PetscClassIdRegister("Matrix Coarsen",&MAT_COARSEN_CLASSID);CHKERRQ(ierr); 1550700a824SBarry Smith ierr = PetscClassIdRegister("Matrix Null Space",&MAT_NULLSPACE_CLASSID);CHKERRQ(ierr); 1561153da11SBarry Smith /* Register Constructors */ 157607a6623SBarry Smith ierr = MatRegisterAll();CHKERRQ(ierr); 158607a6623SBarry Smith ierr = MatOrderingRegisterAll();CHKERRQ(ierr); 159607a6623SBarry Smith ierr = MatColoringRegisterAll();CHKERRQ(ierr); 160607a6623SBarry Smith ierr = MatPartitioningRegisterAll();CHKERRQ(ierr); 161607a6623SBarry Smith ierr = MatCoarsenRegisterAll();CHKERRQ(ierr); 1621153da11SBarry Smith /* Register Events */ 1630700a824SBarry Smith ierr = PetscLogEventRegister("MatMult", MAT_CLASSID,&MAT_Mult);CHKERRQ(ierr); 1640700a824SBarry Smith ierr = PetscLogEventRegister("MatMults", MAT_CLASSID,&MAT_Mults);CHKERRQ(ierr); 1650700a824SBarry Smith ierr = PetscLogEventRegister("MatMultConstr", MAT_CLASSID,&MAT_MultConstrained);CHKERRQ(ierr); 1660700a824SBarry Smith ierr = PetscLogEventRegister("MatMultAdd", MAT_CLASSID,&MAT_MultAdd);CHKERRQ(ierr); 1670700a824SBarry Smith ierr = PetscLogEventRegister("MatMultTranspose", MAT_CLASSID,&MAT_MultTranspose);CHKERRQ(ierr); 1680700a824SBarry Smith ierr = PetscLogEventRegister("MatMultTrConstr", MAT_CLASSID,&MAT_MultTransposeConstrained);CHKERRQ(ierr); 1690700a824SBarry Smith ierr = PetscLogEventRegister("MatMultTrAdd", MAT_CLASSID,&MAT_MultTransposeAdd);CHKERRQ(ierr); 1700700a824SBarry Smith ierr = PetscLogEventRegister("MatSolve", MAT_CLASSID,&MAT_Solve);CHKERRQ(ierr); 1710700a824SBarry Smith ierr = PetscLogEventRegister("MatSolves", MAT_CLASSID,&MAT_Solves);CHKERRQ(ierr); 1720700a824SBarry Smith ierr = PetscLogEventRegister("MatSolveAdd", MAT_CLASSID,&MAT_SolveAdd);CHKERRQ(ierr); 1730700a824SBarry Smith ierr = PetscLogEventRegister("MatSolveTranspos", MAT_CLASSID,&MAT_SolveTranspose);CHKERRQ(ierr); 1740700a824SBarry Smith ierr = PetscLogEventRegister("MatSolveTrAdd", MAT_CLASSID,&MAT_SolveTransposeAdd);CHKERRQ(ierr); 1750700a824SBarry Smith ierr = PetscLogEventRegister("MatSOR", MAT_CLASSID,&MAT_SOR);CHKERRQ(ierr); 1760700a824SBarry Smith ierr = PetscLogEventRegister("MatForwardSolve", MAT_CLASSID,&MAT_ForwardSolve);CHKERRQ(ierr); 1770700a824SBarry Smith ierr = PetscLogEventRegister("MatBackwardSolve", MAT_CLASSID,&MAT_BackwardSolve);CHKERRQ(ierr); 1780700a824SBarry Smith ierr = PetscLogEventRegister("MatLUFactor", MAT_CLASSID,&MAT_LUFactor);CHKERRQ(ierr); 1790700a824SBarry Smith ierr = PetscLogEventRegister("MatLUFactorSym", MAT_CLASSID,&MAT_LUFactorSymbolic);CHKERRQ(ierr); 1800700a824SBarry Smith ierr = PetscLogEventRegister("MatLUFactorNum", MAT_CLASSID,&MAT_LUFactorNumeric);CHKERRQ(ierr); 1810700a824SBarry Smith ierr = PetscLogEventRegister("MatCholeskyFctr", MAT_CLASSID,&MAT_CholeskyFactor);CHKERRQ(ierr); 1820700a824SBarry Smith ierr = PetscLogEventRegister("MatCholFctrSym", MAT_CLASSID,&MAT_CholeskyFactorSymbolic);CHKERRQ(ierr); 1830700a824SBarry Smith ierr = PetscLogEventRegister("MatCholFctrNum", MAT_CLASSID,&MAT_CholeskyFactorNumeric);CHKERRQ(ierr); 1840700a824SBarry Smith ierr = PetscLogEventRegister("MatILUFactor", MAT_CLASSID,&MAT_ILUFactor);CHKERRQ(ierr); 1850700a824SBarry Smith ierr = PetscLogEventRegister("MatILUFactorSym", MAT_CLASSID,&MAT_ILUFactorSymbolic);CHKERRQ(ierr); 1860700a824SBarry Smith ierr = PetscLogEventRegister("MatICCFactorSym", MAT_CLASSID,&MAT_ICCFactorSymbolic);CHKERRQ(ierr); 1870700a824SBarry Smith ierr = PetscLogEventRegister("MatCopy", MAT_CLASSID,&MAT_Copy);CHKERRQ(ierr); 1880700a824SBarry Smith ierr = PetscLogEventRegister("MatConvert", MAT_CLASSID,&MAT_Convert);CHKERRQ(ierr); 1890700a824SBarry Smith ierr = PetscLogEventRegister("MatScale", MAT_CLASSID,&MAT_Scale);CHKERRQ(ierr); 190f9426fe0SMark Adams ierr = PetscLogEventRegister("MatResidual", MAT_CLASSID,&MAT_Residual);CHKERRQ(ierr); 1910700a824SBarry Smith ierr = PetscLogEventRegister("MatAssemblyBegin", MAT_CLASSID,&MAT_AssemblyBegin);CHKERRQ(ierr); 1920700a824SBarry Smith ierr = PetscLogEventRegister("MatAssemblyEnd", MAT_CLASSID,&MAT_AssemblyEnd);CHKERRQ(ierr); 1930700a824SBarry Smith ierr = PetscLogEventRegister("MatSetValues", MAT_CLASSID,&MAT_SetValues);CHKERRQ(ierr); 1940700a824SBarry Smith ierr = PetscLogEventRegister("MatGetValues", MAT_CLASSID,&MAT_GetValues);CHKERRQ(ierr); 1950700a824SBarry Smith ierr = PetscLogEventRegister("MatGetRow", MAT_CLASSID,&MAT_GetRow);CHKERRQ(ierr); 1960700a824SBarry Smith ierr = PetscLogEventRegister("MatGetRowIJ", MAT_CLASSID,&MAT_GetRowIJ);CHKERRQ(ierr); 1970700a824SBarry Smith ierr = PetscLogEventRegister("MatGetSubMatrice", MAT_CLASSID,&MAT_GetSubMatrices);CHKERRQ(ierr); 1980700a824SBarry Smith ierr = PetscLogEventRegister("MatGetOrdering", MAT_CLASSID,&MAT_GetOrdering);CHKERRQ(ierr); 1990700a824SBarry Smith ierr = PetscLogEventRegister("MatIncreaseOvrlp", MAT_CLASSID,&MAT_IncreaseOverlap);CHKERRQ(ierr); 2000700a824SBarry Smith ierr = PetscLogEventRegister("MatPartitioning", MAT_PARTITIONING_CLASSID,&MAT_Partitioning);CHKERRQ(ierr); 201b43b03e9SMark F. Adams ierr = PetscLogEventRegister("MatCoarsen", MAT_COARSEN_CLASSID,&MAT_Coarsen);CHKERRQ(ierr); 2020700a824SBarry Smith ierr = PetscLogEventRegister("MatZeroEntries", MAT_CLASSID,&MAT_ZeroEntries);CHKERRQ(ierr); 2030700a824SBarry Smith ierr = PetscLogEventRegister("MatLoad", MAT_CLASSID,&MAT_Load);CHKERRQ(ierr); 2040700a824SBarry Smith ierr = PetscLogEventRegister("MatView", MAT_CLASSID,&MAT_View);CHKERRQ(ierr); 2050700a824SBarry Smith ierr = PetscLogEventRegister("MatAXPY", MAT_CLASSID,&MAT_AXPY);CHKERRQ(ierr); 2060700a824SBarry Smith ierr = PetscLogEventRegister("MatFDColorCreate", MAT_FDCOLORING_CLASSID,&MAT_FDColoringCreate);CHKERRQ(ierr); 2070df34763SHong Zhang ierr = PetscLogEventRegister("MatFDColorSetUp", MAT_FDCOLORING_CLASSID,&MAT_FDColoringSetUp);CHKERRQ(ierr); 2080700a824SBarry Smith ierr = PetscLogEventRegister("MatFDColorApply", MAT_FDCOLORING_CLASSID,&MAT_FDColoringApply);CHKERRQ(ierr); 2090700a824SBarry Smith ierr = PetscLogEventRegister("MatFDColorFunc", MAT_FDCOLORING_CLASSID,&MAT_FDColoringFunction);CHKERRQ(ierr); 2100700a824SBarry Smith ierr = PetscLogEventRegister("MatTranspose", MAT_CLASSID,&MAT_Transpose);CHKERRQ(ierr); 2110700a824SBarry Smith ierr = PetscLogEventRegister("MatMatMult", MAT_CLASSID,&MAT_MatMult);CHKERRQ(ierr); 2120700a824SBarry Smith ierr = PetscLogEventRegister("MatMatSolve", MAT_CLASSID,&MAT_MatSolve);CHKERRQ(ierr); 2130700a824SBarry Smith ierr = PetscLogEventRegister("MatMatMultSym", MAT_CLASSID,&MAT_MatMultSymbolic);CHKERRQ(ierr); 2140700a824SBarry Smith ierr = PetscLogEventRegister("MatMatMultNum", MAT_CLASSID,&MAT_MatMultNumeric);CHKERRQ(ierr); 2157bab7c10SHong Zhang ierr = PetscLogEventRegister("MatMatMatMult", MAT_CLASSID,&MAT_MatMatMult);CHKERRQ(ierr); 2167bab7c10SHong Zhang ierr = PetscLogEventRegister("MatMatMatMultSym", MAT_CLASSID,&MAT_MatMatMultSymbolic);CHKERRQ(ierr); 2177bab7c10SHong Zhang ierr = PetscLogEventRegister("MatMatMatMultNum", MAT_CLASSID,&MAT_MatMatMultNumeric);CHKERRQ(ierr); 2180700a824SBarry Smith ierr = PetscLogEventRegister("MatPtAP", MAT_CLASSID,&MAT_PtAP);CHKERRQ(ierr); 2190700a824SBarry Smith ierr = PetscLogEventRegister("MatPtAPSymbolic", MAT_CLASSID,&MAT_PtAPSymbolic);CHKERRQ(ierr); 2200700a824SBarry Smith ierr = PetscLogEventRegister("MatPtAPNumeric", MAT_CLASSID,&MAT_PtAPNumeric);CHKERRQ(ierr); 221286f30e3SHong Zhang ierr = PetscLogEventRegister("MatRARt", MAT_CLASSID,&MAT_RARt);CHKERRQ(ierr); 22250647e95SHong Zhang ierr = PetscLogEventRegister("MatRARtSym", MAT_CLASSID,&MAT_RARtSymbolic);CHKERRQ(ierr); 22350647e95SHong Zhang ierr = PetscLogEventRegister("MatRARtNum", MAT_CLASSID,&MAT_RARtNumeric);CHKERRQ(ierr); 2246fc122caSHong Zhang ierr = PetscLogEventRegister("MatMatTransMult", MAT_CLASSID,&MAT_MatTransposeMult);CHKERRQ(ierr); 2256fc122caSHong Zhang ierr = PetscLogEventRegister("MatMatTrnMultSym", MAT_CLASSID,&MAT_MatTransposeMultSymbolic);CHKERRQ(ierr); 2266fc122caSHong Zhang ierr = PetscLogEventRegister("MatMatTrnMultNum", MAT_CLASSID,&MAT_MatTransposeMultNumeric);CHKERRQ(ierr); 22775648e8dSHong Zhang ierr = PetscLogEventRegister("MatTrnMatMult", MAT_CLASSID,&MAT_TransposeMatMult);CHKERRQ(ierr); 22875648e8dSHong Zhang ierr = PetscLogEventRegister("MatTrnMatMultSym", MAT_CLASSID,&MAT_TransposeMatMultSymbolic);CHKERRQ(ierr); 22975648e8dSHong Zhang ierr = PetscLogEventRegister("MatTrnMatMultNum", MAT_CLASSID,&MAT_TransposeMatMultNumeric);CHKERRQ(ierr); 230b9af6bddSHong Zhang ierr = PetscLogEventRegister("MatTrnColorCreate", MAT_CLASSID,&MAT_TransposeColoringCreate);CHKERRQ(ierr); 23153cd1579SHong Zhang ierr = PetscLogEventRegister("MatRedundantMat", MAT_CLASSID,&MAT_RedundantMat);CHKERRQ(ierr); 2320700a824SBarry Smith ierr = PetscLogEventRegister("MatGetSeqNZStrct", MAT_CLASSID,&MAT_GetSequentialNonzeroStructure);CHKERRQ(ierr); 23382d44351SHong Zhang ierr = PetscLogEventRegister("MatGetMultiProcBlock", MAT_CLASSID,&MAT_GetMultiProcBlock);CHKERRQ(ierr); 2344ebed01fSBarry Smith 2354ebed01fSBarry Smith /* these may be specific to MPIAIJ matrices */ 236a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatMPISumSeqNumeric",MAT_CLASSID,&MAT_Seqstompinum);CHKERRQ(ierr); 237a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatMPISumSeqSymbolic",MAT_CLASSID,&MAT_Seqstompisym);CHKERRQ(ierr); 238a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatMPISumSeq",MAT_CLASSID,&MAT_Seqstompi);CHKERRQ(ierr); 239a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatMPIConcateSeq",MAT_CLASSID,&MAT_Merge);CHKERRQ(ierr); 240a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatGetLocalMat",MAT_CLASSID,&MAT_Getlocalmat);CHKERRQ(ierr); 241a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatGetLocalMatCondensed",MAT_CLASSID,&MAT_Getlocalmatcondensed);CHKERRQ(ierr); 242a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatGetBrowsOfAcols",MAT_CLASSID,&MAT_GetBrowsOfAcols);CHKERRQ(ierr); 243a2ea699eSBarry Smith ierr = PetscLogEventRegister("MatGetBrAoCol",MAT_CLASSID,&MAT_GetBrowsOfAocols);CHKERRQ(ierr); 2444ebed01fSBarry Smith 2450700a824SBarry Smith ierr = PetscLogEventRegister("MatApplyPAPt_Symbolic",MAT_CLASSID,&MAT_Applypapt_symbolic);CHKERRQ(ierr); 2460700a824SBarry Smith ierr = PetscLogEventRegister("MatApplyPAPt_Numeric",MAT_CLASSID,&MAT_Applypapt_numeric);CHKERRQ(ierr); 2470700a824SBarry Smith ierr = PetscLogEventRegister("MatApplyPAPt",MAT_CLASSID,&MAT_Applypapt);CHKERRQ(ierr); 2484ebed01fSBarry Smith 2490700a824SBarry Smith ierr = PetscLogEventRegister("MatGetSymTrans",MAT_CLASSID,&MAT_Getsymtranspose);CHKERRQ(ierr); 2500700a824SBarry Smith ierr = PetscLogEventRegister("MatGetSymTransR",MAT_CLASSID,&MAT_Getsymtransreduced);CHKERRQ(ierr); 2510700a824SBarry Smith ierr = PetscLogEventRegister("MatTranspose_SeqAIJ_FAST",MAT_CLASSID,&MAT_Transpose_SeqAIJ);CHKERRQ(ierr); 2528154be41SBarry Smith ierr = PetscLogEventRegister("MatCUSPCopyTo",MAT_CLASSID,&MAT_CUSPCopyToGPU);CHKERRQ(ierr); 2539ae82921SPaul Mullowney ierr = PetscLogEventRegister("MatCUSPARSECopyTo",MAT_CLASSID,&MAT_CUSPARSECopyToGPU);CHKERRQ(ierr); 2548f86e40fSKarl Rupp ierr = PetscLogEventRegister("MatViennaCLCopyTo",MAT_CLASSID,&MAT_ViennaCLCopyToGPU);CHKERRQ(ierr); 25537868618SMatthew G Knepley ierr = PetscLogEventRegister("MatSetValBatch",MAT_CLASSID,&MAT_SetValuesBatch);CHKERRQ(ierr); 25637868618SMatthew G Knepley ierr = PetscLogEventRegister("MatSetValBatch1",MAT_CLASSID,&MAT_SetValuesBatchI);CHKERRQ(ierr); 25737868618SMatthew G Knepley ierr = PetscLogEventRegister("MatSetValBatch2",MAT_CLASSID,&MAT_SetValuesBatchII);CHKERRQ(ierr); 25837868618SMatthew G Knepley ierr = PetscLogEventRegister("MatSetValBatch3",MAT_CLASSID,&MAT_SetValuesBatchIII);CHKERRQ(ierr); 25937868618SMatthew G Knepley ierr = PetscLogEventRegister("MatSetValBatch4",MAT_CLASSID,&MAT_SetValuesBatchIV);CHKERRQ(ierr); 2604ebed01fSBarry Smith 2614f68377dSPeter Brune ierr = PetscLogEventRegister("MatColoringApply",MAT_COLORING_CLASSID,&Mat_Coloring_Apply);CHKERRQ(ierr); 2624f68377dSPeter Brune ierr = PetscLogEventRegister("MatColoringComm",MAT_COLORING_CLASSID,&Mat_Coloring_Comm);CHKERRQ(ierr); 263fb396917SPeter Brune ierr = PetscLogEventRegister("MatColoringLocal",MAT_COLORING_CLASSID,&Mat_Coloring_Local);CHKERRQ(ierr); 264fb396917SPeter Brune ierr = PetscLogEventRegister("MatColoringIS",MAT_COLORING_CLASSID,&Mat_Coloring_ISCreate);CHKERRQ(ierr); 265fb396917SPeter Brune ierr = PetscLogEventRegister("MatColoringSetUp",MAT_COLORING_CLASSID,&Mat_Coloring_SetUp);CHKERRQ(ierr); 266e7deade3SPeter Brune ierr = PetscLogEventRegister("MatColoringWeights",MAT_COLORING_CLASSID,&Mat_Coloring_Weights);CHKERRQ(ierr); 2674f68377dSPeter Brune 2681153da11SBarry Smith /* Turn off high traffic events by default */ 2691153da11SBarry Smith ierr = PetscLogEventSetActiveAll(MAT_SetValues, PETSC_FALSE);CHKERRQ(ierr); 2701153da11SBarry Smith /* Process info exclusions */ 2710298fd71SBarry Smith ierr = PetscOptionsGetString(NULL, "-info_exclude", logList, 256, &opt);CHKERRQ(ierr); 2721153da11SBarry Smith if (opt) { 2731153da11SBarry Smith ierr = PetscStrstr(logList, "mat", &className);CHKERRQ(ierr); 2741153da11SBarry Smith if (className) { 2750700a824SBarry Smith ierr = PetscInfoDeactivateClass(MAT_CLASSID);CHKERRQ(ierr); 2761153da11SBarry Smith } 2771153da11SBarry Smith } 2781153da11SBarry Smith /* Process summary exclusions */ 2790298fd71SBarry Smith ierr = PetscOptionsGetString(NULL, "-log_summary_exclude", logList, 256, &opt);CHKERRQ(ierr); 2801153da11SBarry Smith if (opt) { 2811153da11SBarry Smith ierr = PetscStrstr(logList, "mat", &className);CHKERRQ(ierr); 2821153da11SBarry Smith if (className) { 2830700a824SBarry Smith ierr = PetscLogEventDeactivateClass(MAT_CLASSID);CHKERRQ(ierr); 2841153da11SBarry Smith } 2851153da11SBarry Smith } 286*42c9c57cSBarry Smith 287*42c9c57cSBarry Smith /* 288*42c9c57cSBarry Smith Register the external package factorization based solvers 289*42c9c57cSBarry Smith Eventually we don't want to have these hardwired here at compile time of PETSc 290*42c9c57cSBarry Smith */ 291*42c9c57cSBarry Smith #if defined(PETSC_HAVE_MUMPS) 292*42c9c57cSBarry Smith ierr = MatSolverPackageRegister_MUMPS();CHKERRQ(ierr); 293*42c9c57cSBarry Smith #endif 294*42c9c57cSBarry Smith #if defined(PETSC_HAVE_CUSPARSE) 295*42c9c57cSBarry Smith ierr = MatSolverPackageRegister_CUSPARSE();CHKERRQ(ierr); 296*42c9c57cSBarry Smith #endif 297*42c9c57cSBarry Smith #if defined(PETSC_HAVE_ELEMENTAL) 298*42c9c57cSBarry Smith ierr = MatSolverPackageRegister_Elemental();CHKERRQ(ierr); 299*42c9c57cSBarry Smith #endif 300*42c9c57cSBarry Smith #if defined(PETSC_HAVE_MATLAB_ENGINE) 301*42c9c57cSBarry Smith ierr = MatSolverPackageRegister_Matlab();CHKERRQ(ierr); 302*42c9c57cSBarry Smith #endif 303*42c9c57cSBarry Smith #if defined(PETSC_HAVE_PETSC_HAVE_ESSL) && !defined(PETSC_USE_COMPLEX) && !defined(PETSC_USE_REAL_SINGLE) && !defined(PETSC_USE_REAL___FLOAT128) 304*42c9c57cSBarry Smith ierr = MatSolverPackageRegister_Essl();CHKERRQ(ierr); 305*42c9c57cSBarry Smith #endif 306*42c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU) 307*42c9c57cSBarry Smith ierr = MatSolverPackageRegister_SuperLU();CHKERRQ(ierr); 308*42c9c57cSBarry Smith #endif 309*42c9c57cSBarry Smith #if defined(PETSC_HAVE_PASTIX) 310*42c9c57cSBarry Smith ierr = MatSolverPackageRegister_Pastix();CHKERRQ(ierr); 311*42c9c57cSBarry Smith #endif 312*42c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU_DIST) 313*42c9c57cSBarry Smith ierr = MatSolverPackageRegister_SuperLU_DIST();CHKERRQ(ierr); 314*42c9c57cSBarry Smith #endif 315*42c9c57cSBarry Smith #if defined(PETSC_HAVE_CLIQUE) 316*42c9c57cSBarry Smith ierr = MatSolverPackageRegister_Clique();CHKERRQ(ierr); 317*42c9c57cSBarry Smith #endif 318*42c9c57cSBarry Smith #if defined(PETSC_HAVE_MKL_PARDISO) 319*42c9c57cSBarry Smith ierr = MatSolverPackageRegister_MKL_Pardiso();CHKERRQ(ierr); 320*42c9c57cSBarry Smith #endif 321*42c9c57cSBarry Smith #if defined(PETSC_HAVE_SUITESPARSE) 322*42c9c57cSBarry Smith ierr = MatSolverPackageRegister_SuiteSparse();CHKERRQ(ierr); 323*42c9c57cSBarry Smith #endif 324*42c9c57cSBarry Smith #if defined(PETSC_HAVE_LUSOL) 325*42c9c57cSBarry Smith ierr = MatSolverPackageRegister_Lusol();CHKERRQ(ierr); 326*42c9c57cSBarry Smith #endif 327*42c9c57cSBarry Smith #if defined(PETSC_HAVE_CLIQUE) 328*42c9c57cSBarry Smith ierr = MatSolverPackageRegister_Clique();CHKERRQ(ierr); 329*42c9c57cSBarry Smith #endif 330*42c9c57cSBarry Smith 331*42c9c57cSBarry Smith /* Register the PETSc built in factorization based solvers */ 332*42c9c57cSBarry Smith ierr = MatSolverPackageRegister(MATSOLVERBAS,MATSEQAIJ, MAT_FACTOR_ICC,MatGetFactor_seqaij_bas);CHKERRQ(ierr); 333*42c9c57cSBarry Smith 334*42c9c57cSBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC,MATSEQAIJ, MAT_FACTOR_LU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 335*42c9c57cSBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC,MATSEQAIJ, MAT_FACTOR_CHOLESKY,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 336*42c9c57cSBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC,MATSEQAIJ, MAT_FACTOR_ILU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 337*42c9c57cSBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC,MATSEQAIJ, MAT_FACTOR_ICC,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 338*42c9c57cSBarry Smith 339*42c9c57cSBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC,MATSEQBAIJ, MAT_FACTOR_LU,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 340*42c9c57cSBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC,MATSEQBAIJ, MAT_FACTOR_CHOLESKY,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 341*42c9c57cSBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC,MATSEQBAIJ, MAT_FACTOR_ILU,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 342*42c9c57cSBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC,MATSEQBAIJ, MAT_FACTOR_ICC,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 343*42c9c57cSBarry Smith 344*42c9c57cSBarry Smith ierr = MatSolverPackageRegister(MATSOLVERBSTRM,MATSEQBAIJ, MAT_FACTOR_LU,MatGetFactor_seqbaij_bstrm);CHKERRQ(ierr); 345*42c9c57cSBarry Smith ierr = MatSolverPackageRegister(MATSOLVERBSTRM,MATSEQBAIJ, MAT_FACTOR_ILU,MatGetFactor_seqbaij_bstrm);CHKERRQ(ierr); 346*42c9c57cSBarry Smith 347*42c9c57cSBarry Smith ierr = MatSolverPackageRegister(MATSOLVERSBSTRM,MATSEQSBAIJ, MAT_FACTOR_CHOLESKY,MatGetFactor_seqsbaij_sbstrm);CHKERRQ(ierr); 348*42c9c57cSBarry Smith ierr = MatSolverPackageRegister(MATSOLVERSBSTRM,MATSEQSBAIJ, MAT_FACTOR_ICC,MatGetFactor_seqsbaij_sbstrm);CHKERRQ(ierr); 349*42c9c57cSBarry Smith 350*42c9c57cSBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC,MATSEQSBAIJ, MAT_FACTOR_CHOLESKY,MatGetFactor_seqsbaij_petsc);CHKERRQ(ierr); 351*42c9c57cSBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC,MATSEQSBAIJ, MAT_FACTOR_ICC,MatGetFactor_seqsbaij_petsc);CHKERRQ(ierr); 352*42c9c57cSBarry Smith 353*42c9c57cSBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC,MATSEQDENSE, MAT_FACTOR_LU,MatGetFactor_seqdense_petsc);CHKERRQ(ierr); 354*42c9c57cSBarry Smith ierr = MatSolverPackageRegister(MATSOLVERPETSC,MATSEQDENSE, MAT_FACTOR_CHOLESKY,MatGetFactor_seqdense_petsc);CHKERRQ(ierr); 355*42c9c57cSBarry Smith 356b022a5c1SBarry Smith ierr = PetscRegisterFinalize(MatFinalizePackage);CHKERRQ(ierr); 3571153da11SBarry Smith PetscFunctionReturn(0); 3581153da11SBarry Smith } 3591153da11SBarry Smith 360aa2d57e9SJed Brown #if defined(PETSC_HAVE_DYNAMIC_LIBRARIES) 3611153da11SBarry Smith #undef __FUNCT__ 3621153da11SBarry Smith #define __FUNCT__ "PetscDLLibraryRegister_petscmat" 3631153da11SBarry Smith /* 3641153da11SBarry Smith PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened. 3651153da11SBarry Smith 3663f92711fSBarry Smith This one registers all the matrix methods that are in the basic PETSc Matrix library. 3671153da11SBarry Smith 3681153da11SBarry Smith */ 369607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscmat(void) 3701153da11SBarry Smith { 3711153da11SBarry Smith PetscErrorCode ierr; 3721153da11SBarry Smith 3731153da11SBarry Smith PetscFunctionBegin; 374607a6623SBarry Smith ierr = MatInitializePackage();CHKERRQ(ierr); 3751153da11SBarry Smith PetscFunctionReturn(0); 3761153da11SBarry Smith } 3771153da11SBarry Smith 3781153da11SBarry Smith 379aa2d57e9SJed Brown #endif /* PETSC_HAVE_DYNAMIC_LIBRARIES */ 380