1 #define PETSCMAT_DLL 2 3 #include "petscmat.h" 4 5 #undef __FUNCT__ 6 #define __FUNCT__ "MatInitializePackage" 7 /*@C 8 MatInitializePackage - This function initializes everything in the Mat package. It is called 9 from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to MatCreate() 10 when using static libraries. 11 12 Input Parameter: 13 path - The dynamic library path, or PETSC_NULL 14 15 Level: developer 16 17 .keywords: Mat, initialize, package 18 .seealso: PetscInitialize() 19 @*/ 20 PetscErrorCode PETSCMAT_DLLEXPORT MatInitializePackage(char *path) 21 { 22 static PetscTruth initialized = PETSC_FALSE; 23 char logList[256]; 24 char *className; 25 PetscTruth opt; 26 PetscErrorCode ierr; 27 28 PetscFunctionBegin; 29 if (initialized) PetscFunctionReturn(0); 30 initialized = PETSC_TRUE; 31 /* Register Classes */ 32 ierr = PetscLogClassRegister(&MAT_COOKIE, "Matrix");CHKERRQ(ierr); 33 ierr = PetscLogClassRegister(&MAT_FDCOLORING_COOKIE, "Matrix FD Coloring");CHKERRQ(ierr); 34 ierr = PetscLogClassRegister(&MAT_PARTITIONING_COOKIE, "Matrix Partitioning");CHKERRQ(ierr); 35 ierr = PetscLogClassRegister(&MAT_NULLSPACE_COOKIE, "Matrix Null Space");CHKERRQ(ierr); 36 /* Register Constructors */ 37 ierr = MatRegisterAll(path);CHKERRQ(ierr); 38 /* Register Events */ 39 ierr = PetscLogEventRegister(&MAT_Mult, "MatMult", MAT_COOKIE);CHKERRQ(ierr); 40 ierr = PetscLogEventRegister(&MAT_Mults, "MatMults", MAT_COOKIE);CHKERRQ(ierr); 41 ierr = PetscLogEventRegister(&MAT_MultConstrained, "MatMultConstr", MAT_COOKIE);CHKERRQ(ierr); 42 ierr = PetscLogEventRegister(&MAT_MultAdd, "MatMultAdd", MAT_COOKIE);CHKERRQ(ierr); 43 ierr = PetscLogEventRegister(&MAT_MultTranspose, "MatMultTranspose", MAT_COOKIE);CHKERRQ(ierr); 44 ierr = PetscLogEventRegister(&MAT_MultTransposeConstrained, "MatMultTrConstr", MAT_COOKIE);CHKERRQ(ierr); 45 ierr = PetscLogEventRegister(&MAT_MultTransposeAdd, "MatMultTrAdd", MAT_COOKIE);CHKERRQ(ierr); 46 ierr = PetscLogEventRegister(&MAT_Solve, "MatSolve", MAT_COOKIE);CHKERRQ(ierr); 47 ierr = PetscLogEventRegister(&MAT_Solves, "MatSolves", MAT_COOKIE);CHKERRQ(ierr); 48 ierr = PetscLogEventRegister(&MAT_SolveAdd, "MatSolveAdd", MAT_COOKIE);CHKERRQ(ierr); 49 ierr = PetscLogEventRegister(&MAT_SolveTranspose, "MatSolveTranspos", MAT_COOKIE);CHKERRQ(ierr); 50 ierr = PetscLogEventRegister(&MAT_SolveTransposeAdd, "MatSolveTrAdd", MAT_COOKIE);CHKERRQ(ierr); 51 ierr = PetscLogEventRegister(&MAT_Relax, "MatRelax", MAT_COOKIE);CHKERRQ(ierr); 52 ierr = PetscLogEventRegister(&MAT_ForwardSolve, "MatForwardSolve", MAT_COOKIE);CHKERRQ(ierr); 53 ierr = PetscLogEventRegister(&MAT_BackwardSolve, "MatBackwardSolve", MAT_COOKIE);CHKERRQ(ierr); 54 ierr = PetscLogEventRegister(&MAT_LUFactor, "MatLUFactor", MAT_COOKIE);CHKERRQ(ierr); 55 ierr = PetscLogEventRegister(&MAT_LUFactorSymbolic, "MatLUFactorSym", MAT_COOKIE);CHKERRQ(ierr); 56 ierr = PetscLogEventRegister(&MAT_LUFactorNumeric, "MatLUFactorNum", MAT_COOKIE);CHKERRQ(ierr); 57 ierr = PetscLogEventRegister(&MAT_CholeskyFactor, "MatCholeskyFctr", MAT_COOKIE);CHKERRQ(ierr); 58 ierr = PetscLogEventRegister(&MAT_CholeskyFactorSymbolic, "MatCholFctrSym", MAT_COOKIE);CHKERRQ(ierr); 59 ierr = PetscLogEventRegister(&MAT_CholeskyFactorNumeric, "MatCholFctrNum", MAT_COOKIE);CHKERRQ(ierr); 60 ierr = PetscLogEventRegister(&MAT_ILUFactor, "MatILUFactor", MAT_COOKIE);CHKERRQ(ierr); 61 ierr = PetscLogEventRegister(&MAT_ILUFactorSymbolic, "MatILUFactorSym", MAT_COOKIE);CHKERRQ(ierr); 62 ierr = PetscLogEventRegister(&MAT_ICCFactorSymbolic, "MatICCFactorSym", MAT_COOKIE);CHKERRQ(ierr); 63 ierr = PetscLogEventRegister(&MAT_Copy, "MatCopy", MAT_COOKIE);CHKERRQ(ierr); 64 ierr = PetscLogEventRegister(&MAT_Convert, "MatConvert", MAT_COOKIE);CHKERRQ(ierr); 65 ierr = PetscLogEventRegister(&MAT_Scale, "MatScale", MAT_COOKIE);CHKERRQ(ierr); 66 ierr = PetscLogEventRegister(&MAT_AssemblyBegin, "MatAssemblyBegin", MAT_COOKIE);CHKERRQ(ierr); 67 ierr = PetscLogEventRegister(&MAT_AssemblyEnd, "MatAssemblyEnd", MAT_COOKIE);CHKERRQ(ierr); 68 ierr = PetscLogEventRegister(&MAT_SetValues, "MatSetValues", MAT_COOKIE);CHKERRQ(ierr); 69 ierr = PetscLogEventRegister(&MAT_GetValues, "MatGetValues", MAT_COOKIE);CHKERRQ(ierr); 70 ierr = PetscLogEventRegister(&MAT_GetRow, "MatGetRow", MAT_COOKIE);CHKERRQ(ierr); 71 ierr = PetscLogEventRegister(&MAT_GetSubMatrices, "MatGetSubMatrice", MAT_COOKIE);CHKERRQ(ierr); 72 ierr = PetscLogEventRegister(&MAT_GetColoring, "MatGetColoring", MAT_COOKIE);CHKERRQ(ierr); 73 ierr = PetscLogEventRegister(&MAT_GetOrdering, "MatGetOrdering", MAT_COOKIE);CHKERRQ(ierr); 74 ierr = PetscLogEventRegister(&MAT_IncreaseOverlap, "MatIncreaseOvrlp", MAT_COOKIE);CHKERRQ(ierr); 75 ierr = PetscLogEventRegister(&MAT_Partitioning, "MatPartitioning", MAT_PARTITIONING_COOKIE);CHKERRQ(ierr); 76 ierr = PetscLogEventRegister(&MAT_ZeroEntries, "MatZeroEntries", MAT_COOKIE);CHKERRQ(ierr); 77 ierr = PetscLogEventRegister(&MAT_Load, "MatLoad", MAT_COOKIE);CHKERRQ(ierr); 78 ierr = PetscLogEventRegister(&MAT_View, "MatView", MAT_COOKIE);CHKERRQ(ierr); 79 ierr = PetscLogEventRegister(&MAT_AXPY, "MatAXPY", MAT_COOKIE);CHKERRQ(ierr); 80 ierr = PetscLogEventRegister(&MAT_FDColoringCreate, "MatFDColorCreate", MAT_FDCOLORING_COOKIE);CHKERRQ(ierr); 81 ierr = PetscLogEventRegister(&MAT_FDColoringApply, "MatFDColorApply", MAT_FDCOLORING_COOKIE);CHKERRQ(ierr); 82 ierr = PetscLogEventRegister(&MAT_FDColoringFunction, "MatFDColorFunc", MAT_FDCOLORING_COOKIE);CHKERRQ(ierr); 83 ierr = PetscLogEventRegister(&MAT_Transpose, "MatTranspose", MAT_COOKIE);CHKERRQ(ierr); 84 ierr = PetscLogEventRegister(&MAT_MatMult, "MatMatMult", MAT_COOKIE);CHKERRQ(ierr); 85 ierr = PetscLogEventRegister(&MAT_MatMultSymbolic, "MatMatMultSym", MAT_COOKIE);CHKERRQ(ierr); 86 ierr = PetscLogEventRegister(&MAT_MatMultNumeric, "MatMatMultNum", MAT_COOKIE);CHKERRQ(ierr); 87 ierr = PetscLogEventRegister(&MAT_PtAP, "MatPtAP", MAT_COOKIE);CHKERRQ(ierr); 88 ierr = PetscLogEventRegister(&MAT_PtAPSymbolic, "MatPtAPSymbolic", MAT_COOKIE);CHKERRQ(ierr); 89 ierr = PetscLogEventRegister(&MAT_PtAPNumeric, "MatPtAPNumeric", MAT_COOKIE);CHKERRQ(ierr); 90 ierr = PetscLogEventRegister(&MAT_MatMultTranspose, "MatMatMultTrans", MAT_COOKIE);CHKERRQ(ierr); 91 ierr = PetscLogEventRegister(&MAT_MatMultTransposeSymbolic, "MatMatMultTrnSym" ,MAT_COOKIE);CHKERRQ(ierr); 92 ierr = PetscLogEventRegister(&MAT_MatMultTransposeNumeric, "MatMatMultTrnNum", MAT_COOKIE);CHKERRQ(ierr); 93 /* Turn off high traffic events by default */ 94 ierr = PetscLogEventSetActiveAll(MAT_SetValues, PETSC_FALSE);CHKERRQ(ierr); 95 /* Process info exclusions */ 96 ierr = PetscOptionsGetString(PETSC_NULL, "-log_info_exclude", logList, 256, &opt);CHKERRQ(ierr); 97 if (opt) { 98 ierr = PetscStrstr(logList, "mat", &className);CHKERRQ(ierr); 99 if (className) { 100 ierr = PetscVerboseInfoDeactivateClass(MAT_COOKIE);CHKERRQ(ierr); 101 } 102 } 103 /* Process summary exclusions */ 104 ierr = PetscOptionsGetString(PETSC_NULL, "-log_summary_exclude", logList, 256, &opt);CHKERRQ(ierr); 105 if (opt) { 106 ierr = PetscStrstr(logList, "mat", &className);CHKERRQ(ierr); 107 if (className) { 108 ierr = PetscLogEventDeactivateClass(MAT_COOKIE);CHKERRQ(ierr); 109 } 110 } 111 PetscFunctionReturn(0); 112 } 113 114 #ifdef PETSC_USE_DYNAMIC_LIBRARIES 115 EXTERN_C_BEGIN 116 #undef __FUNCT__ 117 #define __FUNCT__ "PetscDLLibraryRegister_petscmat" 118 /* 119 PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened. 120 121 This one registers all the TS methods that are in the basic PETSc Matrix library. 122 123 Input Parameter: 124 path - library path 125 */ 126 PetscErrorCode PETSCMAT_DLLEXPORT PetscDLLibraryRegister_petscmat(char *path) 127 { 128 PetscErrorCode ierr; 129 130 ierr = PetscInitializeNoArguments(); if (ierr) return 1; 131 132 PetscFunctionBegin; 133 /* 134 If we got here then PETSc was properly loaded 135 */ 136 ierr = MatInitializePackage(path);CHKERRQ(ierr); 137 PetscFunctionReturn(0); 138 } 139 EXTERN_C_END 140 141 142 #endif /* PETSC_USE_DYNAMIC_LIBRARIES */ 143