11153da11SBarry Smith 2af0996ceSBarry Smith #include <petsc/private/matimpl.h> 31153da11SBarry Smith 40f8fb01aSBarry Smith const char *MatOptions_Shifted[] = {"UNUSED_NONZERO_LOCATION_ERR", 592d4d306SBarry Smith "ROW_ORIENTED", 60f8fb01aSBarry Smith "NOT_A_VALID_OPTION", 74e0d8c25SBarry Smith "SYMMETRIC", 84e0d8c25SBarry Smith "STRUCTURALLY_SYMMETRIC", 9dc5b3d67SBarry Smith "NEW_DIAGONALS", 104e0d8c25SBarry Smith "IGNORE_OFF_PROC_ENTRIES", 1192d4d306SBarry Smith "USE_HASH_TABLE", 1292d4d306SBarry Smith "KEEP_NONZERO_PATTERN", 1392d4d306SBarry Smith "IGNORE_ZERO_ENTRIES", 1492d4d306SBarry Smith "USE_INODES", 154e0d8c25SBarry Smith "HERMITIAN", 164e0d8c25SBarry Smith "SYMMETRY_ETERNAL", 170f8fb01aSBarry Smith "NEW_NONZERO_LOCATION_ERR", 1892d4d306SBarry Smith "IGNORE_LOWER_TRIANGULAR", 1992d4d306SBarry Smith "ERROR_LOWER_TRIANGULAR", 2092d4d306SBarry Smith "GETROW_UPPERTRIANGULAR", 2192d4d306SBarry Smith "SPD", 2292d4d306SBarry Smith "NO_OFF_PROC_ZERO_ROWS", 2392d4d306SBarry Smith "NO_OFF_PROC_ENTRIES", 2492d4d306SBarry Smith "NEW_NONZERO_LOCATIONS", 250f8fb01aSBarry Smith "NEW_NONZERO_ALLOCATION_ERR", 260f8fb01aSBarry Smith "MAT_SUBSET_OFF_PROC_ENTRIES", 270f8fb01aSBarry Smith "MAT_SUBMAT_SINGLEIS", 2892d4d306SBarry Smith "MatOption","MAT_",0}; 290f8fb01aSBarry Smith const char *const* MatOptions = MatOptions_Shifted+2; 306a6fc655SJed Brown const char *const MatFactorShiftTypes[] = {"NONE","NONZERO","POSITIVE_DEFINITE","INBLOCKS","MatFactorShiftType","PC_FACTOR_",0}; 315e9742b9SJed Brown const char *const MatFactorShiftTypesDetail[] = {NULL,"diagonal shift to prevent zero pivot","Manteuffel shift","diagonal shift on blocks to prevent zero pivot"}; 32b0ca845eSVaclav Hapla const char *const MPPTScotchStrategyTypes[] = {"DEFAULT","QUALITY","SPEED","BALANCE","SAFETY","SCALABILITY","MPPTScotchStrategyType","MP_PTSCOTCH_",0}; 336a6fc655SJed Brown const char *const MPChacoGlobalTypes[] = {"","MULTILEVEL","SPECTRAL","","LINEAR","RANDOM","SCATTERED","MPChacoGlobalType","MP_CHACO_",0}; 346a6fc655SJed Brown const char *const MPChacoLocalTypes[] = {"","KERNIGHAN","NONE","MPChacoLocalType","MP_CHACO_",0}; 356a6fc655SJed Brown const char *const MPChacoEigenTypes[] = {"LANCZOS","RQI","MPChacoEigenType","MP_CHACO_",0}; 36290bbb0aSBarry Smith 37607a6623SBarry Smith extern PetscErrorCode MatMFFDInitializePackage(void); 383ca39a21SBarry Smith extern PetscErrorCode MatSolverTypeDestroy(void); 39ace3abfcSBarry Smith static PetscBool MatPackageInitialized = PETSC_FALSE; 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; 553ca39a21SBarry Smith ierr = MatSolverTypeDestroy();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; 764099cc6bSBarry Smith /* this is not ideal because it exposes SeqAIJ implementation details directly into the base Mat code */ 774099cc6bSBarry Smith ierr = PetscFunctionListDestroy(&MatSeqAIJList);CHKERRQ(ierr); 784099cc6bSBarry Smith MatSeqAIJRegisterAllCalled = PETSC_FALSE; 79b022a5c1SBarry Smith PetscFunctionReturn(0); 80b022a5c1SBarry Smith } 81e5beb14aSMatthew Knepley 8242c9c57cSBarry Smith #if defined(PETSC_HAVE_MUMPS) 833ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_MUMPS(void); 8442c9c57cSBarry Smith #endif 85*fd314934SBarry Smith #if defined(PETSC_HAVE_CUDA) 863ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_CUSPARSE(void); 8742c9c57cSBarry Smith #endif 8872367587SKarl Rupp #if defined(PETSC_HAVE_VIENNACL) 893ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_ViennaCL(void); 9072367587SKarl Rupp #endif 9142c9c57cSBarry Smith #if defined(PETSC_HAVE_ELEMENTAL) 923ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_Elemental(void); 9342c9c57cSBarry Smith #endif 9442c9c57cSBarry Smith #if defined(PETSC_HAVE_MATLAB_ENGINE) 953ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_Matlab(void); 9642c9c57cSBarry Smith #endif 97570b7f6dSBarry Smith #if defined(PETSC_HAVE_PETSC_HAVE_ESSL) 983ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_Essl(void); 9942c9c57cSBarry Smith #endif 10042c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU) 1013ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_SuperLU(void); 10242c9c57cSBarry Smith #endif 10308f5efcfSPieter Ghysels #if defined(PETSC_HAVE_STRUMPACK) 1043ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_STRUMPACK(void); 10508f5efcfSPieter Ghysels #endif 10642c9c57cSBarry Smith #if defined(PETSC_HAVE_PASTIX) 1073ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_Pastix(void); 10842c9c57cSBarry Smith #endif 10942c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU_DIST) 1103ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_SuperLU_DIST(void); 11142c9c57cSBarry Smith #endif 112418810c4SBarry Smith #if defined(PETSC_HAVE_ELEMENTAL) 1133ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_SparseElemental(void); 11442c9c57cSBarry Smith #endif 11542c9c57cSBarry Smith #if defined(PETSC_HAVE_MKL_PARDISO) 1163ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_MKL_Pardiso(void); 11742c9c57cSBarry Smith #endif 118d305a81bSVasiliy Kozyrev #if defined(PETSC_HAVE_MKL_CPARDISO) 1193ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_MKL_CPardiso(void); 120d305a81bSVasiliy Kozyrev #endif 12142c9c57cSBarry Smith #if defined(PETSC_HAVE_SUITESPARSE) 1223ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_SuiteSparse(void); 12342c9c57cSBarry Smith #endif 12442c9c57cSBarry Smith #if defined(PETSC_HAVE_LUSOL) 1253ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_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 /*@C 1351153da11SBarry Smith MatInitializePackage - This function initializes everything in the Mat package. It is called 1361153da11SBarry Smith from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to MatCreate() 1371153da11SBarry Smith when using static libraries. 1381153da11SBarry Smith 1391153da11SBarry Smith Level: developer 1401153da11SBarry Smith 1411153da11SBarry Smith .keywords: Mat, initialize, package 1421153da11SBarry Smith .seealso: PetscInitialize() 1431153da11SBarry Smith @*/ 144607a6623SBarry Smith PetscErrorCode MatInitializePackage(void) 1451153da11SBarry Smith { 1461153da11SBarry Smith char logList[256]; 1478e81d068SLisandro Dalcin PetscBool opt,pkg; 1481153da11SBarry Smith PetscErrorCode ierr; 1491153da11SBarry Smith 1501153da11SBarry Smith PetscFunctionBegin; 151b022a5c1SBarry Smith if (MatPackageInitialized) PetscFunctionReturn(0); 152b022a5c1SBarry Smith MatPackageInitialized = PETSC_TRUE; 153cce0b1b2SLisandro Dalcin /* Inialize subpackage */ 154607a6623SBarry Smith ierr = MatMFFDInitializePackage();CHKERRQ(ierr); 1551153da11SBarry Smith /* Register Classes */ 1560700a824SBarry Smith ierr = PetscClassIdRegister("Matrix",&MAT_CLASSID);CHKERRQ(ierr); 1570700a824SBarry Smith ierr = PetscClassIdRegister("Matrix FD Coloring",&MAT_FDCOLORING_CLASSID);CHKERRQ(ierr); 158335efc43SPeter Brune ierr = PetscClassIdRegister("Matrix Coloring",&MAT_COLORING_CLASSID);CHKERRQ(ierr); 159b9af6bddSHong Zhang ierr = PetscClassIdRegister("Matrix MatTranspose Coloring",&MAT_TRANSPOSECOLORING_CLASSID);CHKERRQ(ierr); 1600700a824SBarry Smith ierr = PetscClassIdRegister("Matrix Partitioning",&MAT_PARTITIONING_CLASSID);CHKERRQ(ierr); 161b43b03e9SMark F. Adams ierr = PetscClassIdRegister("Matrix Coarsen",&MAT_COARSEN_CLASSID);CHKERRQ(ierr); 1620700a824SBarry Smith ierr = PetscClassIdRegister("Matrix Null Space",&MAT_NULLSPACE_CLASSID);CHKERRQ(ierr); 1631153da11SBarry Smith /* Register Constructors */ 164607a6623SBarry Smith ierr = MatRegisterAll();CHKERRQ(ierr); 165607a6623SBarry Smith ierr = MatOrderingRegisterAll();CHKERRQ(ierr); 166607a6623SBarry Smith ierr = MatColoringRegisterAll();CHKERRQ(ierr); 167607a6623SBarry Smith ierr = MatPartitioningRegisterAll();CHKERRQ(ierr); 168607a6623SBarry Smith ierr = MatCoarsenRegisterAll();CHKERRQ(ierr); 1694099cc6bSBarry Smith ierr = MatSeqAIJRegisterAll();CHKERRQ(ierr); 1701153da11SBarry Smith /* Register Events */ 1710700a824SBarry Smith ierr = PetscLogEventRegister("MatMult", MAT_CLASSID,&MAT_Mult);CHKERRQ(ierr); 1720700a824SBarry Smith ierr = PetscLogEventRegister("MatMults", MAT_CLASSID,&MAT_Mults);CHKERRQ(ierr); 1730700a824SBarry Smith ierr = PetscLogEventRegister("MatMultConstr", MAT_CLASSID,&MAT_MultConstrained);CHKERRQ(ierr); 1740700a824SBarry Smith ierr = PetscLogEventRegister("MatMultAdd", MAT_CLASSID,&MAT_MultAdd);CHKERRQ(ierr); 1750700a824SBarry Smith ierr = PetscLogEventRegister("MatMultTranspose", MAT_CLASSID,&MAT_MultTranspose);CHKERRQ(ierr); 1760700a824SBarry Smith ierr = PetscLogEventRegister("MatMultTrConstr", MAT_CLASSID,&MAT_MultTransposeConstrained);CHKERRQ(ierr); 1770700a824SBarry Smith ierr = PetscLogEventRegister("MatMultTrAdd", MAT_CLASSID,&MAT_MultTransposeAdd);CHKERRQ(ierr); 1780700a824SBarry Smith ierr = PetscLogEventRegister("MatSolve", MAT_CLASSID,&MAT_Solve);CHKERRQ(ierr); 1790700a824SBarry Smith ierr = PetscLogEventRegister("MatSolves", MAT_CLASSID,&MAT_Solves);CHKERRQ(ierr); 1800700a824SBarry Smith ierr = PetscLogEventRegister("MatSolveAdd", MAT_CLASSID,&MAT_SolveAdd);CHKERRQ(ierr); 1810700a824SBarry Smith ierr = PetscLogEventRegister("MatSolveTranspos", MAT_CLASSID,&MAT_SolveTranspose);CHKERRQ(ierr); 1820700a824SBarry Smith ierr = PetscLogEventRegister("MatSolveTrAdd", MAT_CLASSID,&MAT_SolveTransposeAdd);CHKERRQ(ierr); 1830700a824SBarry Smith ierr = PetscLogEventRegister("MatSOR", MAT_CLASSID,&MAT_SOR);CHKERRQ(ierr); 1840700a824SBarry Smith ierr = PetscLogEventRegister("MatForwardSolve", MAT_CLASSID,&MAT_ForwardSolve);CHKERRQ(ierr); 1850700a824SBarry Smith ierr = PetscLogEventRegister("MatBackwardSolve", MAT_CLASSID,&MAT_BackwardSolve);CHKERRQ(ierr); 1860700a824SBarry Smith ierr = PetscLogEventRegister("MatLUFactor", MAT_CLASSID,&MAT_LUFactor);CHKERRQ(ierr); 1870700a824SBarry Smith ierr = PetscLogEventRegister("MatLUFactorSym", MAT_CLASSID,&MAT_LUFactorSymbolic);CHKERRQ(ierr); 1880700a824SBarry Smith ierr = PetscLogEventRegister("MatLUFactorNum", MAT_CLASSID,&MAT_LUFactorNumeric);CHKERRQ(ierr); 1890700a824SBarry Smith ierr = PetscLogEventRegister("MatCholeskyFctr", MAT_CLASSID,&MAT_CholeskyFactor);CHKERRQ(ierr); 1900700a824SBarry Smith ierr = PetscLogEventRegister("MatCholFctrSym", MAT_CLASSID,&MAT_CholeskyFactorSymbolic);CHKERRQ(ierr); 1910700a824SBarry Smith ierr = PetscLogEventRegister("MatCholFctrNum", MAT_CLASSID,&MAT_CholeskyFactorNumeric);CHKERRQ(ierr); 1920700a824SBarry Smith ierr = PetscLogEventRegister("MatILUFactor", MAT_CLASSID,&MAT_ILUFactor);CHKERRQ(ierr); 1930700a824SBarry Smith ierr = PetscLogEventRegister("MatILUFactorSym", MAT_CLASSID,&MAT_ILUFactorSymbolic);CHKERRQ(ierr); 1940700a824SBarry Smith ierr = PetscLogEventRegister("MatICCFactorSym", MAT_CLASSID,&MAT_ICCFactorSymbolic);CHKERRQ(ierr); 1950700a824SBarry Smith ierr = PetscLogEventRegister("MatCopy", MAT_CLASSID,&MAT_Copy);CHKERRQ(ierr); 1960700a824SBarry Smith ierr = PetscLogEventRegister("MatConvert", MAT_CLASSID,&MAT_Convert);CHKERRQ(ierr); 1970700a824SBarry Smith ierr = PetscLogEventRegister("MatScale", MAT_CLASSID,&MAT_Scale);CHKERRQ(ierr); 198f9426fe0SMark Adams ierr = PetscLogEventRegister("MatResidual", MAT_CLASSID,&MAT_Residual);CHKERRQ(ierr); 1990700a824SBarry Smith ierr = PetscLogEventRegister("MatAssemblyBegin", MAT_CLASSID,&MAT_AssemblyBegin);CHKERRQ(ierr); 2000700a824SBarry Smith ierr = PetscLogEventRegister("MatAssemblyEnd", MAT_CLASSID,&MAT_AssemblyEnd);CHKERRQ(ierr); 2010700a824SBarry Smith ierr = PetscLogEventRegister("MatSetValues", MAT_CLASSID,&MAT_SetValues);CHKERRQ(ierr); 2020700a824SBarry Smith ierr = PetscLogEventRegister("MatGetValues", MAT_CLASSID,&MAT_GetValues);CHKERRQ(ierr); 2030700a824SBarry Smith ierr = PetscLogEventRegister("MatGetRow", MAT_CLASSID,&MAT_GetRow);CHKERRQ(ierr); 2040700a824SBarry Smith ierr = PetscLogEventRegister("MatGetRowIJ", MAT_CLASSID,&MAT_GetRowIJ);CHKERRQ(ierr); 2057dae84e0SHong Zhang ierr = PetscLogEventRegister("MatCreateSubMats", MAT_CLASSID,&MAT_CreateSubMats);CHKERRQ(ierr); 2067dae84e0SHong Zhang ierr = PetscLogEventRegister("MatCreateSubMat", MAT_CLASSID,&MAT_CreateSubMat);CHKERRQ(ierr); 2070700a824SBarry Smith ierr = PetscLogEventRegister("MatGetOrdering", MAT_CLASSID,&MAT_GetOrdering);CHKERRQ(ierr); 2080700a824SBarry Smith ierr = PetscLogEventRegister("MatIncreaseOvrlp", MAT_CLASSID,&MAT_IncreaseOverlap);CHKERRQ(ierr); 2090700a824SBarry Smith ierr = PetscLogEventRegister("MatPartitioning", MAT_PARTITIONING_CLASSID,&MAT_Partitioning);CHKERRQ(ierr); 210f3ad2dabSStefano Zampini ierr = PetscLogEventRegister("MatPartitioningND",MAT_PARTITIONING_CLASSID,&MAT_PartitioningND);CHKERRQ(ierr); 211b43b03e9SMark F. Adams ierr = PetscLogEventRegister("MatCoarsen", MAT_COARSEN_CLASSID,&MAT_Coarsen);CHKERRQ(ierr); 2120700a824SBarry Smith ierr = PetscLogEventRegister("MatZeroEntries", MAT_CLASSID,&MAT_ZeroEntries);CHKERRQ(ierr); 2130700a824SBarry Smith ierr = PetscLogEventRegister("MatLoad", MAT_CLASSID,&MAT_Load);CHKERRQ(ierr); 2140700a824SBarry Smith ierr = PetscLogEventRegister("MatView", MAT_CLASSID,&MAT_View);CHKERRQ(ierr); 2150700a824SBarry Smith ierr = PetscLogEventRegister("MatAXPY", MAT_CLASSID,&MAT_AXPY);CHKERRQ(ierr); 2160700a824SBarry Smith ierr = PetscLogEventRegister("MatFDColorCreate", MAT_FDCOLORING_CLASSID,&MAT_FDColoringCreate);CHKERRQ(ierr); 2170df34763SHong Zhang ierr = PetscLogEventRegister("MatFDColorSetUp", MAT_FDCOLORING_CLASSID,&MAT_FDColoringSetUp);CHKERRQ(ierr); 2180700a824SBarry Smith ierr = PetscLogEventRegister("MatFDColorApply", MAT_FDCOLORING_CLASSID,&MAT_FDColoringApply);CHKERRQ(ierr); 2190700a824SBarry Smith ierr = PetscLogEventRegister("MatFDColorFunc", MAT_FDCOLORING_CLASSID,&MAT_FDColoringFunction);CHKERRQ(ierr); 2200700a824SBarry Smith ierr = PetscLogEventRegister("MatTranspose", MAT_CLASSID,&MAT_Transpose);CHKERRQ(ierr); 2210700a824SBarry Smith ierr = PetscLogEventRegister("MatMatMult", MAT_CLASSID,&MAT_MatMult);CHKERRQ(ierr); 2220700a824SBarry Smith ierr = PetscLogEventRegister("MatMatSolve", MAT_CLASSID,&MAT_MatSolve);CHKERRQ(ierr); 223eb3ef3b2SHong Zhang ierr = PetscLogEventRegister("MatMatTrSolve", MAT_CLASSID,&MAT_MatTrSolve);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); 244011ea8aeSBarry Smith ierr = PetscLogEventRegister("MatGetMultiProcB", 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); 2649ae82921SPaul Mullowney ierr = PetscLogEventRegister("MatCUSPARSECopyTo",MAT_CLASSID,&MAT_CUSPARSECopyToGPU);CHKERRQ(ierr); 2658f86e40fSKarl Rupp ierr = PetscLogEventRegister("MatViennaCLCopyTo",MAT_CLASSID,&MAT_ViennaCLCopyToGPU);CHKERRQ(ierr); 26637868618SMatthew G Knepley ierr = PetscLogEventRegister("MatSetValBatch",MAT_CLASSID,&MAT_SetValuesBatch);CHKERRQ(ierr); 2674ebed01fSBarry Smith 268367daffbSBarry Smith ierr = PetscLogEventRegister("MatColoringApply",MAT_COLORING_CLASSID,&MATCOLORING_Apply);CHKERRQ(ierr); 269367daffbSBarry Smith ierr = PetscLogEventRegister("MatColoringComm",MAT_COLORING_CLASSID,&MATCOLORING_Comm);CHKERRQ(ierr); 270367daffbSBarry Smith ierr = PetscLogEventRegister("MatColoringLocal",MAT_COLORING_CLASSID,&MATCOLORING_Local);CHKERRQ(ierr); 271367daffbSBarry Smith ierr = PetscLogEventRegister("MatColoringIS",MAT_COLORING_CLASSID,&MATCOLORING_ISCreate);CHKERRQ(ierr); 272367daffbSBarry Smith ierr = PetscLogEventRegister("MatColoringSetUp",MAT_COLORING_CLASSID,&MATCOLORING_SetUp);CHKERRQ(ierr); 273367daffbSBarry Smith ierr = PetscLogEventRegister("MatColoringWeights",MAT_COLORING_CLASSID,&MATCOLORING_Weights);CHKERRQ(ierr); 2744f68377dSPeter Brune 275217044c2SLisandro Dalcin /* Mark non-collective events */ 276217044c2SLisandro Dalcin ierr = PetscLogEventSetCollective(MAT_SetValues, PETSC_FALSE);CHKERRQ(ierr); 277217044c2SLisandro Dalcin ierr = PetscLogEventSetCollective(MAT_SetValuesBatch, PETSC_FALSE);CHKERRQ(ierr); 278217044c2SLisandro Dalcin ierr = PetscLogEventSetCollective(MAT_GetRow, PETSC_FALSE);CHKERRQ(ierr); 2791153da11SBarry Smith /* Turn off high traffic events by default */ 2801153da11SBarry Smith ierr = PetscLogEventSetActiveAll(MAT_SetValues, PETSC_FALSE);CHKERRQ(ierr); 281217044c2SLisandro Dalcin ierr = PetscLogEventSetActiveAll(MAT_GetValues, PETSC_FALSE);CHKERRQ(ierr); 282217044c2SLisandro Dalcin ierr = PetscLogEventSetActiveAll(MAT_GetRow, PETSC_FALSE);CHKERRQ(ierr); 283217044c2SLisandro Dalcin 2841153da11SBarry Smith /* Process info exclusions */ 2858e81d068SLisandro Dalcin ierr = PetscOptionsGetString(NULL,NULL,"-info_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr); 2861153da11SBarry Smith if (opt) { 2878e81d068SLisandro Dalcin ierr = PetscStrInList("mat",logList,',',&pkg);CHKERRQ(ierr); 2888e81d068SLisandro Dalcin if (pkg) {ierr = PetscInfoDeactivateClass(MAT_CLASSID);CHKERRQ(ierr);} 2898e81d068SLisandro Dalcin if (pkg) {ierr = PetscInfoDeactivateClass(MAT_FDCOLORING_CLASSID);CHKERRQ(ierr);} 2908e81d068SLisandro Dalcin if (pkg) {ierr = PetscInfoDeactivateClass(MAT_COLORING_CLASSID);CHKERRQ(ierr);} 2918e81d068SLisandro Dalcin if (pkg) {ierr = PetscInfoDeactivateClass(MAT_TRANSPOSECOLORING_CLASSID);CHKERRQ(ierr);} 2928e81d068SLisandro Dalcin if (pkg) {ierr = PetscInfoDeactivateClass(MAT_PARTITIONING_CLASSID);CHKERRQ(ierr);} 2938e81d068SLisandro Dalcin if (pkg) {ierr = PetscInfoDeactivateClass(MAT_COARSEN_CLASSID);CHKERRQ(ierr);} 2948e81d068SLisandro Dalcin if (pkg) {ierr = PetscInfoDeactivateClass(MAT_NULLSPACE_CLASSID);CHKERRQ(ierr);} 2951153da11SBarry Smith } 296217044c2SLisandro Dalcin 2971153da11SBarry Smith /* Process summary exclusions */ 2988e81d068SLisandro Dalcin ierr = PetscOptionsGetString(NULL,NULL,"-log_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr); 2991153da11SBarry Smith if (opt) { 3008e81d068SLisandro Dalcin ierr = PetscStrInList("mat",logList,',',&pkg);CHKERRQ(ierr); 301fa2bb9feSLisandro Dalcin if (pkg) {ierr = PetscLogEventExcludeClass(MAT_CLASSID);CHKERRQ(ierr);} 302fa2bb9feSLisandro Dalcin if (pkg) {ierr = PetscLogEventExcludeClass(MAT_FDCOLORING_CLASSID);CHKERRQ(ierr);} 303fa2bb9feSLisandro Dalcin if (pkg) {ierr = PetscLogEventExcludeClass(MAT_COLORING_CLASSID);CHKERRQ(ierr);} 304fa2bb9feSLisandro Dalcin if (pkg) {ierr = PetscLogEventExcludeClass(MAT_TRANSPOSECOLORING_CLASSID);CHKERRQ(ierr);} 305fa2bb9feSLisandro Dalcin if (pkg) {ierr = PetscLogEventExcludeClass(MAT_PARTITIONING_CLASSID);CHKERRQ(ierr);} 306fa2bb9feSLisandro Dalcin if (pkg) {ierr = PetscLogEventExcludeClass(MAT_COARSEN_CLASSID);CHKERRQ(ierr);} 307fa2bb9feSLisandro Dalcin if (pkg) {ierr = PetscLogEventExcludeClass(MAT_NULLSPACE_CLASSID);CHKERRQ(ierr);} 3081153da11SBarry Smith } 30942c9c57cSBarry Smith 310c1619fb6SBarry Smith /* Register the PETSc built in factorization based solvers */ 3113ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJ, MAT_FACTOR_LU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3123ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJ, MAT_FACTOR_CHOLESKY,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3133ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJ, MAT_FACTOR_ILU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3143ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJ, MAT_FACTOR_ICC,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 315c1619fb6SBarry Smith 3163ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJPERM, MAT_FACTOR_LU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3173ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJPERM, MAT_FACTOR_CHOLESKY,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3183ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJPERM, MAT_FACTOR_ILU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3193ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJPERM, MAT_FACTOR_ICC,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 320c1619fb6SBarry Smith 3219779e05dSSatish Balay #if defined(PETSC_HAVE_MKL_SPARSE) 3223ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJMKL, MAT_FACTOR_LU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3233ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJMKL, MAT_FACTOR_CHOLESKY,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3243ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJMKL, MAT_FACTOR_ILU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3253ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJMKL, MAT_FACTOR_ICC,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 326b5b72c8aSIrina Sokolova 3273ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJMKL, MAT_FACTOR_LU,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 3283ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJMKL, MAT_FACTOR_CHOLESKY,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 3293ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJMKL, MAT_FACTOR_ILU,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 3303ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJMKL, MAT_FACTOR_ICC,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 331191b95cbSRichard Tran Mills #endif 3322251f9d6SRichard Tran Mills /* Above, we register the PETSc built-in factorization solvers for MATSEQAIJMKL. In the future, we may want to use 3332251f9d6SRichard Tran Mills * some of the MKL-provided ones instead. */ 3342251f9d6SRichard Tran Mills 3353ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJCRL, MAT_FACTOR_LU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3363ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJCRL, MAT_FACTOR_CHOLESKY,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3373ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJCRL, MAT_FACTOR_ILU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 3383ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQAIJCRL, MAT_FACTOR_ICC,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); 339c1619fb6SBarry Smith 3403ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJ, MAT_FACTOR_LU,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 3413ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJ, MAT_FACTOR_CHOLESKY,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 3423ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJ, MAT_FACTOR_ILU,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 3433ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQBAIJ, MAT_FACTOR_ICC,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); 344c1619fb6SBarry Smith 3453ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQSBAIJ, MAT_FACTOR_CHOLESKY,MatGetFactor_seqsbaij_petsc);CHKERRQ(ierr); 3463ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQSBAIJ, MAT_FACTOR_ICC,MatGetFactor_seqsbaij_petsc);CHKERRQ(ierr); 347c1619fb6SBarry Smith 3483ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQDENSE, MAT_FACTOR_LU,MatGetFactor_seqdense_petsc);CHKERRQ(ierr); 3493ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERPETSC, MATSEQDENSE, MAT_FACTOR_CHOLESKY,MatGetFactor_seqdense_petsc);CHKERRQ(ierr); 350c1619fb6SBarry Smith 3513ca39a21SBarry Smith ierr = MatSolverTypeRegister(MATSOLVERBAS, MATSEQAIJ, MAT_FACTOR_ICC,MatGetFactor_seqaij_bas);CHKERRQ(ierr); 352c1619fb6SBarry Smith 35342c9c57cSBarry Smith /* 35442c9c57cSBarry Smith Register the external package factorization based solvers 35542c9c57cSBarry Smith Eventually we don't want to have these hardwired here at compile time of PETSc 35642c9c57cSBarry Smith */ 35742c9c57cSBarry Smith #if defined(PETSC_HAVE_MUMPS) 3583ca39a21SBarry Smith ierr = MatSolverTypeRegister_MUMPS();CHKERRQ(ierr); 35942c9c57cSBarry Smith #endif 360*fd314934SBarry Smith #if defined(PETSC_HAVE_CUDA) 3613ca39a21SBarry Smith ierr = MatSolverTypeRegister_CUSPARSE();CHKERRQ(ierr); 36242c9c57cSBarry Smith #endif 36372367587SKarl Rupp #if defined(PETSC_HAVE_VIENNACL) 3643ca39a21SBarry Smith ierr = MatSolverTypeRegister_ViennaCL();CHKERRQ(ierr); 36572367587SKarl Rupp #endif 36642c9c57cSBarry Smith #if defined(PETSC_HAVE_ELEMENTAL) 3673ca39a21SBarry Smith ierr = MatSolverTypeRegister_Elemental();CHKERRQ(ierr); 36842c9c57cSBarry Smith #endif 36942c9c57cSBarry Smith #if defined(PETSC_HAVE_MATLAB_ENGINE) 3703ca39a21SBarry Smith ierr = MatSolverTypeRegister_Matlab();CHKERRQ(ierr); 37142c9c57cSBarry Smith #endif 372570b7f6dSBarry Smith #if defined(PETSC_HAVE_PETSC_HAVE_ESSL) 3733ca39a21SBarry Smith ierr = MatSolverTypeRegister_Essl();CHKERRQ(ierr); 37442c9c57cSBarry Smith #endif 37542c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU) 3763ca39a21SBarry Smith ierr = MatSolverTypeRegister_SuperLU();CHKERRQ(ierr); 37742c9c57cSBarry Smith #endif 37808f5efcfSPieter Ghysels #if defined(PETSC_HAVE_STRUMPACK) 3793ca39a21SBarry Smith ierr = MatSolverTypeRegister_STRUMPACK();CHKERRQ(ierr); 38008f5efcfSPieter Ghysels #endif 38142c9c57cSBarry Smith #if defined(PETSC_HAVE_PASTIX) 3823ca39a21SBarry Smith ierr = MatSolverTypeRegister_Pastix();CHKERRQ(ierr); 38342c9c57cSBarry Smith #endif 38442c9c57cSBarry Smith #if defined(PETSC_HAVE_SUPERLU_DIST) 3853ca39a21SBarry Smith ierr = MatSolverTypeRegister_SuperLU_DIST();CHKERRQ(ierr); 38642c9c57cSBarry Smith #endif 387418810c4SBarry Smith #if defined(PETSC_HAVE_ELEMENTAL) 3883ca39a21SBarry Smith ierr = MatSolverTypeRegister_SparseElemental();CHKERRQ(ierr); 38942c9c57cSBarry Smith #endif 39042c9c57cSBarry Smith #if defined(PETSC_HAVE_MKL_PARDISO) 3913ca39a21SBarry Smith ierr = MatSolverTypeRegister_MKL_Pardiso();CHKERRQ(ierr); 39242c9c57cSBarry Smith #endif 393d305a81bSVasiliy Kozyrev #if defined(PETSC_HAVE_MKL_CPARDISO) 3943ca39a21SBarry Smith ierr = MatSolverTypeRegister_MKL_CPardiso();CHKERRQ(ierr); 395d305a81bSVasiliy Kozyrev #endif 39642c9c57cSBarry Smith #if defined(PETSC_HAVE_SUITESPARSE) 3973ca39a21SBarry Smith ierr = MatSolverTypeRegister_SuiteSparse();CHKERRQ(ierr); 39842c9c57cSBarry Smith #endif 39942c9c57cSBarry Smith #if defined(PETSC_HAVE_LUSOL) 4003ca39a21SBarry Smith ierr = MatSolverTypeRegister_Lusol();CHKERRQ(ierr); 40142c9c57cSBarry Smith #endif 402418810c4SBarry Smith #if defined(PETSC_HAVE_ELEMENTAL) 4033ca39a21SBarry Smith ierr = MatSolverTypeRegister_SparseElemental();CHKERRQ(ierr); 40442c9c57cSBarry Smith #endif 4058e81d068SLisandro Dalcin /* Register package finalizer */ 406b022a5c1SBarry Smith ierr = PetscRegisterFinalize(MatFinalizePackage);CHKERRQ(ierr); 4071153da11SBarry Smith PetscFunctionReturn(0); 4081153da11SBarry Smith } 4091153da11SBarry Smith 410aa2d57e9SJed Brown #if defined(PETSC_HAVE_DYNAMIC_LIBRARIES) 4111153da11SBarry Smith /* 4121153da11SBarry Smith PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened. 4131153da11SBarry Smith 4143f92711fSBarry Smith This one registers all the matrix methods that are in the basic PETSc Matrix library. 4151153da11SBarry Smith 4161153da11SBarry Smith */ 417607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscmat(void) 4181153da11SBarry Smith { 4191153da11SBarry Smith PetscErrorCode ierr; 4201153da11SBarry Smith 4211153da11SBarry Smith PetscFunctionBegin; 422607a6623SBarry Smith ierr = MatInitializePackage();CHKERRQ(ierr); 4231153da11SBarry Smith PetscFunctionReturn(0); 4241153da11SBarry Smith } 4251153da11SBarry Smith 4261153da11SBarry Smith 427aa2d57e9SJed Brown #endif /* PETSC_HAVE_DYNAMIC_LIBRARIES */ 428