xref: /petsc/src/sys/classes/viewer/interface/dlregispetsc.c (revision 39d7646b82f3c61fed60464cb8cf8b037dcb3c88) !
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 
79 #if defined(PETSC_USE_SINGLE_LIBRARY)
80 PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscvec(const char[]);
81 PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscmat(const char[]);
82 PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscdm(const char[]);
83 PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscksp(const char[]);
84 PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscsnes(const char[]);
85 PETSC_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 PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petsc(const char path[])
104 #else
105 PETSC_EXTERN 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 #endif
130 
131 
132