Actual source code: dlregis.c
1: /*$Id: dlregis.c,v 1.20 2001/03/23 23:23:29 balay Exp $*/
3: #include petscksp.h
7: /*@C
8: PCInitializePackage - This function initializes everything in the PC package. It is called
9: from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to PCCreate()
10: when using static libraries.
12: Input Parameter:
13: path - The dynamic library path, or PETSC_NULL
15: Level: developer
17: .keywords: PC, initialize, package
18: .seealso: PetscInitialize()
19: @*/
20: int PCInitializePackage(const char path[]) {
21: static PetscTruth initialized = PETSC_FALSE;
22: char logList[256];
23: char *className;
24: PetscTruth opt;
25: int ierr;
28: if (initialized == PETSC_TRUE) return(0);
29: initialized = PETSC_TRUE;
30: /* Register Classes */
31: PetscLogClassRegister(&PC_COOKIE, "Preconditioner");
32: /* Register Constructors */
33: PCRegisterAll(path);
34: /* Register Events */
35: PetscLogEventRegister(&PC_SetUp, "PCSetUp", PC_COOKIE);
36: PetscLogEventRegister(&PC_SetUpOnBlocks, "PCSetUpOnBlocks", PC_COOKIE);
37: PetscLogEventRegister(&PC_Apply, "PCApply", PC_COOKIE);
38: PetscLogEventRegister(&PC_ApplyCoarse, "PCApplyCoarse", PC_COOKIE);
39: PetscLogEventRegister(&PC_ApplyMultiple, "PCApplyMultiple", PC_COOKIE);
40: PetscLogEventRegister(&PC_ApplySymmetricLeft, "PCApplySymmLeft", PC_COOKIE);
41: PetscLogEventRegister(&PC_ApplySymmetricRight, "PCApplySymmRight", PC_COOKIE);
42: PetscLogEventRegister(&PC_ModifySubMatrices, "PCModifySubMatri", PC_COOKIE);
43: /* Process info exclusions */
44: PetscOptionsGetString(PETSC_NULL, "-log_info_exclude", logList, 256, &opt);
45: if (opt == PETSC_TRUE) {
46: PetscStrstr(logList, "pc", &className);
47: if (className) {
48: PetscLogInfoDeactivateClass(PC_COOKIE);
49: }
50: }
51: /* Process summary exclusions */
52: PetscOptionsGetString(PETSC_NULL, "-log_summary_exclude", logList, 256, &opt);
53: if (opt == PETSC_TRUE) {
54: PetscStrstr(logList, "pc", &className);
55: if (className) {
56: PetscLogEventDeactivateClass(PC_COOKIE);
57: }
58: }
59: return(0);
60: }
64: /*@C
65: KSPInitializePackage - This function initializes everything in the KSP package. It is called
66: from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to KSPCreate()
67: when using static libraries.
69: Input Parameter:
70: path - The dynamic library path, or PETSC_NULL
72: Level: developer
74: .keywords: KSP, initialize, package
75: .seealso: PetscInitialize()
76: @*/
77: int KSPInitializePackage(const char path[]) {
78: static PetscTruth initialized = PETSC_FALSE;
79: char logList[256];
80: char *className;
81: PetscTruth opt;
82: int ierr;
85: if (initialized == PETSC_TRUE) return(0);
86: initialized = PETSC_TRUE;
87: /* Register Classes */
88: PetscLogClassRegister(&KSP_COOKIE, "Krylov Solver");
89: /* Register Constructors */
90: KSPRegisterAll(path);
91: /* Register Events */
92: PetscLogEventRegister(&KSP_GMRESOrthogonalization, "KSPGMRESOrthog", KSP_COOKIE);
93: PetscLogEventRegister(&KSP_SetUp, "KSPSetup", KSP_COOKIE);
94: PetscLogEventRegister(&KSP_Solve, "KSPSolve", KSP_COOKIE);
95: /* Process info exclusions */
96: PetscOptionsGetString(PETSC_NULL, "-log_info_exclude", logList, 256, &opt);
97: if (opt == PETSC_TRUE) {
98: PetscStrstr(logList, "ksp", &className);
99: if (className) {
100: PetscLogInfoDeactivateClass(KSP_COOKIE);
101: }
102: }
103: /* Process summary exclusions */
104: PetscOptionsGetString(PETSC_NULL, "-log_summary_exclude", logList, 256, &opt);
105: if (opt == PETSC_TRUE) {
106: PetscStrstr(logList, "ksp", &className);
107: if (className) {
108: PetscLogEventDeactivateClass(KSP_COOKIE);
109: }
110: }
111: return(0);
112: }
114: #ifdef PETSC_USE_DYNAMIC_LIBRARIES
115: EXTERN_C_BEGIN
118: /*
119: PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened.
121: This one registers all the KSP and PC methods that are in the basic PETSc libpetscksp
122: library.
124: Input Parameter:
125: path - library path
126: */
127: int PetscDLLibraryRegister(char *path)
128: {
131: PetscInitializeNoArguments(); if (ierr) return 1;
134: /*
135: If we got here then PETSc was properly loaded
136: */
137: PCInitializePackage(path);
138: KSPInitializePackage(path);
139: return(0);
140: }
141: EXTERN_C_END
143: /* --------------------------------------------------------------------------*/
144: static const char *contents = "PETSc Krylov subspace method and preconditioner library.\n\
145: GMRES, PCG, Bi-CG-stab, ...\n\
146: Jacobi, ILU, Block Jacobi, LU, Additive Schwarz, ...\n";
147: static const char *authors = PETSC_AUTHOR_INFO;
149: #include src/sys/src/utils/dlregis.h
151: #endif /* PETSC_USE_DYNAMIC_LIBRARIES */