xref: /petsc/src/mat/interface/dlregismat.c (revision 1153da110c132807661d1701eed1b4f23dada5ea)
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