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