xref: /petsc/src/sys/classes/viewer/interface/dlregispetsc.c (revision 9895aa37ac365bac650f6bd8bf977519f7222510)
1 
2 #include <petscdraw.h>
3 #include <petscviewer.h>
4 
5 extern PetscLogEvent PETSC_Barrier;
6 
7 static PetscBool PetscSysPackageInitialized = PETSC_FALSE;
8 #undef __FUNCT__
9 #define __FUNCT__ "PetscSysFinalizePackage"
10 /*@C
11   PetscSysFinalizePackage - This function destroys everything in the Petsc interface to Mathematica. It is
12   called from PetscFinalize().
13 
14   Level: developer
15 
16 .keywords: Petsc, destroy, package, mathematica
17 .seealso: PetscFinalize()
18 @*/
19 PetscErrorCode  PetscSysFinalizePackage(void)
20 {
21   PetscFunctionBegin;
22   PetscSysPackageInitialized = PETSC_FALSE;
23   PetscFunctionReturn(0);
24 }
25 
26 #undef __FUNCT__
27 #define __FUNCT__ "PetscSysInitializePackage"
28 /*@C
29   PetscSysInitializePackage - This function initializes everything in the main Petsc package. It is called
30   from PetscDLLibraryRegister() when using dynamic libraries, and on the call to PetscInitialize()
31   when using static libraries.
32 
33   Input Parameter:
34   path - The dynamic library path, or NULL
35 
36   Level: developer
37 
38 .keywords: Petsc, initialize, package
39 .seealso: PetscInitialize()
40 @*/
41 PetscErrorCode  PetscSysInitializePackage(const char path[])
42 {
43   char           logList[256];
44   char           *className;
45   PetscBool      opt;
46   PetscErrorCode ierr;
47 
48   PetscFunctionBegin;
49   if (PetscSysPackageInitialized) PetscFunctionReturn(0);
50   PetscSysPackageInitialized = PETSC_TRUE;
51   /* Register Classes */
52   ierr = PetscClassIdRegister("Object",&PETSC_OBJECT_CLASSID);CHKERRQ(ierr);
53   ierr = PetscClassIdRegister("Container",&PETSC_CONTAINER_CLASSID);CHKERRQ(ierr);
54 
55   /* Register Events */
56   ierr = PetscLogEventRegister("PetscBarrier", PETSC_SMALLEST_CLASSID,&PETSC_Barrier);CHKERRQ(ierr);
57   /* Process info exclusions */
58   ierr = PetscOptionsGetString(NULL, "-info_exclude", logList, 256, &opt);CHKERRQ(ierr);
59   if (opt) {
60     ierr = PetscStrstr(logList, "null", &className);CHKERRQ(ierr);
61     if (className) {
62       ierr = PetscInfoDeactivateClass(0);CHKERRQ(ierr);
63     }
64   }
65   /* Process summary exclusions */
66   ierr = PetscOptionsGetString(NULL, "-log_summary_exclude", logList, 256, &opt);CHKERRQ(ierr);
67   if (opt) {
68     ierr = PetscStrstr(logList, "null", &className);CHKERRQ(ierr);
69     if (className) {
70       ierr = PetscLogEventDeactivateClass(0);CHKERRQ(ierr);
71     }
72   }
73   ierr = PetscRegisterFinalize(PetscSysFinalizePackage);CHKERRQ(ierr);
74   PetscFunctionReturn(0);
75 }
76 
77 #if defined(PETSC_USE_DYNAMIC_LIBRARIES)
78 EXTERN_C_BEGIN
79 
80 #if defined(PETSC_USE_SINGLE_LIBRARY)
81 extern PetscErrorCode PetscDLLibraryRegister_petscvec(const char[]);
82 extern PetscErrorCode PetscDLLibraryRegister_petscmat(const char[]);
83 extern PetscErrorCode PetscDLLibraryRegister_petscdm(const char[]);
84 extern PetscErrorCode PetscDLLibraryRegister_petscksp(const char[]);
85 extern PetscErrorCode PetscDLLibraryRegister_petscsnes(const char[]);
86 extern PetscErrorCode PetscDLLibraryRegister_petscts(const char[]);
87 #endif
88 
89 #undef __FUNCT__
90 #if defined(PETSC_USE_SINGLE_LIBRARY)
91 #define __FUNCT__ "PetscDLLibraryRegister_petsc"
92 #else
93 #define __FUNCT__ "PetscDLLibraryRegister_petscsys"
94 #endif
95 /*
96   PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened.
97 
98   This one registers all the draw and PetscViewer objects.
99 
100   Input Parameter:
101   path - library path
102  */
103 #if defined(PETSC_USE_SINGLE_LIBRARY)
104 PetscErrorCode  PetscDLLibraryRegister_petsc(const char path[])
105 #else
106 PetscErrorCode  PetscDLLibraryRegister_petscsys(const char path[])
107 #endif
108 {
109   PetscErrorCode ierr;
110 
111   PetscFunctionBegin;
112   /*
113       If we got here then PETSc was properly loaded
114   */
115   ierr = PetscSysInitializePackage(path);CHKERRQ(ierr);
116   ierr = PetscDrawInitializePackage(path);CHKERRQ(ierr);
117   ierr = PetscViewerInitializePackage(path);CHKERRQ(ierr);
118   ierr = PetscRandomInitializePackage(path);CHKERRQ(ierr);
119 
120 #if defined(PETSC_USE_SINGLE_LIBRARY)
121   ierr = PetscDLLibraryRegister_petscvec(path);CHKERRQ(ierr);
122   ierr = PetscDLLibraryRegister_petscmat(path);CHKERRQ(ierr);
123   ierr = PetscDLLibraryRegister_petscdm(path);CHKERRQ(ierr);
124   ierr = PetscDLLibraryRegister_petscksp(path);CHKERRQ(ierr);
125   ierr = PetscDLLibraryRegister_petscsnes(path);CHKERRQ(ierr);
126   ierr = PetscDLLibraryRegister_petscts(path);CHKERRQ(ierr);
127 #endif
128   PetscFunctionReturn(0);
129 }
130 EXTERN_C_END
131 #endif
132 
133 
134