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