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